Togra is a 3D scene graph library, written from scratch in C as a Python
extension.  The idea behind Togra is that critical sections of code are
implemented in a modular fashion in C, but used through Python.  This allows
clear and maintainable application logic to be written in a fraction of the
time.  Togra is also designed to make 3D programming accessible to EVERYONE! -
interfaces are designed to be as simple as possible, and behaviours are
designed to be as understandable as possible.  The simplest Togra script that
does something is literally 4 lines long.

Togra is implemented as a series of modules.  Each module performs a specific
piece of functionality and exports a specific set of C interfaces.  Modules are
defined by xml descriptions and a small amount of C code.  A custom IDL
parser/generator converts the xml descriptions into Python plugin code.  This
cuts down on module development time and also allows module developers to make
use of advanced Python extension features without knowing how to access those
features.

Modules are arranged into a scene graph using Python code, then displayed.  
Callbacks allow more Python code to interact with the user and modify the 
scene graph.

Togra's design means that third-party library support is easy to integrate.
Currently, GStreamer provides support for video textures, while ODE allows
objects to have realtime physics properties and collision detection.

The Togra framework is also excellent for fast prototyping, as new modules are
easy to write, and can be first developed in Python via automatically generated
"Proto" modules, each of which implement a single C interface by calls into
user-provided Python functions.  This enables users to quickly test an idea in
Python and get their algorithm right before implementing that algorithm in C.

Although still under heavy development, Togra has many interesting features,
such as motion paths, transform trees, dynamic surfaces, mirror reflection,
video and static textures, physics simulation, and others.  Future support is
planned for additional features such as portal-engine based scene graphs,
texture and vertex shaders, gstreamer positional audio, procedural textures,
bump mapping and others.

My seminar will present the idea behind Togra, demonstrate the ease with which
scene graphs can be constructed and modules added, and provide plenty of
eye-candy in the form of demonstrations.

For more information, please see http://togra.sf.net, or contact me at
shane.stephens@gmail.com.
