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
Mesh * mpMesh

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