View the code for this example.
Note how the “onEnterFrame” function is only 8 lines long.
Download min3D sample app
(Android v1.5 or higher)
This post announces a 3D framework/library-in-progress I’ve been writing for Android, written in Java with OpenGL ES. Between the names min3d, modest3d, and llama3d, I’ve gone with “min3d” for being the least self-deprecating while still conveying an appropriate level of expectation that I’m comfortable with. :)
I’ve gone legit by putting it up on Google Code (first time for everything, etc.). While just an early build, it should at the very least be useful for educational purposes if like me you’re just starting down the Android path.
My aim while building this was to make a library that required no extra massaging of model data on its way to being used by OpenGL. To that end, data can be created and manipulated directly on the
ByteBuffers that are used by OpenGL, without the need for any intermediating (ie, redundant) data structures. And hopefully wrapped in such a way that’s still relatively easy to use.
But this approach also imposes some important restrictions. The maximum number of vertices and faces of an
Object3d is fixed after instantiation, and the dynamic addition/removal of vertex or face elements is currently not supported. If/when implemented, these operations will have to be much more costly than, say, with a linked list. But unavoidable, as far as I can tell.
Here’s what’s currently implemented through the API (all conventional stuff…)
- Vertex index lists
- Per-vertex colors
- Vertex normals
- Texture mapping
- Light source (just the one, for now)
- Camera class, with view frustrum settings
- Object scale, euler rotation, and translation properties as expected
- Object children that inherit parent’s transform properties
- Ability to render a subset of an object’s list of faces
- Triangle or point rendermodes (just the two, for now)
- A few canned object primitives
Code examples showing how to actually use “min3d” in its current form can be found through the project home page on Google Code by checking out the source with SVN, and going through the sampleProjects/ directory.
In the immediate future, I’d like to be able to at least add a light manager and a 3d-file format importer, and definitely test and debug more thoroughly. If anyone is interested in collaborating on or even picking up this project, please let me know.