{"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { WebXRFeaturesManager, WebXRFeatureName } from \"../webXRFeaturesManager.js\";\nimport { Observable } from \"../../Misc/observable.js\";\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature.js\";\nimport { Matrix } from \"../../Maths/math.vector.js\";\nimport { Tools } from \"../../Misc/tools.js\";\n/**\n * Enum that describes the state of the image trackability score status for this session.\n */\nvar ImageTrackingScoreStatus;\n(function (ImageTrackingScoreStatus) {\n // AR Session has not yet assessed image trackability scores.\n ImageTrackingScoreStatus[ImageTrackingScoreStatus[\"NotReceived\"] = 0] = \"NotReceived\";\n // A request to retrieve trackability scores has been sent, but no response has been received.\n ImageTrackingScoreStatus[ImageTrackingScoreStatus[\"Waiting\"] = 1] = \"Waiting\";\n // Image trackability scores have been received for this session\n ImageTrackingScoreStatus[ImageTrackingScoreStatus[\"Received\"] = 2] = \"Received\";\n})(ImageTrackingScoreStatus || (ImageTrackingScoreStatus = {}));\n/**\n * Image tracking for immersive AR sessions.\n * Providing a list of images and their estimated widths will enable tracking those images in the real world.\n */\nexport class WebXRImageTracking extends WebXRAbstractFeature {\n /**\n * constructs the image tracking feature\n * @param _xrSessionManager the session manager for this module\n * @param options read-only options to be used in this module\n */\n constructor(_xrSessionManager,\n /**\n * read-only options to be used in this module\n */\n options) {\n super(_xrSessionManager);\n this.options = options;\n /**\n * This will be triggered if the underlying system deems an image untrackable.\n * The index is the index of the image from the array used to initialize the feature.\n */\n this.onUntrackableImageFoundObservable = new Observable();\n /**\n * An image was deemed trackable, and the system will start tracking it.\n */\n this.onTrackableImageFoundObservable = new Observable();\n /**\n * The image was found and its state was updated.\n */\n this.onTrackedImageUpdatedObservable = new Observable();\n this._trackableScoreStatus = ImageTrackingScoreStatus.NotReceived;\n this._trackedImages = [];\n this.xrNativeFeatureName = \"image-tracking\";\n }\n /**\n * attach this feature\n * Will usually be called by the features manager\n *\n * @returns true if successful.\n */\n attach() {\n return super.attach();\n }\n /**\n * detach this feature.\n * Will usually be called by the features manager\n *\n * @returns true if successful.\n */\n detach() {\n return super.detach();\n }\n /**\n * Get a tracked image by its ID.\n *\n * @param id the id of the image to load (position in the init array)\n * @returns a trackable image, if exists in this location\n */\n getTrackedImageById(id) {\n return this._trackedImages[id] || null;\n }\n /**\n * Dispose this feature and all of the resources attached\n */\n dispose() {\n super.dispose();\n this._trackedImages.forEach(trackedImage => {\n trackedImage.originalBitmap.close();\n });\n this._trackedImages.length = 0;\n this.onTrackableImageFoundObservable.clear();\n this.onUntrackableImageFoundObservable.clear();\n this.onTrackedImageUpdatedObservable.clear();\n }\n /**\n * Extends the session init object if needed\n * @returns augmentation object fo the xr session init object.\n */\n getXRSessionInitExtension() {\n var _this = this;\n return _asyncToGenerator(function* () {\n if (!_this.options.images || !_this.options.images.length) {\n return {};\n }\n const promises = _this.options.images.map(image => {\n if (typeof image.src === \"string\") {\n return _this._xrSessionManager.scene.getEngine()._createImageBitmapFromSource(image.src);\n } else {\n return Promise.resolve(image.src); // resolve is probably unneeded\n }\n });\n try {\n const images = yield Promise.all(promises);\n _this._originalTrackingRequest = images.map((image, idx) => {\n return {\n image,\n widthInMeters: _this.options.images[idx].estimatedRealWorldWidth\n };\n });\n return {\n trackedImages: _this._originalTrackingRequest\n };\n } catch (ex) {\n Tools.Error(\"Error loading images for tracking, WebXRImageTracking disabled for this session.\");\n return {};\n }\n })();\n }\n _onXRFrame(_xrFrame) {\n if (!_xrFrame.getImageTrackingResults || this._trackableScoreStatus === ImageTrackingScoreStatus.Waiting) {\n return;\n }\n // Image tracking scores may be generated a few frames after the XR Session initializes.\n // If we haven't received scores yet, then kick off the task to check scores and return immediately.\n if (this._trackableScoreStatus === ImageTrackingScoreStatus.NotReceived) {\n this._checkScoresAsync();\n return;\n }\n const imageTrackedResults = _xrFrame.getImageTrackingResults();\n for (const result of imageTrackedResults) {\n let changed = false;\n const imageIndex = result.index;\n const imageObject = this._trackedImages[imageIndex];\n if (!imageObject) {\n // something went wrong!\n continue;\n }\n imageObject.xrTrackingResult = result;\n if (imageObject.realWorldWidth !== result.measuredWidthInMeters) {\n imageObject.realWorldWidth = result.measuredWidthInMeters;\n changed = true;\n }\n // Get the pose of the image relative to a reference space.\n const pose = _xrFrame.getPose(result.imageSpace, this._xrSessionManager.referenceSpace);\n if (pose) {\n const mat = imageObject.transformationMatrix;\n Matrix.FromArrayToRef(pose.transform.matrix, 0, mat);\n if (!this._xrSessionManager.scene.useRightHandedSystem) {\n mat.toggleModelMatrixHandInPlace();\n }\n changed = true;\n }\n const state = result.trackingState;\n const emulated = state === \"emulated\";\n if (imageObject.emulated !== emulated) {\n imageObject.emulated = emulated;\n changed = true;\n }\n if (changed) {\n this.onTrackedImageUpdatedObservable.notifyObservers(imageObject);\n }\n }\n }\n _checkScoresAsync() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (!_this2._xrSessionManager.session.getTrackedImageScores || _this2._trackableScoreStatus !== ImageTrackingScoreStatus.NotReceived) {\n return;\n }\n _this2._trackableScoreStatus = ImageTrackingScoreStatus.Waiting;\n const imageScores = yield _this2._xrSessionManager.session.getTrackedImageScores();\n if (!imageScores || imageScores.length === 0) {\n _this2._trackableScoreStatus = ImageTrackingScoreStatus.NotReceived;\n return;\n }\n // check the scores for all\n for (let idx = 0; idx < imageScores.length; ++idx) {\n if (imageScores[idx] == \"untrackable\") {\n _this2.onUntrackableImageFoundObservable.notifyObservers(idx);\n } else {\n const originalBitmap = _this2._originalTrackingRequest[idx].image;\n const imageObject = {\n id: idx,\n originalBitmap,\n transformationMatrix: new Matrix(),\n ratio: originalBitmap.width / originalBitmap.height\n };\n _this2._trackedImages[idx] = imageObject;\n _this2.onTrackableImageFoundObservable.notifyObservers(imageObject);\n }\n }\n _this2._trackableScoreStatus = imageScores.length > 0 ? ImageTrackingScoreStatus.Received : ImageTrackingScoreStatus.NotReceived;\n })();\n }\n}\n/**\n * The module's name\n */\nWebXRImageTracking.Name = WebXRFeatureName.IMAGE_TRACKING;\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 */\nWebXRImageTracking.Version = 1;\n//register the plugin\nWebXRFeaturesManager.AddWebXRFeature(WebXRImageTracking.Name, (xrSessionManager, options) => {\n return () => new WebXRImageTracking(xrSessionManager, options);\n}, WebXRImageTracking.Version, false);","map":{"version":3,"names":["WebXRFeaturesManager","WebXRFeatureName","Observable","WebXRAbstractFeature","Matrix","Tools","ImageTrackingScoreStatus","WebXRImageTracking","constructor","_xrSessionManager","options","onUntrackableImageFoundObservable","onTrackableImageFoundObservable","onTrackedImageUpdatedObservable","_trackableScoreStatus","NotReceived","_trackedImages","xrNativeFeatureName","attach","detach","getTrackedImageById","id","dispose","forEach","trackedImage","originalBitmap","close","length","clear","getXRSessionInitExtension","_this","_asyncToGenerator","images","promises","map","image","src","scene","getEngine","_createImageBitmapFromSource","Promise","resolve","all","_originalTrackingRequest","idx","widthInMeters","estimatedRealWorldWidth","trackedImages","ex","Error","_onXRFrame","_xrFrame","getImageTrackingResults","Waiting","_checkScoresAsync","imageTrackedResults","result","changed","imageIndex","index","imageObject","xrTrackingResult","realWorldWidth","measuredWidthInMeters","pose","getPose","imageSpace","referenceSpace","mat","transformationMatrix","FromArrayToRef","transform","matrix","useRightHandedSystem","toggleModelMatrixHandInPlace","state","trackingState","emulated","notifyObservers","_this2","session","getTrackedImageScores","imageScores","ratio","width","height","Received","Name","IMAGE_TRACKING","Version","AddWebXRFeature","xrSessionManager"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/XR/features/WebXRImageTracking.js"],"sourcesContent":["import { WebXRFeaturesManager, WebXRFeatureName } from \"../webXRFeaturesManager.js\";\nimport { Observable } from \"../../Misc/observable.js\";\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature.js\";\nimport { Matrix } from \"../../Maths/math.vector.js\";\nimport { Tools } from \"../../Misc/tools.js\";\n/**\n * Enum that describes the state of the image trackability score status for this session.\n */\nvar ImageTrackingScoreStatus;\n(function (ImageTrackingScoreStatus) {\n // AR Session has not yet assessed image trackability scores.\n ImageTrackingScoreStatus[ImageTrackingScoreStatus[\"NotReceived\"] = 0] = \"NotReceived\";\n // A request to retrieve trackability scores has been sent, but no response has been received.\n ImageTrackingScoreStatus[ImageTrackingScoreStatus[\"Waiting\"] = 1] = \"Waiting\";\n // Image trackability scores have been received for this session\n ImageTrackingScoreStatus[ImageTrackingScoreStatus[\"Received\"] = 2] = \"Received\";\n})(ImageTrackingScoreStatus || (ImageTrackingScoreStatus = {}));\n/**\n * Image tracking for immersive AR sessions.\n * Providing a list of images and their estimated widths will enable tracking those images in the real world.\n */\nexport class WebXRImageTracking extends WebXRAbstractFeature {\n /**\n * constructs the image tracking feature\n * @param _xrSessionManager the session manager for this module\n * @param options read-only options to be used in this module\n */\n constructor(_xrSessionManager, \n /**\n * read-only options to be used in this module\n */\n options) {\n super(_xrSessionManager);\n this.options = options;\n /**\n * This will be triggered if the underlying system deems an image untrackable.\n * The index is the index of the image from the array used to initialize the feature.\n */\n this.onUntrackableImageFoundObservable = new Observable();\n /**\n * An image was deemed trackable, and the system will start tracking it.\n */\n this.onTrackableImageFoundObservable = new Observable();\n /**\n * The image was found and its state was updated.\n */\n this.onTrackedImageUpdatedObservable = new Observable();\n this._trackableScoreStatus = ImageTrackingScoreStatus.NotReceived;\n this._trackedImages = [];\n this.xrNativeFeatureName = \"image-tracking\";\n }\n /**\n * attach this feature\n * Will usually be called by the features manager\n *\n * @returns true if successful.\n */\n attach() {\n return super.attach();\n }\n /**\n * detach this feature.\n * Will usually be called by the features manager\n *\n * @returns true if successful.\n */\n detach() {\n return super.detach();\n }\n /**\n * Get a tracked image by its ID.\n *\n * @param id the id of the image to load (position in the init array)\n * @returns a trackable image, if exists in this location\n */\n getTrackedImageById(id) {\n return this._trackedImages[id] || null;\n }\n /**\n * Dispose this feature and all of the resources attached\n */\n dispose() {\n super.dispose();\n this._trackedImages.forEach((trackedImage) => {\n trackedImage.originalBitmap.close();\n });\n this._trackedImages.length = 0;\n this.onTrackableImageFoundObservable.clear();\n this.onUntrackableImageFoundObservable.clear();\n this.onTrackedImageUpdatedObservable.clear();\n }\n /**\n * Extends the session init object if needed\n * @returns augmentation object fo the xr session init object.\n */\n async getXRSessionInitExtension() {\n if (!this.options.images || !this.options.images.length) {\n return {};\n }\n const promises = this.options.images.map((image) => {\n if (typeof image.src === \"string\") {\n return this._xrSessionManager.scene.getEngine()._createImageBitmapFromSource(image.src);\n }\n else {\n return Promise.resolve(image.src); // resolve is probably unneeded\n }\n });\n try {\n const images = await Promise.all(promises);\n this._originalTrackingRequest = images.map((image, idx) => {\n return {\n image,\n widthInMeters: this.options.images[idx].estimatedRealWorldWidth,\n };\n });\n return {\n trackedImages: this._originalTrackingRequest,\n };\n }\n catch (ex) {\n Tools.Error(\"Error loading images for tracking, WebXRImageTracking disabled for this session.\");\n return {};\n }\n }\n _onXRFrame(_xrFrame) {\n if (!_xrFrame.getImageTrackingResults || this._trackableScoreStatus === ImageTrackingScoreStatus.Waiting) {\n return;\n }\n // Image tracking scores may be generated a few frames after the XR Session initializes.\n // If we haven't received scores yet, then kick off the task to check scores and return immediately.\n if (this._trackableScoreStatus === ImageTrackingScoreStatus.NotReceived) {\n this._checkScoresAsync();\n return;\n }\n const imageTrackedResults = _xrFrame.getImageTrackingResults();\n for (const result of imageTrackedResults) {\n let changed = false;\n const imageIndex = result.index;\n const imageObject = this._trackedImages[imageIndex];\n if (!imageObject) {\n // something went wrong!\n continue;\n }\n imageObject.xrTrackingResult = result;\n if (imageObject.realWorldWidth !== result.measuredWidthInMeters) {\n imageObject.realWorldWidth = result.measuredWidthInMeters;\n changed = true;\n }\n // Get the pose of the image relative to a reference space.\n const pose = _xrFrame.getPose(result.imageSpace, this._xrSessionManager.referenceSpace);\n if (pose) {\n const mat = imageObject.transformationMatrix;\n Matrix.FromArrayToRef(pose.transform.matrix, 0, mat);\n if (!this._xrSessionManager.scene.useRightHandedSystem) {\n mat.toggleModelMatrixHandInPlace();\n }\n changed = true;\n }\n const state = result.trackingState;\n const emulated = state === \"emulated\";\n if (imageObject.emulated !== emulated) {\n imageObject.emulated = emulated;\n changed = true;\n }\n if (changed) {\n this.onTrackedImageUpdatedObservable.notifyObservers(imageObject);\n }\n }\n }\n async _checkScoresAsync() {\n if (!this._xrSessionManager.session.getTrackedImageScores || this._trackableScoreStatus !== ImageTrackingScoreStatus.NotReceived) {\n return;\n }\n this._trackableScoreStatus = ImageTrackingScoreStatus.Waiting;\n const imageScores = await this._xrSessionManager.session.getTrackedImageScores();\n if (!imageScores || imageScores.length === 0) {\n this._trackableScoreStatus = ImageTrackingScoreStatus.NotReceived;\n return;\n }\n // check the scores for all\n for (let idx = 0; idx < imageScores.length; ++idx) {\n if (imageScores[idx] == \"untrackable\") {\n this.onUntrackableImageFoundObservable.notifyObservers(idx);\n }\n else {\n const originalBitmap = this._originalTrackingRequest[idx].image;\n const imageObject = {\n id: idx,\n originalBitmap,\n transformationMatrix: new Matrix(),\n ratio: originalBitmap.width / originalBitmap.height,\n };\n this._trackedImages[idx] = imageObject;\n this.onTrackableImageFoundObservable.notifyObservers(imageObject);\n }\n }\n this._trackableScoreStatus = imageScores.length > 0 ? ImageTrackingScoreStatus.Received : ImageTrackingScoreStatus.NotReceived;\n }\n}\n/**\n * The module's name\n */\nWebXRImageTracking.Name = WebXRFeatureName.IMAGE_TRACKING;\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 */\nWebXRImageTracking.Version = 1;\n//register the plugin\nWebXRFeaturesManager.AddWebXRFeature(WebXRImageTracking.Name, (xrSessionManager, options) => {\n return () => new WebXRImageTracking(xrSessionManager, options);\n}, WebXRImageTracking.Version, false);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}