A node in the scene graph.
A node has zero or more parents. Because the number of parents can
be greater than one, the scene graph forms a directed acyclic graph
(DAG). However, the DAG has a single root node, called a
World.
A node can be moved from one world to another, but cannot exist in more
than one world at a time.
A world maintains a selected set of nodes within it. Only nodes that
implement the marker interface
Selectable can be selected.
For convenience, the methods of that interface are implemented in this
abstract base class. Classes that extend this abstract base class may
override the method
#selectedChanged(), typically to modify
the appearance of selected nodes.
Nodes are drawn in what is called the draw process. The draw
process is applied to a node in three steps by calling the methods
#drawBegin(DrawContext),
#draw(DrawContext), and
#drawEnd(DrawContext), in that order. The actual drawing occurs
in the method
#draw(DrawContext). Think of the other two methods
as like opening and closing braces. They might save and restore OpenGL
state, or otherwise push and pop state required for drawing. Nodes must
not leak OpenGL state set while drawing.
To facilitate drawing and picking, all nodes have a bounding sphere.
Ideally, this bounding sphere is the smallest sphere that contains the
node's geometry. Nodes with bounding spheres that do not intersect a
view's frustum will be culled, and not drawn or picked within that
view. Bounding spheres are specified in local coordinates.