Scene graph is a popular method to organize game objects and UI. Scene graphs can be handy when you go totally data-driven. Wiki says:
The scene graph is a structure that arranges the logical and often (but not necessarily) spatial representation of a graphical scene. The definition of a scene graph is fuzzy because programmers who implement scene graphs in applications and in particular the games industry take the basic principles and adapt these to suit particular applications. This means there is no consensus as to what a scene graph should be.
Some links:
Understanding and Implementing Scene Graphs
Game Object Structure: Scene Graphs
Game Object Structure: Scene Graphs Revisited
"Dependency Graphs In Games" by Jelle van der Beek
Infinity: Pipeline system description
Google image "scene graph" search shows that there are many different approaches to build scene graphs. Some of them:
- Nodes contain only logic data.
- Nodes contain and combine logic data, meshes, rendering states, transformations etc.
- Nodes are used to separate spatial information to optimize collision checks etc.
- Nodes are used to set up joints and constraints.
- Nodes contain rendering pipelines only.
Some implementations use Visitor Pattern and concept of RenderPasses.
Some authors recommend to use DAG (directed acyclic graphs) despite of tree graphs, because trees are not great for handling Observer relationships. Dirty bits are used to check if the node was updated during current pass.
My question. It is very interesting to build scene graph classification. Scene graph concept is too abstract and can be broadly interpreted, that is why it's important to build a classification and basic guides. Which scene graph classification do you know / would you propose?
Please, post one classification per answer.