motion – 3d engine, C++ (2003-2004)

This engine is being developed in parallel with RCmania. As a software rendering engine, it fits right in the project. However, in the future, it will be possible to plug-in any type of rendering engine that uses any type of graphics library.

The code is highly portable and has already been tested in Windows, WindowsCE, Linux and MacOS-X.

I am very close to achieving the goals that I set for RCmania in the beggining of that project. This is probably my last software rendering engine, so I wan’t to make it the best possible within my reach.

motion1 motion2
motion3 motion4

Engine features:

•  2D and 3D rendering.
•  Scene management based on Scene Graph schemes.
•  Object animation that respects an implicit hierarchy or skeleton.
•  Mesh frustum culling.
•  BSP (Binary Space Partition) Trees for collision detection, and rendering if needed.
•  Loading of internal model format MM (Motion Model) that supports most of the scene objects exposed by the engine, such as dummies, meshes or models, materials, textures, lights, bones, skins, etc…
•  Loading of internal animation format MA (Motion Animation) that supports multiple animation tracks with position, rotation and scale.
•  Loading of 8bit TGA images.

Software renderer features:

•  Rendering to any 32bit memory buffer.
•  Z-Buffer for per-pixel occlusion.
•  Loading of 8bit TGA images to feed the palletized textures used by the engine.
•  8bit Palletized textures.
•  Automatic mip-map generation.
•  Minification filter (mip-mapping).
•  Magnification filter (bilinear).
•  Texture tiling and clamping.
•  Sub-pixel and sub-texel accurate rasterization.
•  Shaded perspective-correct polygons.
•  Textured perspective-correct and shaded polygons.
•  Color keying.
•  Phong-based illumination model.
•  Support for infinite number of lights.
•  Materials.
•  Multiple/sub-object materials.
•  Colored per-pixel Fog.

To be implemented:

•  Camera management.
•  Visibility determination using Octrees or AABB Trees.
•  Particle system.

And maybe also:

•  Occlusion culling.
•  Sorted span-buffer.