Class TargetCameraMovement
Hierarchy (View Summary)
- CameraMovement
- TargetCameraMovement
Constructors
constructor
-
new TargetCameraMovement(
scene: Scene,
cameraPosition: Vector3,
behavior?: InterpolatingBehavior<Camera>,
): TargetCameraMovementCreates a movement system for the TargetCamera family.
Parameters
- scene: Scene
The scene the owning camera belongs to.
- cameraPosition: Vector3
The owning camera's position vector (shared by reference).
Optionalbehavior: InterpolatingBehavior<Camera>Optional interpolating behavior used to suppress input while animating.
Returns TargetCameraMovement
- scene: Scene
Properties
active Input
Should be set by input classes to indicate whether there is active input this frame. This helps differentiate between 0 pixel delta due to no input vs user actively holding still.
Readonlyinput
Input system that maps physical inputs to interactions and dispatches to handlers.
pan Accumulated Pixels
Accumulated pixel delta (by input classes) for panning this frame Read by computeCurrentFrameDeltas() function and converted into panDeltaCurrentFrame (taking speed into account) Reset to zero after each frame
pan Delta Current Frame
Pan delta to apply to camera this frame, computed by computeCurrentFrameDeltas() from panPixelDelta (taking speed into account)
pan Inertia
Inertia applied to the panning velocity when there is no user input. Higher inertia === slower decay, velocity retains more of its value each frame.
Note: ArcRotateCamera overrides this from camera.panningInertia (which defaults to camera.inertia).
pan Speed
Desired coordinate unit movement per input pixel when panning
reference Frame Rate
Framerate (Hz) at which inertia values are calibrated. Default 60 matches legacy camera feel at any actual refresh rate. Override to 120, 144, etc. only if your app was tuned on that specific refresh rate under the legacy (framerate-dependent) camera math and you want to preserve that exact decay characteristic. Most applications should leave this at 60.
rotation Accumulated Pixels
Accumulated pixel delta (by input classes) for rotation this frame Read by computeCurrentFrameDeltas() function and converted into rotationDeltaCurrentFrame (taking speed into account) Reset to zero after each frame
rotation Delta Current Frame
Rotation delta to apply to camera this frame, computed by computeCurrentFrameDeltas() from rotationPixelDelta (taking speed into account)
rotation Inertia
Inertia applied to the rotation velocity when there is no user input. Higher inertia === slower decay, velocity retains more of its value each frame.
Note: ArcRotateCamera syncs this from camera.inertia via an accessor on the camera class.
To tune independently, override inside scene.onBeforeRenderObservable after camera.inertia is read.
rotation X Speed
Desired radians movement per input pixel when rotating along x axis
rotation Y Speed
Desired radians movement per input pixel when rotating along y axis
speed
Global speed multiplier applied to all movement (pan, rotation, zoom). Acts as a master scale factor on top of the individual speed properties.
zoom Accumulated Pixels
Accumulated pixel delta (by input classes) for zoom this frame Read by computeCurrentFrameDeltas() function and converted into zoomDeltaCurrentFrame (taking speed into account) Reset to zero after each frame
zoom Delta Current Frame
Zoom delta to apply to camera this frame, computed by computeCurrentFrameDeltas() from zoomPixelDelta (taking speed into account)
zoom Inertia
Inertia applied to the zoom velocity when there is no user input. Higher inertia === slower decay, velocity retains more of its value each frame.
Note: ArcRotateCamera syncs this from camera.inertia via an accessor on the camera class.
To tune independently, override inside scene.onBeforeRenderObservable after camera.inertia is read.
zoom Speed
Desired coordinate unit movement per input pixel when zooming
Accessors
is Interpolating
-
get isInterpolating(): boolean
Returns true when the camera is playing an interpolating (fly-to) animation. Useful for suppressing user-input movement while a programmatic animation is active.
Returns boolean
Methods
compute Current Frame Deltas
-
When called, will take the accumulated pixel deltas set by input classes and convert them into current frame deltas, stored in currentFrameMovementDelta properties Takes speed, scaling, inertia, and framerate into account to ensure smooth movement Zeros out pixelDeltas before returning
Returns void
get Frame Independent Decay
-
Returns the per-frame decay factor for a given inertia, adjusted to this frame's
dt. At the reference frame rate, returnsinertiaunchanged (matches legacy per-frame*= inertia). Use this when implementing custom decaying accumulators (e.g. zoom-to-cursor coupled pan) that need framerate-independent glide duration.Parameters
- inertia: number
The inertia value (0-1) whose per-frame decay factor is needed.
Returns number
The decay factor to multiply a value by this frame.
- inertia: number
get Frame Independent Input Scale
-
Returns the input-scale factor to apply to an impulse injected into a decaying accumulator so that the integrated total is framerate-independent and matches legacy at 60fps. At the reference frame rate, returns 1 (no-op). At high fps, scales the impulse down so the sum over the decay tail stays equal to
impulse / (1 - inertia)— the legacy total.Parameters
- inertia: number
The inertia value (0-1) used by the accumulator.
Returns number
The scaling factor to multiply an impulse by before adding it to the accumulator.
- inertia: number
reset Pan Velocity
-
Resets the pan velocity and accumulated pixels, stopping any in-progress pan inertia.
Returns void
reset Rotation Velocity
-
Resets the rotation velocity and accumulated pixels, stopping any in-progress rotation inertia. Called when inertialAlphaOffset or inertialBetaOffset are explicitly zeroed (backward compat).
Returns void
reset Zoom Velocity
-
Resets the zoom velocity and accumulated pixels, stopping any in-progress zoom inertia. Called when inertialRadiusOffset is explicitly zeroed out (backward compat).
Returns void
Shared movement system for TargetCamera and its subclasses (FreeCamera, FlyCamera, FollowCamera). Provides framerate-independent physics (via CameraMovement) and a declarative InputMapper for configuring which physical inputs trigger which interactions.
Accumulator mapping for this camera family:
translatefeedspanAccumulatedPixelsas a WORLD-space direction (input classes orient local intent into world space before populating it, mirroring the legacycameraDirectionsurface).rotatefeedsrotationAccumulatedPixels(x=pitch, y=yaw), mirroring legacycameraRotation.These camera classes have no separate zoom channel: mouse-wheel input folds into translation/rotation just like the legacy inputs, so there is no
zoominteraction here.Input classes inject deltas using the same scaling they applied historically and the movement system leaves all speed multipliers at 1, so at the reference framerate the per-frame applied delta matches the legacy value exactly while inertial glide becomes framerate-independent.