Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

Ogre::MeshSerializer Class Reference

Class for serialising mesh data to/from an OGRE .mesh file. More...

#include <OgreMeshSerializer.h>

Inheritance diagram for Ogre::MeshSerializer:

Ogre::Serializer List of all members.

Public Methods

 MeshSerializer ()
virtual ~MeshSerializer ()
void exportMesh (const Mesh *pMesh, const String &filename, bool includeMaterials=false)
 Exports a mesh to the file specified. More...

void importMesh (DataChunk &chunk, Mesh *pDest)
 Imports Mesh and (optionally) Material data from a .mesh file DataChunk. More...

void importLegacyOof (DataChunk &chunk, Mesh *pDest)
 Imports Mesh and (optionally) Material data from legacy .oof file DataChunk. More...


Protected Methods

virtual void writeFileHeader (void)
virtual void writeChunkHeader (unsigned short id, unsigned long size)
void writeReals (const Real *pReal, unsigned short count)
void writeShorts (const unsigned short *pShort, unsigned short count)
void writeLongs (const unsigned long *pLong, unsigned short count)
void writeBools (const bool *pLong, unsigned short count)
void writeObject (const Vector3 &vec)
void writeObject (const Quaternion &q)
void writeString (const String &string)
void writeData (const void *buf, size_t size, size_t count)
virtual void readFileHeader (DataChunk &chunk)
virtual unsigned short readChunk (DataChunk &chunk)
void readBools (DataChunk &chunk, bool *pDest, unsigned short count)
void readReals (DataChunk &chunk, Real *pDest, unsigned short count)
void readShorts (DataChunk &chunk, unsigned short *pDest, unsigned short count)
void readLongs (DataChunk &chunk, unsigned long *pDest, unsigned short count)
void readObject (DataChunk &chunk, Vector3 *pDest)
void readObject (DataChunk &chunk, Quaternion *pDest)
String readString (DataChunk &chunk)
void flipToLittleEndian (void *pData, size_t size, unsigned short count=1)
void flipFromLittleEndian (void *pData, size_t size, unsigned short count=1)
void flipEndian (void *pData, size_t size, unsigned short count)
void flipEndian (void *pData, size_t size)

Protected Attributes

unsigned long mCurrentChunkLen
FILE * mpfFile
String mVersion

Private Types

typedef std::map< String,
Material * > 
MaterialMap

Private Methods

void writeMaterial (const Material *m)
void writeTextureLayer (const Material::TextureLayer *pTex)
void writeMesh (const Mesh *pMesh)
void writeSubMesh (const SubMesh *s)
void writeGeometry (const GeometryData *pGeom)
void writeSkeletonLink (const String &skelName)
void writeMeshBoneAssignment (const VertexBoneAssignment *assign)
void writeSubMeshBoneAssignment (const VertexBoneAssignment *assign)
void writeLodInfo (const Mesh *pMesh)
void writeLodSummary (unsigned short numLevels, bool manual)
void writeLodUsageManual (const Mesh::MeshLodUsage &usage)
void writeLodUsageGenerated (const Mesh *pMesh, const Mesh::MeshLodUsage &usage, unsigned short lodNum)
unsigned long calcMaterialSize (const Material *pMat)
unsigned long calcTextureLayerSize (const Material::TextureLayer *pTex)
unsigned long calcMeshSize (const Mesh *pMesh)
unsigned long calcSubMeshSize (const SubMesh *pSub)
unsigned long calcGeometrySize (const GeometryData *pGeom)
unsigned long calcSkeletonLinkSize (const String &skelName)
unsigned long calcBoneAssignmentSize (void)
void readMaterial (DataChunk &chunk)
void readTextureLayer (DataChunk &chunk, Material *pMat)
void readMesh (DataChunk &chunk)
void readSubMesh (DataChunk &chunk)
void readGeometry (DataChunk &chunk, GeometryData *dest)
void readSkeletonLink (DataChunk &chunk)
void readMeshBoneAssignment (DataChunk &chunk)
void readSubMeshBoneAssignment (DataChunk &chunk, SubMesh *sub)
void readMeshLodInfo (DataChunk &chunk)
void readMeshLodUsageManual (DataChunk &chunk, unsigned short lodNum, Mesh::MeshLodUsage &usage)
void readMeshLodUsageGenerated (DataChunk &chunk, unsigned short lodNum, Mesh::MeshLodUsage &usage)

Private Attributes

MaterialMap mMaterialList
MeshmpMesh

