Xith3D is scenegraph-based Java 3D programming API focused on game creation.

More information about Xith3D can be found at: http://xith.org

The latest Xith3D version can be downloaded from: http://www.xith.org/pages/download.html

Xith3D scene graph data elements explained.

This guide gives a quick overview of the Xith3D scene graph data elements.
Most information has been gathered from the Java 3D API Tutorial.

Operating system used

Software prerequisites

Virtual universe Represents the whole universe containing all the objects. The virtual universe serves as the root of the scene graph. The coordinate system of the virtual universe is right-handed. The x-axis is positive to the right, y-axis is positive up, and z-axis is positive toward the viewer, with all units in meters.
Locale Locale is an object, uniquely connected to a coordinate system. Each locale object in the virtual universe establishes a virtual world Cartesian coordinate system. A locale object serves as the reference point for visual objects in a virtual universe.
Node Is a data element and is an instance of a Xith3D class.
Arc Represents two kinds of relationships between the Xith3D instances:
  • Parent-child relationship

    Group node - Can have any number of children but only one parent.

    Leaf node - Can have one parent and no children

  • Reference relationship

    A reference assiociates a NodeComponent object with a Node. NodeComponent objects define the geometry and appearance attributes used to render the visual objects.
BranchGroup A BranchGroup is the root of a subgraph also called branch graph. Objects of this type are used to form scene graphs. There are two categories of scene subgraphs:
  • View branch graph

    Specifies the viewing parameters such as the viewing location and direction.

  • Content branch graph

    Specifies the contents of the virtual universe (geometry, appearance, behaviour, location, sound and lights).
BranchGroup objects can be compiled. Compiling converts the entire branch graph below the branch group to a more efficient form for the renderer.

A branch graph is called Live when it is inserted into a Locale. Each object in that branch graph become live.
Scene Graph Path The path from starting from the BranchGroup (= the root of a scene graph) to a specific leaf node. The path specifies the state information (location, orienttaion and size) of the leaf.
NodeComponent NodeComponent is also called a Reference Object. A NodeComponent may be referenced by more than one Shape3D Object
Transform3D Transform3D objects represents transformations of 3D geometry such as translation, rotation, scaling or a combination of these.
Canvas3D The Canvas3D is derived from the Canvas class of the Abstract Windowing Toolkit (AWT). At least one Canvas3D object must be referenced in the viewing branch graph of the scene graph.
TransformGroup The TransformGroups are used in the creation of scene graphs. An object of this type hold geometric transformation such as translation and rotation. It is the only object that can change the location, orientation or size of a visual object. TransformGroup objects use transform matrices to provide their own localised view of this coordinate system.
Vector3f It is used to specify three floating-point values. Vector objects are used to specify translations of geometry.
Capabilities of an object SceneGraphObject is the superclass of nearly every class used to create a scene graph including Group, Leaf, and NodeComponent. When a branch graph is made live or compiled, it is possible to change values of a scene graph object. The list of parameters than can be accessed, and in which way, is called the capabilities of the object. For example: to be able to change the color values in a GeometryArray object, its color write capability must be set before it becomes live, or is compiled (obj.setCapability(GeometryArray.ALLOW_COLOR_WRITE)). Attempting to make a change in a live or compiled object for which the proper capability is not set results in an exception. Object inherits capability settings from its ancestor classes: Group and Node.
Behaviour Behavior is a class for specifying animations of visual objects or interaction with visual objects.

The distinction between animation and interaction is whether the behavior is activated in response to the passing of time or in response to user activities, respectively.

The behavior can change virtually any attribute (location, orientation, size, color or transparency) of a visual object. Once a behavior is specified for a visual object, the Xith3D system updates the position, orientation, color, or other attributes, of the visual object automatically. Each visual object in the virtual universe can have its own predefined behavior. In fact, a visual object may have multiple behaviors. To specify a behavior for a visual object, the programmer creates the objects that specify the behavior, adds the visual object to the scene graph, and makes the appropriate references among scene graph objects and the behavior objects.

A behavior is only active within a spatial boundary. This boundary is called a scheduling region. The scheduling bounds for a behavior are set using the setSchedulingBounds method of the Behavior class.