Class OrbitBehavior
- All Implemented Interfaces:
KeyListener
,MouseListener
,MouseMotionListener
,MouseWheelListener
,EventListener
This behavior must be added to the ViewingPlatform
using the ViewingPlatform.setViewPlatformBehavior
method.
The rotate action rotates the ViewPlatform around the point of interest when the mouse is moved with the main mouse button pressed. The rotation is in the direction of the mouse movement, with a default rotation of 0.01 radians for each pixel of mouse movement.
The zoom action moves the ViewPlatform closer to or further from the point of interest when the mouse is moved with the middle mouse button pressed (or Alt-main mouse button on systems without a middle mouse button). The default zoom action is to translate the ViewPlatform 0.01 units for each pixel of mouse movement. Moving the mouse up moves the ViewPlatform closer, moving the mouse down moves the ViewPlatform further away.
By default, the zoom action allows the ViewPlatform to move through
the center of rotation to orbit at a negative radius.
The STOP_ZOOM
constructor flag will stop the ViewPlatform at
a minimum radius from the center. The default minimum radius is 0.0
and can be set using the setMinRadius
method.
The PROPORTIONAL_ZOOM
constructor flag changes the zoom action
to move the ViewPlatform proportional to its distance from the center
of rotation. For this mode, the default action is to move the ViewPlatform
by 1% of its distance from the center of rotation for each pixel of
mouse movement.
The translate action translates the ViewPlatform when the mouse is moved with the right mouse button pressed (Shift-main mouse button on systems without a right mouse button). The translation is in the direction of the mouse movement, with a default translation of 0.01 units for each pixel of mouse movement.
The sensitivity of the actions can be scaled using the
set
ActionFactor()
methods which scale
the default movement by the factor. The rotate and translate actions
have separate factors for x and y.
The actions can be reversed using the REVERSE_
ACTION
constructor flags. The default action moves the ViewPlatform around the
objects in the scene. The REVERSE_
ACTION flags can
make the objects in the scene appear to be moving in the direction
of the mouse movement.
The actions can be disabled by either using the
DISABLE_
ACTION constructor flags or the
set
ActionEnable
methods.
The default center of rotation is (0, 0, 0) and can be set using the
setRotationCenter()
method.
- Since:
- Java 3D 1.2.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Constructor flag to disable rotatestatic final int
Constructor flag to disable translatestatic final int
Constructor flag to disable zoomstatic final int
Constructor flag to use proportional zoom, which determines how much you zoom based on view's distance from the center of rotation.static final int
Constructor flag to reverse all the behaviorsstatic final int
Constructor flag to reverse the rotate behaviorstatic final int
Constructor flag to reverse the translate behaviorstatic final int
Constructor flag to reverse the zoom behaviorstatic final int
Constructor flag that indicates zoom should stop when it reaches the minimum orbit radius set by setMinRadius().Fields inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformAWTBehavior
canvases, frameWakeup, KEY_LISTENER, motion, MOUSE_LISTENER, MOUSE_MOTION_LISTENER, MOUSE_WHEEL_LISTENER, POST_ID, postWakeup, targetTransform
Fields inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformBehavior
homeTransform, targetTG, vp
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
ConstructorsConstructorDescriptionParameterless constructor for this behavior.Creates a new OrbitBehaviorOrbitBehavior
(Canvas3D c, int flags) Creates a new OrbitBehavior -
Method Summary
Modifier and TypeMethodDescriptiondouble
Returns the minimum orbit radius.boolean
Retrieves the state of rotate enabledvoid
getRotationCenter
(javax.vecmath.Point3d center) Places the value of the center around which the View rotates into the Point3d.double
Returns the x rotation movement multiplierdouble
Returns the y rotation movement multiplierboolean
Retrieves the state of translate enableddouble
Returns the x translation movement multiplierdouble
Returns the y translation movement multiplierboolean
Retrieves the state of zoom enableddouble
Returns the zoom movement multiplierprotected void
Called once per frame (if the view is moving) to calculate the new view platform transformvoid
Property which sets the minimum radius for the OrbitBehavior.protected void
processAWTEvents
(AWTEvent[] events) This is called once per frame if there are any AWT events to process.protected void
void
ProportionalZoom
(Object[] state) Property which sets proportional zoom behavior.void
ReverseRotate
(Object[] state) Property which sets reverse rotate behavior.void
ReverseTranslate
(Object[] state) Property which sets reverse translate behavior.void
ReverseZoom
(Object[] state) Property which sets reverse zoom behavior.void
RotateEnable
(Object[] enabled) Property which enables or disables rotation.void
RotationCenter
(Object[] center) Property which sets the center around which the View rotates.void
RotFactors
(Object[] factors) Property which sets the rotation x and y factors.void
RotXFactor
(Object[] xFactor) Property which sets the rotation x factor.void
RotYFactor
(Object[] yFactor) Property which sets the rotation y factor.void
setMinRadius
(double r) Sets the minimum radius for the OrbitBehavior.void
setProportionalZoom
(boolean state) Set proportional zoom behavior.void
setReverseRotate
(boolean state) Set reverse rotate behavior.void
setReverseTranslate
(boolean state) Set reverse translate behavior.void
setReverseZoom
(boolean state) Set reverse zoom behavior.void
setRotateEnable
(boolean enabled) Enables or disables rotation.void
setRotationCenter
(javax.vecmath.Point3d center) Sets the center around which the View rotates.void
setRotFactors
(double xfactor, double yfactor) Sets the rotation x and y factors.void
setRotXFactor
(double xfactor) Sets the rotation x factor.void
setRotYFactor
(double yfactor) Sets the rotation y factor.void
setTransFactors
(double xfactor, double yfactor) Sets the translation x and y factors.void
setTranslateEnable
(boolean enabled) Enables or disables translate.void
setTransXFactor
(double xfactor) Sets the translation x factor.void
setTransYFactor
(double yfactor) Sets the translation y factor.void
Sets the ViewingPlatform for this behavior.void
setZoomEnable
(boolean enabled) Enables or disables zoom.void
setZoomFactor
(double zfactor) Sets the zoom factor.void
TransFactors
(Object[] factors) Property which sets the translation x and y factors.void
TranslateEnable
(Object[] enabled) Property which enables or disables translate.void
TransXFactor
(Object[] xFactor) Property which sets the translation x factor.void
TransYFactor
(Object[] yFactor) Property which sets the translation y factor.void
ZoomEnable
(Object[] enabled) Property which enables or disables zoom.void
ZoomFactor
(Object[] zFactor) Property which sets the zoom factor.Methods inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformAWTBehavior
initialize, keyPressed, keyReleased, keyTyped, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mousePressed, mouseReleased, mouseWheelMoved, processStimulus, queueAWTEvent, setEnable, setListenerFlags
Methods inherited from class com.sun.j3d.utils.behaviors.vp.ViewPlatformBehavior
getHomeTransform, getViewingPlatform, goHome, setHomeTransform
Methods inherited from class javax.media.j3d.Behavior
getEnable, getNumSchedulingIntervals, getSchedulingBoundingLeaf, getSchedulingBounds, getSchedulingInterval, getView, getWakeupCondition, postId, setSchedulingBoundingLeaf, setSchedulingBounds, setSchedulingInterval, updateNodeReferences, wakeupOn
Methods inherited from class javax.media.j3d.Node
cloneNode, 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
-
Field Details
-
REVERSE_ROTATE
public static final int REVERSE_ROTATEConstructor flag to reverse the rotate behavior- See Also:
-
REVERSE_TRANSLATE
public static final int REVERSE_TRANSLATEConstructor flag to reverse the translate behavior- See Also:
-
REVERSE_ZOOM
public static final int REVERSE_ZOOMConstructor flag to reverse the zoom behavior- See Also:
-
REVERSE_ALL
public static final int REVERSE_ALLConstructor flag to reverse all the behaviors- See Also:
-
STOP_ZOOM
public static final int STOP_ZOOMConstructor flag that indicates zoom should stop when it reaches the minimum orbit radius set by setMinRadius(). The minimus radius default is 0.0.- See Also:
-
DISABLE_ROTATE
public static final int DISABLE_ROTATEConstructor flag to disable rotate- See Also:
-
DISABLE_TRANSLATE
public static final int DISABLE_TRANSLATEConstructor flag to disable translate- See Also:
-
DISABLE_ZOOM
public static final int DISABLE_ZOOMConstructor flag to disable zoom- See Also:
-
PROPORTIONAL_ZOOM
public static final int PROPORTIONAL_ZOOMConstructor flag to use proportional zoom, which determines how much you zoom based on view's distance from the center of rotation. The percentage of distance that the viewer zooms is determined by the zoom factor.- See Also:
-
-
Constructor Details
-
OrbitBehavior
public OrbitBehavior()Parameterless constructor for this behavior. This is intended for use by ConfiguredUniverse, which requires such a constructor for configurable behaviors. The Canvas3D used to listen for mouse and mouse motion events is obtained from the superclass setViewingPlatform() method.- Since:
- Java 3D 1.3
-
OrbitBehavior
Creates a new OrbitBehavior- Parameters:
c
- The Canvas3D to add the behavior to
-
OrbitBehavior
Creates a new OrbitBehavior- Parameters:
c
- The Canvas3D to add the behavior toflags
- The option flags
-
-
Method Details
-
processAWTEvents
Description copied from class:ViewPlatformAWTBehavior
This is called once per frame if there are any AWT events to process. Themotion
variable will be true when the method is called. If it is true when the method returns integrateTransforms will be called immediately. The AWTEvents are presented in the array in the order in which they arrived from AWT.- Specified by:
processAWTEvents
in classViewPlatformAWTBehavior
-
processMouseEvent
-
setViewingPlatform
Sets the ViewingPlatform for this behavior. This method is called by the ViewingPlatform. If a sub-calls overrides this method, it must call super.setViewingPlatform(vp). NOTE: Applications should not call this method.- Overrides:
setViewingPlatform
in classViewPlatformAWTBehavior
- Parameters:
vp
- the target ViewingPlatform for this behavior
-
integrateTransforms
protected void integrateTransforms()Description copied from class:ViewPlatformAWTBehavior
Called once per frame (if the view is moving) to calculate the new view platform transform- Specified by:
integrateTransforms
in classViewPlatformAWTBehavior
-
setRotationCenter
public void setRotationCenter(javax.vecmath.Point3d center) Sets the center around which the View rotates. The default is (0,0,0).- Parameters:
center
- The Point3d to set the center of rotation to
-
RotationCenter
Property which sets the center around which the View rotates. Used by ConfiguredUniverse.- Parameters:
center
- array of length 1 containing an instance of Point3d- Since:
- Java 3D 1.3
-
getRotationCenter
public void getRotationCenter(javax.vecmath.Point3d center) Places the value of the center around which the View rotates into the Point3d.- Parameters:
center
- The Point3d
-
setRotFactors
public void setRotFactors(double xfactor, double yfactor) Sets the rotation x and y factors. The factors are used to determine how many radians to rotate the view for each pixel of mouse movement. The view is rotated factor * 0.01 radians for each pixel of mouse movement. The default factor is 1.0.- Parameters:
xfactor
- The x movement multiplieryfactor
- The y movement multiplier
-
RotFactors
Property which sets the rotation x and y factors. Used by ConfiguredUniverse.- Parameters:
factors
- array of length 2 containing instances of Double- Since:
- Java 3D 1.3
-
setRotXFactor
public void setRotXFactor(double xfactor) Sets the rotation x factor. The factors are used to determine how many radians to rotate the view for each pixel of mouse movement. The view is rotated factor * 0.01 radians for each pixel of mouse movement. The default factor is 1.0.- Parameters:
xfactor
- The x movement multiplier
-
RotXFactor
Property which sets the rotation x factor. Used by ConfiguredUniverse.- Parameters:
xFactor
- array of length 1 containing instance of Double- Since:
- Java 3D 1.3
-
setRotYFactor
public void setRotYFactor(double yfactor) Sets the rotation y factor. The factors are used to determine how many radians to rotate the view for each pixel of mouse movement. The view is rotated factor * 0.01 radians for each pixel of mouse movement. The default factor is 1.0.- Parameters:
yfactor
- The y movement multiplier
-
RotYFactor
Property which sets the rotation y factor. Used by ConfiguredUniverse.- Parameters:
yFactor
- array of length 1 containing instance of Double- Since:
- Java 3D 1.3
-
setTransFactors
public void setTransFactors(double xfactor, double yfactor) Sets the translation x and y factors. The factors are used to determine how many units to translate the view for each pixel of mouse movement. The view is translated factor * 0.01 units for each pixel of mouse movement. The default factor is 1.0.- Parameters:
xfactor
- The x movement multiplieryfactor
- The y movement multiplier
-
TransFactors
Property which sets the translation x and y factors. Used by ConfiguredUniverse.- Parameters:
factors
- array of length 2 containing instances of Double- Since:
- Java 3D 1.3
-
setTransXFactor
public void setTransXFactor(double xfactor) Sets the translation x factor. The factors are used to determine how many units to translate the view for each pixel of mouse movement. The view is translated factor * 0.01 units for each pixel of mouse movement. The default factor is 1.0.- Parameters:
xfactor
- The x movement multiplier
-
TransXFactor
Property which sets the translation x factor. Used by ConfiguredUniverse.- Parameters:
xFactor
- array of length 1 containing instance of Double- Since:
- Java 3D 1.3
-
setTransYFactor
public void setTransYFactor(double yfactor) Sets the translation y factor. The factors are used to determine how many units to translate the view for each pixel of mouse movement. The view is translated factor * 0.01 units for each pixel of mouse movement. The default factor is 1.0.- Parameters:
yfactor
- The y movement multiplier
-
TransYFactor
Property which sets the translation y factor. Used by ConfiguredUniverse.- Parameters:
yFactor
- array of length 1 containing instance of Double- Since:
- Java 3D 1.3
-
setZoomFactor
public void setZoomFactor(double zfactor) Sets the zoom factor. The factor is used to determine how many units to zoom the view for each pixel of mouse movement. The view is zoomed factor * 0.01 units for each pixel of mouse movement. For proportional zoom, the view is zoomed factor * 1% of the distance from the center of rotation for each pixel of mouse movement. The default factor is 1.0.- Parameters:
zfactor
- The movement multiplier
-
ZoomFactor
Property which sets the zoom factor. Used by ConfiguredUniverse.- Parameters:
zFactor
- array of length 1 containing instance of Double- Since:
- Java 3D 1.3
-
getRotXFactor
public double getRotXFactor()Returns the x rotation movement multiplier- Returns:
- The movement multiplier for x rotation
-
getRotYFactor
public double getRotYFactor()Returns the y rotation movement multiplier- Returns:
- The movement multiplier for y rotation
-
getTransXFactor
public double getTransXFactor()Returns the x translation movement multiplier- Returns:
- The movement multiplier for x translation
-
getTransYFactor
public double getTransYFactor()Returns the y translation movement multiplier- Returns:
- The movement multiplier for y translation
-
getZoomFactor
public double getZoomFactor()Returns the zoom movement multiplier- Returns:
- The movement multiplier for zoom
-
setRotateEnable
public void setRotateEnable(boolean enabled) Enables or disables rotation. The default is true.- Parameters:
enabled
- true or false to enable or disable rotate
-
RotateEnable
Property which enables or disables rotation. Used by ConfiguredUniverse.- Parameters:
enabled
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-
setZoomEnable
public void setZoomEnable(boolean enabled) Enables or disables zoom. The default is true.- Parameters:
enabled
- true or false to enable or disable zoom
-
ZoomEnable
Property which enables or disables zoom. Used by ConfiguredUniverse.- Parameters:
enabled
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-
setTranslateEnable
public void setTranslateEnable(boolean enabled) Enables or disables translate. The default is true.- Parameters:
enabled
- true or false to enable or disable translate
-
TranslateEnable
Property which enables or disables translate. Used by ConfiguredUniverse.- Parameters:
enabled
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-
getRotateEnable
public boolean getRotateEnable()Retrieves the state of rotate enabled- Returns:
- the rotate enable state
-
getZoomEnable
public boolean getZoomEnable()Retrieves the state of zoom enabled- Returns:
- the zoom enable state
-
getTranslateEnable
public boolean getTranslateEnable()Retrieves the state of translate enabled- Returns:
- the translate enable state
-
setMinRadius
public void setMinRadius(double r) Sets the minimum radius for the OrbitBehavior. The zoom will stop at this distance from the center of rotation. The default is 0.0. The minimum will have no affect if the STOP_ZOOM constructor flag is not set.- Parameters:
r
- the minimum radius- Throws:
IllegalArgumentException
- if the radius is less than 0.0
-
MinRadius
Property which sets the minimum radius for the OrbitBehavior. Used by ConfiguredUniverse.- Parameters:
r
- array of length 1 containing instance of Double- Since:
- Java 3D 1.3
-
getMinRadius
public double getMinRadius()Returns the minimum orbit radius. The zoom will stop at this distance from the center of rotation if the STOP_ZOOM constructor flag is set.- Returns:
- the minimum radius
-
setReverseTranslate
public void setReverseTranslate(boolean state) Set reverse translate behavior. The default is false.- Parameters:
state
- if true, reverse translate behavior- Since:
- Java 3D 1.3
-
ReverseTranslate
Property which sets reverse translate behavior. Used by ConfiguredUniverse.- Parameters:
state
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-
setReverseRotate
public void setReverseRotate(boolean state) Set reverse rotate behavior. The default is false.- Parameters:
state
- if true, reverse rotate behavior- Since:
- Java 3D 1.3
-
ReverseRotate
Property which sets reverse rotate behavior. Used by ConfiguredUniverse.- Parameters:
state
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-
setReverseZoom
public void setReverseZoom(boolean state) Set reverse zoom behavior. The default is false.- Parameters:
state
- if true, reverse zoom behavior- Since:
- Java 3D 1.3
-
ReverseZoom
Property which sets reverse zoom behavior. Used by ConfiguredUniverse.- Parameters:
state
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-
setProportionalZoom
public void setProportionalZoom(boolean state) Set proportional zoom behavior. The default is false.- Parameters:
state
- if true, use proportional zoom behavior- Since:
- Java 3D 1.3
-
ProportionalZoom
Property which sets proportional zoom behavior. Used by ConfiguredUniverse.- Parameters:
state
- array of length 1 containing instance of Boolean- Since:
- Java 3D 1.3
-