# CameraController
The default camera controller extension that comes with the viewer package. Includes toggleable perspective and orthographic camera projections.
# Accessors
aspect | controls | enabled | fieldOfView |
---|---|---|---|
options | renderingCamera |
# Methods
disableRotations | enableRotations | on | removeListener |
---|---|---|---|
setCameraPlanes | setCameraView | setOrthoCameraOn | setPerspectiveCameraOn |
toggleCameras |
# Typedefs
CameraEvent | CameraEventPayload | CameraControllerOptions | CameraProjection |
---|---|---|---|
CanonicalView | InlineView | PolarView |
# Accessors
# 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)
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
# options
get options(): CameraControllerOptions
set options(value: CameraControllerOptions)
2
Gets or sets the current camera controller options.
Returns: CameraControllerOptions
# 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
- listener: The handler for the events with CameraEventPayload arguments
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.
# 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
# CameraControllerOptions
type CameraControllerOptions = SmoothOrbitControlsOptions &
{ nearPlaneCalculation?: NearPlaneCalculation }
2
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,
damperDecay: 30,
nearPlaneCalculation: NearPlaneCalculation.EMPIRIC
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# CameraProjection
enum CameraProjection {
PERSPECTIVE,
ORTHOGRAPHIC,
}
2
3
4
Camera projection types.
# 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.
# 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.