Scene graphs

A scene graph (or object hierarchy) is a tree data structure that is used to store the elements of a 3D scene. It is a directed acyclic graph.

The scene graph consists of nodes. In addition to shape nodes, and nodes such as lights and cameras, the scene graph can contain grouping nodes with children.

Transformation grouping nodes enable objects to be grouped together and transformed (translated, rotated, scaled) as one unit relative to it's parent node. Each transform group has its own local coordinate system, so using a scene graph, you can control the position of objects at different levels.

This is very important because the structure of the scene graph and the manner in which complex objects are split up into parts defines the limits of what is possible if an object is to be animated or made interactive. A virtual human that is to walk must be created as a hierarchy of geometry objects and not as a single geometry object, otherwise it will be impossible to make the model move in a convincing manner.

Example scene graph:

The structure of the scene graph is also important from an efficient rendering perspective as the hierarchy can effect run-time performance. In particular, you should structure objects based on their location and not their type. For example, if you are modelling a building then you should create a hierarchy of rooms with doors and furniture, and not a hierarchy of doors, rooms and furniture where all objects of the same type in the 3D model are grouped together. We will talk more about this in future.




Michael Louka, October 10, 2001