Package javax.media.j3d

# Class ViewPlatform

java.lang.Object
javax.media.j3d.SceneGraphObject
javax.media.j3d.Node
javax.media.j3d.Leaf
javax.media.j3d.ViewPlatform

public class ViewPlatform extends Leaf
The ViewPlatform leaf node object controls the position, orientation and scale of the viewer. It is the node in the scene graph that a View object connects to. A viewer navigates through the virtual universe by changing the transform in the scene graph hierarchy above the ViewPlatform.

The View Attach Policy

The actual view that Java 3D's renderer draws depends on the view attach policy specified within the currently attached ViewPlatform. The view attach policy, set by the setViewAttachPolicy method, is one of the following:

- View.NOMINAL_HEAD - ensures that the end-user's nominal eye position in the physical world corresponds to the virtual eye's nominal eye position in the virtual world (the ViewPlatform's origin). In essence, this policy tells Java 3D to position the virtual eyepoint relative to the ViewPlatform origin in the same way as the physical eyepoint is positioned relative to its nominal physical-world origin. Deviations in the physical eye's position and orientation from nominal in the physical world generate corresponding deviations of the virtual eye's position and orientation in the virtual world. This is the default view attach policy.

- View.NOMINAL_FEET - ensures that the end-user's virtual feet always touch the virtual ground. This policy tells Java 3D to compute the physical-to-virtual-world correspondence in a way that enforces this constraint. Java 3D does so by appropriately offsetting the physical eye's position by the end-user's physical height. Java 3D uses the nominalEyeHeightFromGround parameter found in the PhysicalBody object to perform this computation.

- View.NOMINAL_SCREEN - allows an application to always have the virtual eyepoint appear at some "viewable" distance from a point of interest. This policy tells Java 3D to compute the physical-to-virtual-world correspondence in a way that ensures that the renderer moves the nominal virtual eyepoint away from the point of interest by the amount specified by the nominalEyeOffsetFromNominalScreen parameter found in the PhysicalBody object.

Activation Radius

The ViewPlatform's activation radius defines an activation volume surrounding the center of the ViewPlatform. This activation volume is a spherical region that intersects with the scheduling regions and application regions of other leaf node objects to determine which of those objects may affect rendering. Only active view platforms--that is, view platforms attached to a View--will be used to schedule or select other leaf nodes.

Different leaf objects interact with the ViewPlatform's activation volume differently. The Background, Clip, and Soundscape leaf objects each define a set of attributes and an application region in which those attributes are applied. If more than one node of a given type (Background, Clip, or Soundscape) intersects an active ViewPlatform's activation volume, the "most appropriate" node is selected for that View. Sound leaf objects and Behavior objects become active when their scheduling region intersects an active ViewPlatform's activation volume.

The activation radius is in view platform coordinates. For the default screen scale policy of SCALE_SCREEN_SIZE, the activationRadius parameter value is multiplied by half the monitor screen size to derive the actual activation radius. For example, for the default screen size of 0.35 meters, and the default activation radius value of 62, the actual activation radius would be 10.85 meters.

`62 * 0.35 / 2 = 10.85`

See Also:
  - `View`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ALLOW_POLICY_READ`
Specifies that the ViewPlatform allows read access to its view attach policy information at runtime.
`static final int`
`ALLOW_POLICY_WRITE`
Specifies that the ViewPlatform allows write access to its view attach policy information at runtime.

### 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

Constructors
Constructor
Description
`ViewPlatform()`
Constructs a ViewPlatform object with default parameters.

## Method Summary

Modifier and Type
Method
Description
`Node`
`cloneNode(boolean forceDuplicate)`
Used to create a new instance of the node.
`float`
`getActivationRadius()`
Get the ViewPlatform's activation radius.
`int`
`getViewAttachPolicy()`
Returns the current coexistence center in virtual-world policy.
`void`
`setActivationRadius(float activationRadius)`
Set the ViewPlatform's activation radius which defines an activation volume around the view platform.
`void`
`setViewAttachPolicy(int policy)`
Sets the view attach policy that determines the coexistence center in the virtual world.

### 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 Details

### ALLOW_POLICY_READ

public static final int ALLOW_POLICY_READ
Specifies that the ViewPlatform allows read access to its view attach policy information at runtime.

See Also:
  - Constant Field Values

### ALLOW_POLICY_WRITE

public static final int ALLOW_POLICY_WRITE
Specifies that the ViewPlatform allows write access to its view attach policy information at runtime.

See Also:
  - Constant Field Values

## Constructor Details

### ViewPlatform

public ViewPlatform()
Constructs a ViewPlatform object with default parameters. The default values are as follows:

view attach policy : View.NOMINAL_HEAD
activation radius : 62

## Method Details

### setViewAttachPolicy

public void setViewAttachPolicy(int policy)
Sets the view attach policy that determines the coexistence center in the virtual world. This policy determines how Java 3D places the view platform relative to the position of the user's head, one of View.NOMINAL_SCREEN, View.NOMINAL_HEAD, or View.NOMINAL_FEET. The default policy is View.NOMINAL_HEAD.

Parameters:
  `policy` - the new policy
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph
See Also:
  - `View.NOMINAL_SCREEN`
  - `View.NOMINAL_HEAD`
  - `View.NOMINAL_FEET`

### getViewAttachPolicy

public int getViewAttachPolicy()
Returns the current coexistence center in virtual-world policy.

Returns:
  one of: View.NOMINAL_SCREEN, View.NOMINAL_HEAD, or View.NOMINAL_FEET
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setActivationRadius

public void setActivationRadius(float activationRadius)
Set the ViewPlatform's activation radius which defines an activation volume around the view platform.

Parameters:
  `activationRadius` - the new activation radius

### getActivationRadius

public float getActivationRadius()
Get the ViewPlatform's activation radius.

Returns:
  the ViewPlatform activation radius

### cloneNode

public Node cloneNode(boolean forceDuplicate)
Used to create a new instance of the node. This routine is called by `cloneTree` to duplicate the current node. `cloneNode` should be overridden by any user subclassed objects. All subclasses must have their `cloneNode` method consist of the following lines:

>          public Node cloneNode(boolean forceDuplicate) {
>              UserSubClass usc = new UserSubClass();
>              usc.duplicateNode(this, forceDuplicate);
>              return usc;
>          }

Overrides:
  `cloneNode` in class `Node`
Parameters:
  `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
See Also:
  - `Node.cloneTree()`
  - `Node.duplicateNode(javax.media.j3d.Node, boolean)`
  - `NodeComponent.setDuplicateOnCloneTree(boolean)`