1 |
- {"ast":null,"code":"import { WebXRFeatureName, WebXRFeaturesManager } from \"../webXRFeaturesManager.js\";\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature.js\";\nimport { Observable } from \"../../Misc/observable.js\";\nimport { WebGLHardwareTexture } from \"../../Engines/WebGL/webGLHardwareTexture.js\";\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.js\";\n/**\n * WebXR Feature for WebXR raw camera access\n * @since 6.31.0\n * @see https://immersive-web.github.io/raw-camera-access/\n */\nexport class WebXRRawCameraAccess extends WebXRAbstractFeature {\n /**\n * Creates a new instance of the feature\n * @param _xrSessionManager the WebXRSessionManager\n * @param options options for the Feature\n */\n constructor(_xrSessionManager, options = {}) {\n super(_xrSessionManager);\n this.options = options;\n this._cachedInternalTextures = [];\n /**\n * This is an array of camera views\n * Note that mostly the array will contain a single view\n * If you want to know the order of the views, use the `viewIndex` array\n */\n this.texturesData = [];\n /**\n * If needed, this array will contain the eye definition of each texture in `texturesArray`\n */\n this.viewIndex = [];\n /**\n * If needed, this array will contain the camera's intrinsics\n * You can use this data to convert from camera space to screen space and vice versa\n */\n this.cameraIntrinsics = [];\n /**\n * An observable that will notify when the camera's textures are updated\n */\n this.onTexturesUpdatedObservable = new Observable();\n this.xrNativeFeatureName = \"camera-access\";\n }\n attach(force) {\n if (!super.attach(force)) {\n return false;\n }\n this._glContext = this._xrSessionManager.scene.getEngine()._gl;\n this._glBinding = new XRWebGLBinding(this._xrSessionManager.session, this._glContext);\n return true;\n }\n detach() {\n if (!super.detach()) {\n return false;\n }\n this._glBinding = undefined;\n if (!this.options.doNotDisposeOnDetach) {\n this._cachedInternalTextures.forEach(t => t.dispose());\n this.texturesData.forEach(t => t.dispose());\n this._cachedInternalTextures.length = 0;\n this.texturesData.length = 0;\n this.cameraIntrinsics.length = 0;\n }\n return true;\n }\n /**\n * Dispose this feature and all of the resources attached\n */\n dispose() {\n super.dispose();\n this.onTexturesUpdatedObservable.clear();\n }\n /**\n * @see https://github.com/immersive-web/raw-camera-access/blob/main/explainer.md\n * @param view the XRView to update\n * @param index the index of the view in the views array\n */\n _updateCameraIntrinsics(view, index) {\n const cameraViewport = {\n width: view.camera.width,\n height: view.camera.height,\n x: 0,\n y: 0\n };\n const p = view.projectionMatrix;\n // Principal point in pixels (typically at or near the center of the viewport)\n const u0 = (1 - p[8]) * cameraViewport.width / 2 + cameraViewport.x;\n const v0 = (1 - p[9]) * cameraViewport.height / 2 + cameraViewport.y;\n // Focal lengths in pixels (these are equal for square pixels)\n const ax = cameraViewport.width / 2 * p[0];\n const ay = cameraViewport.height / 2 * p[5];\n // Skew factor in pixels (nonzero for rhomboid pixels)\n const gamma = cameraViewport.width / 2 * p[4];\n this.cameraIntrinsics[index] = {\n u0,\n v0,\n ax,\n ay,\n gamma,\n width: cameraViewport.width,\n height: cameraViewport.height,\n viewportX: cameraViewport.x,\n viewportY: cameraViewport.y\n };\n }\n _updateInternalTextures(view, index = 0) {\n var _this$_glBinding;\n if (!view.camera) {\n return false;\n }\n this.viewIndex[index] = view.eye;\n const lp = (_this$_glBinding = this._glBinding) === null || _this$_glBinding === void 0 ? void 0 : _this$_glBinding.getCameraImage(view.camera);\n if (!this._cachedInternalTextures[index]) {\n const internalTexture = new InternalTexture(this._xrSessionManager.scene.getEngine(), 0 /* InternalTextureSource.Unknown */, true);\n internalTexture.invertY = false;\n internalTexture.format = 5;\n internalTexture.generateMipMaps = true;\n internalTexture.type = 0;\n internalTexture.samplingMode = 3;\n internalTexture.width = view.camera.width;\n internalTexture.height = view.camera.height;\n internalTexture._cachedWrapU = 1;\n internalTexture._cachedWrapV = 1;\n internalTexture._hardwareTexture = new WebGLHardwareTexture(lp, this._glContext);\n this._cachedInternalTextures[index] = internalTexture;\n // create the base texture\n const texture = new BaseTexture(this._xrSessionManager.scene);\n texture.name = `WebXR Raw Camera Access (${index})`;\n texture._texture = this._cachedInternalTextures[index];\n this.texturesData[index] = texture;\n // get the camera intrinsics\n this._updateCameraIntrinsics(view, index);\n } else {\n var _this$_cachedInternal;\n // make sure the webgl texture is updated. Should happen automatically\n (_this$_cachedInternal = this._cachedInternalTextures[index]._hardwareTexture) === null || _this$_cachedInternal === void 0 || _this$_cachedInternal.set(lp);\n }\n this._cachedInternalTextures[index].isReady = true;\n return true;\n }\n _onXRFrame(_xrFrame) {\n const referenceSPace = this._xrSessionManager.referenceSpace;\n const pose = _xrFrame.getViewerPose(referenceSPace);\n if (!pose || !pose.views) {\n return;\n }\n let updated = true;\n pose.views.forEach((view, index) => {\n updated = updated && this._updateInternalTextures(view, index);\n });\n if (updated) {\n this.onTexturesUpdatedObservable.notifyObservers(this.texturesData);\n }\n }\n}\n/**\n * The module's name\n */\nWebXRRawCameraAccess.Name = WebXRFeatureName.RAW_CAMERA_ACCESS;\n/**\n * The (Babylon) version of this module.\n * This is an integer representing the implementation version.\n * This number does not correspond to the WebXR specs version\n */\nWebXRRawCameraAccess.Version = 1;\nWebXRFeaturesManager.AddWebXRFeature(WebXRRawCameraAccess.Name, (xrSessionManager, options) => {\n return () => new WebXRRawCameraAccess(xrSessionManager, options);\n}, WebXRRawCameraAccess.Version, false);","map":{"version":3,"names":["WebXRFeatureName","WebXRFeaturesManager","WebXRAbstractFeature","Observable","WebGLHardwareTexture","InternalTexture","BaseTexture","WebXRRawCameraAccess","constructor","_xrSessionManager","options","_cachedInternalTextures","texturesData","viewIndex","cameraIntrinsics","onTexturesUpdatedObservable","xrNativeFeatureName","attach","force","_glContext","scene","getEngine","_gl","_glBinding","XRWebGLBinding","session","detach","undefined","doNotDisposeOnDetach","forEach","t","dispose","length","clear","_updateCameraIntrinsics","view","index","cameraViewport","width","camera","height","x","y","p","projectionMatrix","u0","v0","ax","ay","gamma","viewportX","viewportY","_updateInternalTextures","_this$_glBinding","eye","lp","getCameraImage","internalTexture","invertY","format","generateMipMaps","type","samplingMode","_cachedWrapU","_cachedWrapV","_hardwareTexture","texture","name","_texture","_this$_cachedInternal","set","isReady","_onXRFrame","_xrFrame","referenceSPace","referenceSpace","pose","getViewerPose","views","updated","notifyObservers","Name","RAW_CAMERA_ACCESS","Version","AddWebXRFeature","xrSessionManager"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/XR/features/WebXRRawCameraAccess.js"],"sourcesContent":["import { WebXRFeatureName, WebXRFeaturesManager } from \"../webXRFeaturesManager.js\";\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature.js\";\nimport { Observable } from \"../../Misc/observable.js\";\n\nimport { WebGLHardwareTexture } from \"../../Engines/WebGL/webGLHardwareTexture.js\";\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.js\";\n/**\n * WebXR Feature for WebXR raw camera access\n * @since 6.31.0\n * @see https://immersive-web.github.io/raw-camera-access/\n */\nexport class WebXRRawCameraAccess extends WebXRAbstractFeature {\n /**\n * Creates a new instance of the feature\n * @param _xrSessionManager the WebXRSessionManager\n * @param options options for the Feature\n */\n constructor(_xrSessionManager, options = {}) {\n super(_xrSessionManager);\n this.options = options;\n this._cachedInternalTextures = [];\n /**\n * This is an array of camera views\n * Note that mostly the array will contain a single view\n * If you want to know the order of the views, use the `viewIndex` array\n */\n this.texturesData = [];\n /**\n * If needed, this array will contain the eye definition of each texture in `texturesArray`\n */\n this.viewIndex = [];\n /**\n * If needed, this array will contain the camera's intrinsics\n * You can use this data to convert from camera space to screen space and vice versa\n */\n this.cameraIntrinsics = [];\n /**\n * An observable that will notify when the camera's textures are updated\n */\n this.onTexturesUpdatedObservable = new Observable();\n this.xrNativeFeatureName = \"camera-access\";\n }\n attach(force) {\n if (!super.attach(force)) {\n return false;\n }\n this._glContext = this._xrSessionManager.scene.getEngine()._gl;\n this._glBinding = new XRWebGLBinding(this._xrSessionManager.session, this._glContext);\n return true;\n }\n detach() {\n if (!super.detach()) {\n return false;\n }\n this._glBinding = undefined;\n if (!this.options.doNotDisposeOnDetach) {\n this._cachedInternalTextures.forEach((t) => t.dispose());\n this.texturesData.forEach((t) => t.dispose());\n this._cachedInternalTextures.length = 0;\n this.texturesData.length = 0;\n this.cameraIntrinsics.length = 0;\n }\n return true;\n }\n /**\n * Dispose this feature and all of the resources attached\n */\n dispose() {\n super.dispose();\n this.onTexturesUpdatedObservable.clear();\n }\n /**\n * @see https://github.com/immersive-web/raw-camera-access/blob/main/explainer.md\n * @param view the XRView to update\n * @param index the index of the view in the views array\n */\n _updateCameraIntrinsics(view, index) {\n const cameraViewport = {\n width: view.camera.width,\n height: view.camera.height,\n x: 0,\n y: 0,\n };\n const p = view.projectionMatrix;\n // Principal point in pixels (typically at or near the center of the viewport)\n const u0 = ((1 - p[8]) * cameraViewport.width) / 2 + cameraViewport.x;\n const v0 = ((1 - p[9]) * cameraViewport.height) / 2 + cameraViewport.y;\n // Focal lengths in pixels (these are equal for square pixels)\n const ax = (cameraViewport.width / 2) * p[0];\n const ay = (cameraViewport.height / 2) * p[5];\n // Skew factor in pixels (nonzero for rhomboid pixels)\n const gamma = (cameraViewport.width / 2) * p[4];\n this.cameraIntrinsics[index] = {\n u0,\n v0,\n ax,\n ay,\n gamma,\n width: cameraViewport.width,\n height: cameraViewport.height,\n viewportX: cameraViewport.x,\n viewportY: cameraViewport.y,\n };\n }\n _updateInternalTextures(view, index = 0) {\n if (!view.camera) {\n return false;\n }\n this.viewIndex[index] = view.eye;\n const lp = this._glBinding?.getCameraImage(view.camera);\n if (!this._cachedInternalTextures[index]) {\n const internalTexture = new InternalTexture(this._xrSessionManager.scene.getEngine(), 0 /* InternalTextureSource.Unknown */, true);\n internalTexture.invertY = false;\n internalTexture.format = 5;\n internalTexture.generateMipMaps = true;\n internalTexture.type = 0;\n internalTexture.samplingMode = 3;\n internalTexture.width = view.camera.width;\n internalTexture.height = view.camera.height;\n internalTexture._cachedWrapU = 1;\n internalTexture._cachedWrapV = 1;\n internalTexture._hardwareTexture = new WebGLHardwareTexture(lp, this._glContext);\n this._cachedInternalTextures[index] = internalTexture;\n // create the base texture\n const texture = new BaseTexture(this._xrSessionManager.scene);\n texture.name = `WebXR Raw Camera Access (${index})`;\n texture._texture = this._cachedInternalTextures[index];\n this.texturesData[index] = texture;\n // get the camera intrinsics\n this._updateCameraIntrinsics(view, index);\n }\n else {\n // make sure the webgl texture is updated. Should happen automatically\n this._cachedInternalTextures[index]._hardwareTexture?.set(lp);\n }\n this._cachedInternalTextures[index].isReady = true;\n return true;\n }\n _onXRFrame(_xrFrame) {\n const referenceSPace = this._xrSessionManager.referenceSpace;\n const pose = _xrFrame.getViewerPose(referenceSPace);\n if (!pose || !pose.views) {\n return;\n }\n let updated = true;\n pose.views.forEach((view, index) => {\n updated = updated && this._updateInternalTextures(view, index);\n });\n if (updated) {\n this.onTexturesUpdatedObservable.notifyObservers(this.texturesData);\n }\n }\n}\n/**\n * The module's name\n */\nWebXRRawCameraAccess.Name = WebXRFeatureName.RAW_CAMERA_ACCESS;\n/**\n * The (Babylon) version of this module.\n * This is an integer representing the implementation version.\n * This number does not correspond to the WebXR specs version\n */\nWebXRRawCameraAccess.Version = 1;\nWebXRFeaturesManager.AddWebXRFeature(WebXRRawCameraAccess.Name, (xrSessionManager, options) => {\n return () => new WebXRRawCameraAccess(xrSessionManager, options);\n}, WebXRRawCameraAccess.Version, false);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|