@c -*-texinfo-*-
@node MeshObject, Lighting System, Engine, Using Crystal Space
@section Mesh Object Plug-In System
@cindex MeshObject Plug-In
@cindex Plug-In, MeshObject

This section covers the Crystal Space Mesh Object plug-in system.  This is a
very general system for defining various kinds of 3D objects and using them in
the Crystal Space 3D engine.  You can use them to simulate things like
snow, rain, fountains, fire, explosions, @dots{}.

In practice you will probably want to use the following mesh objects
in your own game:

@itemize @bullet
@item
@samp{GenMesh} (@pxref{MeshObject Genmesh}). The genmesh object is one of the
most useful mesh objects. You can use it for static data (walls, buildings,
floor, @dots{}) or for dynamic data (moving objects). It supports multiple
materials, vertex lighting, and even animation. Using the new @samp{lighter2}
app it can also support lightmaps. @xref{Using lighter2}.
@item
@samp{AniMesh} (@pxref{MeshObject Animesh}). The animesh is the main mesh
dedicated to skeletal and morphing animations. It is perfect for objects with
shapes deforming over the time.
@item
@samp{Terrain2}. The terrain object is very
useful if you want landscapes although you can do landscapes with genmesh
too. But the terrain mesh object can do it more efficiently.
@item
@samp{Particles}. If you want particles then the particles mesh is
the best choice. Currently the @samp{Emit} particle system is also supported
but it should be avoided as it is very slow and is going to be removed
in the future as well.
@end itemize

In the first section a general overview is given on some of the concepts
in the mesh object system.

In the second section you will see how you can use mesh objects in your own
applications and how you can work with them.

The third section covers everything needed to write your own mesh object
plug-in modules.

After that there is a section for every specific mesh object plugin that
Crystal Space supports.

@menu
* MeshObject Concepts::
* Using MeshObject:: Using Mesh Objects
* Writing MeshObjects:: Writing Mesh Objects
* HOWTO Create Genmesh:: Creating a Genmesh Mesh
* HOWTO Mesh LightAnim:: Mesh Lighting and Animation
* HOWTO Mesh Movement:: Mesh Movement
* MeshObject Genmesh:: Genmesh Mesh Object
* MeshObject Animesh:: Animesh Mesh Object
* MeshObject TerrFunc:: Terrain Mesh Object
* MeshObject Terrain2:: Terrain2 Mesh Object
* MeshObject Particles:: Particles Mesh Object
* MeshObject Portal Container:: Portal Container Mesh Object
* MeshObject SprCal3D:: SpriteCal3D Mesh Object
* MeshObject Spr2D:: Sprite2D Mesh Object
* MeshObject Spr3D:: Sprite3D Mesh Object
* MeshObject Emit:: Emitter Mesh Object
* MeshObject Haze:: Haze Mesh Object
* MeshObject Watermesh:: Watermesh Mesh Object
* Furmesh Mesh::
@end menu

@importss{usingcs,meshobj,concepts.txi}
@importss{usingcs,meshobj,using.txi}
@importss{usingcs,meshobj,writing.txi}
@importss{usingcs,meshobj,creategenmesh.txi}
@importss{usingcs,meshobj,meshanim.txi}
@importss{usingcs,meshobj,meshmove.txi}
@importss{usingcs,meshobj,genmesh.txi}
@importss{usingcs,meshobj,animesh.txi}
@importss{usingcs,meshobj,animeshtools.txi}
@importss{usingcs,meshobj,terrfunc.txi}
@importss{usingcs,meshobj,terrain2.txi}
@importss{usingcs,meshobj,particles.txi}
@importss{usingcs,meshobj,portalcontainer.txi}
@importss{usingcs,meshobj,sprcal3d.txi}
@importss{usingcs,meshobj,spr2d.txi}
@importss{usingcs,meshobj,spr3d.txi}
@importss{usingcs,meshobj,emit.txi}
@importss{usingcs,meshobj,haze.txi}
@importss{usingcs,meshobj,watermesh.txi}
@importsss{usingcs,meshobj,furmesh,chapter.txi}