Detailed Description

Class for serialising mesh data to/from an OGRE .mesh file.

Remarks:
This class allows exporters to write OGRE .mesh files easily, and allows the OGRE engine to import .mesh files into instatiated OGRE Meshes. Note that a .mesh file can include not only the Mesh, but also definitions of any Materials it uses (although this is optional, the .mesh can rely on the Material being loaded from another source, especially useful if you want to take advantage of OGRE's advanced Material properties which may not be available in your modeller).

To export a Mesh:

  1. Use the MaterialManager methods to create any dependent Material objects, if you want to export them with the Mesh.
  2. Create a Mesh object and populate it using it's methods.
  3. Call the exportMesh method

It's important to realise that this exporter uses OGRE terminology. In this context, 'Mesh' means a top-level mesh structure which can actually contain many SubMeshes, each of which has only one Material. Modelling packages may refer to these differently, for example in Milkshape, it says 'Model' instead of 'Mesh' and 'Mesh' instead of 'SubMesh', but the theory is the same.


Member Typedef Documentation

typedef std::map<String, Material*> Ogre::MeshSerializer::MaterialMap [private]
 


Constructor & Destructor Documentation

Ogre::MeshSerializer::MeshSerializer  
 

Ogre::MeshSerializer::~MeshSerializer   [virtual]
 


Member Function Documentation

unsigned long Ogre::MeshSerializer::calcBoneAssignmentSize void    [private]
 

unsigned long Ogre::MeshSerializer::calcGeometrySize const GeometryData   pGeom [private]
 

unsigned long Ogre::MeshSerializer::calcMaterialSize const Material   pMat [private]
 

unsigned long Ogre::MeshSerializer::calcMeshSize const Mesh   pMesh [private]
 

unsigned long Ogre::MeshSerializer::calcSkeletonLinkSize const String   skelName [private]
 

unsigned long Ogre::MeshSerializer::calcSubMeshSize const SubMesh   pSub [private]
 

unsigned long Ogre::MeshSerializer::calcTextureLayerSize const Material::TextureLayer   pTex [private]
 

void Ogre::MeshSerializer::exportMesh const Mesh   pMesh,
const String   filename,
bool    includeMaterials = false
 

Exports a mesh to the file specified.

Remarks:
This method takes an externally created Mesh object, and exports both it and optionally the Materials it uses to a .mesh file.
Parameters:
pMesh  Pointer to the Mesh to export
filename  The destination filename
includeMaterials  If true, Material data is also exported into the file.

void Ogre::Serializer::flipEndian void *    pData,
size_t    size
[protected, inherited]
 

void Ogre::Serializer::flipEndian void *    pData,
size_t    size,
unsigned short    count
[protected, inherited]
 

void Ogre::Serializer::flipFromLittleEndian void *    pData,
size_t    size,
unsigned short    count = 1
[protected, inherited]
 

void Ogre::Serializer::flipToLittleEndian void *    pData,
size_t    size,
unsigned short    count = 1
[protected, inherited]
 

void Ogre::MeshSerializer::importLegacyOof DataChunk   chunk,
Mesh   pDest
 

Imports Mesh and (optionally) Material data from legacy .oof file DataChunk.

Remarks:
Deprecated. This method is provided for backwards-compatibility only. It imports data from a .oof file which was OGRE's previous mesh data format.

void Ogre::MeshSerializer::importMesh DataChunk   chunk,
Mesh   pDest
 

Imports Mesh and (optionally) Material data from a .mesh file DataChunk.

Remarks:
This method imports data from a DataChunk opened from a .mesh file and places it's contents into the Mesh object which is passed in.
Parameters:
chunk  The DataChunk holding the .mesh data. Must be initialised (pos at the start of the buffer).
pDest  Pointer to the Mesh object which will receive the data. Should be blank already.

void Ogre::Serializer::readBools DataChunk   chunk,
bool *    pDest,
unsigned short    count
[protected, inherited]
 

unsigned short Ogre::Serializer::readChunk DataChunk   chunk [protected, virtual, inherited]
 

void Ogre::Serializer::readFileHeader DataChunk   chunk [protected, virtual, inherited]
 

void Ogre::MeshSerializer::readGeometry DataChunk   chunk,
GeometryData   dest
[private]
 

void Ogre::Serializer::readLongs DataChunk   chunk,
unsigned long *    pDest,
unsigned short    count
[protected, inherited]
 

void Ogre::MeshSerializer::readMaterial DataChunk   chunk [private]
 

void Ogre::MeshSerializer::readMesh DataChunk   chunk [private]
 

void Ogre::MeshSerializer::readMeshBoneAssignment DataChunk   chunk [private]
 

void Ogre::MeshSerializer::readMeshLodInfo DataChunk   chunk [private]
 

void Ogre::MeshSerializer::readMeshLodUsageGenerated DataChunk   chunk,
unsigned short    lodNum,
Mesh::MeshLodUsage   usage
[private]
 

void Ogre::MeshSerializer::readMeshLodUsageManual DataChunk   chunk,
unsigned short    lodNum,
Mesh::MeshLodUsage   usage
[private]
 

void Ogre::Serializer::readObject DataChunk   chunk,
Quaternion   pDest
[protected, inherited]
 

void Ogre::Serializer::readObject DataChunk   chunk,
Vector3   pDest
[protected, inherited]
 

void Ogre::Serializer::readReals DataChunk   chunk,
Real   pDest,
unsigned short    count
[protected, inherited]
 

void Ogre::Serializer::readShorts DataChunk   chunk,
unsigned short *    pDest,
unsigned short    count
[protected, inherited]
 

void Ogre::MeshSerializer::readSkeletonLink DataChunk   chunk [private]
 

String Ogre::Serializer::readString DataChunk   chunk [protected, inherited]
 

void Ogre::MeshSerializer::readSubMesh DataChunk   chunk [private]
 

void Ogre::MeshSerializer::readSubMeshBoneAssignment DataChunk   chunk,
SubMesh   sub
[private]
 

void Ogre::MeshSerializer::readTextureLayer DataChunk   chunk,
Material   pMat
[private]
 

void Ogre::Serializer::writeBools const bool *    pLong,
unsigned short    count
[protected, inherited]
 

void Ogre::Serializer::writeChunkHeader unsigned short    id,
unsigned long    size
[protected, virtual, inherited]
 

void Ogre::Serializer::writeData const void *    buf,
size_t    size,
size_t    count
[protected, inherited]
 

void Ogre::Serializer::writeFileHeader void    [protected, virtual, inherited]
 

void Ogre::MeshSerializer::writeGeometry const GeometryData   pGeom [private]
 

void Ogre::MeshSerializer::writeLodInfo const Mesh   pMesh [private]
 

void Ogre::MeshSerializer::writeLodSummary unsigned short    numLevels,
bool    manual
[private]
 

void Ogre::MeshSerializer::writeLodUsageGenerated const Mesh   pMesh,
const Mesh::MeshLodUsage   usage,
unsigned short    lodNum
[private]
 

void Ogre::MeshSerializer::writeLodUsageManual const Mesh::MeshLodUsage   usage [private]
 

void Ogre::Serializer::writeLongs const unsigned long *    pLong,
unsigned short    count
[protected, inherited]
 

void Ogre::MeshSerializer::writeMaterial const Material   m [private]
 

void Ogre::MeshSerializer::writeMesh const Mesh   pMesh [private]
 

void Ogre::MeshSerializer::writeMeshBoneAssignment const VertexBoneAssignment   assign [private]
 

void Ogre::Serializer::writeObject const Quaternion   q [protected, inherited]
 

void Ogre::Serializer::writeObject const Vector3   vec [protected, inherited]
 

void Ogre::Serializer::writeReals const Real   pReal,
unsigned short    count
[protected, inherited]
 

void Ogre::Serializer::writeShorts const unsigned short *    pShort,
unsigned short    count
[protected, inherited]
 

void Ogre::MeshSerializer::writeSkeletonLink const String   skelName [private]
 

void Ogre::Serializer::writeString const String   string [protected, inherited]
 

void Ogre::MeshSerializer::writeSubMesh const SubMesh   s [private]
 

void Ogre::MeshSerializer::writeSubMeshBoneAssignment const VertexBoneAssignment   assign [private]
 

void Ogre::MeshSerializer::writeTextureLayer const Material::TextureLayer   pTex [private]
 


Member Data Documentation

unsigned long Ogre::Serializer::mCurrentChunkLen [protected, inherited]
 

MaterialMap Ogre::MeshSerializer::mMaterialList [private]
 

FILE* Ogre::Serializer::mpfFile [protected, inherited]
 

Mesh* Ogre::MeshSerializer::mpMesh [private]
 

String Ogre::Serializer::mVersion [protected, inherited]
 

Copyright © 2002 by The OGRE Team