Class dnx.lr.node.BackgroundNode
All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class dnx.lr.node.BackgroundNode

java.lang.Object
   |
   +----dnx.util.DNXObject
           |
           +----dnx.lr.Node
                   |
                   +----dnx.lr.LeafNode
                           |
                           +----dnx.lr.BindableNode
                                   |
                                   +----dnx.lr.node.BackgroundNode

public class BackgroundNode
extends BindableNode
 Background {
    eventIn      SFBool       set_bind        
    exposedField MFFloat      groundAngle     []
    exposedField MFColor      groundColor     []
    exposedField MFString     backUrl         []
    exposedField MFString     bottomUrl       []
    exposedField MFString     frontUrl        []
    exposedField MFString     leftUrl         []
    exposedField MFString     rightUrl        []
    exposedField MFString     topUrl          []
    exposedField MFFloat      skyAngle        []
    exposedField MFColor      skyColor        [ 0 0 0 ]
    eventOut     SFBool       isBound         
 }

The Background node is used to specify a color backdrop that simulates ground and sky, as well as a background texture, or panorama, that is placed behind all geometry in the scene and in front of the ground and sky. Background nodes are specified in the local coordinate system and are affected by the accumulated rotation of their parents (see below).

Background nodes are bindable nodes (see "Concepts - Bindable Children Nodes"). There exists a Background stack, in which the top-most Background on the stack is the currently active Background and thus applied to the view. To move a Background to the top of the stack, a TRUE value is sent to the set_bind eventIn. Once active, the Background is then bound to the browsers view. A FALSE value of set_bind, removes the Background from the stack and unbinds it from the browser viewer. See "Concepts - Bindable Children Nodes" for more details on the the bind stack.

The ground and sky backdrop is conceptually a partial sphere (i.e. ground) enclosed inside of a full sphere (i.e. sky) in the local coordinate system, with the viewer placed at the center of the spheres. Both spheres have infinite radius (epsilon apart), and each is painted with concentric circles of interpolated color perpendicular to the local Y axis of the sphere. The Background node is subject to the accumulated rotations of its parent transformations - scaling and translation transformations are ignored. The sky sphere is always slightly farther away from the viewer than the ground sphere - the ground appears in front of the sky in cases where they overlap.

The skyColor field specifies the color of the sky at the various angles on the sky sphere. The first value of the skyColor field specifies the color of the sky at 0.0 degrees, the north pole (i.e. straight up from the viewer). The skyAngle field specifies the angles from the north pole in which concentric circles of color appear - the north pole of the sphere is implicitly defined to be 0.0 degrees, the natural horizon at pi/2 radians, and the south pole is pi radians. skyAngle is restricted to increasing values in the range 0.0 to pi. There must be one more skyColor value than there are skyAngle values - the first color value is the color at the north pole, which is not specified in the skyAngle field. If the last skyAngle is less than pi, then the color band between the last skyAngle and the south pole is clamped to the last skyColor. The sky color is linearly interpolated between the specified skyColor values.

The groundColor field specifies the color of the ground at the various angles on the ground sphere. The first value of the groundColor field specifies the color of the ground at 0.0 degrees, the south pole (i.e. straight down). The groundAngle field specifies the angles from the south pole that the concentric circles of color appear - the south pole of the sphere is implicitly defined at 0.0 degrees. groundAngle is restricted to increasing values in the range 0.0 to pi. There must be one more groundColor values than there are groundAngle values - the first color value is for the south pole which is not specified in the groundAngle field. If the last groundAngle is less than pi (it usually is), then the region between the last groundAngle and the north pole is invisible. The ground color is linearly interpolated between the specified groundColor values.

