com.sun.j3d.utils.universe
Class ViewingPlatform

java.lang.Object
  extended by javax.media.j3d.SceneGraphObject
      extended by javax.media.j3d.Node
          extended by javax.media.j3d.Group
              extended by javax.media.j3d.BranchGroup
                  extended by com.sun.j3d.utils.universe.ViewingPlatform

public class ViewingPlatform
extends BranchGroup

This class is used to set up the "view" side of a Java 3D scene graph. The ViewingPlatform object contains a MultiTransformGroup node to allow for a series of transforms to be linked together. To this structure the ViewPlatform is added as well as any geometry to associate with this view platform.

See Also:
ViewPlatform

Field Summary
protected  BranchGroup avatarRoot
          Used to keep track of added geometry.
protected  BranchGroup behaviors
          Used to keep track of behaviors.
protected  MultiTransformGroup mtg
          MultiTransformGroup that holds all TransformGroups between the BranchGroup and the View object.
protected  PlatformGeometry platformGeometry
          Cached PlatformGeometry object.
protected  BranchGroup platformGeometryRoot
          Used to keep track of added geometry.
protected  SimpleUniverse universe
          The universe to which this viewing platform is attached
protected  java.util.Hashtable viewerList
          Table of the Viewer objects.
protected  ViewPlatform viewPlatform
          Cached ViewPlatform associated with this ViewingPlatform object.
 
Fields inherited from class javax.media.j3d.BranchGroup
ALLOW_DETACH
 
Fields inherited from class javax.media.j3d.Group
ALLOW_CHILDREN_EXTEND, ALLOW_CHILDREN_READ, ALLOW_CHILDREN_WRITE, ALLOW_COLLISION_BOUNDS_READ, ALLOW_COLLISION_BOUNDS_WRITE
 
Fields inherited from class javax.media.j3d.Node
ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_LOCALE_READ, ALLOW_PARENT_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING
 
Constructor Summary
ViewingPlatform()
          Creates a default ViewingPlatform object.
ViewingPlatform(int numTransforms)
          Creates the ViewingPlatform object.
 
Method Summary
(package private)  void addViewer(Viewer viewer)
          When a ViewingPlatform is set by a Viewer, the ViewingPlatform needs to be informed, via a call to this method.
(package private)  void addViewPlatformBehavior(ViewPlatformBehavior behavior)
          Adds a new ViewPlatformBehavior to the ViewingPlatform
private  int findAvatarChild(ViewerAvatar avatar)
          Returns the avatarRoot child number of the ViewerAvatar object.
 MultiTransformGroup getMultiTransformGroup()
          Returns the MultitransformGroup object for this ViewingPlatform object.
 PlatformGeometry getPlatformGeometry()
          Returns the PlatformGeometry associated with this ViewingPlatform
 SimpleUniverse getUniverse()
          Returns the Universe to which this ViewingPlatform is attached
 Viewer[] getViewers()
          Returns the Viewers attached to this ViewingPlatform
 ViewPlatform getViewPlatform()
          Returns the ViewPlatform node for this ViewingPlatform object.
 ViewPlatformBehavior getViewPlatformBehavior()
          Returns the ViewPlatformBehavior
(package private)  ViewPlatformBehavior getViewPlatformBehavior(int index)
          Returns the ViewPlatformBehavior at the specified index
(package private)  int getViewPlatformBehaviorCount()
          Returns the number of ViewPlatformBehaviors on the ViewingPlatform
 TransformGroup getViewPlatformTransform()
          Returns a reference to the "bottom most" transform in the MultiTransformGroup that is above the ViewPlatform node.
(package private)  void removeViewer(Viewer viewer)
           
(package private)  void removeViewPlatformBehavior(ViewPlatformBehavior behavior)
          Removes the specified ViewPlatformBehavior
(package private)  void setAvatar(Viewer viewer, ViewerAvatar avatar)
          Adds the ViewerAvatar to the scene graph.
 void setNominalViewingTransform()
          Sets the nominal viewing distance in the ViewPlatform transform based on the current field of view.
 void setPlatformGeometry(PlatformGeometry pg)
          Assigns the geometry to associate with the ViewingPlatform.
 void setUniverse(SimpleUniverse universe)
          Sets the Universe to which this ViewingPlatform is attached
 void setViewPlatform(ViewPlatform vp)
          Sets the ViewPlatform node for this ViewingPlatform object.
 void setViewPlatformBehavior(ViewPlatformBehavior behavior)
          Sets the ViewPlatformBehavior which will operate on the ViewPlatform transform (the TransformGroup returned by ViewingPlatform.getViewPlatformTransform()).
 
