t3d-ez.gl 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Controls/controlsLibs/FirstControls.cjs.js +1 -0
- package/dist/core/Controls/controlsLibs/FirstControls.esm.js +1 -0
- package/dist/core/Controls/index.cjs.js +1 -0
- package/dist/core/Controls/index.esm.js +1 -0
- package/dist/core/DynamicSky/index.cjs.js +1 -0
- package/dist/core/DynamicSky/index.esm.js +1 -0
- package/dist/core/Lights/Builders/DirectionalLightBuilder.cjs.js +1 -0
- package/dist/core/Lights/Builders/DirectionalLightBuilder.esm.js +1 -0
- package/dist/core/Lights/Builders/PointLightBuilder.cjs.js +1 -0
- package/dist/core/Lights/Builders/PointLightBuilder.esm.js +1 -0
- package/dist/core/Lights/index.cjs.js +1 -0
- package/dist/core/Lights/index.esm.js +1 -0
- package/dist/core/Map/extrudeMap.cjs.js +1 -0
- package/dist/core/Map/extrudeMap.esm.js +1 -0
- package/dist/core/Map/index.cjs.js +1 -0
- package/dist/core/Map/index.esm.js +1 -0
- package/dist/core/MarkerHtmlUI/index.cjs.js +1 -0
- package/dist/core/MarkerHtmlUI/index.esm.js +1 -0
- package/dist/core/Materials/FresnelMaterial.cjs.js +1 -0
- package/dist/core/Materials/FresnelMaterial.esm.js +1 -0
- package/dist/core/Materials/GradationMaterial.cjs.js +1 -0
- package/dist/core/Materials/GradationMaterial.esm.js +1 -0
- package/dist/core/Materials/index.cjs.js +1 -0
- package/dist/core/Materials/index.esm.js +1 -0
- package/dist/core/Meshes/Builders/BoxBuilder.cjs.js +1 -0
- package/dist/core/Meshes/Builders/BoxBuilder.esm.js +1 -0
- package/dist/core/Meshes/Builders/MeshBuilder.cjs.js +1 -0
- package/dist/core/Meshes/Builders/MeshBuilder.esm.js +1 -0
- package/dist/core/Meshes/Builders/PlaneBuilder.cjs.js +1 -0
- package/dist/core/Meshes/Builders/PlaneBuilder.esm.js +1 -0
- package/dist/core/Meshes/Builders/SphereBuilder.cjs.js +1 -0
- package/dist/core/Meshes/Builders/SphereBuilder.esm.js +1 -0
- package/dist/core/Meshes/index.cjs.js +1 -0
- package/dist/core/Meshes/index.esm.js +1 -0
- package/dist/core/PostProcessor/effects/OutlineEffect.cjs.js +1 -0
- package/dist/core/PostProcessor/effects/OutlineEffect.esm.js +1 -0
- package/dist/core/PostProcessor/effects/PotateEffect.cjs.js +1 -0
- package/dist/core/PostProcessor/effects/PotateEffect.esm.js +1 -0
- package/dist/core/PostProcessor/effects/SAOEffect.cjs.js +1 -0
- package/dist/core/PostProcessor/effects/SAOEffect.esm.js +1 -0
- package/dist/core/PostProcessor/effects/UnrealBloomEffect.cjs.js +1 -0
- package/dist/core/PostProcessor/effects/UnrealBloomEffect.esm.js +1 -0
- package/dist/core/PostProcessor/index.cjs.js +1 -0
- package/dist/core/PostProcessor/index.esm.js +1 -0
- package/dist/core/Resource/ResourceManager.cjs.js +1 -0
- package/dist/core/Resource/ResourceManager.esm.js +1 -0
- package/dist/core/Resource/loaders.cjs.js +1 -0
- package/dist/core/Resource/loaders.esm.js +1 -0
- package/dist/core/Resource/types.cjs.js +1 -0
- package/dist/core/Resource/types.esm.js +1 -0
- package/dist/core/WebGLEngine/index.cjs.js +1 -0
- package/dist/core/WebGLEngine/index.esm.js +1 -0
- package/dist/helpers/InfiniteGridHelper.cjs.js +1 -0
- package/dist/helpers/InfiniteGridHelper.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/fsum.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/fsum.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/merge.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/merge.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/cartesian.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/cartesian.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/circle.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/circle.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/antimeridian.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/antimeridian.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/buffer.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/buffer.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/circle.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/circle.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/index.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/index.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/line.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/line.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/rectangle.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/rectangle.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/rejoin.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/rejoin.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/compose.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/compose.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/identity.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/identity.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/math.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/math.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/noop.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/noop.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/bounds.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/bounds.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/pointEqual.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/pointEqual.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/polygonContains.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/polygonContains.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/fit.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/fit.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/index.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/index.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/mercator.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/mercator.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/resample.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/resample.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/rotation.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/rotation.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/stream.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/stream.esm.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/transform.cjs.js +1 -0
- package/dist/node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/transform.esm.js +1 -0
- package/dist/node_modules/.pnpm/gsap@3.14.2/node_modules/gsap/CSSPlugin.cjs.js +1 -0
- package/dist/node_modules/.pnpm/gsap@3.14.2/node_modules/gsap/CSSPlugin.esm.js +1 -0
- package/dist/node_modules/.pnpm/gsap@3.14.2/node_modules/gsap/gsap-core.cjs.js +1 -0
- package/dist/node_modules/.pnpm/gsap@3.14.2/node_modules/gsap/gsap-core.esm.js +1 -0
- package/dist/node_modules/.pnpm/gsap@3.14.2/node_modules/gsap/index.cjs.js +1 -0
- package/dist/node_modules/.pnpm/gsap@3.14.2/node_modules/gsap/index.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.core.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/build/three.module.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/OrbitControls.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/OrbitControls.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/PointerLockControls.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/PointerLockControls.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/TrackballControls.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/controls/TrackballControls.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/environments/RoomEnvironment.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/environments/RoomEnvironment.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/libs/stats.module.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/libs/stats.module.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/DRACOLoader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/DRACOLoader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/GLTFLoader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/GLTFLoader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/HDRLoader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/HDRLoader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/RGBELoader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/loaders/RGBELoader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/physics/AmmoPhysics.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/physics/AmmoPhysics.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/EffectComposer.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/EffectComposer.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/MaskPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/MaskPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/OutlinePass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/OutlinePass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/OutputPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/OutputPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/Pass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/Pass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/RenderPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/RenderPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/SAOPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/SAOPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/SMAAPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/SMAAPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/ShaderPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/ShaderPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/renderers/CSS3DRenderer.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/renderers/CSS3DRenderer.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/CopyShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/CopyShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/OutputShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/OutputShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/SAOShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/SAOShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/SMAAShader.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/shaders/SMAAShader.esm.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/utils/BufferGeometryUtils.cjs.js +1 -0
- package/dist/node_modules/.pnpm/three@0.182.0/node_modules/three/examples/jsm/utils/BufferGeometryUtils.esm.js +1 -0
- package/dist/package.json +36 -0
- package/dist/public/texture/yun_noise.png +0 -0
- package/dist/t3d-ez.gl.cjs.js +1 -0
- package/dist/t3d-ez.gl.esm.js +1 -0
- package/dist/types/core/Controls/controlsLibs/FirstControls.d.ts +19 -0
- package/dist/types/core/Controls/index.d.ts +36 -0
- package/dist/types/core/DynamicSky/index.d.ts +140 -0
- package/dist/types/core/Lights/Builders/DirectionalLightBuilder.d.ts +12 -0
- package/dist/types/core/Lights/Builders/PointLightBuilder.d.ts +14 -0
- package/dist/types/core/Lights/index.d.ts +7 -0
- package/dist/types/core/Map/extrudeMap.d.ts +19 -0
- package/dist/types/core/Map/index.d.ts +20 -0
- package/dist/types/core/MarkerHtmlUI/index.d.ts +21 -0
- package/dist/types/core/Materials/FresnelMaterial.d.ts +37 -0
- package/dist/types/core/Materials/GradationMaterial.d.ts +11 -0
- package/dist/types/core/Materials/index.d.ts +7 -0
- package/dist/types/core/Meshes/Builders/BoxBuilder.d.ts +20 -0
- package/dist/types/core/Meshes/Builders/MeshBuilder.d.ts +6 -0
- package/dist/types/core/Meshes/Builders/PlaneBuilder.d.ts +18 -0
- package/dist/types/core/Meshes/Builders/SphereBuilder.d.ts +21 -0
- package/dist/types/core/Meshes/Builders/index.d.ts +3 -0
- package/dist/types/core/Meshes/index.d.ts +9 -0
- package/dist/types/core/Physics/index.d.ts +1 -0
- package/dist/types/core/PostProcessor/effects/OutlineEffect.d.ts +12 -0
- package/dist/types/core/PostProcessor/effects/PotateEffect.d.ts +10 -0
- package/dist/types/core/PostProcessor/effects/SAOEffect.d.ts +14 -0
- package/dist/types/core/PostProcessor/effects/UnrealBloomEffect.d.ts +24 -0
- package/dist/types/core/PostProcessor/effects/index.d.ts +4 -0
- package/dist/types/core/PostProcessor/index.d.ts +21 -0
- package/dist/types/core/Resource/ResourceManager.d.ts +25 -0
- package/dist/types/core/Resource/index.d.ts +3 -0
- package/dist/types/core/Resource/loaders.d.ts +6 -0
- package/dist/types/core/Resource/types.d.ts +24 -0
- package/dist/types/core/WebGLEngine/index.d.ts +43 -0
- package/dist/types/core/WebGLEngine/types/index.d.ts +25 -0
- package/dist/types/core/index.d.ts +9 -0
- package/dist/types/helpers/InfiniteGridHelper.d.ts +5 -0
- package/dist/types/helpers/index.d.ts +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/types/PostProcessor/index.d.ts +5 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/utils/FpsMeter/index.d.ts +16 -0
- package/dist/types/utils/Logger.d.ts +10 -0
- package/dist/types/utils/index.d.ts +42 -0
- package/dist/utils/FpsMeter/index.cjs.js +1 -0
- package/dist/utils/FpsMeter/index.esm.js +1 -0
- package/dist/utils/Logger.cjs.js +1 -0
- package/dist/utils/Logger.esm.js +1 -0
- package/dist/utils/index.cjs.js +1 -0
- package/dist/utils/index.esm.js +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var t=require("../../../build/three.core.cjs.js");const e={type:"change"},i={type:"start"},s={type:"end"},o=new t.Ray,h=new t.Plane,n=Math.cos(70*t.MathUtils.DEG2RAD),a=new t.Vector3,r=2*Math.PI,l=-1,c=0,p=1,d=2,_=3,m=4,u=5,b=6,y=1e-6;class g extends t.Controls{constructor(e,i=null){super(e,i),this.state=l,this.target=new t.Vector3,this.cursor=new t.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:t.MOUSE.ROTATE,MIDDLE:t.MOUSE.DOLLY,RIGHT:t.MOUSE.PAN},this.touches={ONE:t.TOUCH.ROTATE,TWO:t.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new t.Vector3,this._lastQuaternion=new t.Quaternion,this._lastTargetPosition=new t.Vector3,this._quat=(new t.Quaternion).setFromUnitVectors(e.up,new t.Vector3(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new t.Spherical,this._sphericalDelta=new t.Spherical,this._scale=1,this._panOffset=new t.Vector3,this._rotateStart=new t.Vector2,this._rotateEnd=new t.Vector2,this._rotateDelta=new t.Vector2,this._panStart=new t.Vector2,this._panEnd=new t.Vector2,this._panDelta=new t.Vector2,this._dollyStart=new t.Vector2,this._dollyEnd=new t.Vector2,this._dollyDelta=new t.Vector2,this._dollyDirection=new t.Vector3,this._mouse=new t.Vector2,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=E.bind(this),this._onPointerDown=P.bind(this),this._onPointerUp=D.bind(this),this._onContextMenu=j.bind(this),this._onMouseWheel=S.bind(this),this._onKeyDown=f.bind(this),this._onTouchStart=T.bind(this),this._onTouchMove=w.bind(this),this._onMouseDown=v.bind(this),this._onMouseMove=M.bind(this),this._interceptControlDown=R.bind(this),this._interceptControlUp=k.bind(this),null!==this.domElement&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1});this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents();this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){null!==this._domElementKeyEvents&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(e),this.update(),this.state=l}update(i=null){const s=this.object.position;a.copy(s).sub(this.target),a.applyQuaternion(this._quat),this._spherical.setFromVector3(a),this.autoRotate&&this.state===l&&this._rotateLeft(this._getAutoRotationAngle(i)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let c=this.minAzimuthAngle,p=this.maxAzimuthAngle;isFinite(c)&&isFinite(p)&&(c<-Math.PI?c+=r:c>Math.PI&&(c-=r),p<-Math.PI?p+=r:p>Math.PI&&(p-=r),this._spherical.theta=c<=p?Math.max(c,Math.min(p,this._spherical.theta)):this._spherical.theta>(c+p)/2?Math.max(c,this._spherical.theta):Math.min(p,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),!0===this.enableDamping?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let d=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const t=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),d=t!=this._spherical.radius}if(a.setFromSpherical(this._spherical),a.applyQuaternion(this._quatInverse),s.copy(this.target).add(a),this.object.lookAt(this.target),!0===this.enableDamping?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){const t=a.length();e=this._clampDistance(t*this._scale);const i=t-e;this.object.position.addScaledVector(this._dollyDirection,i),this.object.updateMatrixWorld(),d=!!i}else if(this.object.isOrthographicCamera){const i=new t.Vector3(this._mouse.x,this._mouse.y,0);i.unproject(this.object);const s=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),d=s!==this.object.zoom;const o=new t.Vector3(this._mouse.x,this._mouse.y,0);o.unproject(this.object),this.object.position.sub(o).add(i),this.object.updateMatrixWorld(),e=a.length()}else this.zoomToCursor=!1;null!==e&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(o.origin.copy(this.object.position),o.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(o.direction))<n?this.object.lookAt(this.target):(h.setFromNormalAndCoplanarPoint(this.object.up,this.target),o.intersectPlane(h,this.target))))}else if(this.object.isOrthographicCamera){const t=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),t!==this.object.zoom&&(this.object.updateProjectionMatrix(),d=!0)}return this._scale=1,this._performCursorZoom=!1,!!(d||this._lastPosition.distanceToSquared(this.object.position)>y||8*(1-this._lastQuaternion.dot(this.object.quaternion))>y||this._lastTargetPosition.distanceToSquared(this.target)>y)&&(this.dispatchEvent(e),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0)}_getAutoRotationAngle(t){return null!==t?r/60*this.autoRotateSpeed*t:r/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(.01*t);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){a.setFromMatrixColumn(e,0),a.multiplyScalar(-t),this._panOffset.add(a)}_panUp(t,e){!0===this.screenSpacePanning?a.setFromMatrixColumn(e,1):(a.setFromMatrixColumn(e,0),a.crossVectors(this.object.up,a)),a.multiplyScalar(t),this._panOffset.add(a)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const s=this.object.position;a.copy(s).sub(this.target);let o=a.length();o*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*o/i.clientHeight,this.object.matrix),this._panUp(2*e*o/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):this.enablePan=!1}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:this.enableZoom=!1}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:this.enableZoom=!1}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),s=t-i.left,o=e-i.top,h=i.width,n=i.height;this._mouse.x=s/h*2-1,this._mouse.y=-o/n*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(r*this._rotateDelta.x/e.clientHeight),this._rotateUp(r*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-r*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(1===this._pointers.length)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateStart.set(i,s)}}_handleTouchStartPan(t){if(1===this._pointers.length)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panStart.set(i,s)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y,o=Math.sqrt(i*i+s*s);this._dollyStart.set(0,o)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(1==this._pointers.length)this._rotateEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateEnd.set(i,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(r*this._rotateDelta.x/e.clientHeight),this._rotateUp(r*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(1===this._pointers.length)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panEnd.set(i,s)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y,o=Math.sqrt(i*i+s*s);this._dollyEnd.set(0,o),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const h=.5*(t.pageX+e.x),n=.5*(t.pageY+e.y);this._updateZoomParameters(h,n)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return void this._pointers.splice(e,1)}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(e){let i=this._pointerPositions[e.pointerId];void 0===i&&(i=new t.Vector2,this._pointerPositions[e.pointerId]=i),i.set(e.pageX,e.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,i={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:i.deltaY*=16;break;case 2:i.deltaY*=100}return t.ctrlKey&&!this._controlActive&&(i.deltaY*=10),i}}function P(t){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(t.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),this._isTrackingPointer(t)||(this._addPointer(t),"touch"===t.pointerType?this._onTouchStart(t):this._onMouseDown(t)))}function E(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchMove(t):this._onMouseMove(t))}function D(t){switch(this._removePointer(t),this._pointers.length){case 0:this.domElement.releasePointerCapture(t.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(s),this.state=l;break;case 1:const e=this._pointers[0],i=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:i.x,pageY:i.y})}}function v(e){let s;switch(e.button){case 0:s=this.mouseButtons.LEFT;break;case 1:s=this.mouseButtons.MIDDLE;break;case 2:s=this.mouseButtons.RIGHT;break;default:s=-1}switch(s){case t.MOUSE.DOLLY:if(!1===this.enableZoom)return;this._handleMouseDownDolly(e),this.state=p;break;case t.MOUSE.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===this.enablePan)return;this._handleMouseDownPan(e),this.state=d}else{if(!1===this.enableRotate)return;this._handleMouseDownRotate(e),this.state=c}break;case t.MOUSE.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===this.enableRotate)return;this._handleMouseDownRotate(e),this.state=c}else{if(!1===this.enablePan)return;this._handleMouseDownPan(e),this.state=d}break;default:this.state=l}this.state!==l&&this.dispatchEvent(i)}function M(t){switch(this.state){case c:if(!1===this.enableRotate)return;this._handleMouseMoveRotate(t);break;case p:if(!1===this.enableZoom)return;this._handleMouseMoveDolly(t);break;case d:if(!1===this.enablePan)return;this._handleMouseMovePan(t)}}function S(t){!1!==this.enabled&&!1!==this.enableZoom&&this.state===l&&(t.preventDefault(),this.dispatchEvent(i),this._handleMouseWheel(this._customWheelEvent(t)),this.dispatchEvent(s))}function f(t){!1!==this.enabled&&this._handleKeyDown(t)}function T(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case t.TOUCH.ROTATE:if(!1===this.enableRotate)return;this._handleTouchStartRotate(e),this.state=_;break;case t.TOUCH.PAN:if(!1===this.enablePan)return;this._handleTouchStartPan(e),this.state=m;break;default:this.state=l}break;case 2:switch(this.touches.TWO){case t.TOUCH.DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchStartDollyPan(e),this.state=u;break;case t.TOUCH.DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchStartDollyRotate(e),this.state=b;break;default:this.state=l}break;default:this.state=l}this.state!==l&&this.dispatchEvent(i)}function w(t){switch(this._trackPointer(t),this.state){case _:if(!1===this.enableRotate)return;this._handleTouchMoveRotate(t),this.update();break;case m:if(!1===this.enablePan)return;this._handleTouchMovePan(t),this.update();break;case u:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchMoveDollyPan(t),this.update();break;case b:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchMoveDollyRotate(t),this.update();break;default:this.state=l}}function j(t){!1!==this.enabled&&t.preventDefault()}function R(t){if("Control"===t.key){this._controlActive=!0;this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}function k(t){if("Control"===t.key){this._controlActive=!1;this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}exports.OrbitControls=g;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{Controls as t,Vector3 as e,MOUSE as i,TOUCH as s,Quaternion as o,Spherical as h,Vector2 as n,Ray as a,Plane as r,MathUtils as l}from"../../../build/three.core.esm.js";const c={type:"change"},p={type:"start"},d={type:"end"},_=new a,m=new r,u=Math.cos(70*l.DEG2RAD),b=new e,y=2*Math.PI,g=-1,P=0,E=1,D=2,v=3,f=4,M=5,S=6,w=1e-6;class T extends t{constructor(t,a=null){super(t,a),this.state=g,this.target=new e,this.cursor=new e,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:i.ROTATE,MIDDLE:i.DOLLY,RIGHT:i.PAN},this.touches={ONE:s.ROTATE,TWO:s.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new e,this._lastQuaternion=new o,this._lastTargetPosition=new e,this._quat=(new o).setFromUnitVectors(t.up,new e(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new h,this._sphericalDelta=new h,this._scale=1,this._panOffset=new e,this._rotateStart=new n,this._rotateEnd=new n,this._rotateDelta=new n,this._panStart=new n,this._panEnd=new n,this._panDelta=new n,this._dollyStart=new n,this._dollyEnd=new n,this._dollyDelta=new n,this._dollyDirection=new e,this._mouse=new n,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=R.bind(this),this._onPointerDown=j.bind(this),this._onPointerUp=k.bind(this),this._onContextMenu=Z.bind(this),this._onMouseWheel=A.bind(this),this._onKeyDown=C.bind(this),this._onTouchStart=Y.bind(this),this._onTouchMove=O.bind(this),this._onMouseDown=x.bind(this),this._onMouseMove=L.bind(this),this._interceptControlDown=K.bind(this),this._interceptControlUp=z.bind(this),null!==this.domElement&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1});this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents();this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){null!==this._domElementKeyEvents&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(c),this.update(),this.state=g}update(t=null){const i=this.object.position;b.copy(i).sub(this.target),b.applyQuaternion(this._quat),this._spherical.setFromVector3(b),this.autoRotate&&this.state===g&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let s=this.minAzimuthAngle,o=this.maxAzimuthAngle;isFinite(s)&&isFinite(o)&&(s<-Math.PI?s+=y:s>Math.PI&&(s-=y),o<-Math.PI?o+=y:o>Math.PI&&(o-=y),this._spherical.theta=s<=o?Math.max(s,Math.min(o,this._spherical.theta)):this._spherical.theta>(s+o)/2?Math.max(s,this._spherical.theta):Math.min(o,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),!0===this.enableDamping?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let h=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const t=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),h=t!=this._spherical.radius}if(b.setFromSpherical(this._spherical),b.applyQuaternion(this._quatInverse),i.copy(this.target).add(b),this.object.lookAt(this.target),!0===this.enableDamping?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let t=null;if(this.object.isPerspectiveCamera){const e=b.length();t=this._clampDistance(e*this._scale);const i=e-t;this.object.position.addScaledVector(this._dollyDirection,i),this.object.updateMatrixWorld(),h=!!i}else if(this.object.isOrthographicCamera){const i=new e(this._mouse.x,this._mouse.y,0);i.unproject(this.object);const s=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),h=s!==this.object.zoom;const o=new e(this._mouse.x,this._mouse.y,0);o.unproject(this.object),this.object.position.sub(o).add(i),this.object.updateMatrixWorld(),t=b.length()}else this.zoomToCursor=!1;null!==t&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(_.origin.copy(this.object.position),_.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(_.direction))<u?this.object.lookAt(this.target):(m.setFromNormalAndCoplanarPoint(this.object.up,this.target),_.intersectPlane(m,this.target))))}else if(this.object.isOrthographicCamera){const t=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),t!==this.object.zoom&&(this.object.updateProjectionMatrix(),h=!0)}return this._scale=1,this._performCursorZoom=!1,!!(h||this._lastPosition.distanceToSquared(this.object.position)>w||8*(1-this._lastQuaternion.dot(this.object.quaternion))>w||this._lastTargetPosition.distanceToSquared(this.target)>w)&&(this.dispatchEvent(c),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0)}_getAutoRotationAngle(t){return null!==t?y/60*this.autoRotateSpeed*t:y/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(.01*t);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){b.setFromMatrixColumn(e,0),b.multiplyScalar(-t),this._panOffset.add(b)}_panUp(t,e){!0===this.screenSpacePanning?b.setFromMatrixColumn(e,1):(b.setFromMatrixColumn(e,0),b.crossVectors(this.object.up,b)),b.multiplyScalar(t),this._panOffset.add(b)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const s=this.object.position;b.copy(s).sub(this.target);let o=b.length();o*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*o/i.clientHeight,this.object.matrix),this._panUp(2*e*o/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):this.enablePan=!1}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:this.enableZoom=!1}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:this.enableZoom=!1}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),s=t-i.left,o=e-i.top,h=i.width,n=i.height;this._mouse.x=s/h*2-1,this._mouse.y=-o/n*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(y*this._rotateDelta.x/e.clientHeight),this._rotateUp(y*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(y*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-y*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(y*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-y*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(1===this._pointers.length)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateStart.set(i,s)}}_handleTouchStartPan(t){if(1===this._pointers.length)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panStart.set(i,s)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y,o=Math.sqrt(i*i+s*s);this._dollyStart.set(0,o)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(1==this._pointers.length)this._rotateEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._rotateEnd.set(i,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(y*this._rotateDelta.x/e.clientHeight),this._rotateUp(y*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(1===this._pointers.length)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),s=.5*(t.pageY+e.y);this._panEnd.set(i,s)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y,o=Math.sqrt(i*i+s*s);this._dollyEnd.set(0,o),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const h=.5*(t.pageX+e.x),n=.5*(t.pageY+e.y);this._updateZoomParameters(h,n)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return void this._pointers.splice(e,1)}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(t){let e=this._pointerPositions[t.pointerId];void 0===e&&(e=new n,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,i={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:i.deltaY*=16;break;case 2:i.deltaY*=100}return t.ctrlKey&&!this._controlActive&&(i.deltaY*=10),i}}function j(t){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(t.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),this._isTrackingPointer(t)||(this._addPointer(t),"touch"===t.pointerType?this._onTouchStart(t):this._onMouseDown(t)))}function R(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchMove(t):this._onMouseMove(t))}function k(t){switch(this._removePointer(t),this._pointers.length){case 0:this.domElement.releasePointerCapture(t.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(d),this.state=g;break;case 1:const e=this._pointers[0],i=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:i.x,pageY:i.y})}}function x(t){let e;switch(t.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case i.DOLLY:if(!1===this.enableZoom)return;this._handleMouseDownDolly(t),this.state=E;break;case i.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(!1===this.enablePan)return;this._handleMouseDownPan(t),this.state=D}else{if(!1===this.enableRotate)return;this._handleMouseDownRotate(t),this.state=P}break;case i.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(!1===this.enableRotate)return;this._handleMouseDownRotate(t),this.state=P}else{if(!1===this.enablePan)return;this._handleMouseDownPan(t),this.state=D}break;default:this.state=g}this.state!==g&&this.dispatchEvent(p)}function L(t){switch(this.state){case P:if(!1===this.enableRotate)return;this._handleMouseMoveRotate(t);break;case E:if(!1===this.enableZoom)return;this._handleMouseMoveDolly(t);break;case D:if(!1===this.enablePan)return;this._handleMouseMovePan(t)}}function A(t){!1!==this.enabled&&!1!==this.enableZoom&&this.state===g&&(t.preventDefault(),this.dispatchEvent(p),this._handleMouseWheel(this._customWheelEvent(t)),this.dispatchEvent(d))}function C(t){!1!==this.enabled&&this._handleKeyDown(t)}function Y(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case s.ROTATE:if(!1===this.enableRotate)return;this._handleTouchStartRotate(t),this.state=v;break;case s.PAN:if(!1===this.enablePan)return;this._handleTouchStartPan(t),this.state=f;break;default:this.state=g}break;case 2:switch(this.touches.TWO){case s.DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchStartDollyPan(t),this.state=M;break;case s.DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchStartDollyRotate(t),this.state=S;break;default:this.state=g}break;default:this.state=g}this.state!==g&&this.dispatchEvent(p)}function O(t){switch(this._trackPointer(t),this.state){case v:if(!1===this.enableRotate)return;this._handleTouchMoveRotate(t),this.update();break;case f:if(!1===this.enablePan)return;this._handleTouchMovePan(t),this.update();break;case M:if(!1===this.enableZoom&&!1===this.enablePan)return;this._handleTouchMoveDollyPan(t),this.update();break;case S:if(!1===this.enableZoom&&!1===this.enableRotate)return;this._handleTouchMoveDollyRotate(t),this.update();break;default:this.state=g}}function Z(t){!1!==this.enabled&&t.preventDefault()}function K(t){if("Control"===t.key){this._controlActive=!0;this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}function z(t){if("Control"===t.key){this._controlActive=!1;this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0})}}export{T as OrbitControls};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var e=require("../../../build/three.core.cjs.js");const t=new e.Euler(0,0,0,"YXZ"),o=new e.Vector3,n={type:"change"},i={type:"lock"},r={type:"unlock"},s=Math.PI/2;class c extends e.Controls{constructor(e,t=null){super(e,t),this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,this._onMouseMove=h.bind(this),this._onPointerlockChange=m.bind(this),this._onPointerlockError=l.bind(this),null!==this.domElement&&this.connect(this.domElement)}connect(e){super.connect(e),this.domElement.ownerDocument.addEventListener("mousemove",this._onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this._onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this._onPointerlockError)}disconnect(){this.domElement.ownerDocument.removeEventListener("mousemove",this._onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this._onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this._onPointerlockError)}dispose(){this.disconnect()}getDirection(e){return e.set(0,0,-1).applyQuaternion(this.object.quaternion)}moveForward(e){if(!1===this.enabled)return;const t=this.object;o.setFromMatrixColumn(t.matrix,0),o.crossVectors(t.up,o),t.position.addScaledVector(o,e)}moveRight(e){if(!1===this.enabled)return;const t=this.object;o.setFromMatrixColumn(t.matrix,0),t.position.addScaledVector(o,e)}lock(e=!1){this.domElement.requestPointerLock({unadjustedMovement:e})}unlock(){this.domElement.ownerDocument.exitPointerLock()}}function h(e){if(!1===this.enabled||!1===this.isLocked)return;const o=this.object;t.setFromQuaternion(o.quaternion),t.y-=.002*e.movementX*this.pointerSpeed,t.x-=.002*e.movementY*this.pointerSpeed,t.x=Math.max(s-this.maxPolarAngle,Math.min(s-this.minPolarAngle,t.x)),o.quaternion.setFromEuler(t),this.dispatchEvent(n)}function m(){this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(i),this.isLocked=!0):(this.dispatchEvent(r),this.isLocked=!1)}function l(){}exports.PointerLockControls=c;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{Controls as e,Vector3 as t,Euler as o}from"../../../build/three.core.esm.js";const n=new o(0,0,0,"YXZ"),i=new t,s={type:"change"},r={type:"lock"},c={type:"unlock"},m=Math.PI/2;class h extends e{constructor(e,t=null){super(e,t),this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,this._onMouseMove=l.bind(this),this._onPointerlockChange=d.bind(this),this._onPointerlockError=a.bind(this),null!==this.domElement&&this.connect(this.domElement)}connect(e){super.connect(e),this.domElement.ownerDocument.addEventListener("mousemove",this._onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this._onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this._onPointerlockError)}disconnect(){this.domElement.ownerDocument.removeEventListener("mousemove",this._onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this._onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this._onPointerlockError)}dispose(){this.disconnect()}getDirection(e){return e.set(0,0,-1).applyQuaternion(this.object.quaternion)}moveForward(e){if(!1===this.enabled)return;const t=this.object;i.setFromMatrixColumn(t.matrix,0),i.crossVectors(t.up,i),t.position.addScaledVector(i,e)}moveRight(e){if(!1===this.enabled)return;const t=this.object;i.setFromMatrixColumn(t.matrix,0),t.position.addScaledVector(i,e)}lock(e=!1){this.domElement.requestPointerLock({unadjustedMovement:e})}unlock(){this.domElement.ownerDocument.exitPointerLock()}}function l(e){if(!1===this.enabled||!1===this.isLocked)return;const t=this.object;n.setFromQuaternion(t.quaternion),n.y-=.002*e.movementX*this.pointerSpeed,n.x-=.002*e.movementY*this.pointerSpeed,n.x=Math.max(m-this.maxPolarAngle,Math.min(m-this.minPolarAngle,n.x)),t.quaternion.setFromEuler(n),this.dispatchEvent(s)}function d(){this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(r),this.isLocked=!0):(this.dispatchEvent(c),this.isLocked=!1)}function a(){}export{h as PointerLockControls};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var t=require("../../../build/three.core.cjs.js");const e={type:"change"},i={type:"start"},s={type:"end"},o=1e-6,n=-1,h=0,r=1,a=2,c=3,p=4,_=new t.Vector2,m=new t.Vector2,d=new t.Vector3,l=new t.Vector3,u=new t.Vector3,y=new t.Quaternion,g=new t.Vector3,v=new t.Vector3,b=new t.Vector3,E=new t.Vector3;class w extends t.Controls{constructor(e,i=null){super(e,i),this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:t.MOUSE.ROTATE,MIDDLE:t.MOUSE.DOLLY,RIGHT:t.MOUSE.PAN},this.target=new t.Vector3,this.state=n,this.keyState=n,this._lastPosition=new t.Vector3,this._lastZoom=1,this._touchZoomDistanceStart=0,this._touchZoomDistanceEnd=0,this._lastAngle=0,this._eye=new t.Vector3,this._movePrev=new t.Vector2,this._moveCurr=new t.Vector2,this._lastAxis=new t.Vector3,this._zoomStart=new t.Vector2,this._zoomEnd=new t.Vector2,this._panStart=new t.Vector2,this._panEnd=new t.Vector2,this._pointers=[],this._pointerPositions={},this._onPointerMove=P.bind(this),this._onPointerDown=S.bind(this),this._onPointerUp=j.bind(this),this._onPointerCancel=M.bind(this),this._onContextMenu=x.bind(this),this._onMouseWheel=L.bind(this),this._onKeyDown=D.bind(this),this._onKeyUp=C.bind(this),this._onTouchStart=O.bind(this),this._onTouchMove=V.bind(this),this._onTouchEnd=Z.bind(this),this._onMouseDown=z.bind(this),this._onMouseMove=k.bind(this),this._onMouseUp=f.bind(this),this._target0=this.target.clone(),this._position0=this.object.position.clone(),this._up0=this.object.up.clone(),this._zoom0=this.object.zoom,null!==i&&(this.connect(i),this.handleResize()),this.update()}connect(t){super.connect(t),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerCancel),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){window.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("keyup",this._onKeyUp),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerCancel),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}handleResize(){const t=this.domElement.getBoundingClientRect(),e=this.domElement.ownerDocument.documentElement;this.screen.left=t.left+window.pageXOffset-e.clientLeft,this.screen.top=t.top+window.pageYOffset-e.clientTop,this.screen.width=t.width,this.screen.height=t.height}update(){this._eye.subVectors(this.object.position,this.target),this.noRotate||this._rotateCamera(),this.noZoom||this._zoomCamera(),this.noPan||this._panCamera(),this.object.position.addVectors(this.target,this._eye),this.object.isPerspectiveCamera?(this._checkDistances(),this.object.lookAt(this.target),this._lastPosition.distanceToSquared(this.object.position)>o&&(this.dispatchEvent(e),this._lastPosition.copy(this.object.position))):this.object.isOrthographicCamera&&(this.object.lookAt(this.target),(this._lastPosition.distanceToSquared(this.object.position)>o||this._lastZoom!==this.object.zoom)&&(this.dispatchEvent(e),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom))}reset(){this.state=n,this.keyState=n,this.target.copy(this._target0),this.object.position.copy(this._position0),this.object.up.copy(this._up0),this.object.zoom=this._zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(e),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom}_panCamera(){if(m.copy(this._panEnd).sub(this._panStart),m.lengthSq()){if(this.object.isOrthographicCamera){const t=(this.object.right-this.object.left)/this.object.zoom/this.domElement.clientWidth,e=(this.object.top-this.object.bottom)/this.object.zoom/this.domElement.clientWidth;m.x*=t,m.y*=e}m.multiplyScalar(this._eye.length()*this.panSpeed),l.copy(this._eye).cross(this.object.up).setLength(m.x),l.add(d.copy(this.object.up).setLength(m.y)),this.object.position.add(l),this.target.add(l),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(m.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}}_rotateCamera(){E.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);let t=E.length();t?(this._eye.copy(this.object.position).sub(this.target),g.copy(this._eye).normalize(),v.copy(this.object.up).normalize(),b.crossVectors(v,g).normalize(),v.setLength(this._moveCurr.y-this._movePrev.y),b.setLength(this._moveCurr.x-this._movePrev.x),E.copy(v.add(b)),u.crossVectors(E,this._eye).normalize(),t*=this.rotateSpeed,y.setFromAxisAngle(u,t),this._eye.applyQuaternion(y),this.object.up.applyQuaternion(y),this._lastAxis.copy(u),this._lastAngle=t):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),y.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(y),this.object.up.applyQuaternion(y)),this._movePrev.copy(this._moveCurr)}_zoomCamera(){let e;this.state===p?(e=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(e):this.object.isOrthographicCamera&&(this.object.zoom=t.MathUtils.clamp(this.object.zoom/e,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix())):(e=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,1!==e&&e>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(e):this.object.isOrthographicCamera&&(this.object.zoom=t.MathUtils.clamp(this.object.zoom/e,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix())),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)}_getMouseOnScreen(t,e){return _.set((t-this.screen.left)/this.screen.width,(e-this.screen.top)/this.screen.height),_}_getMouseOnCircle(t,e){return _.set((t-.5*this.screen.width-this.screen.left)/(.5*this.screen.width),(this.screen.height+2*(this.screen.top-e))/this.screen.width),_}_addPointer(t){this._pointers.push(t)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e].pointerId==t.pointerId)return void this._pointers.splice(e,1)}_trackPointer(e){let i=this._pointerPositions[e.pointerId];void 0===i&&(i=new t.Vector2,this._pointerPositions[e.pointerId]=i),i.set(e.pageX,e.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0].pointerId?this._pointers[1]:this._pointers[0];return this._pointerPositions[e.pointerId]}_checkDistances(){this.noZoom&&this.noPan||(this._eye.lengthSq()>this.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()<this.minDistance*this.minDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.minDistance)),this._zoomStart.copy(this._zoomEnd)))}}function S(t){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(t.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),this._addPointer(t),"touch"===t.pointerType?this._onTouchStart(t):this._onMouseDown(t))}function P(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchMove(t):this._onMouseMove(t))}function j(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchEnd(t):this._onMouseUp(),this._removePointer(t),0===this._pointers.length&&(this.domElement.releasePointerCapture(t.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp)))}function M(t){this._removePointer(t)}function C(){!1!==this.enabled&&(this.keyState=n,window.addEventListener("keydown",this._onKeyDown))}function D(t){!1!==this.enabled&&(window.removeEventListener("keydown",this._onKeyDown),this.keyState===n&&(t.code!==this.keys[h]||this.noRotate?t.code!==this.keys[r]||this.noZoom?t.code!==this.keys[a]||this.noPan||(this.keyState=a):this.keyState=r:this.keyState=h))}function z(e){let s;switch(e.button){case 0:s=this.mouseButtons.LEFT;break;case 1:s=this.mouseButtons.MIDDLE;break;case 2:s=this.mouseButtons.RIGHT;break;default:s=-1}switch(s){case t.MOUSE.DOLLY:this.state=r;break;case t.MOUSE.ROTATE:this.state=h;break;case t.MOUSE.PAN:this.state=a;break;default:this.state=n}const o=this.keyState!==n?this.keyState:this.state;o!==h||this.noRotate?o!==r||this.noZoom?o!==a||this.noPan||(this._panStart.copy(this._getMouseOnScreen(e.pageX,e.pageY)),this._panEnd.copy(this._panStart)):(this._zoomStart.copy(this._getMouseOnScreen(e.pageX,e.pageY)),this._zoomEnd.copy(this._zoomStart)):(this._moveCurr.copy(this._getMouseOnCircle(e.pageX,e.pageY)),this._movePrev.copy(this._moveCurr)),this.dispatchEvent(i)}function k(t){const e=this.keyState!==n?this.keyState:this.state;e!==h||this.noRotate?e!==r||this.noZoom?e!==a||this.noPan||this._panEnd.copy(this._getMouseOnScreen(t.pageX,t.pageY)):this._zoomEnd.copy(this._getMouseOnScreen(t.pageX,t.pageY)):(this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY)))}function f(){this.state=n,this.dispatchEvent(s)}function L(t){if(!1!==this.enabled&&!0!==this.noZoom){switch(t.preventDefault(),t.deltaMode){case 2:this._zoomStart.y-=.025*t.deltaY;break;case 1:this._zoomStart.y-=.01*t.deltaY;break;default:this._zoomStart.y-=25e-5*t.deltaY}this.dispatchEvent(i),this.dispatchEvent(s)}}function x(t){!1!==this.enabled&&t.preventDefault()}function O(t){if(this._trackPointer(t),1===this._pointers.length)this.state=c,this._moveCurr.copy(this._getMouseOnCircle(this._pointers[0].pageX,this._pointers[0].pageY)),this._movePrev.copy(this._moveCurr);else{this.state=p;const t=this._pointers[0].pageX-this._pointers[1].pageX,e=this._pointers[0].pageY-this._pointers[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(t*t+e*e);const i=(this._pointers[0].pageX+this._pointers[1].pageX)/2,s=(this._pointers[0].pageY+this._pointers[1].pageY)/2;this._panStart.copy(this._getMouseOnScreen(i,s)),this._panEnd.copy(this._panStart)}this.dispatchEvent(i)}function V(t){if(this._trackPointer(t),1===this._pointers.length)this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY));else{const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y;this._touchZoomDistanceEnd=Math.sqrt(i*i+s*s);const o=(t.pageX+e.x)/2,n=(t.pageY+e.y)/2;this._panEnd.copy(this._getMouseOnScreen(o,n))}}function Z(t){switch(this._pointers.length){case 0:this.state=n;break;case 1:this.state=c,this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY)),this._movePrev.copy(this._moveCurr);break;case 2:this.state=p;for(let e=0;e<this._pointers.length;e++)if(this._pointers[e].pointerId!==t.pointerId){const t=this._pointerPositions[this._pointers[e].pointerId];this._moveCurr.copy(this._getMouseOnCircle(t.x,t.y)),this._movePrev.copy(this._moveCurr);break}}this.dispatchEvent(s)}exports.TrackballControls=w;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{Controls as t,MOUSE as e,Vector3 as i,Vector2 as s,Quaternion as o,MathUtils as n}from"../../../build/three.core.esm.js";const h={type:"change"},r={type:"start"},a={type:"end"},c=1e-6,p=-1,m=0,_=1,d=2,l=3,u=4,y=new s,g=new s,v=new i,b=new i,E=new i,w=new o,P=new i,S=new i,j=new i,D=new i;class C extends t{constructor(t,o=null){super(t,o),this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:e.ROTATE,MIDDLE:e.DOLLY,RIGHT:e.PAN},this.target=new i,this.state=p,this.keyState=p,this._lastPosition=new i,this._lastZoom=1,this._touchZoomDistanceStart=0,this._touchZoomDistanceEnd=0,this._lastAngle=0,this._eye=new i,this._movePrev=new s,this._moveCurr=new s,this._lastAxis=new i,this._zoomStart=new s,this._zoomEnd=new s,this._panStart=new s,this._panEnd=new s,this._pointers=[],this._pointerPositions={},this._onPointerMove=z.bind(this),this._onPointerDown=M.bind(this),this._onPointerUp=f.bind(this),this._onPointerCancel=k.bind(this),this._onContextMenu=T.bind(this),this._onMouseWheel=Y.bind(this),this._onKeyDown=x.bind(this),this._onKeyUp=L.bind(this),this._onTouchStart=I.bind(this),this._onTouchMove=X.bind(this),this._onTouchEnd=R.bind(this),this._onMouseDown=Z.bind(this),this._onMouseMove=O.bind(this),this._onMouseUp=A.bind(this),this._target0=this.target.clone(),this._position0=this.object.position.clone(),this._up0=this.object.up.clone(),this._zoom0=this.object.zoom,null!==o&&(this.connect(o),this.handleResize()),this.update()}connect(t){super.connect(t),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerCancel),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){window.removeEventListener("keydown",this._onKeyDown),window.removeEventListener("keyup",this._onKeyUp),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerCancel),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}handleResize(){const t=this.domElement.getBoundingClientRect(),e=this.domElement.ownerDocument.documentElement;this.screen.left=t.left+window.pageXOffset-e.clientLeft,this.screen.top=t.top+window.pageYOffset-e.clientTop,this.screen.width=t.width,this.screen.height=t.height}update(){this._eye.subVectors(this.object.position,this.target),this.noRotate||this._rotateCamera(),this.noZoom||this._zoomCamera(),this.noPan||this._panCamera(),this.object.position.addVectors(this.target,this._eye),this.object.isPerspectiveCamera?(this._checkDistances(),this.object.lookAt(this.target),this._lastPosition.distanceToSquared(this.object.position)>c&&(this.dispatchEvent(h),this._lastPosition.copy(this.object.position))):this.object.isOrthographicCamera&&(this.object.lookAt(this.target),(this._lastPosition.distanceToSquared(this.object.position)>c||this._lastZoom!==this.object.zoom)&&(this.dispatchEvent(h),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom))}reset(){this.state=p,this.keyState=p,this.target.copy(this._target0),this.object.position.copy(this._position0),this.object.up.copy(this._up0),this.object.zoom=this._zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(h),this._lastPosition.copy(this.object.position),this._lastZoom=this.object.zoom}_panCamera(){if(g.copy(this._panEnd).sub(this._panStart),g.lengthSq()){if(this.object.isOrthographicCamera){const t=(this.object.right-this.object.left)/this.object.zoom/this.domElement.clientWidth,e=(this.object.top-this.object.bottom)/this.object.zoom/this.domElement.clientWidth;g.x*=t,g.y*=e}g.multiplyScalar(this._eye.length()*this.panSpeed),b.copy(this._eye).cross(this.object.up).setLength(g.x),b.add(v.copy(this.object.up).setLength(g.y)),this.object.position.add(b),this.target.add(b),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(g.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}}_rotateCamera(){D.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0);let t=D.length();t?(this._eye.copy(this.object.position).sub(this.target),P.copy(this._eye).normalize(),S.copy(this.object.up).normalize(),j.crossVectors(S,P).normalize(),S.setLength(this._moveCurr.y-this._movePrev.y),j.setLength(this._moveCurr.x-this._movePrev.x),D.copy(S.add(j)),E.crossVectors(D,this._eye).normalize(),t*=this.rotateSpeed,w.setFromAxisAngle(E,t),this._eye.applyQuaternion(w),this.object.up.applyQuaternion(w),this._lastAxis.copy(E),this._lastAngle=t):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),w.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(w),this.object.up.applyQuaternion(w)),this._movePrev.copy(this._moveCurr)}_zoomCamera(){let t;this.state===u?(t=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera&&(this.object.zoom=n.clamp(this.object.zoom/t,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix())):(t=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,1!==t&&t>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera&&(this.object.zoom=n.clamp(this.object.zoom/t,this.minZoom,this.maxZoom),this._lastZoom!==this.object.zoom&&this.object.updateProjectionMatrix())),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)}_getMouseOnScreen(t,e){return y.set((t-this.screen.left)/this.screen.width,(e-this.screen.top)/this.screen.height),y}_getMouseOnCircle(t,e){return y.set((t-.5*this.screen.width-this.screen.left)/(.5*this.screen.width),(this.screen.height+2*(this.screen.top-e))/this.screen.width),y}_addPointer(t){this._pointers.push(t)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e].pointerId==t.pointerId)return void this._pointers.splice(e,1)}_trackPointer(t){let e=this._pointerPositions[t.pointerId];void 0===e&&(e=new s,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0].pointerId?this._pointers[1]:this._pointers[0];return this._pointerPositions[e.pointerId]}_checkDistances(){this.noZoom&&this.noPan||(this._eye.lengthSq()>this.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()<this.minDistance*this.minDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.minDistance)),this._zoomStart.copy(this._zoomEnd)))}}function M(t){!1!==this.enabled&&(0===this._pointers.length&&(this.domElement.setPointerCapture(t.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),this._addPointer(t),"touch"===t.pointerType?this._onTouchStart(t):this._onMouseDown(t))}function z(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchMove(t):this._onMouseMove(t))}function f(t){!1!==this.enabled&&("touch"===t.pointerType?this._onTouchEnd(t):this._onMouseUp(),this._removePointer(t),0===this._pointers.length&&(this.domElement.releasePointerCapture(t.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp)))}function k(t){this._removePointer(t)}function L(){!1!==this.enabled&&(this.keyState=p,window.addEventListener("keydown",this._onKeyDown))}function x(t){!1!==this.enabled&&(window.removeEventListener("keydown",this._onKeyDown),this.keyState===p&&(t.code!==this.keys[m]||this.noRotate?t.code!==this.keys[_]||this.noZoom?t.code!==this.keys[d]||this.noPan||(this.keyState=d):this.keyState=_:this.keyState=m))}function Z(t){let i;switch(t.button){case 0:i=this.mouseButtons.LEFT;break;case 1:i=this.mouseButtons.MIDDLE;break;case 2:i=this.mouseButtons.RIGHT;break;default:i=-1}switch(i){case e.DOLLY:this.state=_;break;case e.ROTATE:this.state=m;break;case e.PAN:this.state=d;break;default:this.state=p}const s=this.keyState!==p?this.keyState:this.state;s!==m||this.noRotate?s!==_||this.noZoom?s!==d||this.noPan||(this._panStart.copy(this._getMouseOnScreen(t.pageX,t.pageY)),this._panEnd.copy(this._panStart)):(this._zoomStart.copy(this._getMouseOnScreen(t.pageX,t.pageY)),this._zoomEnd.copy(this._zoomStart)):(this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY)),this._movePrev.copy(this._moveCurr)),this.dispatchEvent(r)}function O(t){const e=this.keyState!==p?this.keyState:this.state;e!==m||this.noRotate?e!==_||this.noZoom?e!==d||this.noPan||this._panEnd.copy(this._getMouseOnScreen(t.pageX,t.pageY)):this._zoomEnd.copy(this._getMouseOnScreen(t.pageX,t.pageY)):(this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY)))}function A(){this.state=p,this.dispatchEvent(a)}function Y(t){if(!1!==this.enabled&&!0!==this.noZoom){switch(t.preventDefault(),t.deltaMode){case 2:this._zoomStart.y-=.025*t.deltaY;break;case 1:this._zoomStart.y-=.01*t.deltaY;break;default:this._zoomStart.y-=25e-5*t.deltaY}this.dispatchEvent(r),this.dispatchEvent(a)}}function T(t){!1!==this.enabled&&t.preventDefault()}function I(t){if(this._trackPointer(t),1===this._pointers.length)this.state=l,this._moveCurr.copy(this._getMouseOnCircle(this._pointers[0].pageX,this._pointers[0].pageY)),this._movePrev.copy(this._moveCurr);else{this.state=u;const t=this._pointers[0].pageX-this._pointers[1].pageX,e=this._pointers[0].pageY-this._pointers[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(t*t+e*e);const i=(this._pointers[0].pageX+this._pointers[1].pageX)/2,s=(this._pointers[0].pageY+this._pointers[1].pageY)/2;this._panStart.copy(this._getMouseOnScreen(i,s)),this._panEnd.copy(this._panStart)}this.dispatchEvent(r)}function X(t){if(this._trackPointer(t),1===this._pointers.length)this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY));else{const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,s=t.pageY-e.y;this._touchZoomDistanceEnd=Math.sqrt(i*i+s*s);const o=(t.pageX+e.x)/2,n=(t.pageY+e.y)/2;this._panEnd.copy(this._getMouseOnScreen(o,n))}}function R(t){switch(this._pointers.length){case 0:this.state=p;break;case 1:this.state=l,this._moveCurr.copy(this._getMouseOnCircle(t.pageX,t.pageY)),this._movePrev.copy(this._moveCurr);break;case 2:this.state=u;for(let e=0;e<this._pointers.length;e++)if(this._pointers[e].pointerId!==t.pointerId){const t=this._pointerPositions[this._pointers[e].pointerId];this._moveCurr.copy(this._getMouseOnCircle(t.x,t.y)),this._movePrev.copy(this._moveCurr);break}}this.dispatchEvent(a)}export{C as TrackballControls};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var t=require("../../../build/three.core.cjs.js");class e extends t.Scene{constructor(){super(),this.name="RoomEnvironment";const e=new t.BoxGeometry;e.deleteAttribute("uv");const i=new t.MeshStandardMaterial({side:t.BackSide}),o=new t.MeshStandardMaterial,a=new t.PointLight(16777215,900,28,2);a.position.set(.418,16.199,.3),this.add(a);const n=new t.Mesh(e,i);n.position.set(-.757,13.219,.717),n.scale.set(31.713,28.305,28.591),this.add(n);const r=new t.InstancedMesh(e,o,6),d=new t.Object3D;d.position.set(-10.906,2.009,1.846),d.rotation.set(0,-.195,0),d.scale.set(2.328,7.905,4.651),d.updateMatrix(),r.setMatrixAt(0,d.matrix),d.position.set(-5.607,-.754,-.758),d.rotation.set(0,.994,0),d.scale.set(1.97,1.534,3.955),d.updateMatrix(),r.setMatrixAt(1,d.matrix),d.position.set(6.167,.857,7.803),d.rotation.set(0,.561,0),d.scale.set(3.927,6.285,3.687),d.updateMatrix(),r.setMatrixAt(2,d.matrix),d.position.set(-2.017,.018,6.124),d.rotation.set(0,.333,0),d.scale.set(2.002,4.566,2.064),d.updateMatrix(),r.setMatrixAt(3,d.matrix),d.position.set(2.291,-.756,-2.621),d.rotation.set(0,-.286,0),d.scale.set(1.546,1.552,1.496),d.updateMatrix(),r.setMatrixAt(4,d.matrix),d.position.set(-2.193,-.369,-5.547),d.rotation.set(0,.516,0),d.scale.set(3.875,3.487,2.986),d.updateMatrix(),r.setMatrixAt(5,d.matrix),this.add(r);const c=new t.Mesh(e,s(50));c.position.set(-16.116,14.37,8.208),c.scale.set(.1,2.428,2.739),this.add(c);const M=new t.Mesh(e,s(50));M.position.set(-16.109,18.021,-8.207),M.scale.set(.1,2.425,2.751),this.add(M);const h=new t.Mesh(e,s(17));h.position.set(14.904,12.198,-1.832),h.scale.set(.15,4.265,6.331),this.add(h);const p=new t.Mesh(e,s(43));p.position.set(-.462,8.89,14.52),p.scale.set(4.38,5.441,.088),this.add(p);const l=new t.Mesh(e,s(20));l.position.set(3.235,11.486,-12.541),l.scale.set(2.5,2,.1),this.add(l);const x=new t.Mesh(e,s(100));x.position.set(0,20,0),x.scale.set(1,.1,1),this.add(x)}dispose(){const t=new Set;this.traverse(e=>{e.isMesh&&(t.add(e.geometry),t.add(e.material))});for(const e of t)e.dispose()}}function s(e){return new t.MeshLambertMaterial({color:0,emissive:16777215,emissiveIntensity:e})}exports.RoomEnvironment=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{Scene as t,BoxGeometry as s,MeshStandardMaterial as e,BackSide as i,PointLight as o,Mesh as a,InstancedMesh as n,Object3D as r,MeshLambertMaterial as d}from"../../../build/three.core.esm.js";class c extends t{constructor(){super(),this.name="RoomEnvironment";const t=new s;t.deleteAttribute("uv");const d=new e({side:i}),c=new e,l=new o(16777215,900,28,2);l.position.set(.418,16.199,.3),this.add(l);const x=new a(t,d);x.position.set(-.757,13.219,.717),x.scale.set(31.713,28.305,28.591),this.add(x);const m=new n(t,c,6),u=new r;u.position.set(-10.906,2.009,1.846),u.rotation.set(0,-.195,0),u.scale.set(2.328,7.905,4.651),u.updateMatrix(),m.setMatrixAt(0,u.matrix),u.position.set(-5.607,-.754,-.758),u.rotation.set(0,.994,0),u.scale.set(1.97,1.534,3.955),u.updateMatrix(),m.setMatrixAt(1,u.matrix),u.position.set(6.167,.857,7.803),u.rotation.set(0,.561,0),u.scale.set(3.927,6.285,3.687),u.updateMatrix(),m.setMatrixAt(2,u.matrix),u.position.set(-2.017,.018,6.124),u.rotation.set(0,.333,0),u.scale.set(2.002,4.566,2.064),u.updateMatrix(),m.setMatrixAt(3,u.matrix),u.position.set(2.291,-.756,-2.621),u.rotation.set(0,-.286,0),u.scale.set(1.546,1.552,1.496),u.updateMatrix(),m.setMatrixAt(4,u.matrix),u.position.set(-2.193,-.369,-5.547),u.rotation.set(0,.516,0),u.scale.set(3.875,3.487,2.986),u.updateMatrix(),m.setMatrixAt(5,u.matrix),this.add(m);const w=new a(t,p(50));w.position.set(-16.116,14.37,8.208),w.scale.set(.1,2.428,2.739),this.add(w);const h=new a(t,p(50));h.position.set(-16.109,18.021,-8.207),h.scale.set(.1,2.425,2.751),this.add(h);const M=new a(t,p(17));M.position.set(14.904,12.198,-1.832),M.scale.set(.15,4.265,6.331),this.add(M);const A=new a(t,p(43));A.position.set(-.462,8.89,14.52),A.scale.set(4.38,5.441,.088),this.add(A);const v=new a(t,p(20));v.position.set(3.235,11.486,-12.541),v.scale.set(2.5,2,.1),this.add(v);const f=new a(t,p(100));f.position.set(0,20,0),f.scale.set(1,.1,1),this.add(f)}dispose(){const t=new Set;this.traverse(s=>{s.isMesh&&(t.add(s.geometry),t.add(s.material))});for(const s of t)s.dispose()}}function p(t){return new d({color:0,emissive:16777215,emissiveIntensity:t})}export{c as RoomEnvironment};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=function(){var t=0,l=document.createElement("div");function n(e){return l.appendChild(e.dom),e}function i(e){for(var n=0;n<l.children.length;n++)l.children[n].style.display=n===e?"block":"none";t=e}l.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",l.addEventListener("click",function(e){e.preventDefault(),i(++t%l.children.length)},!1);var a=(performance||Date).now(),o=a,r=0,f=n(new e.Panel("FPS","#0ff","#002")),c=n(new e.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var d=n(new e.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:l,addPanel:n,showPanel:i,begin:function(){a=(performance||Date).now()},end:function(){r++;var e=(performance||Date).now();if(c.update(e-a,200),e>=o+1e3&&(f.update(1e3*r/(e-o),100),o=e,r=0,d)){var t=performance.memory;d.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){a=this.end()},domElement:l,setMode:i}};e.Panel=function(e,t,l){var n=1/0,i=0,a=Math.round,o=a(window.devicePixelRatio||1),r=80*o,f=48*o,c=3*o,d=2*o,p=3*o,s=15*o,u=74*o,m=30*o,h=document.createElement("canvas");h.width=r,h.height=f,h.style.cssText="width:80px;height:48px";var v=h.getContext("2d");return v.font="bold "+9*o+"px Helvetica,Arial,sans-serif",v.textBaseline="top",v.fillStyle=l,v.fillRect(0,0,r,f),v.fillStyle=t,v.fillText(e,c,d),v.fillRect(p,s,u,m),v.fillStyle=l,v.globalAlpha=.9,v.fillRect(p,s,u,m),{dom:h,update:function(f,x){n=Math.min(n,f),i=Math.max(i,f),v.fillStyle=l,v.globalAlpha=1,v.fillRect(0,0,r,s),v.fillStyle=t,v.fillText(a(f)+" "+e+" ("+a(n)+"-"+a(i)+")",c,d),v.drawImage(h,p+o,s,u-o,m,p,s,u-o,m),v.fillRect(p+u-o,s,o,m),v.fillStyle=l,v.globalAlpha=.9,v.fillRect(p+u-o,s,o,a((1-f/x)*m))}}},module.exports=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=function(){var t=0,l=document.createElement("div");function n(e){return l.appendChild(e.dom),e}function a(e){for(var n=0;n<l.children.length;n++)l.children[n].style.display=n===e?"block":"none";t=e}l.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",l.addEventListener("click",function(e){e.preventDefault(),a(++t%l.children.length)},!1);var i=(performance||Date).now(),o=i,r=0,f=n(new e.Panel("FPS","#0ff","#002")),c=n(new e.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var d=n(new e.Panel("MB","#f08","#201"));return a(0),{REVISION:16,dom:l,addPanel:n,showPanel:a,begin:function(){i=(performance||Date).now()},end:function(){r++;var e=(performance||Date).now();if(c.update(e-i,200),e>=o+1e3&&(f.update(1e3*r/(e-o),100),o=e,r=0,d)){var t=performance.memory;d.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){i=this.end()},domElement:l,setMode:a}};e.Panel=function(e,t,l){var n=1/0,a=0,i=Math.round,o=i(window.devicePixelRatio||1),r=80*o,f=48*o,c=3*o,d=2*o,p=3*o,u=15*o,s=74*o,m=30*o,h=document.createElement("canvas");h.width=r,h.height=f,h.style.cssText="width:80px;height:48px";var v=h.getContext("2d");return v.font="bold "+9*o+"px Helvetica,Arial,sans-serif",v.textBaseline="top",v.fillStyle=l,v.fillRect(0,0,r,f),v.fillStyle=t,v.fillText(e,c,d),v.fillRect(p,u,s,m),v.fillStyle=l,v.globalAlpha=.9,v.fillRect(p,u,s,m),{dom:h,update:function(f,x){n=Math.min(n,f),a=Math.max(a,f),v.fillStyle=l,v.globalAlpha=1,v.fillRect(0,0,r,u),v.fillStyle=t,v.fillText(i(f)+" "+e+" ("+i(n)+"-"+i(a)+")",c,d),v.drawImage(h,p+o,u,s-o,m,p,u,s-o,m),v.fillRect(p+s-o,u,o,m),v.fillStyle=l,v.globalAlpha=.9,v.fillRect(p+s-o,u,o,i((1-f/x)*m))}}};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var e=require("../../../build/three.core.cjs.js");const t=new WeakMap;class r extends e.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(t,r,o,s){const i=new e.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(t,e=>{this.parse(e,r,s)},o,s)}parse(t,r,o=()=>{}){this.decodeDracoFile(t,r,null,null,e.SRGBColorSpace,o).catch(o)}decodeDracoFile(t,r,o,s,i=e.LinearSRGBColorSpace,n=()=>{}){const a={attributeIDs:o||this.defaultAttributeIDs,attributeTypes:s||this.defaultAttributeTypes,useUniqueIDs:!!o,vertexColorSpace:i};return this.decodeGeometry(t,a).then(r).catch(n)}decodeGeometry(e,r){const o=JSON.stringify(r);if(t.has(e)){const r=t.get(e);if(r.key===o)return r.promise;if(0===e.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let s;const i=this.workerNextTaskID++,n=e.byteLength,a=this._getWorker(i,n).then(t=>(s=t,new Promise((t,o)=>{s._callbacks[i]={resolve:t,reject:o},s.postMessage({type:"decode",id:i,taskConfig:r,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return a.catch(()=>!0).then(()=>{s&&i&&this._releaseTask(s,i)}),t.set(e,{key:o,promise:a}),a}_createGeometry(t){const r=new e.BufferGeometry;t.index&&r.setIndex(new e.BufferAttribute(t.index.array,1));for(let o=0;o<t.attributes.length;o++){const{name:s,array:i,itemSize:n,stride:a,vertexColorSpace:c}=t.attributes[o];let d;if(n===a)d=new e.BufferAttribute(i,n);else{const t=new e.InterleavedBuffer(i,a);d=new e.InterleavedBufferAttribute(t,n,0)}"color"===s&&(this._assignVertexColorSpace(d,c),d.normalized=i instanceof Float32Array==!1),r.setAttribute(s,d)}return r}_assignVertexColorSpace(t,r){if(r!==e.SRGBColorSpace)return;const o=new e.Color;for(let r=0,s=t.count;r<s;r++)o.fromBufferAttribute(t,r),e.ColorManagement.colorSpaceToWorking(o,e.SRGBColorSpace),t.setXYZ(r,o.r,o.g,o.b)}_loadLibrary(t,r){const o=new e.FileLoader(this.manager);return o.setPath(this.decoderPath),o.setResponseType(r),o.setWithCredentials(this.withCredentials),new Promise((e,r)=>{o.load(t,e,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{const r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const s=o.toString(),i=["/* draco decoder */",r,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){const r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r)}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});const r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,""!==this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),this}}function o(){let e,t;function r(e,t,r,o,s,i){const n=r.num_points(),a=i.num_components(),c=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,s),d=a*s.BYTES_PER_ELEMENT,l=4*Math.ceil(d/4),u=l/s.BYTES_PER_ELEMENT,h=n*d,f=n*l,y=e._malloc(h);t.GetAttributeDataArrayForAllPoints(r,i,c,h,y);const _=new s(e.HEAPF32.buffer,y,h/s.BYTES_PER_ELEMENT);let b;if(d===l)b=_.slice();else{b=new s(f/s.BYTES_PER_ELEMENT);let e=0;for(let t=0,r=_.length;t<r;t++){for(let r=0;r<a;r++)b[e+r]=_[t*a+r];e+=u}}return e._free(y),{name:o,count:n,itemSize:a,array:b,stride:u}}onmessage=function(o){const s=o.data;switch(s.type){case"init":e=s.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":const o=s.buffer,i=s.taskConfig;t.then(e=>{const t=e.draco,n=new t.Decoder;try{const e=function(e,t,o,s){const i=s.attributeIDs,n=s.attributeTypes;let a,c;const d=t.GetEncodedGeometryType(o);if(d===e.TRIANGULAR_MESH)a=new e.Mesh,c=t.DecodeArrayToMesh(o,o.byteLength,a);else{if(d!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");a=new e.PointCloud,c=t.DecodeArrayToPointCloud(o,o.byteLength,a)}if(!c.ok()||0===a.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+c.error_msg());const l={index:null,attributes:[]};for(const o in i){const c=self[n[o]];let d,u;if(s.useUniqueIDs)u=i[o],d=t.GetAttributeByUniqueId(a,u);else{if(u=t.GetAttributeId(a,e[i[o]]),-1===u)continue;d=t.GetAttribute(a,u)}const h=r(e,t,a,o,c,d);"color"===o&&(h.vertexColorSpace=s.vertexColorSpace),l.attributes.push(h)}d===e.TRIANGULAR_MESH&&(l.index=function(e,t,r){const o=r.num_faces(),s=3*o,i=4*s,n=e._malloc(i);t.GetTrianglesUInt32Array(r,i,n);const a=new Uint32Array(e.HEAPF32.buffer,n,s).slice();return e._free(n),{array:a,itemSize:1}}(e,t,a));return e.destroy(a),l}(t,n,new Int8Array(o),i),a=e.attributes.map(e=>e.array.buffer);e.index&&a.push(e.index.array.buffer),self.postMessage({type:"decode",id:s.id,geometry:e},a)}catch(e){self.postMessage({type:"error",id:s.id,error:e.message})}finally{t.destroy(n)}})}}}exports.DRACOLoader=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{Loader as e,FileLoader as t,SRGBColorSpace as r,LinearSRGBColorSpace as o,BufferGeometry as s,BufferAttribute as i,InterleavedBuffer as n,Color as a,ColorManagement as c,InterleavedBufferAttribute as d}from"../../../build/three.core.esm.js";const l=new WeakMap;class h extends e{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,r,o,s){const i=new t(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,r,s)},o,s)}parse(e,t,o=()=>{}){this.decodeDracoFile(e,t,null,null,r,o).catch(o)}decodeDracoFile(e,t,r,s,i=o,n=()=>{}){const a={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:s||this.defaultAttributeTypes,useUniqueIDs:!!r,vertexColorSpace:i};return this.decodeGeometry(e,a).then(t).catch(n)}decodeGeometry(e,t){const r=JSON.stringify(t);if(l.has(e)){const t=l.get(e);if(t.key===r)return t.promise;if(0===e.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let o;const s=this.workerNextTaskID++,i=e.byteLength,n=this._getWorker(s,i).then(r=>(o=r,new Promise((r,i)=>{o._callbacks[s]={resolve:r,reject:i},o.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return n.catch(()=>!0).then(()=>{o&&s&&this._releaseTask(o,s)}),l.set(e,{key:r,promise:n}),n}_createGeometry(e){const t=new s;e.index&&t.setIndex(new i(e.index.array,1));for(let r=0;r<e.attributes.length;r++){const{name:o,array:s,itemSize:a,stride:c,vertexColorSpace:l}=e.attributes[r];let h;if(a===c)h=new i(s,a);else{const e=new n(s,c);h=new d(e,a,0)}"color"===o&&(this._assignVertexColorSpace(h,l),h.normalized=s instanceof Float32Array==!1),t.setAttribute(o,h)}return t}_assignVertexColorSpace(e,t){if(t!==r)return;const o=new a;for(let t=0,s=e.count;t<s;t++)o.fromBufferAttribute(e,t),c.colorSpaceToWorking(o,r),e.setXYZ(t,o.r,o.g,o.b)}_loadLibrary(e,r){const o=new t(this.manager);return o.setPath(this.decoderPath),o.setResponseType(r),o.setWithCredentials(this.withCredentials),new Promise((t,r)=>{o.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{const r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const o=u.toString(),s=["/* draco decoder */",r,"","/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){const r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r)}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});const r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,""!==this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),this}}function u(){let e,t;function r(e,t,r,o,s,i){const n=r.num_points(),a=i.num_components(),c=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,s),d=a*s.BYTES_PER_ELEMENT,l=4*Math.ceil(d/4),h=l/s.BYTES_PER_ELEMENT,u=n*d,f=n*l,y=e._malloc(u);t.GetAttributeDataArrayForAllPoints(r,i,c,u,y);const _=new s(e.HEAPF32.buffer,y,u/s.BYTES_PER_ELEMENT);let w;if(d===l)w=_.slice();else{w=new s(f/s.BYTES_PER_ELEMENT);let e=0;for(let t=0,r=_.length;t<r;t++){for(let r=0;r<a;r++)w[e+r]=_[t*a+r];e+=h}}return e._free(y),{name:o,count:n,itemSize:a,array:w,stride:h}}onmessage=function(o){const s=o.data;switch(s.type){case"init":e=s.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":const o=s.buffer,i=s.taskConfig;t.then(e=>{const t=e.draco,n=new t.Decoder;try{const e=function(e,t,o,s){const i=s.attributeIDs,n=s.attributeTypes;let a,c;const d=t.GetEncodedGeometryType(o);if(d===e.TRIANGULAR_MESH)a=new e.Mesh,c=t.DecodeArrayToMesh(o,o.byteLength,a);else{if(d!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");a=new e.PointCloud,c=t.DecodeArrayToPointCloud(o,o.byteLength,a)}if(!c.ok()||0===a.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+c.error_msg());const l={index:null,attributes:[]};for(const o in i){const c=self[n[o]];let d,h;if(s.useUniqueIDs)h=i[o],d=t.GetAttributeByUniqueId(a,h);else{if(h=t.GetAttributeId(a,e[i[o]]),-1===h)continue;d=t.GetAttribute(a,h)}const u=r(e,t,a,o,c,d);"color"===o&&(u.vertexColorSpace=s.vertexColorSpace),l.attributes.push(u)}d===e.TRIANGULAR_MESH&&(l.index=function(e,t,r){const o=r.num_faces(),s=3*o,i=4*s,n=e._malloc(i);t.GetTrianglesUInt32Array(r,i,n);const a=new Uint32Array(e.HEAPF32.buffer,n,s).slice();return e._free(n),{array:a,itemSize:1}}(e,t,a));return e.destroy(a),l}(t,n,new Int8Array(o),i),a=e.attributes.map(e=>e.array.buffer);e.index&&a.push(e.index.array.buffer),self.postMessage({type:"decode",id:s.id,geometry:e},a)}catch(e){self.postMessage({type:"error",id:s.id,error:e.message})}finally{t.destroy(n)}})}}}export{h as DRACOLoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var e=require("../utils/BufferGeometryUtils.cjs.js"),t=require("../../../build/three.core.cjs.js");class s extends t.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new c(e)}),this.register(function(e){return new l(e)}),this.register(function(e){return new x(e)}),this.register(function(e){return new R(e)}),this.register(function(e){return new _(e)}),this.register(function(e){return new h(e)}),this.register(function(e){return new d(e)}),this.register(function(e){return new m(e)}),this.register(function(e){return new p(e)}),this.register(function(e){return new a(e)}),this.register(function(e){return new f(e)}),this.register(function(e){return new u(e)}),this.register(function(e){return new T(e)}),this.register(function(e){return new g(e)}),this.register(function(e){return new i(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new M(e)})}load(e,s,n,r){const i=this;let o;if(""!==this.resourcePath)o=this.resourcePath;else if(""!==this.path){const s=t.LoaderUtils.extractUrlBase(e);o=t.LoaderUtils.resolveURL(s,this.path)}else o=t.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const a=function(t){r&&r(t),i.manager.itemError(e),i.manager.itemEnd(e)},c=new t.FileLoader(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(t){try{i.parse(t,o,function(t){s(t),i.manager.itemEnd(e)},a)}catch(e){a(e)}},n,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,s,n){let i;const a={},c={},l=new TextDecoder;if("string"==typeof e)i=JSON.parse(e);else if(e instanceof ArrayBuffer){if(l.decode(new Uint8Array(e,0,4))===A){try{a[r.KHR_BINARY_GLTF]=new E(e)}catch(e){return void(n&&n(e))}i=JSON.parse(a[r.KHR_BINARY_GLTF].content)}else i=JSON.parse(l.decode(e))}else i=e;if(void 0===i.asset||i.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const u=new Z(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){const t=this.pluginCallbacks[e](u);t.name,c[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){const t=i.extensionsUsed[e],s=i.extensionsRequired||[];switch(t){case r.KHR_MATERIALS_UNLIT:a[t]=new o;break;case r.KHR_DRACO_MESH_COMPRESSION:a[t]=new L(i,this.dracoLoader);break;case r.KHR_TEXTURE_TRANSFORM:a[t]=new w;break;case r.KHR_MESH_QUANTIZATION:a[t]=new I;break;default:s.indexOf(t)>=0&&c[t]}}u.setExtensions(a),u.setPlugins(c),u.parse(s,n)}parseAsync(e,t){const s=this;return new Promise(function(n,r){s.parse(e,t,n,r)})}}function n(){let e={};return{get:function(t){return e[t]},add:function(t,s){e[t]=s},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const r={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class i{constructor(e){this.parser=e,this.name=r.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let s=0,n=t.length;s<n;s++){const n=t[s];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){const s=this.parser,n="light:"+e;let r=s.cache.get(n);if(r)return r;const i=s.json,o=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e];let a;const c=new t.Color(16777215);void 0!==o.color&&c.setRGB(o.color[0],o.color[1],o.color[2],t.LinearSRGBColorSpace);const l=void 0!==o.range?o.range:0;switch(o.type){case"directional":a=new t.DirectionalLight(c),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new t.PointLight(c),a.distance=l;break;case"spot":a=new t.SpotLight(c),a.distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=void 0!==o.spot.innerConeAngle?o.spot.innerConeAngle:0,o.spot.outerConeAngle=void 0!==o.spot.outerConeAngle?o.spot.outerConeAngle:Math.PI/4,a.angle=o.spot.outerConeAngle,a.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return a.position.set(0,0,0),z(a,o),void 0!==o.intensity&&(a.intensity=o.intensity),a.name=s.createUniqueName(o.name||"light_"+e),r=Promise.resolve(a),s.cache.add(n,r),r}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,s=this.parser,n=s.json.nodes[e],r=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then(function(e){return s._getNodeRef(t.cache,r,e)})}}class o{constructor(){this.name=r.KHR_MATERIALS_UNLIT}getMaterialType(){return t.MeshBasicMaterial}extendParams(e,s,n){const r=[];e.color=new t.Color(1,1,1),e.opacity=1;const i=s.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const s=i.baseColorFactor;e.color.setRGB(s[0],s[1],s[2],t.LinearSRGBColorSpace),e.opacity=s[3]}void 0!==i.baseColorTexture&&r.push(n.assignTexture(e,"map",i.baseColorTexture,t.SRGBColorSpace))}return Promise.all(r)}}class a{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const n=s.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}}class c{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,s){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const i=[],o=r.extensions[this.name];if(void 0!==o.clearcoatFactor&&(s.clearcoat=o.clearcoatFactor),void 0!==o.clearcoatTexture&&i.push(n.assignTexture(s,"clearcoatMap",o.clearcoatTexture)),void 0!==o.clearcoatRoughnessFactor&&(s.clearcoatRoughness=o.clearcoatRoughnessFactor),void 0!==o.clearcoatRoughnessTexture&&i.push(n.assignTexture(s,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),void 0!==o.clearcoatNormalTexture&&(i.push(n.assignTexture(s,"clearcoatNormalMap",o.clearcoatNormalTexture)),void 0!==o.clearcoatNormalTexture.scale)){const e=o.clearcoatNormalTexture.scale;s.clearcoatNormalScale=new t.Vector2(e,e)}return Promise.all(i)}}class l{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_DISPERSION}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const n=s.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}}class u{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return void 0!==i.iridescenceFactor&&(t.iridescence=i.iridescenceFactor),void 0!==i.iridescenceTexture&&r.push(s.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),void 0!==i.iridescenceIor&&(t.iridescenceIOR=i.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==i.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),void 0!==i.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),void 0!==i.iridescenceThicknessTexture&&r.push(s.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(r)}}class h{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_SHEEN}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,s){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const i=[];s.sheenColor=new t.Color(0,0,0),s.sheenRoughness=0,s.sheen=1;const o=r.extensions[this.name];if(void 0!==o.sheenColorFactor){const e=o.sheenColorFactor;s.sheenColor.setRGB(e[0],e[1],e[2],t.LinearSRGBColorSpace)}return void 0!==o.sheenRoughnessFactor&&(s.sheenRoughness=o.sheenRoughnessFactor),void 0!==o.sheenColorTexture&&i.push(n.assignTexture(s,"sheenColorMap",o.sheenColorTexture,t.SRGBColorSpace)),void 0!==o.sheenRoughnessTexture&&i.push(n.assignTexture(s,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(i)}}class d{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return void 0!==i.transmissionFactor&&(t.transmission=i.transmissionFactor),void 0!==i.transmissionTexture&&r.push(s.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(r)}}class m{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_VOLUME}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,s){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const i=[],o=r.extensions[this.name];s.thickness=void 0!==o.thicknessFactor?o.thicknessFactor:0,void 0!==o.thicknessTexture&&i.push(n.assignTexture(s,"thicknessMap",o.thicknessTexture)),s.attenuationDistance=o.attenuationDistance||1/0;const a=o.attenuationColor||[1,1,1];return s.attenuationColor=(new t.Color).setRGB(a[0],a[1],a[2],t.LinearSRGBColorSpace),Promise.all(i)}}class p{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_IOR}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const n=s.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}}class f{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_SPECULAR}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,s){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const i=[],o=r.extensions[this.name];s.specularIntensity=void 0!==o.specularFactor?o.specularFactor:1,void 0!==o.specularTexture&&i.push(n.assignTexture(s,"specularIntensityMap",o.specularTexture));const a=o.specularColorFactor||[1,1,1];return s.specularColor=(new t.Color).setRGB(a[0],a[1],a[2],t.LinearSRGBColorSpace),void 0!==o.specularColorTexture&&i.push(n.assignTexture(s,"specularColorMap",o.specularColorTexture,t.SRGBColorSpace)),Promise.all(i)}}class g{constructor(e){this.parser=e,this.name=r.EXT_MATERIALS_BUMP}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return t.bumpScale=void 0!==i.bumpFactor?i.bumpFactor:1,void 0!==i.bumpTexture&&r.push(s.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(r)}}class T{constructor(e){this.parser=e,this.name=r.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const s=this.parser.json.materials[e];return s.extensions&&s.extensions[this.name]?t.MeshPhysicalMaterial:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return void 0!==i.anisotropyStrength&&(t.anisotropy=i.anisotropyStrength),void 0!==i.anisotropyRotation&&(t.anisotropyRotation=i.anisotropyRotation),void 0!==i.anisotropyTexture&&r.push(s.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(r)}}class x{constructor(e){this.parser=e,this.name=r.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,s=t.json,n=s.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const r=n.extensions[this.name],i=t.options.ktx2Loader;if(!i){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,i)}}class R{constructor(e){this.parser=e,this.name=r.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,s=this.parser,n=s.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=n.images[i.source];let a=s.textureLoader;if(o.uri){const e=s.options.manager.getHandler(o.uri);null!==e&&(a=e)}return s.loadTextureImage(e,i.source,a)}}class _{constructor(e){this.parser=e,this.name=r.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,s=this.parser,n=s.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=n.images[i.source];let a=s.textureLoader;if(o.uri){const e=s.options.manager.getHandler(o.uri);null!==e&&(a=e)}return s.loadTextureImage(e,i.source,a)}}class v{constructor(e){this.name=r.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,s=t.bufferViews[e];if(s.extensions&&s.extensions[this.name]){const e=s.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then(function(t){const s=e.byteOffset||0,n=e.byteLength||0,i=e.count,o=e.byteStride,a=new Uint8Array(t,s,n);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(i,o,a,e.mode,e.filter).then(function(e){return e.buffer}):r.ready.then(function(){const t=new ArrayBuffer(i*o);return r.decodeGltfBuffer(new Uint8Array(t),i,o,a,e.mode,e.filter),t})})}return null}}class M{constructor(e){this.name=r.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const s=this.parser.json,n=s.nodes[e];if(!n.extensions||!n.extensions[this.name]||void 0===n.mesh)return null;const r=s.meshes[n.mesh];for(const e of r.primitives)if(e.mode!==P.TRIANGLES&&e.mode!==P.TRIANGLE_STRIP&&e.mode!==P.TRIANGLE_FAN&&void 0!==e.mode)return null;const i=n.extensions[this.name].attributes,o=[],a={};for(const e in i)o.push(this.parser.getDependency("accessor",i[e]).then(t=>(a[e]=t,a[e])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(e=>{const s=e.pop(),n=s.isGroup?s.children:[s],r=e[0].count,i=[];for(const e of n){const s=new t.Matrix4,n=new t.Vector3,o=new t.Quaternion,c=new t.Vector3(1,1,1),l=new t.InstancedMesh(e.geometry,e.material,r);for(let e=0;e<r;e++)a.TRANSLATION&&n.fromBufferAttribute(a.TRANSLATION,e),a.ROTATION&&o.fromBufferAttribute(a.ROTATION,e),a.SCALE&&c.fromBufferAttribute(a.SCALE,e),l.setMatrixAt(e,s.compose(n,o,c));for(const s in a)if("_COLOR_0"===s){const e=a[s];l.instanceColor=new t.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==s&&"ROTATION"!==s&&"SCALE"!==s&&e.geometry.setAttribute(s,a[s]);t.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return s.isGroup?(s.clear(),s.add(...i),s):i[0]}))}}const A="glTF",S=1313821514,y=5130562;class E{constructor(e){this.name=r.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==A)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,i=new DataView(e,12);let o=0;for(;o<n;){const t=i.getUint32(o,!0);o+=4;const n=i.getUint32(o,!0);if(o+=4,n===S){const n=new Uint8Array(e,12+o,t);this.content=s.decode(n)}else if(n===y){const s=12+o;this.body=e.slice(s,s+t)}o+=t}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class L{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=r.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,s){const n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},c={},l={};for(const e in o){const t=D[e]||e.toLowerCase();a[t]=o[e]}for(const t in e.attributes){const s=D[t]||t.toLowerCase();if(void 0!==o[t]){const r=n.accessors[e.attributes[t]],i=O[r.componentType];l[s]=i.name,c[s]=!0===r.normalized}}return s.getDependency("bufferView",i).then(function(e){return new Promise(function(s,n){r.decodeDracoFile(e,function(e){for(const t in e.attributes){const s=e.attributes[t],n=c[t];void 0!==n&&(s.normalized=n)}s(e)},a,l,t.LinearSRGBColorSpace,n)})})}}class w{constructor(){this.name=r.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return void 0!==t.texCoord&&t.texCoord!==e.channel||void 0!==t.offset||void 0!==t.rotation||void 0!==t.scale?(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e):e}}class I{constructor(){this.name=r.KHR_MESH_QUANTIZATION}}class b extends t.Interpolant{constructor(e,t,s,n){super(e,t,s,n)}copySampleValue_(e){const t=this.resultBuffer,s=this.sampleValues,n=this.valueSize,r=e*n*3+n;for(let e=0;e!==n;e++)t[e]=s[r+e];return t}interpolate_(e,t,s,n){const r=this.resultBuffer,i=this.sampleValues,o=this.valueSize,a=2*o,c=3*o,l=n-t,u=(s-t)/l,h=u*u,d=h*u,m=e*c,p=m-c,f=-2*d+3*h,g=d-h,T=1-f,x=g-h+u;for(let e=0;e!==o;e++){const t=i[p+e+o],s=i[p+e+a]*l,n=i[m+e+o],c=i[m+e]*l;r[e]=T*t+x*s+f*n+g*c}return r}}const C=new t.Quaternion;class N extends b{interpolate_(e,t,s,n){const r=super.interpolate_(e,t,s,n);return C.fromArray(r).normalize().toArray(r),r}}const P={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},O={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},H={9728:t.NearestFilter,9729:t.LinearFilter,9984:t.NearestMipmapNearestFilter,9985:t.LinearMipmapNearestFilter,9986:t.NearestMipmapLinearFilter,9987:t.LinearMipmapLinearFilter},k={33071:t.ClampToEdgeWrapping,33648:t.MirroredRepeatWrapping,10497:t.RepeatWrapping},F={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},D={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},U={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},B={CUBICSPLINE:void 0,LINEAR:t.InterpolateLinear,STEP:t.InterpolateDiscrete},j="OPAQUE",K="MASK",G="BLEND";function V(e){return void 0===e.DefaultMaterial&&(e.DefaultMaterial=new t.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:t.FrontSide})),e.DefaultMaterial}function X(e,t,s){for(const n in s.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=s.extensions[n])}function z(e,t){void 0!==t.extras&&"object"==typeof t.extras&&Object.assign(e.userData,t.extras)}function q(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let s=0,n=t.weights.length;s<n;s++)e.morphTargetInfluences[s]=t.weights[s];if(t.extras&&Array.isArray(t.extras.targetNames)){const s=t.extras.targetNames;if(e.morphTargetInfluences.length===s.length){e.morphTargetDictionary={};for(let t=0,n=s.length;t<n;t++)e.morphTargetDictionary[s[t]]=t}}}function W(e){let t;const s=e.extensions&&e.extensions[r.KHR_DRACO_MESH_COMPRESSION];if(t=s?"draco:"+s.bufferView+":"+s.indices+":"+Y(s.attributes):e.indices+":"+Y(e.attributes)+":"+e.mode,void 0!==e.targets)for(let s=0,n=e.targets.length;s<n;s++)t+=":"+Y(e.targets[s]);return t}function Y(e){let t="";const s=Object.keys(e).sort();for(let n=0,r=s.length;n<r;n++)t+=s[n]+":"+e[s[n]]+";";return t}function Q(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const J=new t.Matrix4;class Z{constructor(e={},s={}){this.json=e,this.extensions={},this.plugins={},this.options=s,this.cache=new n,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let r=!1,i=-1,o=!1,a=-1;if("undefined"!=typeof navigator){const e=navigator.userAgent;r=!0===/^((?!chrome|android).)*safari/i.test(e);const t=e.match(/Version\/(\d+)/);i=r&&t?parseInt(t[1],10):-1,o=e.indexOf("Firefox")>-1,a=o?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"==typeof createImageBitmap||r&&i<17||o&&a<98?this.textureLoader=new t.TextureLoader(this.options.manager):this.textureLoader=new t.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new t.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const s=this,n=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(t){const i={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:s,userData:{}};return X(r,i,n),z(i,n),Promise.all(s._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(const e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],s=this.json.meshes||[];for(let s=0,n=t.length;s<n;s++){const n=t[s].joints;for(let t=0,s=n.length;t<s;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(s[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,s){if(e.refs[t]<=1)return s;const n=s.clone(),r=(e,t)=>{const s=this.associations.get(e);null!=s&&this.associations.set(t,s);for(const[s,n]of e.children.entries())r(n,t.children[s])};return r(s,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let s=0;s<t.length;s++){const n=e(t[s]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const s=[];for(let n=0;n<t.length;n++){const r=e(t[n]);r&&s.push(r)}return s}getDependency(e,t){const s=e+":"+t;let n=this.cache.get(s);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!n)throw new Error("Unknown type: "+e)}this.cache.add(s,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const s=this,n=this.json[e+("mesh"===e?"es":"s")]||[];t=Promise.all(n.map(function(t,n){return s.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){const s=this.json.buffers[e],n=this.fileLoader;if(s.type&&"arraybuffer"!==s.type)throw new Error("THREE.GLTFLoader: "+s.type+" buffer type is not supported.");if(void 0===s.uri&&0===e)return Promise.resolve(this.extensions[r.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(e,r){n.load(t.LoaderUtils.resolveURL(s.uri,i.path),e,void 0,function(){r(new Error('THREE.GLTFLoader: Failed to load buffer "'+s.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){const s=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+s)})}loadAccessor(e){const s=this,n=this.json,r=this.json.accessors[e];if(void 0===r.bufferView&&void 0===r.sparse){const e=F[r.type],s=O[r.componentType],n=!0===r.normalized,i=new s(r.count*e);return Promise.resolve(new t.BufferAttribute(i,e,n))}const i=[];return void 0!==r.bufferView?i.push(this.getDependency("bufferView",r.bufferView)):i.push(null),void 0!==r.sparse&&(i.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(i).then(function(e){const i=e[0],o=F[r.type],a=O[r.componentType],c=a.BYTES_PER_ELEMENT,l=c*o,u=r.byteOffset||0,h=void 0!==r.bufferView?n.bufferViews[r.bufferView].byteStride:void 0,d=!0===r.normalized;let m,p;if(h&&h!==l){const e=Math.floor(u/h),n="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+e+":"+r.count;let l=s.cache.get(n);l||(m=new a(i,e*h,r.count*h/c),l=new t.InterleavedBuffer(m,h/c),s.cache.add(n,l)),p=new t.InterleavedBufferAttribute(l,o,u%h/c,d)}else m=null===i?new a(r.count*o):new a(i,u,r.count*o),p=new t.BufferAttribute(m,o,d);if(void 0!==r.sparse){const s=F.SCALAR,n=O[r.sparse.indices.componentType],c=r.sparse.indices.byteOffset||0,l=r.sparse.values.byteOffset||0,u=new n(e[1],c,r.sparse.count*s),h=new a(e[2],l,r.sparse.count*o);null!==i&&(p=new t.BufferAttribute(p.array.slice(),p.itemSize,p.normalized)),p.normalized=!1;for(let e=0,t=u.length;e<t;e++){const t=u[e];if(p.setX(t,h[e*o]),o>=2&&p.setY(t,h[e*o+1]),o>=3&&p.setZ(t,h[e*o+2]),o>=4&&p.setW(t,h[e*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}p.normalized=d}return p})}loadTexture(e){const t=this.json,s=this.options,n=t.textures[e].source,r=t.images[n];let i=this.textureLoader;if(r.uri){const e=s.manager.getHandler(r.uri);null!==e&&(i=e)}return this.loadTextureImage(e,n,i)}loadTextureImage(e,s,n){const r=this,i=this.json,o=i.textures[e],a=i.images[s],c=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[c])return this.textureCache[c];const l=this.loadImageSource(s,n).then(function(s){s.flipY=!1,s.name=o.name||a.name||"",""===s.name&&"string"==typeof a.uri&&!1===a.uri.startsWith("data:image/")&&(s.name=a.uri);const n=(i.samplers||{})[o.sampler]||{};return s.magFilter=H[n.magFilter]||t.LinearFilter,s.minFilter=H[n.minFilter]||t.LinearMipmapLinearFilter,s.wrapS=k[n.wrapS]||t.RepeatWrapping,s.wrapT=k[n.wrapT]||t.RepeatWrapping,s.generateMipmaps=!s.isCompressedTexture&&s.minFilter!==t.NearestFilter&&s.minFilter!==t.LinearFilter,r.associations.set(s,{textures:e}),s}).catch(function(){return null});return this.textureCache[c]=l,l}loadImageSource(e,s){const n=this,r=this.json,i=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());const o=r.images[e],a=self.URL||self.webkitURL;let c=o.uri||"",l=!1;if(void 0!==o.bufferView)c=n.getDependency("bufferView",o.bufferView).then(function(e){l=!0;const t=new Blob([e],{type:o.mimeType});return c=a.createObjectURL(t),c});else if(void 0===o.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const u=Promise.resolve(c).then(function(e){return new Promise(function(n,r){let o=n;!0===s.isImageBitmapLoader&&(o=function(e){const s=new t.Texture(e);s.needsUpdate=!0,n(s)}),s.load(t.LoaderUtils.resolveURL(e,i.path),o,void 0,r)})}).then(function(e){var t;return!0===l&&a.revokeObjectURL(c),z(e,o),e.userData.mimeType=o.mimeType||((t=o.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw e});return this.sourceCache[e]=u,u}assignTexture(e,t,s,n){const i=this;return this.getDependency("texture",s.index).then(function(o){if(!o)return null;if(void 0!==s.texCoord&&s.texCoord>0&&((o=o.clone()).channel=s.texCoord),i.extensions[r.KHR_TEXTURE_TRANSFORM]){const e=void 0!==s.extensions?s.extensions[r.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=i.associations.get(o);o=i.extensions[r.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),i.associations.set(o,t)}}return void 0!==n&&(o.colorSpace=n),e[t]=o,o})}assignFinalMaterial(e){const s=e.geometry;let n=e.material;const r=void 0===s.attributes.tangent,i=void 0!==s.attributes.color,o=void 0===s.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+n.uuid;let s=this.cache.get(e);s||(s=new t.PointsMaterial,t.Material.prototype.copy.call(s,n),s.color.copy(n.color),s.map=n.map,s.sizeAttenuation=!1,this.cache.add(e,s)),n=s}else if(e.isLine){const e="LineBasicMaterial:"+n.uuid;let s=this.cache.get(e);s||(s=new t.LineBasicMaterial,t.Material.prototype.copy.call(s,n),s.color.copy(n.color),s.map=n.map,this.cache.add(e,s)),n=s}if(r||i||o){let e="ClonedMaterial:"+n.uuid+":";r&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return t.MeshStandardMaterial}loadMaterial(e){const s=this,n=this.json,i=this.extensions,o=n.materials[e];let a;const c={},l=[];if((o.extensions||{})[r.KHR_MATERIALS_UNLIT]){const e=i[r.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),l.push(e.extendParams(c,o,s))}else{const n=o.pbrMetallicRoughness||{};if(c.color=new t.Color(1,1,1),c.opacity=1,Array.isArray(n.baseColorFactor)){const e=n.baseColorFactor;c.color.setRGB(e[0],e[1],e[2],t.LinearSRGBColorSpace),c.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(s.assignTexture(c,"map",n.baseColorTexture,t.SRGBColorSpace)),c.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,c.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(s.assignTexture(c,"metalnessMap",n.metallicRoughnessTexture)),l.push(s.assignTexture(c,"roughnessMap",n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,c)})))}!0===o.doubleSided&&(c.side=t.DoubleSide);const u=o.alphaMode||j;if(u===G?(c.transparent=!0,c.depthWrite=!1):(c.transparent=!1,u===K&&(c.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&a!==t.MeshBasicMaterial&&(l.push(s.assignTexture(c,"normalMap",o.normalTexture)),c.normalScale=new t.Vector2(1,1),void 0!==o.normalTexture.scale)){const e=o.normalTexture.scale;c.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&a!==t.MeshBasicMaterial&&(l.push(s.assignTexture(c,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(c.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&a!==t.MeshBasicMaterial){const e=o.emissiveFactor;c.emissive=(new t.Color).setRGB(e[0],e[1],e[2],t.LinearSRGBColorSpace)}return void 0!==o.emissiveTexture&&a!==t.MeshBasicMaterial&&l.push(s.assignTexture(c,"emissiveMap",o.emissiveTexture,t.SRGBColorSpace)),Promise.all(l).then(function(){const t=new a(c);return o.name&&(t.name=o.name),z(t,o),s.associations.set(t,{materials:e}),o.extensions&&X(i,t,o),t})}createUniqueName(e){const s=t.PropertyBinding.sanitizeNodeName(e||"");return s in this.nodeNamesUsed?s+"_"+ ++this.nodeNamesUsed[s]:(this.nodeNamesUsed[s]=0,s)}loadGeometries(e){const s=this,n=this.extensions,i=this.primitiveCache;function o(e){return n[r.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,s).then(function(t){return $(t,e,s)})}const a=[];for(let n=0,c=e.length;n<c;n++){const c=e[n],l=W(c),u=i[l];if(u)a.push(u.promise);else{let e;e=c.extensions&&c.extensions[r.KHR_DRACO_MESH_COMPRESSION]?o(c):$(new t.BufferGeometry,c,s),i[l]={primitive:c,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(s){const n=this,r=this.json,i=this.extensions,o=r.meshes[s],a=o.primitives,c=[];for(let e=0,t=a.length;e<t;e++){const t=void 0===a[e].material?V(this.cache):this.getDependency("material",a[e].material);c.push(t)}return c.push(n.loadGeometries(a)),Promise.all(c).then(function(r){const c=r.slice(0,r.length-1),l=r[r.length-1],u=[];for(let r=0,h=l.length;r<h;r++){const h=l[r],d=a[r];let m;const p=c[r];if(d.mode===P.TRIANGLES||d.mode===P.TRIANGLE_STRIP||d.mode===P.TRIANGLE_FAN||void 0===d.mode)m=!0===o.isSkinnedMesh?new t.SkinnedMesh(h,p):new t.Mesh(h,p),!0===m.isSkinnedMesh&&m.normalizeSkinWeights(),d.mode===P.TRIANGLE_STRIP?m.geometry=e.toTrianglesDrawMode(m.geometry,t.TriangleStripDrawMode):d.mode===P.TRIANGLE_FAN&&(m.geometry=e.toTrianglesDrawMode(m.geometry,t.TriangleFanDrawMode));else if(d.mode===P.LINES)m=new t.LineSegments(h,p);else if(d.mode===P.LINE_STRIP)m=new t.Line(h,p);else if(d.mode===P.LINE_LOOP)m=new t.LineLoop(h,p);else{if(d.mode!==P.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);m=new t.Points(h,p)}Object.keys(m.geometry.morphAttributes).length>0&&q(m,o),m.name=n.createUniqueName(o.name||"mesh_"+s),z(m,o),d.extensions&&X(i,m,d),n.assignFinalMaterial(m),u.push(m)}for(let e=0,t=u.length;e<t;e++)n.associations.set(u[e],{meshes:s,primitives:e});if(1===u.length)return o.extensions&&X(i,u[0],o),u[0];const h=new t.Group;o.extensions&&X(i,h,o),n.associations.set(h,{meshes:s});for(let e=0,t=u.length;e<t;e++)h.add(u[e]);return h})}loadCamera(e){let s;const n=this.json.cameras[e],r=n[n.type];if(r)return"perspective"===n.type?s=new t.PerspectiveCamera(t.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):"orthographic"===n.type&&(s=new t.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(s.name=this.createUniqueName(n.name)),z(s,n),Promise.resolve(s)}loadSkin(e){const s=this.json.skins[e],n=[];for(let e=0,t=s.joints.length;e<t;e++)n.push(this._loadNodeShallow(s.joints[e]));return void 0!==s.inverseBindMatrices?n.push(this.getDependency("accessor",s.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(e){const s=e.pop(),n=e,r=[],i=[];for(let e=0,o=n.length;e<o;e++){const o=n[e];if(o){r.push(o);const n=new t.Matrix4;null!==s&&n.fromArray(s.array,16*e),i.push(n)}}return new t.Skeleton(r,i)})}loadAnimation(e){const s=this.json,n=this,r=s.animations[e],i=r.name?r.name:"animation_"+e,o=[],a=[],c=[],l=[],u=[];for(let e=0,t=r.channels.length;e<t;e++){const t=r.channels[e],s=r.samplers[t.sampler],n=t.target,i=n.node,h=void 0!==r.parameters?r.parameters[s.input]:s.input,d=void 0!==r.parameters?r.parameters[s.output]:s.output;void 0!==n.node&&(o.push(this.getDependency("node",i)),a.push(this.getDependency("accessor",h)),c.push(this.getDependency("accessor",d)),l.push(s),u.push(n))}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(c),Promise.all(l),Promise.all(u)]).then(function(e){const s=e[0],o=e[1],a=e[2],c=e[3],l=e[4],u=[];for(let e=0,t=s.length;e<t;e++){const t=s[e],r=o[e],i=a[e],h=c[e],d=l[e];if(void 0===t)continue;t.updateMatrix&&t.updateMatrix();const m=n._createAnimationTracks(t,r,i,h,d);if(m)for(let e=0;e<m.length;e++)u.push(m[e])}const h=new t.AnimationClip(i,void 0,u);return z(h,r),h})}createNodeMesh(e){const t=this.json,s=this,n=t.nodes[e];return void 0===n.mesh?null:s.getDependency("mesh",n.mesh).then(function(e){const t=s._getNodeRef(s.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,s=n.weights.length;t<s;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){const t=this,s=this.json.nodes[e],n=t._loadNodeShallow(e),r=[],i=s.children||[];for(let e=0,s=i.length;e<s;e++)r.push(t.getDependency("node",i[e]));const o=void 0===s.skin?Promise.resolve(null):t.getDependency("skin",s.skin);return Promise.all([n,Promise.all(r),o]).then(function(e){const t=e[0],s=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,J)});for(let e=0,n=s.length;e<n;e++)t.add(s[e]);return t})}_loadNodeShallow(e){const s=this.json,n=this.extensions,r=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];const i=s.nodes[e],o=i.name?r.createUniqueName(i.name):"",a=[],c=r._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return c&&a.push(c),void 0!==i.camera&&a.push(r.getDependency("camera",i.camera).then(function(e){return r._getNodeRef(r.cameraCache,i.camera,e)})),r._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){a.push(e)}),this.nodeCache[e]=Promise.all(a).then(function(s){let a;if(a=!0===i.isBone?new t.Bone:s.length>1?new t.Group:1===s.length?s[0]:new t.Object3D,a!==s[0])for(let e=0,t=s.length;e<t;e++)a.add(s[e]);if(i.name&&(a.userData.name=i.name,a.name=o),z(a,i),i.extensions&&X(n,a,i),void 0!==i.matrix){const e=new t.Matrix4;e.fromArray(i.matrix),a.applyMatrix4(e)}else void 0!==i.translation&&a.position.fromArray(i.translation),void 0!==i.rotation&&a.quaternion.fromArray(i.rotation),void 0!==i.scale&&a.scale.fromArray(i.scale);if(r.associations.has(a)){if(void 0!==i.mesh&&r.meshCache.refs[i.mesh]>1){const e=r.associations.get(a);r.associations.set(a,{...e})}}else r.associations.set(a,{});return r.associations.get(a).nodes=e,a}),this.nodeCache[e]}loadScene(e){const s=this.extensions,n=this.json.scenes[e],r=this,i=new t.Group;n.name&&(i.name=r.createUniqueName(n.name)),z(i,n),n.extensions&&X(s,i,n);const o=n.nodes||[],a=[];for(let e=0,t=o.length;e<t;e++)a.push(r.getDependency("node",o[e]));return Promise.all(a).then(function(e){for(let t=0,s=e.length;t<s;t++)i.add(e[t]);return r.associations=(e=>{const s=new Map;for(const[e,n]of r.associations)(e instanceof t.Material||e instanceof t.Texture)&&s.set(e,n);return e.traverse(e=>{const t=r.associations.get(e);null!=t&&s.set(e,t)}),s})(i),i})}_createAnimationTracks(e,s,n,r,i){const o=[],a=e.name?e.name:e.uuid,c=[];let l;switch(U[i.path]===U.weights?e.traverse(function(e){e.morphTargetInfluences&&c.push(e.name?e.name:e.uuid)}):c.push(a),U[i.path]){case U.weights:l=t.NumberKeyframeTrack;break;case U.rotation:l=t.QuaternionKeyframeTrack;break;case U.translation:case U.scale:l=t.VectorKeyframeTrack;break;default:if(1===n.itemSize)l=t.NumberKeyframeTrack;else l=t.VectorKeyframeTrack}const u=void 0!==r.interpolation?B[r.interpolation]:t.InterpolateLinear,h=this._getArrayFromAccessor(n);for(let e=0,t=c.length;e<t;e++){const t=new l(c[e]+"."+U[i.path],s.array,h,u);"CUBICSPLINE"===r.interpolation&&this._createCubicSplineTrackInterpolant(t),o.push(t)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const e=Q(t.constructor),s=new Float32Array(t.length);for(let n=0,r=t.length;n<r;n++)s[n]=t[n]*e;t=s}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof t.QuaternionKeyframeTrack?N:b)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function $(e,s,n){const r=s.attributes,i=[];function o(t,s){return n.getDependency("accessor",t).then(function(t){e.setAttribute(s,t)})}for(const t in r){const s=D[t]||t.toLowerCase();s in e.attributes||i.push(o(r[t],s))}if(void 0!==s.indices&&!e.index){const t=n.getDependency("accessor",s.indices).then(function(t){e.setIndex(t)});i.push(t)}return t.ColorManagement.workingColorSpace,t.LinearSRGBColorSpace,z(e,s),function(e,s,n){const r=s.attributes,i=new t.Box3;if(void 0===r.POSITION)return;{const e=n.json.accessors[r.POSITION],s=e.min,o=e.max;if(void 0===s||void 0===o)return;if(i.set(new t.Vector3(s[0],s[1],s[2]),new t.Vector3(o[0],o[1],o[2])),e.normalized){const t=Q(O[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}const o=s.targets;if(void 0!==o){const e=new t.Vector3,s=new t.Vector3;for(let t=0,r=o.length;t<r;t++){const r=o[t];if(void 0!==r.POSITION){const t=n.json.accessors[r.POSITION],i=t.min,o=t.max;if(void 0!==i&&void 0!==o){if(s.setX(Math.max(Math.abs(i[0]),Math.abs(o[0]))),s.setY(Math.max(Math.abs(i[1]),Math.abs(o[1]))),s.setZ(Math.max(Math.abs(i[2]),Math.abs(o[2]))),t.normalized){const e=Q(O[t.componentType]);s.multiplyScalar(e)}e.max(s)}}}i.expandByVector(e)}e.boundingBox=i;const a=new t.Sphere;i.getCenter(a.center),a.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=a}(e,s,n),Promise.all(i).then(function(){return void 0!==s.targets?function(e,t,s){let n=!1,r=!1,i=!1;for(let e=0,s=t.length;e<s;e++){const s=t[e];if(void 0!==s.POSITION&&(n=!0),void 0!==s.NORMAL&&(r=!0),void 0!==s.COLOR_0&&(i=!0),n&&r&&i)break}if(!n&&!r&&!i)return Promise.resolve(e);const o=[],a=[],c=[];for(let l=0,u=t.length;l<u;l++){const u=t[l];if(n){const t=void 0!==u.POSITION?s.getDependency("accessor",u.POSITION):e.attributes.position;o.push(t)}if(r){const t=void 0!==u.NORMAL?s.getDependency("accessor",u.NORMAL):e.attributes.normal;a.push(t)}if(i){const t=void 0!==u.COLOR_0?s.getDependency("accessor",u.COLOR_0):e.attributes.color;c.push(t)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(c)]).then(function(t){const s=t[0],o=t[1],a=t[2];return n&&(e.morphAttributes.position=s),r&&(e.morphAttributes.normal=o),i&&(e.morphAttributes.color=a),e.morphTargetsRelative=!0,e})}(e,s.targets,n):e})}exports.GLTFLoader=s;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{toTrianglesDrawMode as e}from"../utils/BufferGeometryUtils.esm.js";import{Loader as t,LoaderUtils as s,FileLoader as n,MeshPhysicalMaterial as r,Vector2 as i,Color as o,LinearSRGBColorSpace as a,SRGBColorSpace as c,SpotLight as l,PointLight as u,DirectionalLight as h,Matrix4 as d,Vector3 as m,InstancedMesh as p,Quaternion as f,InstancedBufferAttribute as g,Object3D as T,TextureLoader as x,ImageBitmapLoader as R,BufferAttribute as _,InterleavedBuffer as v,LinearMipmapLinearFilter as A,NearestMipmapLinearFilter as E,LinearMipmapNearestFilter as w,NearestMipmapNearestFilter as y,LinearFilter as S,NearestFilter as M,RepeatWrapping as I,MirroredRepeatWrapping as L,ClampToEdgeWrapping as b,PointsMaterial as N,Material as O,LineBasicMaterial as C,MeshStandardMaterial as P,DoubleSide as H,MeshBasicMaterial as k,PropertyBinding as F,BufferGeometry as U,SkinnedMesh as D,Mesh as j,LineSegments as K,Line as G,LineLoop as B,Points as V,Group as X,PerspectiveCamera as z,MathUtils as q,OrthographicCamera as W,Skeleton as Y,AnimationClip as J,Bone as Z,InterpolateDiscrete as Q,InterpolateLinear as $,InterleavedBufferAttribute as ee,Texture as te,VectorKeyframeTrack as se,NumberKeyframeTrack as ne,QuaternionKeyframeTrack as re,ColorManagement as ie,FrontSide as oe,Interpolant as ae,Box3 as ce,Sphere as le,TriangleStripDrawMode as ue,TriangleFanDrawMode as he}from"../../../build/three.core.esm.js";class de extends t{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new xe(e)}),this.register(function(e){return new Re(e)}),this.register(function(e){return new Ie(e)}),this.register(function(e){return new Le(e)}),this.register(function(e){return new be(e)}),this.register(function(e){return new ve(e)}),this.register(function(e){return new Ae(e)}),this.register(function(e){return new Ee(e)}),this.register(function(e){return new we(e)}),this.register(function(e){return new Te(e)}),this.register(function(e){return new ye(e)}),this.register(function(e){return new _e(e)}),this.register(function(e){return new Me(e)}),this.register(function(e){return new Se(e)}),this.register(function(e){return new fe(e)}),this.register(function(e){return new Ne(e)}),this.register(function(e){return new Oe(e)})}load(e,t,r,i){const o=this;let a;if(""!==this.resourcePath)a=this.resourcePath;else if(""!==this.path){const t=s.extractUrlBase(e);a=s.resolveURL(t,this.path)}else a=s.extractUrlBase(e);this.manager.itemStart(e);const c=function(t){i&&i(t),o.manager.itemError(e),o.manager.itemEnd(e)},l=new n(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(s){try{o.parse(s,a,function(s){t(s),o.manager.itemEnd(e)},c)}catch(e){c(e)}},r,c)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,s,n){let r;const i={},o={},a=new TextDecoder;if("string"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer){if(a.decode(new Uint8Array(e,0,4))===Ce){try{i[pe.KHR_BINARY_GLTF]=new ke(e)}catch(e){return void(n&&n(e))}r=JSON.parse(i[pe.KHR_BINARY_GLTF].content)}else r=JSON.parse(a.decode(e))}else r=e;if(void 0===r.asset||r.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const c=new ct(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){const t=this.pluginCallbacks[e](c);t.name,o[t.name]=t,i[t.name]=!0}if(r.extensionsUsed)for(let e=0;e<r.extensionsUsed.length;++e){const t=r.extensionsUsed[e],s=r.extensionsRequired||[];switch(t){case pe.KHR_MATERIALS_UNLIT:i[t]=new ge;break;case pe.KHR_DRACO_MESH_COMPRESSION:i[t]=new Fe(r,this.dracoLoader);break;case pe.KHR_TEXTURE_TRANSFORM:i[t]=new Ue;break;case pe.KHR_MESH_QUANTIZATION:i[t]=new De;break;default:s.indexOf(t)>=0&&o[t]}}c.setExtensions(i),c.setPlugins(o),c.parse(s,n)}parseAsync(e,t){const s=this;return new Promise(function(n,r){s.parse(e,t,n,r)})}}function me(){let e={};return{get:function(t){return e[t]},add:function(t,s){e[t]=s},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const pe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class fe{constructor(e){this.parser=e,this.name=pe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let s=0,n=t.length;s<n;s++){const n=t[s];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){const t=this.parser,s="light:"+e;let n=t.cache.get(s);if(n)return n;const r=t.json,i=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let c;const d=new o(16777215);void 0!==i.color&&d.setRGB(i.color[0],i.color[1],i.color[2],a);const m=void 0!==i.range?i.range:0;switch(i.type){case"directional":c=new h(d),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new u(d),c.distance=m;break;case"spot":c=new l(d),c.distance=m,i.spot=i.spot||{},i.spot.innerConeAngle=void 0!==i.spot.innerConeAngle?i.spot.innerConeAngle:0,i.spot.outerConeAngle=void 0!==i.spot.outerConeAngle?i.spot.outerConeAngle:Math.PI/4,c.angle=i.spot.outerConeAngle,c.penumbra=1-i.spot.innerConeAngle/i.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+i.type)}return c.position.set(0,0,0),st(c,i),void 0!==i.intensity&&(c.intensity=i.intensity),c.name=t.createUniqueName(i.name||"light_"+e),n=Promise.resolve(c),t.cache.add(s,n),n}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,s=this.parser,n=s.json.nodes[e],r=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then(function(e){return s._getNodeRef(t.cache,r,e)})}}class ge{constructor(){this.name=pe.KHR_MATERIALS_UNLIT}getMaterialType(){return k}extendParams(e,t,s){const n=[];e.color=new o(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const t=r.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],a),e.opacity=t[3]}void 0!==r.baseColorTexture&&n.push(s.assignTexture(e,"map",r.baseColorTexture,c))}return Promise.all(n)}}class Te{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const n=s.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}}class xe{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],o=n.extensions[this.name];if(void 0!==o.clearcoatFactor&&(t.clearcoat=o.clearcoatFactor),void 0!==o.clearcoatTexture&&r.push(s.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),void 0!==o.clearcoatRoughnessFactor&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),void 0!==o.clearcoatRoughnessTexture&&r.push(s.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),void 0!==o.clearcoatNormalTexture&&(r.push(s.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),void 0!==o.clearcoatNormalTexture.scale)){const e=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new i(e,e)}return Promise.all(r)}}class Re{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_DISPERSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const n=s.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}}class _e{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return void 0!==i.iridescenceFactor&&(t.iridescence=i.iridescenceFactor),void 0!==i.iridescenceTexture&&r.push(s.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),void 0!==i.iridescenceIor&&(t.iridescenceIOR=i.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==i.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),void 0!==i.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),void 0!==i.iridescenceThicknessTexture&&r.push(s.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(r)}}class ve{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new o(0,0,0),t.sheenRoughness=0,t.sheen=1;const i=n.extensions[this.name];if(void 0!==i.sheenColorFactor){const e=i.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],a)}return void 0!==i.sheenRoughnessFactor&&(t.sheenRoughness=i.sheenRoughnessFactor),void 0!==i.sheenColorTexture&&r.push(s.assignTexture(t,"sheenColorMap",i.sheenColorTexture,c)),void 0!==i.sheenRoughnessTexture&&r.push(s.assignTexture(t,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(r)}}class Ae{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return void 0!==i.transmissionFactor&&(t.transmission=i.transmissionFactor),void 0!==i.transmissionTexture&&r.push(s.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(r)}}class Ee{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];t.thickness=void 0!==i.thicknessFactor?i.thicknessFactor:0,void 0!==i.thicknessTexture&&r.push(s.assignTexture(t,"thicknessMap",i.thicknessTexture)),t.attenuationDistance=i.attenuationDistance||1/0;const c=i.attenuationColor||[1,1,1];return t.attenuationColor=(new o).setRGB(c[0],c[1],c[2],a),Promise.all(r)}}class we{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const n=s.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}}class ye{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];t.specularIntensity=void 0!==i.specularFactor?i.specularFactor:1,void 0!==i.specularTexture&&r.push(s.assignTexture(t,"specularIntensityMap",i.specularTexture));const l=i.specularColorFactor||[1,1,1];return t.specularColor=(new o).setRGB(l[0],l[1],l[2],a),void 0!==i.specularColorTexture&&r.push(s.assignTexture(t,"specularColorMap",i.specularColorTexture,c)),Promise.all(r)}}class Se{constructor(e){this.parser=e,this.name=pe.EXT_MATERIALS_BUMP}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return t.bumpScale=void 0!==i.bumpFactor?i.bumpFactor:1,void 0!==i.bumpTexture&&r.push(s.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(r)}}class Me{constructor(e){this.parser=e,this.name=pe.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r:null}extendMaterialParams(e,t){const s=this.parser,n=s.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],i=n.extensions[this.name];return void 0!==i.anisotropyStrength&&(t.anisotropy=i.anisotropyStrength),void 0!==i.anisotropyRotation&&(t.anisotropyRotation=i.anisotropyRotation),void 0!==i.anisotropyTexture&&r.push(s.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(r)}}class Ie{constructor(e){this.parser=e,this.name=pe.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,s=t.json,n=s.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const r=n.extensions[this.name],i=t.options.ktx2Loader;if(!i){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,i)}}class Le{constructor(e){this.parser=e,this.name=pe.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,s=this.parser,n=s.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=n.images[i.source];let a=s.textureLoader;if(o.uri){const e=s.options.manager.getHandler(o.uri);null!==e&&(a=e)}return s.loadTextureImage(e,i.source,a)}}class be{constructor(e){this.parser=e,this.name=pe.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,s=this.parser,n=s.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const i=r.extensions[t],o=n.images[i.source];let a=s.textureLoader;if(o.uri){const e=s.options.manager.getHandler(o.uri);null!==e&&(a=e)}return s.loadTextureImage(e,i.source,a)}}class Ne{constructor(e){this.name=pe.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,s=t.bufferViews[e];if(s.extensions&&s.extensions[this.name]){const e=s.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then(function(t){const s=e.byteOffset||0,n=e.byteLength||0,i=e.count,o=e.byteStride,a=new Uint8Array(t,s,n);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(i,o,a,e.mode,e.filter).then(function(e){return e.buffer}):r.ready.then(function(){const t=new ArrayBuffer(i*o);return r.decodeGltfBuffer(new Uint8Array(t),i,o,a,e.mode,e.filter),t})})}return null}}class Oe{constructor(e){this.name=pe.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,s=t.nodes[e];if(!s.extensions||!s.extensions[this.name]||void 0===s.mesh)return null;const n=t.meshes[s.mesh];for(const e of n.primitives)if(e.mode!==Be.TRIANGLES&&e.mode!==Be.TRIANGLE_STRIP&&e.mode!==Be.TRIANGLE_FAN&&void 0!==e.mode)return null;const r=s.extensions[this.name].attributes,i=[],o={};for(const e in r)i.push(this.parser.getDependency("accessor",r[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{const t=e.pop(),s=t.isGroup?t.children:[t],n=e[0].count,r=[];for(const e of s){const t=new d,s=new m,i=new f,a=new m(1,1,1),c=new p(e.geometry,e.material,n);for(let e=0;e<n;e++)o.TRANSLATION&&s.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&i.fromBufferAttribute(o.ROTATION,e),o.SCALE&&a.fromBufferAttribute(o.SCALE,e),c.setMatrixAt(e,t.compose(s,i,a));for(const t in o)if("_COLOR_0"===t){const e=o[t];c.instanceColor=new g(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,o[t]);T.prototype.copy.call(c,e),this.parser.assignFinalMaterial(c),r.push(c)}return t.isGroup?(t.clear(),t.add(...r),t):r[0]}))}}const Ce="glTF",Pe=1313821514,He=5130562;class ke{constructor(e){this.name=pe.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Ce)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,r=new DataView(e,12);let i=0;for(;i<n;){const t=r.getUint32(i,!0);i+=4;const n=r.getUint32(i,!0);if(i+=4,n===Pe){const n=new Uint8Array(e,12+i,t);this.content=s.decode(n)}else if(n===He){const s=12+i;this.body=e.slice(s,s+t)}i+=t}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Fe{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=pe.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const s=this.json,n=this.dracoLoader,r=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,o={},c={},l={};for(const e in i){const t=We[e]||e.toLowerCase();o[t]=i[e]}for(const t in e.attributes){const n=We[t]||t.toLowerCase();if(void 0!==i[t]){const r=s.accessors[e.attributes[t]],i=Ve[r.componentType];l[n]=i.name,c[n]=!0===r.normalized}}return t.getDependency("bufferView",r).then(function(e){return new Promise(function(t,s){n.decodeDracoFile(e,function(e){for(const t in e.attributes){const s=e.attributes[t],n=c[t];void 0!==n&&(s.normalized=n)}t(e)},o,l,a,s)})})}}class Ue{constructor(){this.name=pe.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return void 0!==t.texCoord&&t.texCoord!==e.channel||void 0!==t.offset||void 0!==t.rotation||void 0!==t.scale?(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e):e}}class De{constructor(){this.name=pe.KHR_MESH_QUANTIZATION}}class je extends ae{constructor(e,t,s,n){super(e,t,s,n)}copySampleValue_(e){const t=this.resultBuffer,s=this.sampleValues,n=this.valueSize,r=e*n*3+n;for(let e=0;e!==n;e++)t[e]=s[r+e];return t}interpolate_(e,t,s,n){const r=this.resultBuffer,i=this.sampleValues,o=this.valueSize,a=2*o,c=3*o,l=n-t,u=(s-t)/l,h=u*u,d=h*u,m=e*c,p=m-c,f=-2*d+3*h,g=d-h,T=1-f,x=g-h+u;for(let e=0;e!==o;e++){const t=i[p+e+o],s=i[p+e+a]*l,n=i[m+e+o],c=i[m+e]*l;r[e]=T*t+x*s+f*n+g*c}return r}}const Ke=new f;class Ge extends je{interpolate_(e,t,s,n){const r=super.interpolate_(e,t,s,n);return Ke.fromArray(r).normalize().toArray(r),r}}const Be={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Ve={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Xe={9728:M,9729:S,9984:y,9985:w,9986:E,9987:A},ze={33071:b,33648:L,10497:I},qe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},We={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Ye={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Je={CUBICSPLINE:void 0,LINEAR:$,STEP:Q},Ze="OPAQUE",Qe="MASK",$e="BLEND";function et(e){return void 0===e.DefaultMaterial&&(e.DefaultMaterial=new P({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:oe})),e.DefaultMaterial}function tt(e,t,s){for(const n in s.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=s.extensions[n])}function st(e,t){void 0!==t.extras&&"object"==typeof t.extras&&Object.assign(e.userData,t.extras)}function nt(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let s=0,n=t.weights.length;s<n;s++)e.morphTargetInfluences[s]=t.weights[s];if(t.extras&&Array.isArray(t.extras.targetNames)){const s=t.extras.targetNames;if(e.morphTargetInfluences.length===s.length){e.morphTargetDictionary={};for(let t=0,n=s.length;t<n;t++)e.morphTargetDictionary[s[t]]=t}}}function rt(e){let t;const s=e.extensions&&e.extensions[pe.KHR_DRACO_MESH_COMPRESSION];if(t=s?"draco:"+s.bufferView+":"+s.indices+":"+it(s.attributes):e.indices+":"+it(e.attributes)+":"+e.mode,void 0!==e.targets)for(let s=0,n=e.targets.length;s<n;s++)t+=":"+it(e.targets[s]);return t}function it(e){let t="";const s=Object.keys(e).sort();for(let n=0,r=s.length;n<r;n++)t+=s[n]+":"+e[s[n]]+";";return t}function ot(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const at=new d;class ct{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new me,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,r=-1,i=!1,o=-1;if("undefined"!=typeof navigator){const e=navigator.userAgent;s=!0===/^((?!chrome|android).)*safari/i.test(e);const t=e.match(/Version\/(\d+)/);r=s&&t?parseInt(t[1],10):-1,i=e.indexOf("Firefox")>-1,o=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"==typeof createImageBitmap||s&&r<17||i&&o<98?this.textureLoader=new x(this.options.manager):this.textureLoader=new R(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new n(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const s=this,n=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(t){const i={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:s,userData:{}};return tt(r,i,n),st(i,n),Promise.all(s._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(const e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],s=this.json.meshes||[];for(let s=0,n=t.length;s<n;s++){const n=t[s].joints;for(let t=0,s=n.length;t<s;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(s[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,s){if(e.refs[t]<=1)return s;const n=s.clone(),r=(e,t)=>{const s=this.associations.get(e);null!=s&&this.associations.set(t,s);for(const[s,n]of e.children.entries())r(n,t.children[s])};return r(s,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let s=0;s<t.length;s++){const n=e(t[s]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const s=[];for(let n=0;n<t.length;n++){const r=e(t[n]);r&&s.push(r)}return s}getDependency(e,t){const s=e+":"+t;let n=this.cache.get(s);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!n)throw new Error("Unknown type: "+e)}this.cache.add(s,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const s=this,n=this.json[e+("mesh"===e?"es":"s")]||[];t=Promise.all(n.map(function(t,n){return s.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[pe.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(e,i){n.load(s.resolveURL(t.uri,r.path),e,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){const s=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+s)})}loadAccessor(e){const t=this,s=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){const e=qe[n.type],t=Ve[n.componentType],s=!0===n.normalized,r=new t(n.count*e);return Promise.resolve(new _(r,e,s))}const r=[];return void 0!==n.bufferView?r.push(this.getDependency("bufferView",n.bufferView)):r.push(null),void 0!==n.sparse&&(r.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(r).then(function(e){const r=e[0],i=qe[n.type],o=Ve[n.componentType],a=o.BYTES_PER_ELEMENT,c=a*i,l=n.byteOffset||0,u=void 0!==n.bufferView?s.bufferViews[n.bufferView].byteStride:void 0,h=!0===n.normalized;let d,m;if(u&&u!==c){const e=Math.floor(l/u),s="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count;let c=t.cache.get(s);c||(d=new o(r,e*u,n.count*u/a),c=new v(d,u/a),t.cache.add(s,c)),m=new ee(c,i,l%u/a,h)}else d=null===r?new o(n.count*i):new o(r,l,n.count*i),m=new _(d,i,h);if(void 0!==n.sparse){const t=qe.SCALAR,s=Ve[n.sparse.indices.componentType],a=n.sparse.indices.byteOffset||0,c=n.sparse.values.byteOffset||0,l=new s(e[1],a,n.sparse.count*t),u=new o(e[2],c,n.sparse.count*i);null!==r&&(m=new _(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,t=l.length;e<t;e++){const t=l[e];if(m.setX(t,u[e*i]),i>=2&&m.setY(t,u[e*i+1]),i>=3&&m.setZ(t,u[e*i+2]),i>=4&&m.setW(t,u[e*i+3]),i>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=h}return m})}loadTexture(e){const t=this.json,s=this.options,n=t.textures[e].source,r=t.images[n];let i=this.textureLoader;if(r.uri){const e=s.manager.getHandler(r.uri);null!==e&&(i=e)}return this.loadTextureImage(e,n,i)}loadTextureImage(e,t,s){const n=this,r=this.json,i=r.textures[e],o=r.images[t],a=(o.uri||o.bufferView)+":"+i.sampler;if(this.textureCache[a])return this.textureCache[a];const c=this.loadImageSource(t,s).then(function(t){t.flipY=!1,t.name=i.name||o.name||"",""===t.name&&"string"==typeof o.uri&&!1===o.uri.startsWith("data:image/")&&(t.name=o.uri);const s=(r.samplers||{})[i.sampler]||{};return t.magFilter=Xe[s.magFilter]||S,t.minFilter=Xe[s.minFilter]||A,t.wrapS=ze[s.wrapS]||I,t.wrapT=ze[s.wrapT]||I,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==M&&t.minFilter!==S,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[a]=c,c}loadImageSource(e,t){const n=this,r=this.json,i=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());const o=r.images[e],a=self.URL||self.webkitURL;let c=o.uri||"",l=!1;if(void 0!==o.bufferView)c=n.getDependency("bufferView",o.bufferView).then(function(e){l=!0;const t=new Blob([e],{type:o.mimeType});return c=a.createObjectURL(t),c});else if(void 0===o.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const u=Promise.resolve(c).then(function(e){return new Promise(function(n,r){let o=n;!0===t.isImageBitmapLoader&&(o=function(e){const t=new te(e);t.needsUpdate=!0,n(t)}),t.load(s.resolveURL(e,i.path),o,void 0,r)})}).then(function(e){var t;return!0===l&&a.revokeObjectURL(c),st(e,o),e.userData.mimeType=o.mimeType||((t=o.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw e});return this.sourceCache[e]=u,u}assignTexture(e,t,s,n){const r=this;return this.getDependency("texture",s.index).then(function(i){if(!i)return null;if(void 0!==s.texCoord&&s.texCoord>0&&((i=i.clone()).channel=s.texCoord),r.extensions[pe.KHR_TEXTURE_TRANSFORM]){const e=void 0!==s.extensions?s.extensions[pe.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=r.associations.get(i);i=r.extensions[pe.KHR_TEXTURE_TRANSFORM].extendTexture(i,e),r.associations.set(i,t)}}return void 0!==n&&(i.colorSpace=n),e[t]=i,i})}assignFinalMaterial(e){const t=e.geometry;let s=e.material;const n=void 0===t.attributes.tangent,r=void 0!==t.attributes.color,i=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+s.uuid;let t=this.cache.get(e);t||(t=new N,O.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,t.sizeAttenuation=!1,this.cache.add(e,t)),s=t}else if(e.isLine){const e="LineBasicMaterial:"+s.uuid;let t=this.cache.get(e);t||(t=new C,O.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,this.cache.add(e,t)),s=t}if(n||r||i){let e="ClonedMaterial:"+s.uuid+":";n&&(e+="derivative-tangents:"),r&&(e+="vertex-colors:"),i&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=s.clone(),r&&(t.vertexColors=!0),i&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(s))),s=t}e.material=s}getMaterialType(){return P}loadMaterial(e){const t=this,s=this.json,n=this.extensions,r=s.materials[e];let l;const u={},h=[];if((r.extensions||{})[pe.KHR_MATERIALS_UNLIT]){const e=n[pe.KHR_MATERIALS_UNLIT];l=e.getMaterialType(),h.push(e.extendParams(u,r,t))}else{const s=r.pbrMetallicRoughness||{};if(u.color=new o(1,1,1),u.opacity=1,Array.isArray(s.baseColorFactor)){const e=s.baseColorFactor;u.color.setRGB(e[0],e[1],e[2],a),u.opacity=e[3]}void 0!==s.baseColorTexture&&h.push(t.assignTexture(u,"map",s.baseColorTexture,c)),u.metalness=void 0!==s.metallicFactor?s.metallicFactor:1,u.roughness=void 0!==s.roughnessFactor?s.roughnessFactor:1,void 0!==s.metallicRoughnessTexture&&(h.push(t.assignTexture(u,"metalnessMap",s.metallicRoughnessTexture)),h.push(t.assignTexture(u,"roughnessMap",s.metallicRoughnessTexture))),l=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),h.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,u)})))}!0===r.doubleSided&&(u.side=H);const d=r.alphaMode||Ze;if(d===$e?(u.transparent=!0,u.depthWrite=!1):(u.transparent=!1,d===Qe&&(u.alphaTest=void 0!==r.alphaCutoff?r.alphaCutoff:.5)),void 0!==r.normalTexture&&l!==k&&(h.push(t.assignTexture(u,"normalMap",r.normalTexture)),u.normalScale=new i(1,1),void 0!==r.normalTexture.scale)){const e=r.normalTexture.scale;u.normalScale.set(e,e)}if(void 0!==r.occlusionTexture&&l!==k&&(h.push(t.assignTexture(u,"aoMap",r.occlusionTexture)),void 0!==r.occlusionTexture.strength&&(u.aoMapIntensity=r.occlusionTexture.strength)),void 0!==r.emissiveFactor&&l!==k){const e=r.emissiveFactor;u.emissive=(new o).setRGB(e[0],e[1],e[2],a)}return void 0!==r.emissiveTexture&&l!==k&&h.push(t.assignTexture(u,"emissiveMap",r.emissiveTexture,c)),Promise.all(h).then(function(){const s=new l(u);return r.name&&(s.name=r.name),st(s,r),t.associations.set(s,{materials:e}),r.extensions&&tt(n,s,r),s})}createUniqueName(e){const t=F.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,s=this.extensions,n=this.primitiveCache;function r(e){return s[pe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(s){return lt(s,e,t)})}const i=[];for(let s=0,o=e.length;s<o;s++){const o=e[s],a=rt(o),c=n[a];if(c)i.push(c.promise);else{let e;e=o.extensions&&o.extensions[pe.KHR_DRACO_MESH_COMPRESSION]?r(o):lt(new U,o,t),n[a]={primitive:o,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(t){const s=this,n=this.json,r=this.extensions,i=n.meshes[t],o=i.primitives,a=[];for(let e=0,t=o.length;e<t;e++){const t=void 0===o[e].material?et(this.cache):this.getDependency("material",o[e].material);a.push(t)}return a.push(s.loadGeometries(o)),Promise.all(a).then(function(n){const a=n.slice(0,n.length-1),c=n[n.length-1],l=[];for(let n=0,u=c.length;n<u;n++){const u=c[n],h=o[n];let d;const m=a[n];if(h.mode===Be.TRIANGLES||h.mode===Be.TRIANGLE_STRIP||h.mode===Be.TRIANGLE_FAN||void 0===h.mode)d=!0===i.isSkinnedMesh?new D(u,m):new j(u,m),!0===d.isSkinnedMesh&&d.normalizeSkinWeights(),h.mode===Be.TRIANGLE_STRIP?d.geometry=e(d.geometry,ue):h.mode===Be.TRIANGLE_FAN&&(d.geometry=e(d.geometry,he));else if(h.mode===Be.LINES)d=new K(u,m);else if(h.mode===Be.LINE_STRIP)d=new G(u,m);else if(h.mode===Be.LINE_LOOP)d=new B(u,m);else{if(h.mode!==Be.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+h.mode);d=new V(u,m)}Object.keys(d.geometry.morphAttributes).length>0&&nt(d,i),d.name=s.createUniqueName(i.name||"mesh_"+t),st(d,i),h.extensions&&tt(r,d,h),s.assignFinalMaterial(d),l.push(d)}for(let e=0,n=l.length;e<n;e++)s.associations.set(l[e],{meshes:t,primitives:e});if(1===l.length)return i.extensions&&tt(r,l[0],i),l[0];const u=new X;i.extensions&&tt(r,u,i),s.associations.set(u,{meshes:t});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t;const s=this.json.cameras[e],n=s[s.type];if(n)return"perspective"===s.type?t=new z(q.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===s.type&&(t=new W(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),s.name&&(t.name=this.createUniqueName(s.name)),st(t,s),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],s=[];for(let e=0,n=t.joints.length;e<n;e++)s.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?s.push(this.getDependency("accessor",t.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(e){const t=e.pop(),s=e,n=[],r=[];for(let e=0,i=s.length;e<i;e++){const i=s[e];if(i){n.push(i);const s=new d;null!==t&&s.fromArray(t.array,16*e),r.push(s)}}return new Y(n,r)})}loadAnimation(e){const t=this.json,s=this,n=t.animations[e],r=n.name?n.name:"animation_"+e,i=[],o=[],a=[],c=[],l=[];for(let e=0,t=n.channels.length;e<t;e++){const t=n.channels[e],s=n.samplers[t.sampler],r=t.target,u=r.node,h=void 0!==n.parameters?n.parameters[s.input]:s.input,d=void 0!==n.parameters?n.parameters[s.output]:s.output;void 0!==r.node&&(i.push(this.getDependency("node",u)),o.push(this.getDependency("accessor",h)),a.push(this.getDependency("accessor",d)),c.push(s),l.push(r))}return Promise.all([Promise.all(i),Promise.all(o),Promise.all(a),Promise.all(c),Promise.all(l)]).then(function(e){const t=e[0],i=e[1],o=e[2],a=e[3],c=e[4],l=[];for(let e=0,n=t.length;e<n;e++){const n=t[e],r=i[e],u=o[e],h=a[e],d=c[e];if(void 0===n)continue;n.updateMatrix&&n.updateMatrix();const m=s._createAnimationTracks(n,r,u,h,d);if(m)for(let e=0;e<m.length;e++)l.push(m[e])}const u=new J(r,void 0,l);return st(u,n),u})}createNodeMesh(e){const t=this.json,s=this,n=t.nodes[e];return void 0===n.mesh?null:s.getDependency("mesh",n.mesh).then(function(e){const t=s._getNodeRef(s.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,s=n.weights.length;t<s;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){const t=this,s=this.json.nodes[e],n=t._loadNodeShallow(e),r=[],i=s.children||[];for(let e=0,s=i.length;e<s;e++)r.push(t.getDependency("node",i[e]));const o=void 0===s.skin?Promise.resolve(null):t.getDependency("skin",s.skin);return Promise.all([n,Promise.all(r),o]).then(function(e){const t=e[0],s=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,at)});for(let e=0,n=s.length;e<n;e++)t.add(s[e]);return t})}_loadNodeShallow(e){const t=this.json,s=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];const r=t.nodes[e],i=r.name?n.createUniqueName(r.name):"",o=[],a=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return a&&o.push(a),void 0!==r.camera&&o.push(n.getDependency("camera",r.camera).then(function(e){return n._getNodeRef(n.cameraCache,r.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){o.push(e)}),this.nodeCache[e]=Promise.all(o).then(function(t){let o;if(o=!0===r.isBone?new Z:t.length>1?new X:1===t.length?t[0]:new T,o!==t[0])for(let e=0,s=t.length;e<s;e++)o.add(t[e]);if(r.name&&(o.userData.name=r.name,o.name=i),st(o,r),r.extensions&&tt(s,o,r),void 0!==r.matrix){const e=new d;e.fromArray(r.matrix),o.applyMatrix4(e)}else void 0!==r.translation&&o.position.fromArray(r.translation),void 0!==r.rotation&&o.quaternion.fromArray(r.rotation),void 0!==r.scale&&o.scale.fromArray(r.scale);if(n.associations.has(o)){if(void 0!==r.mesh&&n.meshCache.refs[r.mesh]>1){const e=n.associations.get(o);n.associations.set(o,{...e})}}else n.associations.set(o,{});return n.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){const t=this.extensions,s=this.json.scenes[e],n=this,r=new X;s.name&&(r.name=n.createUniqueName(s.name)),st(r,s),s.extensions&&tt(t,r,s);const i=s.nodes||[],o=[];for(let e=0,t=i.length;e<t;e++)o.push(n.getDependency("node",i[e]));return Promise.all(o).then(function(e){for(let t=0,s=e.length;t<s;t++)r.add(e[t]);return n.associations=(e=>{const t=new Map;for(const[e,s]of n.associations)(e instanceof O||e instanceof te)&&t.set(e,s);return e.traverse(e=>{const s=n.associations.get(e);null!=s&&t.set(e,s)}),t})(r),r})}_createAnimationTracks(e,t,s,n,r){const i=[],o=e.name?e.name:e.uuid,a=[];let c;switch(Ye[r.path]===Ye.weights?e.traverse(function(e){e.morphTargetInfluences&&a.push(e.name?e.name:e.uuid)}):a.push(o),Ye[r.path]){case Ye.weights:c=ne;break;case Ye.rotation:c=re;break;case Ye.translation:case Ye.scale:c=se;break;default:if(1===s.itemSize)c=ne;else c=se}const l=void 0!==n.interpolation?Je[n.interpolation]:$,u=this._getArrayFromAccessor(s);for(let e=0,s=a.length;e<s;e++){const s=new c(a[e]+"."+Ye[r.path],t.array,u,l);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(s),i.push(s)}return i}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const e=ot(t.constructor),s=new Float32Array(t.length);for(let n=0,r=t.length;n<r;n++)s[n]=t[n]*e;t=s}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof re?Ge:je)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function lt(e,t,s){const n=t.attributes,r=[];function i(t,n){return s.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}for(const t in n){const s=We[t]||t.toLowerCase();s in e.attributes||r.push(i(n[t],s))}if(void 0!==t.indices&&!e.index){const n=s.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});r.push(n)}return ie.workingColorSpace,st(e,t),function(e,t,s){const n=t.attributes,r=new ce;if(void 0===n.POSITION)return;{const e=s.json.accessors[n.POSITION],t=e.min,i=e.max;if(void 0===t||void 0===i)return;if(r.set(new m(t[0],t[1],t[2]),new m(i[0],i[1],i[2])),e.normalized){const t=ot(Ve[e.componentType]);r.min.multiplyScalar(t),r.max.multiplyScalar(t)}}const i=t.targets;if(void 0!==i){const e=new m,t=new m;for(let n=0,r=i.length;n<r;n++){const r=i[n];if(void 0!==r.POSITION){const n=s.json.accessors[r.POSITION],i=n.min,o=n.max;if(void 0!==i&&void 0!==o){if(t.setX(Math.max(Math.abs(i[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(i[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(i[2]),Math.abs(o[2]))),n.normalized){const e=ot(Ve[n.componentType]);t.multiplyScalar(e)}e.max(t)}}}r.expandByVector(e)}e.boundingBox=r;const o=new le;r.getCenter(o.center),o.radius=r.min.distanceTo(r.max)/2,e.boundingSphere=o}(e,t,s),Promise.all(r).then(function(){return void 0!==t.targets?function(e,t,s){let n=!1,r=!1,i=!1;for(let e=0,s=t.length;e<s;e++){const s=t[e];if(void 0!==s.POSITION&&(n=!0),void 0!==s.NORMAL&&(r=!0),void 0!==s.COLOR_0&&(i=!0),n&&r&&i)break}if(!n&&!r&&!i)return Promise.resolve(e);const o=[],a=[],c=[];for(let l=0,u=t.length;l<u;l++){const u=t[l];if(n){const t=void 0!==u.POSITION?s.getDependency("accessor",u.POSITION):e.attributes.position;o.push(t)}if(r){const t=void 0!==u.NORMAL?s.getDependency("accessor",u.NORMAL):e.attributes.normal;a.push(t)}if(i){const t=void 0!==u.COLOR_0?s.getDependency("accessor",u.COLOR_0):e.attributes.color;c.push(t)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(c)]).then(function(t){const s=t[0],o=t[1],a=t[2];return n&&(e.morphAttributes.position=s),r&&(e.morphAttributes.normal=o),i&&(e.morphAttributes.color=a),e.morphTargetsRelative=!0,e})}(e,t.targets,s):e})}export{de as GLTFLoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var t=require("../../../build/three.core.cjs.js");class e extends t.DataTextureLoader{constructor(e){super(e),this.type=t.HalfFloatType}parse(e){const r=function(t,e){switch(t){case 1:throw new Error("THREE.HDRLoader: Read Error: "+(e||""));case 2:throw new Error("THREE.HDRLoader: Write Error: "+(e||""));case 3:throw new Error("THREE.HDRLoader: Bad File Format: "+(e||""));default:throw new Error("THREE.HDRLoader: Memory Error: "+(e||""))}},a=function(t,e,r){e=e||1024;let a=t.pos,o=-1,n=0,s="",i=String.fromCharCode.apply(null,new Uint16Array(t.subarray(a,a+128)));for(;0>(o=i.indexOf("\n"))&&n<e&&a<t.byteLength;)s+=i,n+=i.length,a+=128,i+=String.fromCharCode.apply(null,new Uint16Array(t.subarray(a,a+128)));return-1<o&&(t.pos+=n+o+1,s+i.slice(0,o))},o=function(t,e,r,a){const o=t[e+3],n=Math.pow(2,o-128)/255;r[a+0]=t[e+0]*n,r[a+1]=t[e+1]*n,r[a+2]=t[e+2]*n,r[a+3]=1},n=function(e,r,a,o){const n=e[r+3],s=Math.pow(2,n-128)/255;a[o+0]=t.DataUtils.toHalfFloat(Math.min(e[r+0]*s,65504)),a[o+1]=t.DataUtils.toHalfFloat(Math.min(e[r+1]*s,65504)),a[o+2]=t.DataUtils.toHalfFloat(Math.min(e[r+2]*s,65504)),a[o+3]=t.DataUtils.toHalfFloat(1)},s=new Uint8Array(e);s.pos=0;const i=function(t){const e=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,o=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,n=/^\s*FORMAT=(\S+)\s*$/,s=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,i={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let l,c;for((t.pos>=t.byteLength||!(l=a(t)))&&r(1,"no header found"),(c=l.match(/^#\?(\S+)/))||r(3,"bad initial token"),i.valid|=1,i.programtype=c[1],i.string+=l+"\n";l=a(t),!1!==l;)if(i.string+=l+"\n","#"!==l.charAt(0)){if((c=l.match(e))&&(i.gamma=parseFloat(c[1])),(c=l.match(o))&&(i.exposure=parseFloat(c[1])),(c=l.match(n))&&(i.valid|=2,i.format=c[1]),(c=l.match(s))&&(i.valid|=4,i.height=parseInt(c[1],10),i.width=parseInt(c[2],10)),2&i.valid&&4&i.valid)break}else i.comments+=l+"\n";return 2&i.valid||r(3,"missing format specifier"),4&i.valid||r(3,"missing image size specifier"),i}(s),l=i.width,c=i.height,h=function(t,e,a){const o=e;if(o<8||o>32767||2!==t[0]||2!==t[1]||128&t[2])return new Uint8Array(t);o!==(t[2]<<8|t[3])&&r(3,"wrong scanline width");const n=new Uint8Array(4*e*a);n.length||r(4,"unable to allocate buffer space");let s=0,i=0;const l=4*o,c=new Uint8Array(4),h=new Uint8Array(l);let p=a;for(;p>0&&i<t.byteLength;){i+4>t.byteLength&&r(1),c[0]=t[i++],c[1]=t[i++],c[2]=t[i++],c[3]=t[i++],2==c[0]&&2==c[1]&&(c[2]<<8|c[3])==o||r(3,"bad rgbe scanline format");let e,a=0;for(;a<l&&i<t.byteLength;){e=t[i++];const o=e>128;if(o&&(e-=128),(0===e||a+e>l)&&r(3,"bad scanline data"),o){const r=t[i++];for(let t=0;t<e;t++)h[a++]=r}else h.set(t.subarray(i,i+e),a),a+=e,i+=e}const d=o;for(let t=0;t<d;t++){let e=0;n[s]=h[t+e],e+=o,n[s+1]=h[t+e],e+=o,n[s+2]=h[t+e],e+=o,n[s+3]=h[t+e],s+=4}p--}return n}(s.subarray(s.pos),l,c);let p,d,f;switch(this.type){case t.FloatType:f=h.length/4;const e=new Float32Array(4*f);for(let t=0;t<f;t++)o(h,4*t,e,4*t);p=e,d=t.FloatType;break;case t.HalfFloatType:f=h.length/4;const r=new Uint16Array(4*f);for(let t=0;t<f;t++)n(h,4*t,r,4*t);p=r,d=t.HalfFloatType;break;default:throw new Error("THREE.HDRLoader: Unsupported type: "+this.type)}return{width:l,height:c,data:p,header:i.string,gamma:i.gamma,exposure:i.exposure,type:d}}setDataType(t){return this.type=t,this}load(e,r,a,o){return super.load(e,function(e,a){switch(e.type){case t.FloatType:case t.HalfFloatType:e.colorSpace=t.LinearSRGBColorSpace,e.minFilter=t.LinearFilter,e.magFilter=t.LinearFilter,e.generateMipmaps=!1,e.flipY=!0}r&&r(e,a)},a,o)}}exports.HDRLoader=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{DataTextureLoader as t,HalfFloatType as e,FloatType as r,DataUtils as a,LinearSRGBColorSpace as n,LinearFilter as o}from"../../../build/three.core.esm.js";class s extends t{constructor(t){super(t),this.type=e}parse(t){const n=function(t,e){switch(t){case 1:throw new Error("THREE.HDRLoader: Read Error: "+(e||""));case 2:throw new Error("THREE.HDRLoader: Write Error: "+(e||""));case 3:throw new Error("THREE.HDRLoader: Bad File Format: "+(e||""));default:throw new Error("THREE.HDRLoader: Memory Error: "+(e||""))}},o=function(t,e,r){e=e||1024;let a=t.pos,n=-1,o=0,s="",i=String.fromCharCode.apply(null,new Uint16Array(t.subarray(a,a+128)));for(;0>(n=i.indexOf("\n"))&&o<e&&a<t.byteLength;)s+=i,o+=i.length,a+=128,i+=String.fromCharCode.apply(null,new Uint16Array(t.subarray(a,a+128)));return-1<n&&(t.pos+=o+n+1,s+i.slice(0,n))},s=function(t,e,r,a){const n=t[e+3],o=Math.pow(2,n-128)/255;r[a+0]=t[e+0]*o,r[a+1]=t[e+1]*o,r[a+2]=t[e+2]*o,r[a+3]=1},i=function(t,e,r,n){const o=t[e+3],s=Math.pow(2,o-128)/255;r[n+0]=a.toHalfFloat(Math.min(t[e+0]*s,65504)),r[n+1]=a.toHalfFloat(Math.min(t[e+1]*s,65504)),r[n+2]=a.toHalfFloat(Math.min(t[e+2]*s,65504)),r[n+3]=a.toHalfFloat(1)},l=new Uint8Array(t);l.pos=0;const c=function(t){const e=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,r=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,a=/^\s*FORMAT=(\S+)\s*$/,s=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,i={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let l,c;for((t.pos>=t.byteLength||!(l=o(t)))&&n(1,"no header found"),(c=l.match(/^#\?(\S+)/))||n(3,"bad initial token"),i.valid|=1,i.programtype=c[1],i.string+=l+"\n";l=o(t),!1!==l;)if(i.string+=l+"\n","#"!==l.charAt(0)){if((c=l.match(e))&&(i.gamma=parseFloat(c[1])),(c=l.match(r))&&(i.exposure=parseFloat(c[1])),(c=l.match(a))&&(i.valid|=2,i.format=c[1]),(c=l.match(s))&&(i.valid|=4,i.height=parseInt(c[1],10),i.width=parseInt(c[2],10)),2&i.valid&&4&i.valid)break}else i.comments+=l+"\n";return 2&i.valid||n(3,"missing format specifier"),4&i.valid||n(3,"missing image size specifier"),i}(l),h=c.width,d=c.height,p=function(t,e,r){const a=e;if(a<8||a>32767||2!==t[0]||2!==t[1]||128&t[2])return new Uint8Array(t);a!==(t[2]<<8|t[3])&&n(3,"wrong scanline width");const o=new Uint8Array(4*e*r);o.length||n(4,"unable to allocate buffer space");let s=0,i=0;const l=4*a,c=new Uint8Array(4),h=new Uint8Array(l);let d=r;for(;d>0&&i<t.byteLength;){i+4>t.byteLength&&n(1),c[0]=t[i++],c[1]=t[i++],c[2]=t[i++],c[3]=t[i++],2==c[0]&&2==c[1]&&(c[2]<<8|c[3])==a||n(3,"bad rgbe scanline format");let e,r=0;for(;r<l&&i<t.byteLength;){e=t[i++];const a=e>128;if(a&&(e-=128),(0===e||r+e>l)&&n(3,"bad scanline data"),a){const a=t[i++];for(let t=0;t<e;t++)h[r++]=a}else h.set(t.subarray(i,i+e),r),r+=e,i+=e}const p=a;for(let t=0;t<p;t++){let e=0;o[s]=h[t+e],e+=a,o[s+1]=h[t+e],e+=a,o[s+2]=h[t+e],e+=a,o[s+3]=h[t+e],s+=4}d--}return o}(l.subarray(l.pos),h,d);let m,f,u;switch(this.type){case r:u=p.length/4;const t=new Float32Array(4*u);for(let e=0;e<u;e++)s(p,4*e,t,4*e);m=t,f=r;break;case e:u=p.length/4;const a=new Uint16Array(4*u);for(let t=0;t<u;t++)i(p,4*t,a,4*t);m=a,f=e;break;default:throw new Error("THREE.HDRLoader: Unsupported type: "+this.type)}return{width:h,height:d,data:m,header:c.string,gamma:c.gamma,exposure:c.exposure,type:f}}setDataType(t){return this.type=t,this}load(t,a,s,i){return super.load(t,function(t,s){switch(t.type){case r:case e:t.colorSpace=n,t.minFilter=o,t.magFilter=o,t.generateMipmaps=!1,t.flipY=!0}a&&a(t,s)},s,i)}}export{s as HDRLoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var r=require("./HDRLoader.cjs.js");class e extends r.HDRLoader{constructor(r){super(r)}}exports.RGBELoader=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{HDRLoader as r}from"./HDRLoader.esm.js";class s extends r{constructor(r){super(r)}}export{s as RGBELoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function t(t,e,n,o){const i=e.x(),s=e.y(),r=e.z(),a=e.w(),c=i+i,d=s+s,u=r+r,l=i*c,w=i*d,f=i*u,y=s*d,g=s*u,h=r*u,b=a*c,m=a*d,p=a*u;n[o+0]=1-(y+h),n[o+1]=w+p,n[o+2]=f-m,n[o+3]=0,n[o+4]=w-p,n[o+5]=1-(l+h),n[o+6]=g+b,n[o+7]=0,n[o+8]=f+m,n[o+9]=g-b,n[o+10]=1-(l+y),n[o+11]=0,n[o+12]=t.x(),n[o+13]=t.y(),n[o+14]=t.z(),n[o+15]=1}exports.AmmoPhysics=async function(){if("Ammo"in window==!1)return;const e=await Ammo(),n=new e.btDefaultCollisionConfiguration,o=new e.btCollisionDispatcher(n),i=new e.btDbvtBroadphase,s=new e.btSequentialImpulseConstraintSolver,r=new e.btDiscreteDynamicsWorld(o,i,s,n);r.setGravity(new e.btVector3(0,-9.8,0));const a=new e.btTransform,c=[],d=new WeakMap;function u(t,n=0,o=0){const i=function(t){const n=t.parameters;if("BoxGeometry"===t.type){const t=void 0!==n.width?n.width/2:.5,o=void 0!==n.height?n.height/2:.5,i=void 0!==n.depth?n.depth/2:.5,s=new e.btBoxShape(new e.btVector3(t,o,i));return s.setMargin(.05),s}if("SphereGeometry"===t.type||"IcosahedronGeometry"===t.type){const t=void 0!==n.radius?n.radius:1,o=new e.btSphereShape(t);return o.setMargin(.05),o}return null}(t.geometry);null!==i&&(t.isInstancedMesh?function(t,n,o,i){const s=t.instanceMatrix.array,a=[];for(let c=0;c<t.count;c++){const t=16*c,d=new e.btTransform;d.setFromOpenGLMatrix(s.slice(t,t+16));const u=new e.btDefaultMotionState(d),l=new e.btVector3(0,0,0);n.calculateLocalInertia(o,l);const w=new e.btRigidBodyConstructionInfo(o,u,n,l);w.set_m_restitution(i);const f=new e.btRigidBody(w);r.addRigidBody(f),a.push(f)}o>0&&(c.push(t),d.set(t,a))}(t,i,n,o):t.isMesh&&function(t,n,o,i){const s=t.position,a=t.quaternion,u=new e.btTransform;u.setIdentity(),u.setOrigin(new e.btVector3(s.x,s.y,s.z)),u.setRotation(new e.btQuaternion(a.x,a.y,a.z,a.w));const l=new e.btDefaultMotionState(u),w=new e.btVector3(0,0,0);n.calculateLocalInertia(o,w);const f=new e.btRigidBodyConstructionInfo(o,l,n,w);f.set_m_restitution(i);const y=new e.btRigidBody(f);r.addRigidBody(y),o>0&&(c.push(t),d.set(t,y))}(t,i,n,o))}let l=0;return setInterval(function(){const e=performance.now();if(l>0){const n=(e-l)/1e3;r.stepSimulation(n,10);for(let e=0,n=c.length;e<n;e++){const n=c[e];if(n.isInstancedMesh){const e=n.instanceMatrix.array,o=d.get(n);for(let n=0;n<o.length;n++){o[n].getMotionState().getWorldTransform(a);t(a.getOrigin(),a.getRotation(),e,16*n)}n.instanceMatrix.needsUpdate=!0,n.computeBoundingSphere()}else if(n.isMesh){d.get(n).getMotionState().getWorldTransform(a);const t=a.getOrigin(),e=a.getRotation();n.position.set(t.x(),t.y(),t.z()),n.quaternion.set(e.x(),e.y(),e.z(),e.w())}}}l=e},1e3/60),{addScene:function(t){t.traverse(function(t){if(t.isMesh){const e=t.userData.physics;e&&u(t,e.mass,e.restitution)}})},addMesh:u,setMeshPosition:function(t,n,o=0){if(t.isInstancedMesh){const i=d.get(t)[o];i.setAngularVelocity(new e.btVector3(0,0,0)),i.setLinearVelocity(new e.btVector3(0,0,0)),a.setIdentity(),a.setOrigin(new e.btVector3(n.x,n.y,n.z)),i.setWorldTransform(a)}else if(t.isMesh){const o=d.get(t);o.setAngularVelocity(new e.btVector3(0,0,0)),o.setLinearVelocity(new e.btVector3(0,0,0)),a.setIdentity(),a.setOrigin(new e.btVector3(n.x,n.y,n.z)),o.setWorldTransform(a)}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
async function t(){if("Ammo"in window==!1)return;const t=await Ammo(),n=new t.btDefaultCollisionConfiguration,o=new t.btCollisionDispatcher(n),i=new t.btDbvtBroadphase,s=new t.btSequentialImpulseConstraintSolver,r=new t.btDiscreteDynamicsWorld(o,i,s,n);r.setGravity(new t.btVector3(0,-9.8,0));const a=new t.btTransform;const c=[],d=new WeakMap;function u(e,n=0,o=0){const i=function(e){const n=e.parameters;if("BoxGeometry"===e.type){const e=void 0!==n.width?n.width/2:.5,o=void 0!==n.height?n.height/2:.5,i=void 0!==n.depth?n.depth/2:.5,s=new t.btBoxShape(new t.btVector3(e,o,i));return s.setMargin(.05),s}if("SphereGeometry"===e.type||"IcosahedronGeometry"===e.type){const e=void 0!==n.radius?n.radius:1,o=new t.btSphereShape(e);return o.setMargin(.05),o}return null}(e.geometry);null!==i&&(e.isInstancedMesh?function(e,n,o,i){const s=e.instanceMatrix.array,a=[];for(let c=0;c<e.count;c++){const e=16*c,d=new t.btTransform;d.setFromOpenGLMatrix(s.slice(e,e+16));const u=new t.btDefaultMotionState(d),l=new t.btVector3(0,0,0);n.calculateLocalInertia(o,l);const w=new t.btRigidBodyConstructionInfo(o,u,n,l);w.set_m_restitution(i);const f=new t.btRigidBody(w);r.addRigidBody(f),a.push(f)}o>0&&(c.push(e),d.set(e,a))}(e,i,n,o):e.isMesh&&function(e,n,o,i){const s=e.position,a=e.quaternion,u=new t.btTransform;u.setIdentity(),u.setOrigin(new t.btVector3(s.x,s.y,s.z)),u.setRotation(new t.btQuaternion(a.x,a.y,a.z,a.w));const l=new t.btDefaultMotionState(u),w=new t.btVector3(0,0,0);n.calculateLocalInertia(o,w);const f=new t.btRigidBodyConstructionInfo(o,l,n,w);f.set_m_restitution(i);const g=new t.btRigidBody(f);r.addRigidBody(g),o>0&&(c.push(e),d.set(e,g))}(e,i,n,o))}let l=0;return setInterval(function(){const t=performance.now();if(l>0){const n=(t-l)/1e3;r.stepSimulation(n,10);for(let t=0,n=c.length;t<n;t++){const n=c[t];if(n.isInstancedMesh){const t=n.instanceMatrix.array,o=d.get(n);for(let n=0;n<o.length;n++){o[n].getMotionState().getWorldTransform(a);e(a.getOrigin(),a.getRotation(),t,16*n)}n.instanceMatrix.needsUpdate=!0,n.computeBoundingSphere()}else if(n.isMesh){d.get(n).getMotionState().getWorldTransform(a);const t=a.getOrigin(),e=a.getRotation();n.position.set(t.x(),t.y(),t.z()),n.quaternion.set(e.x(),e.y(),e.z(),e.w())}}}l=t},1e3/60),{addScene:function(t){t.traverse(function(t){if(t.isMesh){const e=t.userData.physics;e&&u(t,e.mass,e.restitution)}})},addMesh:u,setMeshPosition:function(e,n,o=0){if(e.isInstancedMesh){const i=d.get(e)[o];i.setAngularVelocity(new t.btVector3(0,0,0)),i.setLinearVelocity(new t.btVector3(0,0,0)),a.setIdentity(),a.setOrigin(new t.btVector3(n.x,n.y,n.z)),i.setWorldTransform(a)}else if(e.isMesh){const o=d.get(e);o.setAngularVelocity(new t.btVector3(0,0,0)),o.setLinearVelocity(new t.btVector3(0,0,0)),a.setIdentity(),a.setOrigin(new t.btVector3(n.x,n.y,n.z)),o.setWorldTransform(a)}}}}function e(t,e,n,o){const i=e.x(),s=e.y(),r=e.z(),a=e.w(),c=i+i,d=s+s,u=r+r,l=i*c,w=i*d,f=i*u,g=s*d,y=s*u,h=r*u,b=a*c,p=a*d,m=a*u;n[o+0]=1-(g+h),n[o+1]=w+m,n[o+2]=f-p,n[o+3]=0,n[o+4]=w-m,n[o+5]=1-(l+h),n[o+6]=y+b,n[o+7]=0,n[o+8]=f+p,n[o+9]=y-b,n[o+10]=1-(l+g),n[o+11]=0,n[o+12]=t.x(),n[o+13]=t.y(),n[o+14]=t.z(),n[o+15]=1}export{t as AmmoPhysics};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("../../../build/three.module.cjs.js");var e=require("../shaders/CopyShader.cjs.js"),s=require("./ShaderPass.cjs.js"),t=require("./MaskPass.cjs.js"),i=require("../../../build/three.core.cjs.js");exports.EffectComposer=class{constructor(t,r){if(this.renderer=t,this._pixelRatio=t.getPixelRatio(),void 0===r){const e=t.getSize(new i.Vector2);this._width=e.width,this._height=e.height,(r=new i.WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:i.HalfFloatType})).texture.name="EffectComposer.rt1"}else this._width=r.width,this._height=r.height;this.renderTarget1=r,this.renderTarget2=r.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new s.ShaderPass(e.CopyShader),this.copyPass.material.blending=i.NoBlending,this.clock=new i.Clock}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,s){this.passes.splice(s,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const s=this.passes.indexOf(e);-1!==s&&this.passes.splice(s,1)}isLastEnabledPass(e){for(let s=e+1;s<this.passes.length;s++)if(this.passes[s].enabled)return!1;return!0}render(e){void 0===e&&(e=this.clock.getDelta());const s=this.renderer.getRenderTarget();let i=!1;for(let s=0,r=this.passes.length;s<r;s++){const r=this.passes[s];if(!1!==r.enabled){if(r.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(s),r.render(this.renderer,this.writeBuffer,this.readBuffer,e,i),r.needsSwap){if(i){const s=this.renderer.getContext(),t=this.renderer.state.buffers.stencil;t.setFunc(s.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),t.setFunc(s.EQUAL,1,4294967295)}this.swapBuffers()}void 0!==t.MaskPass&&(r instanceof t.MaskPass?i=!0:r instanceof t.ClearMaskPass&&(i=!1))}}this.renderer.setRenderTarget(s)}reset(e){if(void 0===e){const s=this.renderer.getSize(new i.Vector2);this._pixelRatio=this.renderer.getPixelRatio(),this._width=s.width,this._height=s.height,(e=this.renderTarget1.clone()).setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,s){this._width=e,this._height=s;const t=this._width*this._pixelRatio,i=this._height*this._pixelRatio;this.renderTarget1.setSize(t,i),this.renderTarget2.setSize(t,i);for(let e=0;e<this.passes.length;e++)this.passes[e].setSize(t,i)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../build/three.module.esm.js";import{CopyShader as e}from"../shaders/CopyShader.esm.js";import{ShaderPass as t}from"./ShaderPass.esm.js";import{MaskPass as s,ClearMaskPass as i}from"./MaskPass.esm.js";import{Vector2 as r,WebGLRenderTarget as h,HalfFloatType as a,NoBlending as d,Clock as n}from"../../../build/three.core.esm.js";class o{constructor(s,i){if(this.renderer=s,this._pixelRatio=s.getPixelRatio(),void 0===i){const e=s.getSize(new r);this._width=e.width,this._height=e.height,(i=new h(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:a})).texture.name="EffectComposer.rt1"}else this._width=i.width,this._height=i.height;this.renderTarget1=i,this.renderTarget2=i.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new t(e),this.copyPass.material.blending=d,this.clock=new n}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);-1!==t&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){void 0===e&&(e=this.clock.getDelta());const t=this.renderer.getRenderTarget();let r=!1;for(let t=0,h=this.passes.length;t<h;t++){const h=this.passes[t];if(!1!==h.enabled){if(h.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(t),h.render(this.renderer,this.writeBuffer,this.readBuffer,e,r),h.needsSwap){if(r){const t=this.renderer.getContext(),s=this.renderer.state.buffers.stencil;s.setFunc(t.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),s.setFunc(t.EQUAL,1,4294967295)}this.swapBuffers()}void 0!==s&&(h instanceof s?r=!0:h instanceof i&&(r=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(void 0===e){const t=this.renderer.getSize(new r);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,(e=this.renderTarget1.clone()).setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;const s=this._width*this._pixelRatio,i=this._height*this._pixelRatio;this.renderTarget1.setSize(s,i),this.renderTarget2.setSize(s,i);for(let e=0;e<this.passes.length;e++)this.passes[e].setSize(s,i)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}}export{o as EffectComposer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("./Pass.cjs.js");class s extends e.Pass{constructor(e,s){super(),this.scene=e,this.camera=s,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,s,t){const r=e.getContext(),c=e.state;let f,a;c.buffers.color.setMask(!1),c.buffers.depth.setMask(!1),c.buffers.color.setLocked(!0),c.buffers.depth.setLocked(!0),this.inverse?(f=0,a=1):(f=1,a=0),c.buffers.stencil.setTest(!0),c.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),c.buffers.stencil.setFunc(r.ALWAYS,f,4294967295),c.buffers.stencil.setClear(a),c.buffers.stencil.setLocked(!0),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(s),this.clear&&e.clear(),e.render(this.scene,this.camera),c.buffers.color.setLocked(!1),c.buffers.depth.setLocked(!1),c.buffers.color.setMask(!0),c.buffers.depth.setMask(!0),c.buffers.stencil.setLocked(!1),c.buffers.stencil.setFunc(r.EQUAL,1,4294967295),c.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),c.buffers.stencil.setLocked(!0)}}class t extends e.Pass{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}exports.ClearMaskPass=t,exports.MaskPass=s;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Pass as e}from"./Pass.esm.js";class s extends e{constructor(e,s){super(),this.scene=e,this.camera=s,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,s,t){const r=e.getContext(),c=e.state;let f,n;c.buffers.color.setMask(!1),c.buffers.depth.setMask(!1),c.buffers.color.setLocked(!0),c.buffers.depth.setLocked(!0),this.inverse?(f=0,n=1):(f=1,n=0),c.buffers.stencil.setTest(!0),c.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),c.buffers.stencil.setFunc(r.ALWAYS,f,4294967295),c.buffers.stencil.setClear(n),c.buffers.stencil.setLocked(!0),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(s),this.clear&&e.clear(),e.render(this.scene,this.camera),c.buffers.color.setLocked(!1),c.buffers.depth.setLocked(!1),c.buffers.color.setMask(!0),c.buffers.depth.setMask(!0),c.buffers.stencil.setLocked(!1),c.buffers.stencil.setFunc(r.EQUAL,1,4294967295),c.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),c.buffers.stencil.setLocked(!0)}}class t extends e{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}export{t as ClearMaskPass,s as MaskPass};
|