@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
96 lines (95 loc) • 5.23 kB
TypeScript
import { Extension } from './Extension.js';
import { Box3, Camera, OrthographicCamera, PerspectiveCamera, Vector2, Vector3 } from 'three';
import { type CameraEventPayload } from '../objects/SpeckleCamera.js';
import { CameraEvent, type SpeckleCamera } from '../objects/SpeckleCamera.js';
import { FlyControls, FlyControlsOptions } from './controls/FlyControls.js';
import { SpeckleControls } from './controls/SpeckleControls.js';
import { IViewer, SpeckleView } from '../../IViewer.js';
import { SmoothOrbitControlsOptions, SmoothOrbitControls } from './controls/SmoothOrbitControls.js';
export declare enum NearPlaneCalculation {
EMPIRIC = 0,
ACCURATE = 1
}
export type CanonicalView = 'front' | 'back' | 'up' | 'top' | 'down' | 'bottom' | 'right' | 'left' | '3d' | '3D';
export type InlineView = {
position: Vector3;
target: Vector3;
};
export type PolarView = {
azimuth: number;
polar: number;
radius?: number;
origin?: Vector3;
};
export type CameraControllerOptions = SmoothOrbitControlsOptions & FlyControlsOptions & {
nearPlaneCalculation?: NearPlaneCalculation;
};
export declare function isPerspectiveCamera(camera: Camera): camera is PerspectiveCamera;
export declare function isOrthographicCamera(camera: Camera): camera is OrthographicCamera;
export declare function computeOrthographicSize(distance: number, fov: number, aspect: number): Vector2;
export declare const DefaultOrbitControlsOptions: Required<CameraControllerOptions>;
export declare class CameraController extends Extension implements SpeckleCamera {
protected _renderingCamera: PerspectiveCamera | OrthographicCamera;
protected perspectiveCamera: PerspectiveCamera;
protected orthographicCamera: OrthographicCamera;
protected _lastCameraChanged: boolean;
protected _options: Required<CameraControllerOptions>;
protected _activeControls: SpeckleControls;
protected _orbitControls: SmoothOrbitControls;
protected _flyControls: FlyControls;
get renderingCamera(): PerspectiveCamera | OrthographicCamera;
set renderingCamera(value: PerspectiveCamera | OrthographicCamera);
get enabled(): boolean;
set enabled(val: boolean);
get fieldOfView(): number;
set fieldOfView(value: number);
get aspect(): number;
get controls(): SpeckleControls;
get options(): Required<CameraControllerOptions>;
set options(value: CameraControllerOptions);
constructor(viewer: IViewer);
default(): void;
on<T extends CameraEvent>(eventType: T, listener: (arg: CameraEventPayload[T]) => void): void;
getTarget(): Vector3;
getPosition(): Vector3;
toggleControls(): void;
setCameraView(objectIds: string[] | undefined, transition: boolean | undefined, fit?: number): void;
setCameraView(view: CanonicalView | SpeckleView | InlineView | PolarView, transition: boolean | undefined, fit?: number): void;
setCameraView(bounds: Box3, transition: boolean | undefined, fit?: number): void;
onEarlyUpdate(_delta?: number): void;
onLateUpdate(): void;
onResize(): void;
setPerspectiveCameraOn(): void;
setOrthoCameraOn(): void;
toggleCameras(): void;
protected setupOrthoCamera(): void;
protected setupPerspectiveCamera(): void;
disableRotations(): void;
enableRotations(): void;
updateCameraPlanes(targetVolume?: Box3, offsetScale?: number): void;
protected computeNearCameraPlaneEmpiric(targetVolume?: Box3, offsetScale?: number): number | undefined;
protected computeNearCameraPlaneAccurate(targetVolume?: Box3, offsetScale?: number, fallback?: number): number | undefined;
protected updateFarCameraPlane(): void;
protected getClosestGeometryDistance(fallback?: number): number;
protected zoom(objectIds?: string[], fit?: number, transition?: boolean): void;
protected zoomExtents(fit?: number, transition?: boolean): void;
protected zoomToBox(box: Box3, fit?: number, transition?: boolean): void;
protected fitToRadius(radius: number): number;
protected isSpeckleView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is SpeckleView;
protected isCanonicalView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is CanonicalView;
protected isInlineView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is InlineView;
protected isPolarView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is PolarView;
protected isBox3(view: CanonicalView | SpeckleView | InlineView | PolarView | Box3): view is Box3;
protected setView(view: CanonicalView | SpeckleView | InlineView | PolarView, transition?: boolean): void;
protected setViewSpeckle(view: SpeckleView, transition?: boolean): void;
/**
* Rotates camera to some canonical views
* @param {string} side Can be any of front, back, up (top), down (bottom), right, left.
* @param {Number} fit [description]
* @param {Boolean} transition [description]
* @return {[type]} [description]
*/
protected setViewCanonical(side: string, transition?: boolean): void;
protected setViewInline(view: InlineView, transition?: boolean): void;
private setViewPolar;
}