The backUrl, bottomUrl, frontUrl, leftUrl, rightUrl, and topUrl fields specify a set of images that define a background panorama, between the ground/sky backdrop and the world's geometry. The panorama consists of six images, each of which is mapped onto the faces of an infinitely large cube centered in the local coordinate system. The images are applied individually to each face of the cube; the entire image goes on each face. On the front, back, right, and left faces of the cube, when viewed from the inside with the Y-axis up, the texture is mapped onto each face with the same orientation as the if image was displayed normally in 2D. On the top face of the cube, when viewed from the inside looking up along the +Y axis with the +Z axis as the view up direction, the texture is mapped onto the face with the same orientation as the if image was displayed normally in 2D. On the bottom face of the box, when viewed from the inside down the -Y axis with the -Z axis as the view up direction, the texture is mapped onto the face with the same orientation as the if image was displayed normally in 2D.

Alpha values in the panorama images (i.e. two or four component images) specify that the panorama is semi-transparent or transparent in regions, allowing the groundColor and skyColor to be visible. One component images are displayed in greyscale; two component images are displayed in greyscale with alpha transparency; three component images are displayed in full RGB color; four component images are displayed in full RGB color with alpha transparency. Often, the bottomUrl and topUrl images will not be specified, to allow sky and ground to show. The other four images may depict surrounding mountains or other distant scenery. Browsers are required to support the JPEG [JPEG] and PNG [PNG] image file formats, and in addition, may support any other image formats. Support for the GIF [GIF] format (including transparent backgrounds) is recommended. See the section "Concepts - URLS and URNs" for details on the url fields.

Panorama images may be one component (greyscale), two component (greyscale plus alpha), three component (full RGB color), or four-component (full RGB color plus alpha).

Ground colors, sky colors, and panoramic images do not translate with respect to the viewer, though they do rotate with respect to the viewer. That is, the viewer can never get any closer to the background, but can turn to examine all sides of the panorama cube, and can look up and down to see the concentric rings of ground and sky (if visible).

Background is not affected by Fog. Therefore, if a Background is active (i.e bound) while a Fog is active, then the Background will be displayed with no fogging effects. It is the author's responsibility to set the Background values to match the Fog (e.g. ground colors fade to fog color with distance and panorama images tinted with fog color).

The first Background node found during reading of the world is automatically bound (receives set_bind TRUE) and is used as the initial background when the world is loaded.


Variable Index

 o backUrl
 o bottomUrl
 o frontUrl
 o groundAngle
 o groundColor
 o isBound
 o leftUrl
 o rightUrl
 o skyAngle
 o skyColor
 o topUrl

Constructor Index

 o BackgroundNode()

Method Index

 o createNodeDefinition(NodeDefinition)
Create the node definition.
 o handleEvent(SceneEvent)
Handle an event.
 o handleFieldChange(Field)
Handle a field change.
 o initFields()
Initialize field values.
 o postIsBoundEvent()
 o postIsUnboundEvent()
 o render(NodeInstance, Graphics3D)

Variables

 o groundAngle
  public MFFloat groundAngle
 o groundColor
  public MFColor groundColor
 o backUrl
  public MFString backUrl
 o bottomUrl
  public MFString bottomUrl
 o frontUrl
  public MFString frontUrl
 o leftUrl
  public MFString leftUrl
 o rightUrl
  public MFString rightUrl
 o topUrl
  public MFString topUrl
 o skyAngle
  public MFFloat skyAngle
 o skyColor
  public MFColor skyColor
 o isBound
  public SFBool isBound

Constructors

 o BackgroundNode
  public BackgroundNode()

Methods

 o createNodeDefinition
  protected void createNodeDefinition(NodeDefinition def)
Create the node definition.
Overrides:
createNodeDefinition in class Node
 o initFields
  protected void initFields()
Initialize field values.
Overrides:
initFields in class Node
 o render
  public void render(NodeInstance inst,
                     Graphics3D g3d)
 o handleEvent
  protected void handleEvent(SceneEvent ev)
Handle an event.
Overrides:
handleEvent in class Node
 o postIsBoundEvent
  public void postIsBoundEvent()
Overrides:
postIsBoundEvent in class BindableNode
 o postIsUnboundEvent
  public void postIsUnboundEvent()
Overrides:
postIsUnboundEvent in class BindableNode
 o handleFieldChange
  protected void handleFieldChange(Field f)
Handle a field change.
Overrides:
handleFieldChange in class Node

All Packages  Class Hierarchy  This Package  Previous  Next  Index