123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { Vector3 } from "../Maths/math.vector";
- import type { Scene } from "../scene";
- import { Camera } from "../Cameras/camera";
- import { FreeCamera } from "../Cameras/freeCamera";
- import type { WebXRSessionManager } from "./webXRSessionManager";
- import { Observable } from "../Misc/observable";
- import { WebXRTrackingState } from "./webXRTypes";
- /**
- * WebXR Camera which holds the views for the xrSession
- * @see https://doc.babylonjs.com/features/featuresDeepDive/webXR/webXRCamera
- */
- export declare class WebXRCamera extends FreeCamera {
- private _xrSessionManager;
- private static _ScaleReadOnly;
- private _firstFrame;
- private _referenceQuaternion;
- private _referencedPosition;
- private _trackingState;
- /**
- * This will be triggered after the first XR Frame initialized the camera,
- * including the right number of views and their rendering parameters
- */
- onXRCameraInitializedObservable: Observable<WebXRCamera>;
- /**
- * Observable raised before camera teleportation
- * @deprecated use onBeforeCameraTeleport of the teleportation feature instead
- */
- onBeforeCameraTeleport: Observable<Vector3>;
- /**
- * Observable raised after camera teleportation
- * @deprecated use onAfterCameraTeleport of the teleportation feature instead
- */
- onAfterCameraTeleport: Observable<Vector3>;
- /**
- * Notifies when the camera's tracking state has changed.
- * Notice - will also be triggered when tracking has started (at the beginning of the session)
- */
- onTrackingStateChanged: Observable<WebXRTrackingState>;
- /**
- * Should position compensation execute on first frame.
- * This is used when copying the position from a native (non XR) camera
- */
- compensateOnFirstFrame: boolean;
- /**
- * The last XRViewerPose from the current XRFrame
- * @internal
- */
- _lastXRViewerPose?: XRViewerPose;
- /**
- * Creates a new webXRCamera, this should only be set at the camera after it has been updated by the xrSessionManager
- * @param name the name of the camera
- * @param scene the scene to add the camera to
- * @param _xrSessionManager a constructed xr session manager
- */
- constructor(name: string, scene: Scene, _xrSessionManager: WebXRSessionManager);
- /**
- * Get the current XR tracking state of the camera
- */
- get trackingState(): WebXRTrackingState;
- private _setTrackingState;
- /**
- * Return the user's height, unrelated to the current ground.
- * This will be the y position of this camera, when ground level is 0.
- *
- * Note - this value is multiplied by the worldScalingFactor (if set), so it will be in the same units as the scene.
- */
- get realWorldHeight(): number;
- /** @internal */
- _updateForDualEyeDebugging(): void;
- /**
- * Sets this camera's transformation based on a non-vr camera
- * @param otherCamera the non-vr camera to copy the transformation from
- * @param resetToBaseReferenceSpace should XR reset to the base reference space
- */
- setTransformationFromNonVRCamera(otherCamera?: Camera, resetToBaseReferenceSpace?: boolean): void;
- /**
- * Gets the current instance class name ("WebXRCamera").
- * @returns the class name
- */
- getClassName(): string;
- /**
- * Set the target for the camera to look at.
- * Note that this only rotates around the Y axis, as opposed to the default behavior of other cameras
- * @param target the target to set the camera to look at
- */
- setTarget(target: Vector3): void;
- dispose(): void;
- private _updateDepthNearFar;
- private _rotate180;
- private _updateFromXRSession;
- private _updateNumberOfRigCameras;
- private _updateReferenceSpace;
- }
|