1 |
- {"ast":null,"code":"import { TransformNode } from \"../Meshes/transformNode.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { Texture } from \"../Materials/Textures/texture.js\";\nimport { BackgroundMaterial } from \"../Materials/Background/backgroundMaterial.js\";\nimport { CreateSphere } from \"../Meshes/Builders/sphereBuilder.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { Axis } from \"../Maths/math.js\";\n/**\n * Display a 360/180 degree texture on an approximately spherical surface, useful for VR applications or skyboxes.\n * As a subclass of TransformNode, this allow parenting to the camera or multiple textures with different locations in the scene.\n * This class achieves its effect with a Texture and a correctly configured BackgroundMaterial on an inverted sphere.\n * Potential additions to this helper include zoom and and non-infinite distance rendering effects.\n */\nexport class TextureDome extends TransformNode {\n /**\n * Gets the texture being displayed on the sphere\n */\n get texture() {\n return this._texture;\n }\n /**\n * Sets the texture being displayed on the sphere\n */\n set texture(newTexture) {\n if (this._texture === newTexture) {\n return;\n }\n this._texture = newTexture;\n if (this._useDirectMapping) {\n this._texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._material.diffuseTexture = this._texture;\n } else {\n this._texture.coordinatesMode = Texture.FIXED_EQUIRECTANGULAR_MIRRORED_MODE; // matches orientation\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._material.reflectionTexture = this._texture;\n }\n this._changeTextureMode(this._textureMode);\n }\n /**\n * Gets the mesh used for the dome.\n */\n get mesh() {\n return this._mesh;\n }\n /**\n * The current fov(field of view) multiplier, 0.0 - 2.0. Defaults to 1.0. Lower values \"zoom in\" and higher values \"zoom out\".\n * Also see the options.resolution property.\n */\n get fovMultiplier() {\n return this._material.fovMultiplier;\n }\n set fovMultiplier(value) {\n this._material.fovMultiplier = value;\n }\n /**\n * Gets or set the current texture mode for the texture. It can be:\n * * TextureDome.MODE_MONOSCOPIC : Define the texture source as a Monoscopic panoramic 360.\n * * TextureDome.MODE_TOPBOTTOM : Define the texture source as a Stereoscopic TopBottom/OverUnder panoramic 360.\n * * TextureDome.MODE_SIDEBYSIDE : Define the texture source as a Stereoscopic Side by Side panoramic 360.\n */\n get textureMode() {\n return this._textureMode;\n }\n /**\n * Sets the current texture mode for the texture. It can be:\n * * TextureDome.MODE_MONOSCOPIC : Define the texture source as a Monoscopic panoramic 360.\n * * TextureDome.MODE_TOPBOTTOM : Define the texture source as a Stereoscopic TopBottom/OverUnder panoramic 360.\n * * TextureDome.MODE_SIDEBYSIDE : Define the texture source as a Stereoscopic Side by Side panoramic 360.\n */\n set textureMode(value) {\n if (this._textureMode === value) {\n return;\n }\n this._changeTextureMode(value);\n }\n /**\n * Is it a 180 degrees dome (half dome) or 360 texture (full dome)\n */\n get halfDome() {\n return this._halfDome;\n }\n /**\n * Set the halfDome mode. If set, only the front (180 degrees) will be displayed and the back will be blacked out.\n */\n set halfDome(enabled) {\n this._halfDome = enabled;\n this._halfDomeMask.setEnabled(enabled);\n this._changeTextureMode(this._textureMode);\n }\n /**\n * Set the cross-eye mode. If set, images that can be seen when crossing eyes will render correctly\n */\n set crossEye(enabled) {\n this._crossEye = enabled;\n this._changeTextureMode(this._textureMode);\n }\n /**\n * Is it a cross-eye texture?\n */\n get crossEye() {\n return this._crossEye;\n }\n /**\n * The background material of this dome.\n */\n get material() {\n return this._material;\n }\n /**\n * Create an instance of this class and pass through the parameters to the relevant classes- Texture, StandardMaterial, and Mesh.\n * @param name Element's name, child elements will append suffixes for their own names.\n * @param textureUrlOrElement defines the url(s) or the (video) HTML element to use\n * @param options An object containing optional or exposed sub element properties\n * @param options.resolution\n * @param options.clickToPlay\n * @param options.autoPlay\n * @param options.loop\n * @param options.size\n * @param options.poster\n * @param options.faceForward\n * @param options.useDirectMapping\n * @param options.halfDomeMode\n * @param options.crossEyeMode\n * @param options.generateMipMaps\n * @param options.mesh\n * @param scene\n * @param onError\n */\n constructor(name, textureUrlOrElement, options, scene,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onError = null) {\n super(name, scene);\n this.onError = onError;\n this._halfDome = false;\n this._crossEye = false;\n this._useDirectMapping = false;\n this._textureMode = TextureDome.MODE_MONOSCOPIC;\n /**\n * Oberserver used in Stereoscopic VR Mode.\n */\n this._onBeforeCameraRenderObserver = null;\n /**\n * Observable raised when an error occurred while loading the texture\n */\n this.onLoadErrorObservable = new Observable();\n /**\n * Observable raised when the texture finished loading\n */\n this.onLoadObservable = new Observable();\n scene = this.getScene();\n // set defaults and manage values\n name = name || \"textureDome\";\n options.resolution = Math.abs(options.resolution) | 0 || 32;\n options.clickToPlay = Boolean(options.clickToPlay);\n options.autoPlay = options.autoPlay === undefined ? true : Boolean(options.autoPlay);\n options.loop = options.loop === undefined ? true : Boolean(options.loop);\n options.size = Math.abs(options.size) || (scene.activeCamera ? scene.activeCamera.maxZ * 0.48 : 1000);\n if (options.useDirectMapping === undefined) {\n this._useDirectMapping = true;\n } else {\n this._useDirectMapping = options.useDirectMapping;\n }\n if (options.faceForward === undefined) {\n options.faceForward = true;\n }\n this._setReady(false);\n if (!options.mesh) {\n this._mesh = CreateSphere(name + \"_mesh\", {\n segments: options.resolution,\n diameter: options.size,\n updatable: false,\n sideOrientation: Mesh.BACKSIDE\n }, scene);\n } else {\n this._mesh = options.mesh;\n }\n // configure material\n const material = this._material = new BackgroundMaterial(name + \"_material\", scene);\n material.useEquirectangularFOV = true;\n material.fovMultiplier = 1.0;\n material.opacityFresnel = false;\n const texture = this._initTexture(textureUrlOrElement, scene, options);\n this.texture = texture;\n // configure mesh\n this._mesh.material = material;\n this._mesh.parent = this;\n // create a (disabled until needed) mask to cover unneeded segments of 180 texture.\n this._halfDomeMask = CreateSphere(\"\", {\n slice: 0.5,\n diameter: options.size * 0.98,\n segments: options.resolution * 2,\n sideOrientation: Mesh.BACKSIDE\n }, scene);\n this._halfDomeMask.rotate(Axis.X, -Math.PI / 2);\n // set the parent, so it will always be positioned correctly AND will be disposed when the main sphere is disposed\n this._halfDomeMask.parent = this._mesh;\n this._halfDome = !!options.halfDomeMode;\n // enable or disable according to the settings\n this._halfDomeMask.setEnabled(this._halfDome);\n this._crossEye = !!options.crossEyeMode;\n // create\n this._texture.anisotropicFilteringLevel = 1;\n this._texture.onLoadObservable.addOnce(() => {\n this._setReady(true);\n });\n // Initial rotation\n if (options.faceForward && scene.activeCamera) {\n const camera = scene.activeCamera;\n const forward = Vector3.Forward();\n const direction = Vector3.TransformNormal(forward, camera.getViewMatrix());\n direction.normalize();\n this.rotation.y = Math.acos(Vector3.Dot(forward, direction));\n }\n this._changeTextureMode(this._textureMode);\n }\n _changeTextureMode(value) {\n this._scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\n this._textureMode = value;\n // Default Setup and Reset.\n this._texture.uScale = 1;\n this._texture.vScale = 1;\n this._texture.uOffset = 0;\n this._texture.vOffset = 0;\n this._texture.vAng = 0;\n switch (value) {\n case TextureDome.MODE_MONOSCOPIC:\n if (this._halfDome) {\n this._texture.uScale = 2;\n this._texture.uOffset = -1;\n }\n break;\n case TextureDome.MODE_SIDEBYSIDE:\n {\n // in half-dome mode the uScale should be double of 360 texture\n // Use 0.99999 to boost perf by not switching program\n this._texture.uScale = this._halfDome ? 0.99999 : 0.5;\n const rightOffset = this._halfDome ? 0.0 : 0.5;\n const leftOffset = this._halfDome ? -0.5 : 0.0;\n this._onBeforeCameraRenderObserver = this._scene.onBeforeCameraRenderObservable.add(camera => {\n let isRightCamera = camera.isRightCamera;\n if (this._crossEye) {\n isRightCamera = !isRightCamera;\n }\n if (isRightCamera) {\n this._texture.uOffset = rightOffset;\n } else {\n this._texture.uOffset = leftOffset;\n }\n });\n break;\n }\n case TextureDome.MODE_TOPBOTTOM:\n // in half-dome mode the vScale should be double of 360 texture\n // Use 0.99999 to boost perf by not switching program\n this._texture.vScale = this._halfDome ? 0.99999 : 0.5;\n this._onBeforeCameraRenderObserver = this._scene.onBeforeCameraRenderObservable.add(camera => {\n let isRightCamera = camera.isRightCamera;\n // allow \"cross-eye\" if left and right were switched in this mode\n if (this._crossEye) {\n isRightCamera = !isRightCamera;\n }\n this._texture.vOffset = isRightCamera ? 0.5 : 0.0;\n });\n break;\n }\n }\n /**\n * Releases resources associated with this node.\n * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)\n * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)\n */\n dispose(doNotRecurse, disposeMaterialAndTextures = false) {\n this._texture.dispose();\n this._mesh.dispose();\n this._material.dispose();\n this._scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\n this.onLoadErrorObservable.clear();\n this.onLoadObservable.clear();\n super.dispose(doNotRecurse, disposeMaterialAndTextures);\n }\n}\n/**\n * Define the source as a Monoscopic panoramic 360/180.\n */\nTextureDome.MODE_MONOSCOPIC = 0;\n/**\n * Define the source as a Stereoscopic TopBottom/OverUnder panoramic 360/180.\n */\nTextureDome.MODE_TOPBOTTOM = 1;\n/**\n * Define the source as a Stereoscopic Side by Side panoramic 360/180.\n */\nTextureDome.MODE_SIDEBYSIDE = 2;","map":{"version":3,"names":["TransformNode","Mesh","Texture","BackgroundMaterial","CreateSphere","Observable","Vector3","Axis","TextureDome","texture","_texture","newTexture","_useDirectMapping","wrapU","CLAMP_ADDRESSMODE","wrapV","_material","diffuseTexture","coordinatesMode","FIXED_EQUIRECTANGULAR_MIRRORED_MODE","reflectionTexture","_changeTextureMode","_textureMode","mesh","_mesh","fovMultiplier","value","textureMode","halfDome","_halfDome","enabled","_halfDomeMask","setEnabled","crossEye","_crossEye","material","constructor","name","textureUrlOrElement","options","scene","onError","MODE_MONOSCOPIC","_onBeforeCameraRenderObserver","onLoadErrorObservable","onLoadObservable","getScene","resolution","Math","abs","clickToPlay","Boolean","autoPlay","undefined","loop","size","activeCamera","maxZ","useDirectMapping","faceForward","_setReady","segments","diameter","updatable","sideOrientation","BACKSIDE","useEquirectangularFOV","opacityFresnel","_initTexture","parent","slice","rotate","X","PI","halfDomeMode","crossEyeMode","anisotropicFilteringLevel","addOnce","camera","forward","Forward","direction","TransformNormal","getViewMatrix","normalize","rotation","y","acos","Dot","_scene","onBeforeCameraRenderObservable","remove","uScale","vScale","uOffset","vOffset","vAng","MODE_SIDEBYSIDE","rightOffset","leftOffset","add","isRightCamera","MODE_TOPBOTTOM","dispose","doNotRecurse","disposeMaterialAndTextures","clear"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Helpers/textureDome.js"],"sourcesContent":["import { TransformNode } from \"../Meshes/transformNode.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { Texture } from \"../Materials/Textures/texture.js\";\nimport { BackgroundMaterial } from \"../Materials/Background/backgroundMaterial.js\";\nimport { CreateSphere } from \"../Meshes/Builders/sphereBuilder.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { Axis } from \"../Maths/math.js\";\n/**\n * Display a 360/180 degree texture on an approximately spherical surface, useful for VR applications or skyboxes.\n * As a subclass of TransformNode, this allow parenting to the camera or multiple textures with different locations in the scene.\n * This class achieves its effect with a Texture and a correctly configured BackgroundMaterial on an inverted sphere.\n * Potential additions to this helper include zoom and and non-infinite distance rendering effects.\n */\nexport class TextureDome extends TransformNode {\n /**\n * Gets the texture being displayed on the sphere\n */\n get texture() {\n return this._texture;\n }\n /**\n * Sets the texture being displayed on the sphere\n */\n set texture(newTexture) {\n if (this._texture === newTexture) {\n return;\n }\n this._texture = newTexture;\n if (this._useDirectMapping) {\n this._texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._material.diffuseTexture = this._texture;\n }\n else {\n this._texture.coordinatesMode = Texture.FIXED_EQUIRECTANGULAR_MIRRORED_MODE; // matches orientation\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._material.reflectionTexture = this._texture;\n }\n this._changeTextureMode(this._textureMode);\n }\n /**\n * Gets the mesh used for the dome.\n */\n get mesh() {\n return this._mesh;\n }\n /**\n * The current fov(field of view) multiplier, 0.0 - 2.0. Defaults to 1.0. Lower values \"zoom in\" and higher values \"zoom out\".\n * Also see the options.resolution property.\n */\n get fovMultiplier() {\n return this._material.fovMultiplier;\n }\n set fovMultiplier(value) {\n this._material.fovMultiplier = value;\n }\n /**\n * Gets or set the current texture mode for the texture. It can be:\n * * TextureDome.MODE_MONOSCOPIC : Define the texture source as a Monoscopic panoramic 360.\n * * TextureDome.MODE_TOPBOTTOM : Define the texture source as a Stereoscopic TopBottom/OverUnder panoramic 360.\n * * TextureDome.MODE_SIDEBYSIDE : Define the texture source as a Stereoscopic Side by Side panoramic 360.\n */\n get textureMode() {\n return this._textureMode;\n }\n /**\n * Sets the current texture mode for the texture. It can be:\n * * TextureDome.MODE_MONOSCOPIC : Define the texture source as a Monoscopic panoramic 360.\n * * TextureDome.MODE_TOPBOTTOM : Define the texture source as a Stereoscopic TopBottom/OverUnder panoramic 360.\n * * TextureDome.MODE_SIDEBYSIDE : Define the texture source as a Stereoscopic Side by Side panoramic 360.\n */\n set textureMode(value) {\n if (this._textureMode === value) {\n return;\n }\n this._changeTextureMode(value);\n }\n /**\n * Is it a 180 degrees dome (half dome) or 360 texture (full dome)\n */\n get halfDome() {\n return this._halfDome;\n }\n /**\n * Set the halfDome mode. If set, only the front (180 degrees) will be displayed and the back will be blacked out.\n */\n set halfDome(enabled) {\n this._halfDome = enabled;\n this._halfDomeMask.setEnabled(enabled);\n this._changeTextureMode(this._textureMode);\n }\n /**\n * Set the cross-eye mode. If set, images that can be seen when crossing eyes will render correctly\n */\n set crossEye(enabled) {\n this._crossEye = enabled;\n this._changeTextureMode(this._textureMode);\n }\n /**\n * Is it a cross-eye texture?\n */\n get crossEye() {\n return this._crossEye;\n }\n /**\n * The background material of this dome.\n */\n get material() {\n return this._material;\n }\n /**\n * Create an instance of this class and pass through the parameters to the relevant classes- Texture, StandardMaterial, and Mesh.\n * @param name Element's name, child elements will append suffixes for their own names.\n * @param textureUrlOrElement defines the url(s) or the (video) HTML element to use\n * @param options An object containing optional or exposed sub element properties\n * @param options.resolution\n * @param options.clickToPlay\n * @param options.autoPlay\n * @param options.loop\n * @param options.size\n * @param options.poster\n * @param options.faceForward\n * @param options.useDirectMapping\n * @param options.halfDomeMode\n * @param options.crossEyeMode\n * @param options.generateMipMaps\n * @param options.mesh\n * @param scene\n * @param onError\n */\n constructor(name, textureUrlOrElement, options, scene, \n // eslint-disable-next-line @typescript-eslint/naming-convention\n onError = null) {\n super(name, scene);\n this.onError = onError;\n this._halfDome = false;\n this._crossEye = false;\n this._useDirectMapping = false;\n this._textureMode = TextureDome.MODE_MONOSCOPIC;\n /**\n * Oberserver used in Stereoscopic VR Mode.\n */\n this._onBeforeCameraRenderObserver = null;\n /**\n * Observable raised when an error occurred while loading the texture\n */\n this.onLoadErrorObservable = new Observable();\n /**\n * Observable raised when the texture finished loading\n */\n this.onLoadObservable = new Observable();\n scene = this.getScene();\n // set defaults and manage values\n name = name || \"textureDome\";\n options.resolution = Math.abs(options.resolution) | 0 || 32;\n options.clickToPlay = Boolean(options.clickToPlay);\n options.autoPlay = options.autoPlay === undefined ? true : Boolean(options.autoPlay);\n options.loop = options.loop === undefined ? true : Boolean(options.loop);\n options.size = Math.abs(options.size) || (scene.activeCamera ? scene.activeCamera.maxZ * 0.48 : 1000);\n if (options.useDirectMapping === undefined) {\n this._useDirectMapping = true;\n }\n else {\n this._useDirectMapping = options.useDirectMapping;\n }\n if (options.faceForward === undefined) {\n options.faceForward = true;\n }\n this._setReady(false);\n if (!options.mesh) {\n this._mesh = CreateSphere(name + \"_mesh\", { segments: options.resolution, diameter: options.size, updatable: false, sideOrientation: Mesh.BACKSIDE }, scene);\n }\n else {\n this._mesh = options.mesh;\n }\n // configure material\n const material = (this._material = new BackgroundMaterial(name + \"_material\", scene));\n material.useEquirectangularFOV = true;\n material.fovMultiplier = 1.0;\n material.opacityFresnel = false;\n const texture = this._initTexture(textureUrlOrElement, scene, options);\n this.texture = texture;\n // configure mesh\n this._mesh.material = material;\n this._mesh.parent = this;\n // create a (disabled until needed) mask to cover unneeded segments of 180 texture.\n this._halfDomeMask = CreateSphere(\"\", { slice: 0.5, diameter: options.size * 0.98, segments: options.resolution * 2, sideOrientation: Mesh.BACKSIDE }, scene);\n this._halfDomeMask.rotate(Axis.X, -Math.PI / 2);\n // set the parent, so it will always be positioned correctly AND will be disposed when the main sphere is disposed\n this._halfDomeMask.parent = this._mesh;\n this._halfDome = !!options.halfDomeMode;\n // enable or disable according to the settings\n this._halfDomeMask.setEnabled(this._halfDome);\n this._crossEye = !!options.crossEyeMode;\n // create\n this._texture.anisotropicFilteringLevel = 1;\n this._texture.onLoadObservable.addOnce(() => {\n this._setReady(true);\n });\n // Initial rotation\n if (options.faceForward && scene.activeCamera) {\n const camera = scene.activeCamera;\n const forward = Vector3.Forward();\n const direction = Vector3.TransformNormal(forward, camera.getViewMatrix());\n direction.normalize();\n this.rotation.y = Math.acos(Vector3.Dot(forward, direction));\n }\n this._changeTextureMode(this._textureMode);\n }\n _changeTextureMode(value) {\n this._scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\n this._textureMode = value;\n // Default Setup and Reset.\n this._texture.uScale = 1;\n this._texture.vScale = 1;\n this._texture.uOffset = 0;\n this._texture.vOffset = 0;\n this._texture.vAng = 0;\n switch (value) {\n case TextureDome.MODE_MONOSCOPIC:\n if (this._halfDome) {\n this._texture.uScale = 2;\n this._texture.uOffset = -1;\n }\n break;\n case TextureDome.MODE_SIDEBYSIDE: {\n // in half-dome mode the uScale should be double of 360 texture\n // Use 0.99999 to boost perf by not switching program\n this._texture.uScale = this._halfDome ? 0.99999 : 0.5;\n const rightOffset = this._halfDome ? 0.0 : 0.5;\n const leftOffset = this._halfDome ? -0.5 : 0.0;\n this._onBeforeCameraRenderObserver = this._scene.onBeforeCameraRenderObservable.add((camera) => {\n let isRightCamera = camera.isRightCamera;\n if (this._crossEye) {\n isRightCamera = !isRightCamera;\n }\n if (isRightCamera) {\n this._texture.uOffset = rightOffset;\n }\n else {\n this._texture.uOffset = leftOffset;\n }\n });\n break;\n }\n case TextureDome.MODE_TOPBOTTOM:\n // in half-dome mode the vScale should be double of 360 texture\n // Use 0.99999 to boost perf by not switching program\n this._texture.vScale = this._halfDome ? 0.99999 : 0.5;\n this._onBeforeCameraRenderObserver = this._scene.onBeforeCameraRenderObservable.add((camera) => {\n let isRightCamera = camera.isRightCamera;\n // allow \"cross-eye\" if left and right were switched in this mode\n if (this._crossEye) {\n isRightCamera = !isRightCamera;\n }\n this._texture.vOffset = isRightCamera ? 0.5 : 0.0;\n });\n break;\n }\n }\n /**\n * Releases resources associated with this node.\n * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)\n * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)\n */\n dispose(doNotRecurse, disposeMaterialAndTextures = false) {\n this._texture.dispose();\n this._mesh.dispose();\n this._material.dispose();\n this._scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\n this.onLoadErrorObservable.clear();\n this.onLoadObservable.clear();\n super.dispose(doNotRecurse, disposeMaterialAndTextures);\n }\n}\n/**\n * Define the source as a Monoscopic panoramic 360/180.\n */\nTextureDome.MODE_MONOSCOPIC = 0;\n/**\n * Define the source as a Stereoscopic TopBottom/OverUnder panoramic 360/180.\n */\nTextureDome.MODE_TOPBOTTOM = 1;\n/**\n * Define the source as a Stereoscopic Side by Side panoramic 360/180.\n */\nTextureDome.MODE_SIDEBYSIDE = 2;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|