Nova3D

- Open Source Realtime 3D Rendering Library for Symbian -

Contact: matti {at} 777-team {dot} org


News
3.1.2005 - Nova3D released
Nova3D 1.0RC1 is out. It got postponed because it was (and still is) suffering from performance and accuracy problems in the rasterizer and lighting. Many of these issues have been addressed, yet some remain to be fixed.
Features
The principal feature supported currently are:
  • Easy-to-use scene graph API for flexible hierarchial transformations
  • Efficient (partly) assembler-optimized fixed point library
  • Per-pixel perspective correction in texture mapping (done with single table lookup + 2 multiplys)
  • Bilinear filtering for textures
  • Realistic lightsource support (ambient + point light). Number of light sources is not limited.
  • Gouraud shading for both textured and vertex-colored polygons
  • Simple environment mapping support
  • Image/texture/object loading APIs, 2D blitting etc.
Main TODOs:
  • Subpixel/subtexel accuracy to rasterizer
  • Fix texture twitches at certain angles
  • Improve performance (surprising..)
  • View frustum clipping w/ bounding sphere rejection
  • OpenGL ES interface
Introduction
Nova 3D is a polygon-based 3D graphics library ("engine"), released under the LGPL licence. Its key design principles are modularity, usability and efficiency. The common object-oriented idioms and design patterns were widely used to improve the quality of the software and to ensure its maintainability. It was originally developed in 2000-2001 for intended commercial purposes but after having realized I lacked the enthusiasm to pursue a publishing deal it was left untouched until the early 2003 when the core parts were rewritten. In September 2004, it was early-released (under the open source licence LGPL) as an entry for Open Summer 2004 -open source programming competition, in which it reached the third place.

Here are the old pages of the project, containing now-deprecated voxel stuff.

Downloads
1.0 RC1 - 3.1.2005
Full source
Demos
SpinningCube
This is a minimimalistic Nova3D app. It shows how to derive a DSAEngine -class, create the framework API facade and construct a simple scene graph containing a single camera and one object, using the example stock objects provided by Nova3D. Toggle the object by clicking the joystick button.

Download for Series60v1.x and Series60v2.x.

SimpleScene
This is another quite simple setup. It features loading objects from a Wavefront .obj file, enabling environment mapping and lighting and a somewhat more complex scene graph. It also shows how to use the normal vector optimizer and how to use the "look-at" feature of the camera. Move the camera around the center of the room by pressing left/right on the joystick.

Download for Series60v1.x and Series60v2.x.