Properties

aspect

get aspect(): number

Gets the current display aspect ratio

Returns: number

controls

get controls(): SpeckleControls

Gets the current underlying SpeckleControls implementation.

Returns: SpeckleControls

enabled

get enabled(): boolean
set enabled(val: boolean)

Gets or sets whether this extension is enabled.

Extensions typically need to support being turned on/off with no impact on potentially other active extensions.

Returns: boolean

fieldOfView

get fieldOfView(): number
set fieldOfView(value: number)

Gets or sets the perspective camera’s field of view.

Returns: number

options

get options(): CameraControllerOptions
set options(value: CameraControllerOptions)

Gets or sets the current camera controller options.

Returns: CameraControllerOptions

renderingCamera

get renderingCamera(): PerspectiveCamera | OrthographicCamera
set renderingCamera(value: PerspectiveCamera | OrthographicCamera)

Gets or sets the current rendering camera.

Returns: number

Methods

disableRotations

disableRotations(): void

Disables all camera controls rotation capabilities.

Returns: void

enableRotations

enableRotations(): void

Enables all camera controls rotation capabilities.

Returns: void

on

on<T extends CameraEvent>(
  eventType: T,
  listener: (arg: CameraEventPayload[T]) => void
): void

Function for subscribing to camera events.

Parameters

Returns: void

removeListener

removeListener(e: CameraEvent, handler: (data: unknown) => void)

Function for un-subscribing from camera events.

Parameters

  • e: CameraEvent
  • handler: The handler for the events to unsubscribe

Returns: void

setCameraPlanes

setCameraPlanes(targetVolume: Box3, offsetScale: number = 1)

Function that adapts the camera’s near and far clipping planes according to the current scene’s volume. Parameters

  • targetVolume: Box3
  • optional offsetScale: Works as a linear tolerance to the volume parameter

Returns: void

setCameraView

setCameraView(objectIds: string[], transition: boolean, fit?: number): void

Focuses the camera based on the volume defined by the received object ids list.

Parameters

  • objectIds: The object ids that make up the volume
  • transition: Whether or not to make the transition animated
  • optional fit: Linear tolerance
setCameraView(
    view: CanonicalView | SpeckleView | InlineView | PolarView,
    transition: boolean,
    fit?: number
  ): void

Focuses the camera based on explicit view models provided.

Parameters

  • view: Explicit view of different possible type: CanonicalView, SpeckleView, InlineView
  • transition: Whether or not to make the transition animated
  • optional fit: Linear tolerance
setCameraView(bounds: Box3, transition: boolean, fit?: number): void

Focuses the camera based on explicit volume provided as Box3.

Parameters

  • bounds: Box3
  • transition: Whether or not to make the transition animated
  • optional fit: Linear tolerance

Returns: void

setOrthoCameraOn

setOrthoCameraOn(): void

Enables the orthographic camera.

Returns: void

setPerspectiveCameraOn

setPerspectiveCameraOn(): void

Enables the perspective camera.

Returns: void

toggleCameras

toggleCameras(): void

Switches between perspective and orthographic cameras.

Returns: void

Typedefs

CameraEvent

enum CameraEvent {
  Stationary = 'stationary',
  Dynamic = 'dynamic',
  FrameUpdate = 'frame-update',
  ProjectionChanged = 'projection-changed',
}

Events the camera controller puts out.

CameraEventPayload

interface CameraEventPayload {
  [CameraEvent.Stationary]: void
  [CameraEvent.Dynamic]: void
  [CameraEvent.FrameUpdate]x: boolean
  [CameraEvent.ProjectionChanged]: CameraProjection
}

Mapping CameraEvent types to handler argument type

CameraControllerOptions

type CameraControllerOptions = SmoothOrbitControlsOptions & {
  nearPlaneCalculation?: NearPlaneCalculation;
};

The camera controller options. Defaults to

export const DefaultOrbitControlsOptions: Required<CameraControllerOptions> = {
  enableOrbit: true,
  enableZoom: true,
  enablePan: true,
  orbitSensitivity: 1,
  zoomSensitivity: 1,
  panSensitivity: 1,
  inputSensitivity: 1,
  minimumRadius: 0,
  maximumRadius: Infinity,
  minimumPolarAngle: 0,
  maximumPolarAngle: Math.PI,
  minimumAzimuthalAngle: -Infinity,
  maximumAzimuthalAngle: Infinity,
  infiniteZoom: true,
  zoomToCursor: true,
  orbitAroundCursor: true,
  showOrbitPoint: true,
  damperDecay: 30,
  nearPlaneCalculation: NearPlaneCalculation.ACCURATE,
};

CameraProjection

enum CameraProjection {
  PERSPECTIVE,
  ORTHOGRAPHIC,
}

Camera projection types.

CanonicalView

type CanonicalView =
  | 'front'
  | 'back'
  | 'up'
  | 'top'
  | 'down'
  | 'bottom'
  | 'right'
  | 'left'
  | '3d'
  | '3D';

Supported cannonical views.

InlineView

type InlineView = {
  position: Vector3;
  target: Vector3;
};

Inline, on-demand camera view.

  • position: The position of the camera
  • target: The point in space where the camera looks at Returns: void

PolarView

type PolarView = {
  azimuth: number;
  polar: number;
  radius?: number;
  origin?: Vector3;
};

Camera view defined in polar coordinates.