API

Interface BankedFreeCamera

A FreeCamera with an explicit, mutable world-space up vector.

interface BankedFreeCamera {
    angularSensitivity: number;
    children: SceneNode[];
    farPlane: number;
    fov: number;
    inertia: number;
    name?: string;
    nearPlane: number;
    ortho?: OrthographicBounds | null;
    parent: IWorldMatrixProvider | null;
    position: ObservableVec3;
    speed: number;
    target: ObservableVec3;
    upVector: ObservableVec3;
    viewport?: NormalizedViewport;
    worldMatrix: Mat4;
    worldMatrixVersion: number;
}

Hierarchy (View Summary)

Index
angularSensitivity: number

Mouse rotation sensitivity (higher = less sensitive). Default 2000 (matches BJS).

children: SceneNode[]
farPlane: number
fov: number
inertia: number

Inertia damping factor (0 = instant stop, 0.9 = smooth). Default 0.9 (matches BJS).

name?: string

Optional source/debug name. Imported glTF cameras use the glTF camera name, or camera{index} when the source definition is unnamed.

nearPlane: number
ortho?: OrthographicBounds | null

Live orthographic view-volume extents, installed by enableOrthographicCamera and mutable/animatable thereafter. Null or undefined means the camera projects perspectively through fov.

parent: IWorldMatrixProvider | null
position: ObservableVec3
speed: number

Movement speed. Default 2.0 (matches BJS).

upVector: ObservableVec3

World-space up vector used to build the look-at basis. Mutate it to roll the camera. Writes invalidate the camera's world matrix exactly like position / target do.

worldMatrix: Mat4

World-space 4×4 column-major matrix. May trigger lazy recomputation.

worldMatrixVersion: number

Monotonically increasing counter — bumped each time worldMatrix recomputes. Children snapshot this value to detect when their parent has changed. Must never decrease: _cameraChangeKey sums it with the projection revision and relies on that to detect every change without aliasing.