OGRE  1.12.13
Object-Oriented Graphics Rendering Engine
Mesh Tools

There are a number of mesh tools available with OGRE to help you manipulate your meshes.

Exporters

For getting data out of modellers and into OGRE.

XMLConverter

For converting meshes and skeletons to/from XML.

MeshUpgrader

For upgrading binary meshes from one version of OGRE to another.

Exporters

Exporters are plugins to 3D modelling tools which write meshes and skeletal animation to file formats which OGRE can use for realtime rendering. The files the exporters write end in .mesh and .skeleton respectively.

Each exporter has to be written specifically for the modeller in question, although they all use a common set of facilities provided by Ogre::MeshSerializer and Ogre::SkeletonSerializer. They also normally require you to own the modelling tool.

All the exporters here can be built from the source code, or you can download precompiled versions from the OGRE web site.

A Note About Modelling / Animation For OGRE

There are a few rules when creating an animated model for OGRE:

  • You must have no more than 4 weighted bone assignments per vertex. If you have more, OGRE will eliminate the lowest weighted assignments and re-normalise the other weights. This limit is imposed by hardware blending limitations.
  • All vertices must be assigned to at least one bone - assign static vertices to the root bone.
  • At the very least each bone must have a keyframe at the beginning and end of the animation.

If you’re creating non-animated meshes, then you do not need to be concerned with the above.

Full documentation for each exporter is provided along with the exporter itself, and there is a selection of the currently supported modelling tools at OGRECave.

A Note About empty Material Names

It is highly recommended for any mesh files to have a material name set, otherwise most mesh tools will fail with an exception. Even if they don't, the exception will happen deep inside the render-loop which is way harder to debug (unless you set the material programmatically).

To set a material name for the mesh, you have these options:

  • Re-export the mesh from your preferred DCC (Digital Content Creator) exporter, making sure that a material has been assigned.
  • Edit the mesh.xml file to set a material name and reprocess the xml with OgreXMLConverter.
  • Edit the mesh file with MeshMagick MeshMagick to set a material name

XMLConverter

The OgreXMLConverter tool can converter binary .mesh and .skeleton files to XML and back again - this is a very useful tool for debugging the contents of meshes, or for exchanging mesh data easily - many of the modeller mesh exporters export to XML because it is simpler to do, and OgreXMLConverter can then produce a binary from it.

Syntax
OgreXMLConverter [options] sourcefile [destfile]
Parameters
sourcefilename of file to convert
destfileoptional name of file to write to. If you don't specify this OGRE works it out through the extension and the XML contents if the source is XML. For example test.mesh becomes test.xml, test.xml becomes test.mesh if the XML document root is mesh etc.

MeshUpgrader

This tool is provided to allow you to upgrade your meshes when the binary format changes - sometimes we alter it to add new features and as such you need to keep your own assets up to date. Furthermore, OgreMeshUpgrader can generate additional information for the mesh, like bounding regions and level-of-detail reduction.

Syntax
OgreMeshUpgrader [options] sourcefile [destfile]
Note
The OGRE release notes will notify you when meshes should be upgraded with a new release.

When specifying the -i option, you will be prompted to (re)generate level-of-detail(LOD) information for the mesh - you can choose to skip this part if you wish, but doing it will allow you to make your mesh reduce in detail automatically when it is loaded into the engine. The engine uses a complex algorithm to determine the best parts of the mesh to reduce in detail depending on many factors such as the curvature of the surface, the edges of the mesh and seams at the edges of textures and smoothing groups - taking advantage of it is advised to make your meshes more scalable in real scenes.