Archive for January, 2007
Finally!

Another huge chunk of development, most of it on support code, but it now allows me to create much more interesting images than yet-another-cornell-box.
Rather than just write a scene description format, I took inspiration from some of the stuff we’ve been doing at work and wrote a fairly hefty class library I’ve christened ‘atomic’ (I have to thank John Haddon and Dave Griffiths for the ‘inspiration’ for the design). It basically contains code for storing and manipulating the sorts of data types we care about when describing 3D scenes: point arrays, triangle meshes etc.
The library is bound to python using the excellent boost.python library. Instead of having a scene description I define an abstract RenderInterface, which gangsta (and potentially other renderers such as a preview OpenGL renderer) can implement. The GangstaRenderInterface is bound to python too, so the scene description is really just a python script. Not only does that mean I don’t have to worry about lexing and parsing (eugh!), it also means I can procedurally define geometry etc at render startup time.
The image above was rendered using a script very similar to the one below

But the best thing about having atomic to play with is that it makes writing exporters for your favourite 3d apps ridiculously easy.