# CameraController
The default camera controller extension that comes with the viewer package. Includes toggleable perspective and orthographic camera projections.
# Accessors
 | aspect | controls | enabled | fieldOfView | 
|---|---|---|---|
| renderingCamera | 
# Methods
 | disableRotations | enableRotations | on | removeListener | 
|---|---|---|---|
| setCameraPlanes | setCameraView | setOrthoCameraOn | setPerspectiveCameraOn | 
| toggleCameras | 
# Typedefs
 | CameraEvent | CameraEventPayload | CameraProjection | CanonicalView | 
|---|---|---|---|
| InlineView | PolarView | 
# Accessors
 # aspect
get aspect(): number
Gets the current display aspect ratio
Returns: number
# controls
get controls()
Gets the current underlying camera controller implementation. Typically an external library.
WARNING
Currently it exists for backwards compatibility. Will deprecate in future iterations!
Returns: any
# enabled
get enabled(): boolean
set enabled(val: boolean)
2
Gets or sets whether this extension is enabled.
TIP
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)
2
Gets or sets the perspective camera's field of view.
Returns: number
# renderingCamera
get renderingCamera(): PerspectiveCamera | OrthographicCamera
set renderingCamera(value: PerspectiveCamera | OrthographicCamera)
2
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
2
3
4
Function for subscribing to camera events.
Parameters
- eventType: CameraEvent
- handler: The handler for the events
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 (opens new window)
- 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
2
3
4
5
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 (opens new window).
Parameters
- bounds: Box3 (opens new window)
- 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'
}
2
3
4
5
6
Events the camera controller puts out.
Returns: void
# CameraEventPayload
interface CameraEventPayload {
  [CameraEvent.Stationary]: void
  [CameraEvent.Dynamic]: void
  [CameraEvent.FrameUpdate]x: boolean
  [CameraEvent.ProjectionChanged]: CameraProjection
}
2
3
4
5
6
Mapping CameraEvent types to handler argument type
Returns: void
# CameraProjection
enum CameraProjection {
  PERSPECTIVE,
  ORTHOGRAPHIC,
}
2
3
4
Camera projection types.
Returns: void
# CanonicalView
type CanonicalView =
  | "front"
  | "back"
  | "up"
  | "top"
  | "down"
  | "bottom"
  | "right"
  | "left"
  | "3d"
  | "3D";
2
3
4
5
6
7
8
9
10
11
Supported cannonical views.
Returns: void
# InlineView
type InlineView = {
  position: Vector3;
  target: Vector3;
};
2
3
4
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;
};
2
3
4
5
6
Camera view defined in polar coordinates.
