import { Color, Event, EventListener, OrthographicCamera, PerspectiveCamera, WebGLRenderer, Scene, DepthTexture } from "three"; import TrackballControls from "./TrackballControls.js"; import { ViewportCorner } from "./types.js"; export declare const VOLUME_LAYER = 0; export declare const MESH_LAYER = 1; export type CameraState = { position: [number, number, number]; up: [number, number, number]; target: [number, number, number]; /** Full vertical FOV in degrees, from bottom to top of the view frustum. Defined only for perspective cameras. */ fov?: number; /** The scale value for the orthographic camera controls; undefined for perspective cameras. */ orthoScale?: number; }; export declare class ThreeJsPanel { containerdiv: HTMLDivElement; private canvas; scene: Scene; private meshRenderTarget; private meshRenderToBuffer; animateFuncs: ((renderer: WebGLRenderer, camera: PerspectiveCamera | OrthographicCamera, depthTexture?: DepthTexture) => void)[]; private inRenderLoop; private requestedRender; hasWebGL2: boolean; renderer: WebGLRenderer; private timer; private fov; private perspectiveCamera; private perspectiveControls; private orthographicCameraX; private orthoControlsX; private orthographicCameraY; private orthoControlsY; private orthographicCameraZ; private orthoControlsZ; camera: PerspectiveCamera | OrthographicCamera; private viewMode; controls: TrackballControls; private controlEndHandler?; private controlChangeHandler?; private controlStartHandler?; showAxis: boolean; private axisScale; private axisOffset; private axisHelperScene; private axisHelperObject; private axisCamera; private scaleBarContainerElement; private orthoScaleBarElement; showOrthoScaleBar: boolean; private perspectiveScaleBarElement; showPerspectiveScaleBar: boolean; private timestepIndicatorElement; showTimestepIndicator: boolean; private dataurlcallback?; constructor(parentElement: HTMLElement | undefined, _useWebGL2: boolean); updateCameraFocus(fov: number, _focalDistance: number, _apertureSize: number): void; resetPerspectiveCamera(): void; resetOrthographicCameraX(): void; resetOrthographicCameraY(): void; resetOrthographicCameraZ(): void; requestCapture(dataurlcallback: (name: string) => void): void; isVR(): boolean; resetToPerspectiveCamera(): void; resetCamera(): void; setupAxisHelper(): void; setAxisPosition(marginX: number, marginY: number, corner: ViewportCorner): void; orthoScreenPixelsToPhysicalUnits(pixels: number, physicalUnitsPerWorldUnit: number): number; setupIndicatorElements(): void; updateOrthoScaleBar(scale: number, unit?: string): void; updatePerspectiveScaleBar(length: number, unit?: string): void; updateTimestepIndicator(progress: number, total: number, unit: string): void; setPerspectiveScaleBarColor(color: [number, number, number]): void; updateScaleBarVisibility(): void; setShowOrthoScaleBar(visible: boolean): void; setShowPerspectiveScaleBar(visible: boolean): void; setShowTimestepIndicator(visible: boolean): void; setIndicatorPosition(timestep: boolean, marginX: number, marginY: number, corner: ViewportCorner): void; setAutoRotate(rotate: boolean): void; getAutoRotate(): boolean; replaceCamera(newCam: PerspectiveCamera | OrthographicCamera): void; replaceControls(newControls: TrackballControls): void; switchViewMode(mode: string): void; getMeshDepthTexture(): DepthTexture; resize(comp: HTMLElement | null, w?: number, h?: number, _ow?: number, _oh?: number, _eOpts?: unknown): void; setClearColor(color: Color, alpha: number): void; getWidth(): number; getHeight(): number; getCameraState(): CameraState; /** * Updates the camera's state, including the position, up vector, target position, * scaling, and FOV. If values are missing from `state`, they will be left unchanged. * * @param state Partial `CameraState` object. * * If an OrthographicCamera is used, the camera's position will be constrained to match * the `target` position along the current view mode. */ setCameraState(state: Partial): void; render(): void; redraw(): void; onAnimationLoop(): void; startRenderLoop(): void; stopRenderLoop(): void; removeControlHandlers(): void; setControlHandlers(onstart: EventListener, onchange: EventListener, onend: EventListener): void; }