Magdef 3D (M3D) is the 3D module of the Mac Game Development Framework. It is a C++ class library based on QuickDraw 3D (though in the future, we hope to make the back-end renderer exchangable).
The files in the M3D module are described below. See also:
- 3D Tools -- some other tools that might be handy for 3D game development
- 3D Gotchas -- quirks likely to
cause you headaches if you don't know about them
- status chart -- list of features planned and implemented
Here are the classes and other files currently found in the M3D package, with a brief description of each one. Please keep in mind that M3D is still in a very early stage, and the structure is likely to change.
- M3DGeom.h -- this header file wraps the QD3D "TQ3Vector3D" struct in a proper C++ class with appropriate operators. This not only makes it easier to use, but also faster in many cases (since the operations are inline).
- M3DObject -- this class encapsulates a 3D object, which may be composed of a number of TriMeshes. It provides routines to move, rotate, scale, and otherwise transform the objects, and also automates memory management. It does not yet handle collision detection -- but it will...
- M3DBonesModel -- this is a derivative of M3DObject which keeps uses a "skeleton" to smoothly deform the mesh as the object is posed. Intended primarily for character animation. This class is nowhere even close to being ready for use.
- M3DScene -- M3DScene encapsulates all the QD3D set-up, shut-down, and rendering details. Most apps will just have a single M3DScene object; you'll add your objects to it, position its camera, then call its render method as often as possible.
- MakeShaderFromPict -- this is not a class, but a little utility function to make a texture map from a PICT resource. You'd be amazed what a pain in the neck that is!
- TriMesh -- this class encapsulates a QD3D "TriMesh", which is a surface defined by a bunch of triangles, all with the same material (color, texture, etc.). This is the only geometric primitive supported by M3D, because it produces far better performance than any others. Methods are provided to transform a TriMesh in various ways.
. . . . . .