A flexible file format
Instead of using cumbersome obj files to describe our scene, we decided to build our own XML-based file format.
Features
BZip2 compression
As the tags used with XML are of course far from optimal in storage and increase the size quite a bit, we added support for BZip2 compressed xml files.Animation
We include support for defining the range of frames to render, and separation of static, affine and dynamic objects. Static objects only need information for the first frame and a world matrix. Affine objects need a world matrix for every frame. Dynamic objects are described in world coordinates (to reduce the number of matrix transformations at runtime) and include mesh information for every frame.Materials
Objects can share material data, which is defined in an extra file, loading of currently implemented Materials is supported. In addition one can load UVs for vertices.Cameras
Perspective cameras can have per frame positions and viewing directions.Lights
Any kind of implemented light can be loaded.Export
For quick exporting a Blender script has been written. (Can be found in the /xml subfolder of the project root) As xml files become big very easily and DOM parsers are unable to handle such data (without unacceptable memory overhead), we use the xmlpullparser implementation from WSDLPull.