Methods inherited from class javax.media.j3d.BranchGroup
cloneNode, compile, detach, pickAll, pickAll, pickAllSorted, pickAllSorted, pickAny, pickAny, pickClosest, pickClosest
 
Methods inherited from class javax.media.j3d.Group
addChild, getAllChildren, getAlternateCollisionTarget, getChild, getCollisionBounds, indexOfChild, insertChild, moveTo, numChildren, removeAllChildren, removeChild, removeChild, setAlternateCollisionTarget, setChild, setCollisionBounds
 
Methods inherited from class javax.media.j3d.Node
cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, duplicateNode, getBounds, getBoundsAutoCompute, getCollidable, getLocale, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable
 
Methods inherited from class javax.media.j3d.SceneGraphObject
clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

viewPlatform

protected ViewPlatform viewPlatform
Cached ViewPlatform associated with this ViewingPlatform object.


mtg

protected MultiTransformGroup mtg
MultiTransformGroup that holds all TransformGroups between the BranchGroup and the View object.


platformGeometryRoot

protected BranchGroup platformGeometryRoot
Used to keep track of added geometry. When geometry is added to the view platform, an addChild to this BranchGroup is performed.


avatarRoot

protected BranchGroup avatarRoot
Used to keep track of added geometry. When geometry is added for an avatar, an addChild to this BranchGroup is performed.


platformGeometry

protected PlatformGeometry platformGeometry
Cached PlatformGeometry object.


viewerList

protected java.util.Hashtable viewerList
Table of the Viewer objects.


behaviors

protected BranchGroup behaviors
Used to keep track of behaviors.

Since:
Java 3D 1.2.1

universe

protected SimpleUniverse universe
The universe to which this viewing platform is attached

Since:
Java 3D 1.3
Constructor Detail

ViewingPlatform

public ViewingPlatform()
Creates a default ViewingPlatform object. This consists of a MultiTransfromGroup node with one transform and a ViewPlatform object. The ViewPlatform is positioned at (0.0, 0.0, 0.0).


ViewingPlatform

public ViewingPlatform(int numTransforms)
Creates the ViewingPlatform object. This consists of a MultiTransfromGroup node with the specified number of transforms (all initialized to the identity transform). and a ViewPlatform object.

Parameters:
numTransforms - The number of transforms the MultiTransformGroup node should contain. If this number is less than 1, 1 is assumed.
Method Detail

setViewPlatform

public void setViewPlatform(ViewPlatform vp)
Sets the ViewPlatform node for this ViewingPlatform object.

Parameters:
vp - The ViewPlatform node to associate with this ViewingPlatform object.

getViewPlatform

public ViewPlatform getViewPlatform()
Returns the ViewPlatform node for this ViewingPlatform object.

Returns:
The ViewPlatform node associated with this ViewingPlatform object.

setPlatformGeometry

public void setPlatformGeometry(PlatformGeometry pg)
Assigns the geometry to associate with the ViewingPlatform. PlatformGeometry is used to hold any geometry to be associated with the ViewingPlatform. If the ViewingPlatform is to be the inside of a car, for instance, than the PlatformGeometry could be the dashboard of the car.

Parameters:
pg - The geometry to be associated with this ViewingPlatform. Passing in null has the effect of deleting any geometry associated with this ViewingPlatform.

getPlatformGeometry

public PlatformGeometry getPlatformGeometry()
Returns the PlatformGeometry associated with this ViewingPlatform

Returns:
The PlatformGeometry associated with this ViewingPlatform

getMultiTransformGroup

public MultiTransformGroup getMultiTransformGroup()
Returns the MultitransformGroup object for this ViewingPlatform object.

Returns:
The MultitransformGroup object.

getViewPlatformTransform

public TransformGroup getViewPlatformTransform()
Returns a reference to the "bottom most" transform in the MultiTransformGroup that is above the ViewPlatform node.

