First look at the Scene Graph


The scene graph consists of superstructure
components-a VirtualUniverse object and a Locale object-and a set of branch
graphs. Each branch graph is a subgraph that is rooted by a BranchGroup node
that is attached to the superstructure.
A VirtualUniverse
object defines a named universe. Java 3D permits the creation of more than
one universe, though the vast majority of applications will use just one. The
VirtualUniverse object provides a grounding for scene graphs. All Java 3D
scene graphs must connect to a VirtualUniverse object to be displayed.
Below the VirtualUniverse object is a
Locale object. The Locale object defines the origin, in high-resolution coordinates,
of its attached branch graphs. A virtual universe may contain as many Locales
as needed. In this example, a single Locale object is defined with its origin
at (0.0, 0.0, 0.0).
The scene graph itself starts with the
BranchGroup nodes. A BranchGroup serves as the root of a subgraph, called a
branch graph, of the scene graph. Only BranchGroup objects can attach
to Locale objects.
In this example there are two branch
graphs and, thus, two BranchGroup nodes. Attached to the left BranchGroup are
two subgraphs. One subgraph consists of a user-extended Behavior leaf node.
The Behavior node contains Java code for manipulating the transformation matrix
associated with the object's geometry.
The other subgraph in this BranchGroup
consists of a TransformGroup node that specifies the position (relative to the
Locale), orientation, and scale of the geometric objects in the virtual universe.
A single child, a Shape3D leaf node, refers to two component objects: a Geometry
object and an Appearance object. The Geometry object describes the geometric
shape of a 3D object (a cube in our simple example). The Appearance object describes
the appearance of the geometry (color, texture, material reflection characteristics,
and so forth).
The right BranchGroup has a single subgraph
that consists of a TransformGroup node and a ViewPlatform leaf node. The TransformGroup
specifies the position (relative to the Locale), orientation, and scale of the
ViewPlatform. This transformed ViewPlatform object defines the end user's view
within the virtual universe.
Finally, the ViewPlatform is referenced
by a View object that specifies all of the parameters needed to render the scene
from the point of view of the ViewPlatform. Also referenced by the View object
are other objects that contain information, such as the drawing canvas into
which Java 3D renders, the screen that contains the canvas, and information
about the physical environment.