Monkey3D is a utility and API package that is in the final stages of development. It is meant to be a bridge between 3D modeling programs and any applications you wish to create and use 3D models in. The features of the utility (named Monkey Modeler) are as follows:
- Import of 3D models using the obj format. It handles imports of models that use polygons of different numbers of edges, color and specular material importing, and importing of textures.
- The ability to change various aspects such as the specular of the objects within the model, choose flat shading, the placement of textures, and choosing texture generation modes.
- The placement of collision surfaces, including boxes, spheres, capped cylinders, and rays.
- The creation of shadow meshes to make shadow volumes easier to use in the API.
- The creation of skeletons to connect to the meshes for animation support.
- The creation of animations to connect to the skeletons above, and set time-based animations that use inverse kinematics to interpolate.
The following animation types are available.
Movement:
- Linear (constant velocity)
- Accelerated (accelerates for a percentage of the time so it will go through the desired point)
- Accelerated Stopping (accelerates for a percentage of the time, then decelerates so it stops at the desired point)
Interpolation:
- Linear interpolation between keyframes.
- Spline interpolation betweeen keyframes. (NOTE: this doesn't work well when the path goes back on itself within a couple of frames)
Monkey Modeler will export 3 types of files: one for the models, one for the skeletons, and one for the animations. They will be in a binary format, that will be laid out on the disk much like how they will be laid out in memory, making the loading process as quick as possible.
The features of the Monkey3D API will be as follows:
- Importing the above 3 files.
- Functions to draw the models, as well as only specific parts of the models.
- Provides you with the choice to use vertex arrays or VBOs for the models.
- Includes the ODE library to handle the collision detection, and include functions to easily test the collision surfaces contained in the models with other models and collision surfaces.
- Functions to connect skeletons to models, and animate using the imported animations; it will smoothly interpolate from one animation to another, and support multiple animations at once. (as long as they don't animate the same bone at once) The shadows and collisions will also move with the bonese they are connected to.
- Functions to tie assembly shaders together; pieces of shaders for texture coordinate generation will also be included to keep support for that feature whether shaders are used or not. (GLSL shader support may follow after the initial release)
Monkey Modeler (the utility) will be released for Mac OS X only (but it will support both PPC and Intel Macs), but Monkey3D (the API) will support both Mac OS X and Windows, and possibly Linux as well. It will be free and open source.
You can download the demo application for the first phase here. It requires Mac OS X 10.4.3 or later (the final library and utility requirements will be 10.3.9 or later for the Mac) and runs natively under both PPC and Intel. It demonsrates the general model abilities, texturing, shadow meshes, animation, and collision detection. It also demonstrates that usage of vertex shaders and VBOs are handeled correctly.
All the major parts of the API and utility are done and will be released soon, once I finish more testing.