Returns:
The TransformGroup that is immediately above the ViewPlatform object.

setNominalViewingTransform

public void setNominalViewingTransform()
Sets the nominal viewing distance in the ViewPlatform transform based on the current field of view. If the ViewAttachPolicy is not the default of View.NOMINAL_HEAD, then this method has no effect.

The ViewPlatform is moved back along Z so that objects at the origin spanning the normalized X range of -1.0 to +1.0 can be fully viewed across the width of the window. This is done by setting a translation of 1/(tan(fieldOfView/2)) in the ViewPlatform transform.

If there is no Viewer object associated with this ViewingPlatform object the default field of view of PI/4.0 is used.

NOTE: Support for multiple Viewer objects is not available. If multiple viewers are attached to this ViewingPlatform than a RuntimeException will be thrown.


findAvatarChild

private int findAvatarChild(ViewerAvatar avatar)
Returns the avatarRoot child number of the ViewerAvatar object. All the children of the avatarRoot are compared with the passed in ViewerAvatar. If a match is found, the index is returned.

Parameters:
avatar - The ViewerAvatar object to look for in the avatarRoot's child nodes.
Returns:
The index of the child that corresponds to the ViewerAvatar. If the avatarRoot does not contain the ViewerAvatar -1 is returned.

setAvatar

void setAvatar(Viewer viewer,
               ViewerAvatar avatar)
Adds the ViewerAvatar to the scene graph. An avatar (geometry) can be associated with a Viewer object and displayed by Java 3D.

Parameters:
viewer - The viewer object to associate with this avatar.
avatar - The avatar to add to the scene graph. Passing in null removes any currently assigned avatar.

addViewer

void addViewer(Viewer viewer)
When a ViewingPlatform is set by a Viewer, the ViewingPlatform needs to be informed, via a call to this method. This will add the Viewer to the ViewingPlatform's viewerList for use when things such as the PlatformGeometry are changed and all Viewer scene graphs need to be modified.


removeViewer

void removeViewer(Viewer viewer)

addViewPlatformBehavior

void addViewPlatformBehavior(ViewPlatformBehavior behavior)
Adds a new ViewPlatformBehavior to the ViewingPlatform


setViewPlatformBehavior

public void setViewPlatformBehavior(ViewPlatformBehavior behavior)
Sets the ViewPlatformBehavior which will operate on the ViewPlatform transform (the TransformGroup returned by ViewingPlatform.getViewPlatformTransform()). The ViewPlatformBehavior may be set after the ViewingPlatform is setLive(). If a behavior is already present, it will be detached and it's setViewingPlatform method will be called with a parameter of null.

Parameters:
behavior - The ViewPlatformBehavior to add to the ViewingPlatform. null will remove the ViewingPlatform behavior.
Since:
Java 3D 1.2.1

removeViewPlatformBehavior

void removeViewPlatformBehavior(ViewPlatformBehavior behavior)
Removes the specified ViewPlatformBehavior


getViewPlatformBehaviorCount

int getViewPlatformBehaviorCount()
Returns the number of ViewPlatformBehaviors on the ViewingPlatform


getViewPlatformBehavior

ViewPlatformBehavior getViewPlatformBehavior(int index)
Returns the ViewPlatformBehavior at the specified index


getViewPlatformBehavior

public ViewPlatformBehavior getViewPlatformBehavior()
Returns the ViewPlatformBehavior

Returns:
the ViewPlatformBehavior for the ViewingPlatform. Returns null if there is no ViewPlatformBehavior set.
Since:
Java 3D 1.2.1

getViewers

public Viewer[] getViewers()
Returns the Viewers attached to this ViewingPlatform

Returns:
the Viewers attached to this viewing platform
Since:
Java 3D 1.3

getUniverse

public SimpleUniverse getUniverse()
Returns the Universe to which this ViewingPlatform is attached

Returns:
the Universe to which this ViewingPlatform is attached
Since:
Java 3D 1.3

setUniverse

public void setUniverse(SimpleUniverse universe)
Sets the Universe to which this ViewingPlatform is attached

Parameters:
universe - the Universe to which this ViewingPlatform is attached
Since:
Java 3D 1.3


Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.