@realsee/five
Version:
Realsee Renderer SDK
85 lines (84 loc) • 3 kB
TypeScript
import { XRController } from './xrController';
import { Camera } from '../core/camera';
import * as THREE from "three";
type XRMachineType = 'Pico' | 'Oculus' | 'VP';
interface XRInitOption {
/** 使用WEBXR的当前设备*/
machineType: XRMachineType;
/** 全景模式还是视差模式*/
isPanorama: boolean;
/** 使用的参考空间类型*/
referenceSpaceType: XRReferenceSpaceType;
onSessionStart?(session: XRSession): void;
onSessionEnd?(): void;
}
declare class XRManager {
/** 是否使用全景模式*/
isPanorama: boolean;
/** 当前的设备*/
machineType: XRMachineType;
/** 场景渲染器*/
renderer: THREE.WebGLRenderer;
/** opengles句柄*/
gl: WebGLRenderingContext;
/** 是否开启XR模式 */
enabled: boolean;
/** WebXR模式Context */
session: XRSession | null;
/** XR参考空间类型*/
referenceSpaceType: XRReferenceSpaceType;
/** XR参考空间 */
referenceSpace: XRReferenceSpace | null;
/** XR控制器 */
controllers: XRController[];
/** XR控制器控制数据 */
inputSourcesMap: Map<XRInputSource, XRController>;
/** XR双相机 */
cameraVR: THREE.ArrayCamera;
/** XR左眼相机*/
cameraL: THREE.PerspectiveCamera;
/** XR右眼相机*/
cameraR: THREE.PerspectiveCamera;
/** 是否在获取*/
isPresenting: boolean;
/** 视锥近面*/
private currentDepthNear;
/** 视锥远面*/
private currentDepthFar;
/** 左眼相机位姿*/
private cameraLPos;
/** 右眼相机位姿*/
private cameraRPos;
/** XRSession 开始 */
private onSessionStartCallback;
/** XRSession 结束 */
private onSessionEndCallback;
constructor(renderer: THREE.WebGLRenderer, gl: WebGLRenderingContext, options?: Partial<XRInitOption>);
getController(index: number): any;
getRightController(): any;
getLeftController(): any;
getControllerGrip(index: number): any;
getCameras(): any;
private updateCamera;
/**
* @author jsantell / https://www.jsantell.com/
*
* Assumes 2 cameras that are parallel and share an X-axis, and that
* the cameras' projection and world matrices have already been set.
* And that near and far planes are identical for both cameras.
* Visualization of this technique: https://computergraphics.stackexchange.com/a/4765
*/
setProjectionFromUnion(camera: THREE.PerspectiveCamera, cameraL: THREE.PerspectiveCamera, cameraR: THREE.PerspectiveCamera): void;
/**
* 获取THREEJS用于渲染XR场景的双眼相机
* @param camera - 传统模式下渲染场景的THREEJS相机
* @returns - 用于渲染XR场景的双眼相机
*/
getCamera(camera: Camera): any;
private updateInputSources;
private onSessionEvent;
private onSessionEnd;
private onRequestReferenceSpace;
setSession(value: XRSession | null): void;
}
export { XRManager, XRInitOption, XRMachineType };