public class PerspectiveCamera extends Camera
This camera defines a viewing volume for a perspective projection;
a truncated right pyramid.
The fieldOfView
value can be used to change viewing volume.
By default, this camera is located at center of the scene and looks along the
positive z-axis. The coordinate system defined by this camera has its
origin in the upper left corner of the panel with the Y-axis pointing
down and the Z axis pointing away from the viewer (into the screen).
If a PerspectiveCamera
node is added to the scene graph,
the transformed position and orientation of the camera will define the
position of the camera and the direction that the camera is looking.
In the default camera, where fixedEyeAtCameraZero is false, the Z value
of the eye position is adjusted in Z such that the projection matrix generated
using the specified fieldOfView
will produce units at
Z = 0 (the projection plane), in device-independent pixels, matches that of
the ParallelCamera.
When the Scene is resized,
the objects in the scene at the projection plane (Z = 0) will stay the same size,
but more or less content of the scene is viewable.
If fixedEyeAtCameraZero is true, the eye position is fixed at (0, 0, 0)
in the local coordinates of the camera. The projection matrix is generated
using the specified fieldOfView
and the projection volume is mapped
onto the viewport (window) such that it is stretched over more or fewer
device-independent pixels at the projection plane.
When the Scene is resized,
the objects in the scene will shrink or grow proportionally,
but the visible portion of the content is unchanged.
We recommend setting fixedEyeAtCameraZero to true if you are going to transform (move) the camera. Transforming the camera when fixedEyeAtCameraZero is set to false may lead to results that are not intuitive.
Note that this is a conditional feature. See
ConditionalFeature.SCENE3D
for more information.
Type | Property and Description |
---|---|
DoubleProperty |
fieldOfView
Specifies the field of view angle of the camera's projection,
measured in degrees.
|
BooleanProperty |
verticalFieldOfView
Defines whether the
fieldOfView property will apply to the vertical
dimension of the projection. |
farClipProperty, nearClipProperty
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, cacheHintProperty, cacheProperty, clipProperty, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, focusedProperty, focusTraversableProperty, hoverProperty, idProperty, inputMethodRequestsProperty, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParentTransformProperty, localToSceneTransformProperty, managedProperty, mouseTransparentProperty, nodeOrientationProperty, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, pickOnBoundsProperty, pressedProperty, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, showMnemonicsProperty, styleProperty, translateXProperty, translateYProperty, translateZProperty, treeShowingProperty, treeVisibleProperty, viewOrderProperty, visibleProperty
Node.FocusedProperty, Node.TreeShowingPropertyReadOnly, Node.TreeVisiblePropertyReadOnly
Modifier and Type | Field and Description |
---|---|
private DoubleProperty |
fieldOfView
Specifies the field of view angle of the camera's projection,
measured in degrees.
|
private boolean |
fixedEyeAtCameraZero |
private static Affine3D |
LOOK_AT_TX |
private static Affine3D |
LOOK_AT_TX_FIXED_EYE |
private BooleanProperty |
verticalFieldOfView
Defines whether the
fieldOfView property will apply to the vertical
dimension of the projection. |
accessibilityProperties, accessible, BASELINE_OFFSET_SAME_AS_HEIGHT, boundsChanged, cssFlag, pseudoClassStates, styleHelper
Constructor and Description |
---|
PerspectiveCamera()
Creates an empty instance of PerspectiveCamera.
|
PerspectiveCamera(boolean fixedEyeAtCameraZero)
Constructs a PerspectiveCamera with the specified fixedEyeAtCameraZero flag.
|
Modifier and Type | Method and Description |
---|---|
(package private) PickRay |
computePickRay(double x,
double y,
PickRay pickRay)
Computes pick ray for the content rendered by this camera.
|
(package private) Vec3d |
computePosition(Vec3d position)
Computes local position of the camera in the scene.
|
(package private) void |
computeProjectionTransform(GeneralTransform3D proj) |
(package private) void |
computeViewTransform(Affine3D view) |
(package private) Camera |
copy() |
private NGNode |
doCreatePeer() |
private void |
doUpdatePeer() |
DoubleProperty |
fieldOfViewProperty()
Specifies the field of view angle of the camera's projection,
measured in degrees.
|
double |
getFieldOfView()
Gets the value of the property fieldOfView.
|
boolean |
isFixedEyeAtCameraZero()
Returns a flag indicating whether this camera uses a fixed eye position
at the origin of the camera.
|
boolean |
isVerticalFieldOfView()
Gets the value of the property verticalFieldOfView.
|
void |
setFieldOfView(double value)
Sets the value of the property fieldOfView.
|
void |
setVerticalFieldOfView(boolean value)
Sets the value of the property verticalFieldOfView.
|
BooleanProperty |
verticalFieldOfViewProperty()
Defines whether the
fieldOfView property will apply to the vertical
dimension of the projection. |
farClipProperty, getCameraTransform, getFarClip, getFarClipInScene, getNearClip, getNearClipInScene, getProjViewTransform, getSceneToLocalTransform, getViewHeight, getViewWidth, nearClipProperty, pickProjectPlane, setFarClip, setNearClip, setOwnerScene, setOwnerSubScene, setViewHeight, setViewWidth
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, almostZero, applyCss, autosize, blendModeProperty, boundedSize, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clearDirty, clipProperty, computeAreaInScreen, computeDerivedDepthTest, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, findStyles, fireEvent, focusedProperty, focusTraversableProperty, getAccessible, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBaselineOffset, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClassCssMetaData, getClip, getClipParent, getContentBias, getCSSFlags, getCssMetaData, getCurrentLocalToSceneTransformState, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getGeomBounds, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLeafTransform, getLocalBounds, getLocalToParentTransform, getLocalToParentTransform, getLocalToSceneTransform, getMatchingStyles, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getPeer, getPivotX, getPivotY, getPivotZ, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getStyleMap, getSubScene, getTransformedBounds, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasMirroring, hasProperties, hoverProperty, idProperty, indent, inputMethodRequestsProperty, intersects, intersects, intersects, intersectsBounds, isCache, isCanReceiveFocus, isConnected, isDerivedDepthTest, isDirty, isDirtyEmpty, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isResizable, isShowMnemonics, isTreeShowing, isTreeVisible, isVisible, layoutBoundsChanged, layoutBoundsProperty, layoutXProperty, layoutYProperty, localBoundsChanged, localToParent, localToParent, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookup, lookupAll, lookupAll, managedProperty, markDirtyLayoutBranch, maxHeight, maxWidth, minHeight, minWidth, mouseTransparentProperty, nodeOrientationProperty, nodeResolvedOrientationChanged, nodeResolvedOrientationInvalidated, notifyAccessibleAttributeChanged, notifyManagedChanged, notifyParentOfBoundsChange, notifyParentsOfInvalidatedCSS, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentResolvedOrientationInvalidated, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickNode, pickOnBoundsProperty, prefHeight, prefWidth, pressedProperty, processCSS, pseudoClassStateChanged, queryAccessibleAttribute, reapplyCSS, releaseAccessible, relocate, removeEventFilter, removeEventHandler, requestFocus, resize, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, scenesChanged, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDerivedDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setParent, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setScenes, setShowMnemonics, setStyle, setStyleMap, setTranslateX, setTranslateY, setTranslateZ, setTreeShowing, setTreeVisible, setUserData, setViewOrder, setVisible, showMnemonicsProperty, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, syncPeer, toBack, toFront, toString, transformedBoundsChanged, translateXProperty, translateYProperty, translateZProperty, traverse, treeShowingProperty, treeVisibleProperty, updateBounds, updateGeomBounds, updateLocalToParentTransform, updateTxBounds, usesMirroring, viewOrderProperty, visibleProperty, wouldCreateCycle
public final DoubleProperty fieldOfViewProperty
getFieldOfView()
,
setFieldOfView(double)
public final BooleanProperty verticalFieldOfViewProperty
fieldOfView
property will apply to the vertical
dimension of the projection. If it is false, fieldOfView
will
apply to the horizontal dimension of the projection.isVerticalFieldOfView()
,
setVerticalFieldOfView(boolean)
private boolean fixedEyeAtCameraZero
private static final Affine3D LOOK_AT_TX
private static final Affine3D LOOK_AT_TX_FIXED_EYE
private DoubleProperty fieldOfView
private BooleanProperty verticalFieldOfView
fieldOfView
property will apply to the vertical
dimension of the projection. If it is false, fieldOfView
will
apply to the horizontal dimension of the projection.public PerspectiveCamera()
public PerspectiveCamera(boolean fixedEyeAtCameraZero)
In the default camera, where fixedEyeAtCameraZero is false, the Z value of
the eye position is adjusted in Z such that the projection matrix generated
using the specified fieldOfView
will produce units at
Z = 0 (the projection plane), in device-independent pixels, matches that of
the ParallelCamera.
When the Scene is resized,
the objects in the scene at the projection plane (Z = 0) will stay the same size,
but more or less content of the scene is viewable.
If fixedEyeAtCameraZero is true, the eye position is fixed at (0, 0, 0)
in the local coordinates of the camera. The projection matrix is generated
using the specified fieldOfView
and the projection volume is mapped
onto the viewport (window) such that it is stretched over more or fewer
device-independent pixels at the projection plane.
When the Scene is resized,
the objects in the scene will shrink or grow proportionally,
but the visible portion of the content is unchanged.
We recommend setting fixedEyeAtCameraZero to true if you are going to transform (move) the camera. Transforming the camera when fixedEyeAtCameraZero is set to false may lead to results that are not intuitive.
fixedEyeAtCameraZero
- true if the the eye position is fixed at
(0, 0, 0) in the local coordinates of the camera.public final void setFieldOfView(double value)
public final double getFieldOfView()
public final DoubleProperty fieldOfViewProperty()
getFieldOfView()
,
setFieldOfView(double)
public final void setVerticalFieldOfView(boolean value)
public final boolean isVerticalFieldOfView()
public final BooleanProperty verticalFieldOfViewProperty()
fieldOfView
property will apply to the vertical
dimension of the projection. If it is false, fieldOfView
will
apply to the horizontal dimension of the projection.isVerticalFieldOfView()
,
setVerticalFieldOfView(boolean)
public final boolean isFixedEyeAtCameraZero()
fixedEyeAtCameraZero
is true
,
the the eye position is fixed at (0, 0, 0) in the local coordinates
of the camera. This attribute is immutable.final PickRay computePickRay(double x, double y, PickRay pickRay)
Camera
computePickRay
in class Camera
x
- horizontal coordinate of the pick ray in the projected
view, usually mouse cursor positiony
- vertical coordinate of the pick ray in the projected
view, usually mouse cursor positionpickRay
- pick ray to be reused. New instance is created in case
of null.private NGNode doCreatePeer()
private void doUpdatePeer()
void computeProjectionTransform(GeneralTransform3D proj)
computeProjectionTransform
in class Camera
void computeViewTransform(Affine3D view)
computeViewTransform
in class Camera
Vec3d computePosition(Vec3d position)
Camera
computePosition
in class Camera
position
- Position to be reused. New instance is created in case
of null.