import type { WebXRSessionManager } from "../webXRSessionManager"; import { WebXRAbstractFeature } from "./WebXRAbstractFeature"; import { Observable } from "../../Misc/observable"; import { BaseTexture } from "../../Materials/Textures/baseTexture"; /** * Options for raw camera access */ export interface IWebXRRawCameraAccessOptions { /** * Keep the created textures and metadata when detaching the feature. */ doNotDisposeOnDetach?: boolean; } /** * WebXR Feature for WebXR raw camera access * @since 6.31.0 * @see https://immersive-web.github.io/raw-camera-access/ */ export declare class WebXRRawCameraAccess extends WebXRAbstractFeature { readonly options: IWebXRRawCameraAccessOptions; private _cachedInternalTextures; /** * This is an array of camera views * Note that mostly the array will contain a single view * If you want to know the order of the views, use the `viewIndex` array */ texturesData: BaseTexture[]; /** * If needed, this array will contain the eye definition of each texture in `texturesArray` */ viewIndex: string[]; /** * If needed, this array will contain the camera's intrinsics * You can use this data to convert from camera space to screen space and vice versa */ cameraIntrinsics: { u0: number; v0: number; ax: number; ay: number; gamma: number; width: number; height: number; viewportX: number; viewportY: number; }[]; /** * An observable that will notify when the camera's textures are updated */ onTexturesUpdatedObservable: Observable; private _glBinding?; private _glContext; /** * The module's name */ static readonly Name = "xr-raw-camera-access"; /** * The (Babylon) version of this module. * This is an integer representing the implementation version. * This number does not correspond to the WebXR specs version */ static readonly Version = 1; /** * Creates a new instance of the feature * @param _xrSessionManager the WebXRSessionManager * @param options options for the Feature */ constructor(_xrSessionManager: WebXRSessionManager, options?: IWebXRRawCameraAccessOptions); attach(force?: boolean | undefined): boolean; detach(): boolean; /** * Dispose this feature and all of the resources attached */ dispose(): void; /** * @see https://github.com/immersive-web/raw-camera-access/blob/main/explainer.md * @param view the XRView to update * @param index the index of the view in the views array */ private _updateCameraIntrinsics; private _updateInternalTextures; protected _onXRFrame(_xrFrame: XRFrame): void; }