super-three 0.184.0 → 0.185.0
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/build/three.cjs +1260 -927
- package/build/three.core.js +1104 -829
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +156 -98
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +11 -4
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +7538 -3367
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +7538 -3366
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +3 -0
- package/examples/jsm/controls/ArcballControls.js +6 -2
- package/examples/jsm/controls/FirstPersonControls.js +79 -42
- package/examples/jsm/controls/TransformControls.js +68 -15
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +4 -1
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/GLTFExporter.js +114 -12
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +347 -112
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/ViewHelper.js +16 -6
- package/examples/jsm/inspector/Inspector.js +53 -15
- package/examples/jsm/inspector/RendererInspector.js +152 -36
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -1
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -1
- package/examples/jsm/inspector/tabs/Console.js +200 -18
- package/examples/jsm/inspector/tabs/Memory.js +8 -0
- package/examples/jsm/inspector/tabs/Parameters.js +64 -4
- package/examples/jsm/inspector/tabs/Performance.js +21 -6
- package/examples/jsm/inspector/tabs/Settings.js +51 -9
- package/examples/jsm/inspector/tabs/Timeline.js +178 -93
- package/examples/jsm/inspector/tabs/Viewer.js +628 -16
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +90 -45
- package/examples/jsm/inspector/ui/Style.js +1788 -1401
- package/examples/jsm/inspector/ui/Tab.js +5 -3
- package/examples/jsm/inspector/ui/Values.js +71 -6
- package/examples/jsm/inspector/ui/utils.js +130 -10
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/LightProbeGrid.js +106 -76
- package/examples/jsm/lines/LineMaterial.js +38 -15
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +46 -13
- package/examples/jsm/loaders/EXRLoader.js +27 -55
- package/examples/jsm/loaders/HDRLoader.js +6 -28
- package/examples/jsm/loaders/KTX2Loader.js +31 -12
- package/examples/jsm/loaders/LDrawLoader.js +8 -8
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +4 -0
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +3 -3
- package/examples/jsm/loaders/PCDLoader.js +7 -7
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +547 -495
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +33 -9
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +93 -20
- package/examples/jsm/loaders/usd/USDCParser.js +1 -1
- package/examples/jsm/loaders/usd/USDComposer.js +52 -19
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/Reflector.js +2 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/physics/AmmoPhysics.js +15 -8
- package/examples/jsm/physics/RapierPhysics.js +27 -2
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/GLSLDecoder.js +6 -6
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +59 -19
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +2 -2
- package/examples/jsm/tsl/display/FXAANode.js +11 -12
- package/examples/jsm/tsl/display/GTAONode.js +34 -13
- package/examples/jsm/tsl/display/GodraysNode.js +1 -1
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +13 -25
- package/examples/jsm/tsl/display/SSGINode.js +89 -39
- package/examples/jsm/tsl/display/SSRNode.js +829 -132
- package/examples/jsm/tsl/display/SSSNode.js +2 -2
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +1 -1
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +126 -59
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/package.json +7 -7
- package/src/Three.TSL.js +10 -3
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationAction.js +15 -11
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/KeyframeTrack.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/Camera.js +2 -2
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +1 -1
- package/src/core/BufferGeometry.js +29 -7
- package/src/core/Object3D.js +17 -7
- package/src/core/Raycaster.js +1 -1
- package/src/core/RenderTarget.js +15 -2
- package/src/extras/PMREMGenerator.js +6 -4
- package/src/extras/TextureUtils.js +1 -1
- package/src/extras/core/ShapePath.js +149 -160
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/helpers/DirectionalLightHelper.js +2 -0
- package/src/helpers/HemisphereLightHelper.js +2 -0
- package/src/helpers/PointLightHelper.js +2 -0
- package/src/helpers/SpotLightHelper.js +1 -1
- package/src/loaders/DataTextureLoader.js +69 -38
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +36 -266
- package/src/loaders/ObjectLoader.js +3 -1
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +196 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +40 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +40 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +34 -1
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +86 -0
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +378 -322
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +0 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +0 -11
- package/src/materials/nodes/NodeMaterial.js +115 -71
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +49 -20
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/MathUtils.js +2 -2
- package/src/math/Matrix3.js +11 -0
- package/src/math/Matrix4.js +28 -3
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +2 -2
- package/src/math/Vector4.js +2 -2
- package/src/math/interpolants/BezierInterpolant.js +4 -6
- package/src/nodes/Nodes.js +2 -5
- package/src/nodes/TSL.js +8 -6
- package/src/nodes/accessors/Arrays.js +4 -4
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +2 -2
- package/src/nodes/accessors/BufferAttributeNode.js +13 -2
- package/src/nodes/accessors/Camera.js +7 -7
- package/src/nodes/accessors/ClippingNode.js +1 -1
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +18 -2
- package/src/nodes/accessors/MaterialProperties.js +4 -3
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +13 -13
- package/src/nodes/accessors/Position.js +5 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -0
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneProperties.js +1 -1
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +2 -2
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +39 -7
- package/src/nodes/accessors/Tangent.js +4 -4
- package/src/nodes/accessors/TextureNode.js +60 -5
- package/src/nodes/code/FunctionNode.js +2 -16
- package/src/nodes/core/MRTNode.js +7 -2
- package/src/nodes/core/Node.js +39 -2
- package/src/nodes/core/NodeBuilder.js +201 -41
- package/src/nodes/core/NodeUtils.js +13 -13
- package/src/nodes/core/OutputStructNode.js +1 -1
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/PropertyNode.js +51 -5
- package/src/nodes/core/StackNode.js +56 -34
- package/src/nodes/core/StructNode.js +4 -6
- package/src/nodes/core/StructTypeNode.js +6 -6
- package/src/nodes/core/VarNode.js +8 -0
- package/src/nodes/core/VaryingNode.js +12 -2
- package/src/nodes/display/BlendModes.js +1 -41
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +10 -9
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +35 -43
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +12 -3
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +1 -1
- package/src/nodes/lighting/EnvironmentNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +90 -37
- package/src/nodes/lighting/PointShadowNode.js +6 -1
- package/src/nodes/lighting/ShadowFilterNode.js +21 -52
- package/src/nodes/lighting/ShadowNode.js +34 -14
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/ConditionalNode.js +3 -3
- package/src/nodes/math/MathNode.js +39 -11
- package/src/nodes/math/OperatorNode.js +23 -23
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +33 -2
- package/src/nodes/tsl/TSLCore.js +63 -18
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/Packing.js +35 -4
- package/src/nodes/utils/RTTNode.js +40 -24
- package/src/nodes/utils/ReflectorNode.js +1 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/objects/BatchedMesh.js +22 -14
- package/src/objects/InstancedMesh.js +0 -11
- package/src/objects/Skeleton.js +0 -9
- package/src/renderers/WebGLRenderer.js +19 -15
- package/src/renderers/common/Backend.js +49 -5
- package/src/renderers/common/Bindings.js +114 -45
- package/src/renderers/common/Buffer.js +9 -0
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/Info.js +63 -22
- package/src/renderers/common/Lighting.js +53 -5
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderObject.js +73 -13
- package/src/renderers/common/Renderer.js +281 -108
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/Textures.js +32 -5
- package/src/renderers/common/TimestampQueryPool.js +1 -1
- package/src/renderers/common/UniformsGroup.js +31 -9
- package/src/renderers/common/XRManager.js +340 -22
- package/src/renderers/common/extras/PMREMGenerator.js +15 -38
- package/src/renderers/common/nodes/NodeBuilderState.js +9 -1
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/NodeManager.js +63 -14
- package/src/renderers/common/nodes/NodeUniformBuffer.js +13 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/distance.glsl.js +1 -1
- package/src/renderers/webgl/WebGLOutput.js +2 -1
- package/src/renderers/webgl/WebGLProgram.js +5 -4
- package/src/renderers/webgl/WebGLPrograms.js +12 -5
- package/src/renderers/webgl/WebGLRenderLists.js +9 -1
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLTextures.js +20 -7
- package/src/renderers/webgl/WebGLUniformsGroups.js +66 -38
- package/src/renderers/webgl-fallback/WebGLBackend.js +84 -25
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +138 -8
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +4 -2
- package/src/renderers/webgpu/WebGPUBackend.js +480 -169
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +164 -7
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +98 -38
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -68
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +164 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +158 -95
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +297 -141
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +33 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +38 -3
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/inspector/extensions/extensions.json +0 -6
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -293
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -349
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SkinningNode.js +0 -328
package/examples/jsm/Addons.js
CHANGED
|
@@ -46,6 +46,7 @@ export * from './exporters/USDZExporter.js';
|
|
|
46
46
|
export * from './geometries/BoxLineGeometry.js';
|
|
47
47
|
export * from './geometries/ConvexGeometry.js';
|
|
48
48
|
export * from './geometries/DecalGeometry.js';
|
|
49
|
+
export * from './geometries/LoftGeometry.js';
|
|
49
50
|
export * from './geometries/ParametricFunctions.js';
|
|
50
51
|
export * from './geometries/ParametricGeometry.js';
|
|
51
52
|
export * from './geometries/RoundedBoxGeometry.js';
|
|
@@ -149,6 +150,7 @@ export * from './misc/MorphAnimMesh.js';
|
|
|
149
150
|
export * from './misc/MorphBlendMesh.js';
|
|
150
151
|
export * from './misc/ProgressiveLightMap.js';
|
|
151
152
|
export * from './misc/RollerCoaster.js';
|
|
153
|
+
export * from './misc/TileCreasedNormalsPlugin.js';
|
|
152
154
|
export * from './misc/TubePainter.js';
|
|
153
155
|
export * from './misc/Volume.js';
|
|
154
156
|
export * from './misc/VolumeSlice.js';
|
|
@@ -284,6 +286,7 @@ export * from './webxr/OculusHandModel.js';
|
|
|
284
286
|
export * from './webxr/OculusHandPointerModel.js';
|
|
285
287
|
export * from './webxr/Text2D.js';
|
|
286
288
|
export * from './webxr/VRButton.js';
|
|
289
|
+
export * from './webxr/WebGLXRFallback.js';
|
|
287
290
|
export * from './webxr/XRButton.js';
|
|
288
291
|
export * from './webxr/XRControllerModelFactory.js';
|
|
289
292
|
export * from './webxr/XREstimatedLight.js';
|
|
@@ -265,6 +265,10 @@ class ArcballControls extends Controls {
|
|
|
265
265
|
* performed trying to maintain the same visible portion given by initial near and far
|
|
266
266
|
* values. Only works with perspective cameras.
|
|
267
267
|
*
|
|
268
|
+
* This feature only works as expected if the camera's initial state (position, near and far values)
|
|
269
|
+
* is correctly configured before creating the controls. Otherwise {@link ArcballControls#setCamera}
|
|
270
|
+
* must be called by the application.
|
|
271
|
+
*
|
|
268
272
|
* @type {boolean}
|
|
269
273
|
* @default false
|
|
270
274
|
*/
|
|
@@ -2008,8 +2012,8 @@ class ArcballControls extends Controls {
|
|
|
2008
2012
|
const gizmoZ = new Line( curveGeometry, curveMaterialZ );
|
|
2009
2013
|
|
|
2010
2014
|
const rotation = Math.PI * 0.5;
|
|
2011
|
-
gizmoX.rotation.
|
|
2012
|
-
gizmoY.rotation.
|
|
2015
|
+
gizmoX.rotation.y = rotation;
|
|
2016
|
+
gizmoY.rotation.x = rotation;
|
|
2013
2017
|
|
|
2014
2018
|
|
|
2015
2019
|
//setting state
|
|
@@ -9,6 +9,7 @@ const _lookDirection = new Vector3();
|
|
|
9
9
|
const _spherical = new Spherical();
|
|
10
10
|
const _target = new Vector3();
|
|
11
11
|
const _targetPosition = new Vector3();
|
|
12
|
+
const _targetVelocity = new Vector3();
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* This class is an alternative implementation of {@link FlyControls}.
|
|
@@ -44,6 +45,15 @@ class FirstPersonControls extends Controls {
|
|
|
44
45
|
*/
|
|
45
46
|
this.lookSpeed = 0.005;
|
|
46
47
|
|
|
48
|
+
/**
|
|
49
|
+
* How quickly the movement and look velocity catches up to the input. Lower
|
|
50
|
+
* values feel heavier (more inertia), `1` disables damping.
|
|
51
|
+
*
|
|
52
|
+
* @type {number}
|
|
53
|
+
* @default 0.1
|
|
54
|
+
*/
|
|
55
|
+
this.dampingFactor = 0.1;
|
|
56
|
+
|
|
47
57
|
/**
|
|
48
58
|
* Whether it's possible to vertically look around or not.
|
|
49
59
|
*
|
|
@@ -128,7 +138,7 @@ class FirstPersonControls extends Controls {
|
|
|
128
138
|
|
|
129
139
|
// internals
|
|
130
140
|
|
|
131
|
-
this.
|
|
141
|
+
this._velocity = new Vector3();
|
|
132
142
|
|
|
133
143
|
this._pointerX = 0;
|
|
134
144
|
this._pointerY = 0;
|
|
@@ -138,14 +148,23 @@ class FirstPersonControls extends Controls {
|
|
|
138
148
|
|
|
139
149
|
this._pointerCount = 0;
|
|
140
150
|
|
|
141
|
-
|
|
142
|
-
|
|
151
|
+
// forward / backward come from keys and the pointer, tracked per source so they don't
|
|
152
|
+
// clobber: while a forward / backward key is held, a click only looks
|
|
153
|
+
this._keyForward = false;
|
|
154
|
+
this._keyBackward = false;
|
|
155
|
+
this._pointerForward = false;
|
|
156
|
+
this._pointerBackward = false;
|
|
143
157
|
this._moveLeft = false;
|
|
144
158
|
this._moveRight = false;
|
|
159
|
+
this._moveUp = false;
|
|
160
|
+
this._moveDown = false;
|
|
145
161
|
|
|
146
162
|
this._lat = 0;
|
|
147
163
|
this._lon = 0;
|
|
148
164
|
|
|
165
|
+
this._lonVelocity = 0;
|
|
166
|
+
this._latVelocity = 0;
|
|
167
|
+
|
|
149
168
|
// event listeners
|
|
150
169
|
|
|
151
170
|
this._onPointerMove = onPointerMove.bind( this );
|
|
@@ -174,11 +193,15 @@ class FirstPersonControls extends Controls {
|
|
|
174
193
|
window.addEventListener( 'keydown', this._onKeyDown );
|
|
175
194
|
window.addEventListener( 'keyup', this._onKeyUp );
|
|
176
195
|
|
|
177
|
-
this.domElement.addEventListener( 'pointermove', this._onPointerMove );
|
|
178
196
|
this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
|
|
179
|
-
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
180
197
|
this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
|
|
181
198
|
|
|
199
|
+
const { ownerDocument } = this.domElement;
|
|
200
|
+
|
|
201
|
+
ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
|
|
202
|
+
ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
|
|
203
|
+
ownerDocument.addEventListener( 'pointercancel', this._onPointerUp );
|
|
204
|
+
|
|
182
205
|
this.domElement.style.touchAction = 'none'; // Disable touch scroll
|
|
183
206
|
|
|
184
207
|
}
|
|
@@ -188,11 +211,15 @@ class FirstPersonControls extends Controls {
|
|
|
188
211
|
window.removeEventListener( 'keydown', this._onKeyDown );
|
|
189
212
|
window.removeEventListener( 'keyup', this._onKeyUp );
|
|
190
213
|
|
|
191
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
192
214
|
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
193
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
194
215
|
this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
|
|
195
216
|
|
|
217
|
+
const { ownerDocument } = this.domElement;
|
|
218
|
+
|
|
219
|
+
ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
220
|
+
ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
221
|
+
ownerDocument.removeEventListener( 'pointercancel', this._onPointerUp );
|
|
222
|
+
|
|
196
223
|
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
197
224
|
|
|
198
225
|
}
|
|
@@ -235,31 +262,35 @@ class FirstPersonControls extends Controls {
|
|
|
235
262
|
|
|
236
263
|
if ( this.enabled === false ) return;
|
|
237
264
|
|
|
238
|
-
|
|
265
|
+
const moveForward = this._keyForward || this._pointerForward;
|
|
266
|
+
const moveBackward = this._keyBackward || this._pointerBackward;
|
|
239
267
|
|
|
240
|
-
|
|
241
|
-
const heightDelta = y - this.heightMin;
|
|
268
|
+
const forward = moveForward || ( this.autoForward && ! moveBackward );
|
|
242
269
|
|
|
243
|
-
|
|
270
|
+
// target velocity in the object's local space
|
|
244
271
|
|
|
245
|
-
|
|
272
|
+
_targetVelocity.set(
|
|
273
|
+
( this._moveRight ? 1 : 0 ) - ( this._moveLeft ? 1 : 0 ),
|
|
274
|
+
( this._moveUp ? 1 : 0 ) - ( this._moveDown ? 1 : 0 ),
|
|
275
|
+
( moveBackward ? 1 : 0 ) - ( forward ? 1 : 0 )
|
|
276
|
+
).multiplyScalar( this.movementSpeed );
|
|
246
277
|
|
|
247
|
-
|
|
278
|
+
// faster forward movement the higher the camera is
|
|
248
279
|
|
|
249
|
-
|
|
280
|
+
if ( forward && this.heightSpeed ) {
|
|
250
281
|
|
|
251
|
-
|
|
282
|
+
const y = MathUtils.clamp( this.object.position.y, this.heightMin, this.heightMax );
|
|
283
|
+
_targetVelocity.z -= ( y - this.heightMin ) * this.heightCoef;
|
|
252
284
|
|
|
253
|
-
|
|
254
|
-
if ( this._moveBackward ) this.object.translateZ( actualMoveSpeed );
|
|
285
|
+
}
|
|
255
286
|
|
|
256
|
-
|
|
257
|
-
if ( this._moveRight ) this.object.translateX( actualMoveSpeed );
|
|
287
|
+
// ease toward the target velocity for smooth acceleration and deceleration
|
|
258
288
|
|
|
259
|
-
|
|
260
|
-
if ( this._moveDown ) this.object.translateY( - actualMoveSpeed );
|
|
289
|
+
this._velocity.lerp( _targetVelocity, this.dampingFactor );
|
|
261
290
|
|
|
262
|
-
|
|
291
|
+
this.object.translateX( this._velocity.x * delta );
|
|
292
|
+
this.object.translateY( this._velocity.y * delta );
|
|
293
|
+
this.object.translateZ( this._velocity.z * delta );
|
|
263
294
|
|
|
264
295
|
let verticalLookRatio = 1;
|
|
265
296
|
|
|
@@ -269,12 +300,16 @@ class FirstPersonControls extends Controls {
|
|
|
269
300
|
|
|
270
301
|
}
|
|
271
302
|
|
|
272
|
-
|
|
303
|
+
// target look velocity, zero when not dragging so the view eases to a stop
|
|
273
304
|
|
|
274
|
-
|
|
275
|
-
|
|
305
|
+
const targetLon = this.mouseDragOn ? - this._pointerX * this.lookSpeed : 0;
|
|
306
|
+
const targetLat = ( this.mouseDragOn && this.lookVertical ) ? - this._pointerY * this.lookSpeed * verticalLookRatio : 0;
|
|
276
307
|
|
|
277
|
-
|
|
308
|
+
this._lonVelocity = MathUtils.lerp( this._lonVelocity, targetLon, this.dampingFactor );
|
|
309
|
+
this._latVelocity = MathUtils.lerp( this._latVelocity, targetLat, this.dampingFactor );
|
|
310
|
+
|
|
311
|
+
this._lon += this._lonVelocity * delta;
|
|
312
|
+
this._lat += this._latVelocity * delta;
|
|
278
313
|
|
|
279
314
|
this._lat = Math.max( - 85, Math.min( 85, this._lat ) );
|
|
280
315
|
|
|
@@ -332,15 +367,15 @@ function onPointerDown( event ) {
|
|
|
332
367
|
|
|
333
368
|
if ( event.pointerType === 'touch' ) {
|
|
334
369
|
|
|
335
|
-
this.
|
|
336
|
-
this.
|
|
370
|
+
this._pointerForward = this._pointerCount === 1;
|
|
371
|
+
this._pointerBackward = this._pointerCount >= 2;
|
|
337
372
|
|
|
338
373
|
} else {
|
|
339
374
|
|
|
340
375
|
switch ( event.button ) {
|
|
341
376
|
|
|
342
|
-
case 0: this.
|
|
343
|
-
case 2: this.
|
|
377
|
+
case 0: if ( ! this._keyForward && ! this._keyBackward ) this._pointerForward = true; break;
|
|
378
|
+
case 2: if ( ! this._keyForward && ! this._keyBackward ) this._pointerBackward = true; break;
|
|
344
379
|
|
|
345
380
|
}
|
|
346
381
|
|
|
@@ -358,21 +393,23 @@ function onPointerDown( event ) {
|
|
|
358
393
|
|
|
359
394
|
function onPointerUp( event ) {
|
|
360
395
|
|
|
396
|
+
if ( this.mouseDragOn === false ) return;
|
|
397
|
+
|
|
361
398
|
this.domElement.releasePointerCapture( event.pointerId );
|
|
362
399
|
|
|
363
400
|
this._pointerCount --;
|
|
364
401
|
|
|
365
402
|
if ( event.pointerType === 'touch' ) {
|
|
366
403
|
|
|
367
|
-
this.
|
|
368
|
-
this.
|
|
404
|
+
this._pointerForward = this._pointerCount === 1;
|
|
405
|
+
this._pointerBackward = false;
|
|
369
406
|
|
|
370
407
|
} else {
|
|
371
408
|
|
|
372
409
|
switch ( event.button ) {
|
|
373
410
|
|
|
374
|
-
case 0: this.
|
|
375
|
-
case 2: this.
|
|
411
|
+
case 0: this._pointerForward = false; break;
|
|
412
|
+
case 2: this._pointerBackward = false; break;
|
|
376
413
|
|
|
377
414
|
}
|
|
378
415
|
|
|
@@ -399,19 +436,19 @@ function onKeyDown( event ) {
|
|
|
399
436
|
switch ( event.code ) {
|
|
400
437
|
|
|
401
438
|
case 'ArrowUp':
|
|
402
|
-
case 'KeyW': this.
|
|
439
|
+
case 'KeyW': this._keyForward = true; break;
|
|
403
440
|
|
|
404
441
|
case 'ArrowLeft':
|
|
405
442
|
case 'KeyA': this._moveLeft = true; break;
|
|
406
443
|
|
|
407
444
|
case 'ArrowDown':
|
|
408
|
-
case 'KeyS': this.
|
|
445
|
+
case 'KeyS': this._keyBackward = true; break;
|
|
409
446
|
|
|
410
447
|
case 'ArrowRight':
|
|
411
448
|
case 'KeyD': this._moveRight = true; break;
|
|
412
449
|
|
|
413
|
-
case '
|
|
414
|
-
case '
|
|
450
|
+
case 'KeyE': this._moveUp = true; break;
|
|
451
|
+
case 'KeyQ': this._moveDown = true; break;
|
|
415
452
|
|
|
416
453
|
}
|
|
417
454
|
|
|
@@ -422,19 +459,19 @@ function onKeyUp( event ) {
|
|
|
422
459
|
switch ( event.code ) {
|
|
423
460
|
|
|
424
461
|
case 'ArrowUp':
|
|
425
|
-
case 'KeyW': this.
|
|
462
|
+
case 'KeyW': this._keyForward = false; break;
|
|
426
463
|
|
|
427
464
|
case 'ArrowLeft':
|
|
428
465
|
case 'KeyA': this._moveLeft = false; break;
|
|
429
466
|
|
|
430
467
|
case 'ArrowDown':
|
|
431
|
-
case 'KeyS': this.
|
|
468
|
+
case 'KeyS': this._keyBackward = false; break;
|
|
432
469
|
|
|
433
470
|
case 'ArrowRight':
|
|
434
471
|
case 'KeyD': this._moveRight = false; break;
|
|
435
472
|
|
|
436
|
-
case '
|
|
437
|
-
case '
|
|
473
|
+
case 'KeyE': this._moveUp = false; break;
|
|
474
|
+
case 'KeyQ': this._moveDown = false; break;
|
|
438
475
|
|
|
439
476
|
}
|
|
440
477
|
|
|
@@ -214,6 +214,17 @@ class TransformControls extends Controls {
|
|
|
214
214
|
*/
|
|
215
215
|
defineProperty( 'size', 1 );
|
|
216
216
|
|
|
217
|
+
/**
|
|
218
|
+
* The viewport rectangle, in logical (CSS) pixels with the origin at the lower-left
|
|
219
|
+
* of the canvas. Set this when the renderer uses a sub-canvas viewport so pointer
|
|
220
|
+
* coordinates map to the correct region. If `null`, the full canvas is used.
|
|
221
|
+
*
|
|
222
|
+
* @name TransformControls#viewport
|
|
223
|
+
* @type {?Vector4}
|
|
224
|
+
* @default null
|
|
225
|
+
*/
|
|
226
|
+
this.viewport = null;
|
|
227
|
+
|
|
217
228
|
/**
|
|
218
229
|
* Whether dragging is currently performed or not.
|
|
219
230
|
*
|
|
@@ -278,6 +289,24 @@ class TransformControls extends Controls {
|
|
|
278
289
|
*/
|
|
279
290
|
defineProperty( 'showXZ', true );
|
|
280
291
|
|
|
292
|
+
/**
|
|
293
|
+
* Whether the xyze rotation helper should be visible or not.
|
|
294
|
+
*
|
|
295
|
+
* @name TransformControls#showXYZE
|
|
296
|
+
* @type {boolean}
|
|
297
|
+
* @default true
|
|
298
|
+
*/
|
|
299
|
+
defineProperty( 'showXYZE', true );
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Whether the e rotation helper should be visible or not.
|
|
303
|
+
*
|
|
304
|
+
* @name TransformControls#showE
|
|
305
|
+
* @type {boolean}
|
|
306
|
+
* @default true
|
|
307
|
+
*/
|
|
308
|
+
defineProperty( 'showE', true );
|
|
309
|
+
|
|
281
310
|
/**
|
|
282
311
|
* The minimum allowed X position during translation.
|
|
283
312
|
*
|
|
@@ -567,35 +596,27 @@ class TransformControls extends Controls {
|
|
|
567
596
|
|
|
568
597
|
if ( space === 'world' ) {
|
|
569
598
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
object.position.add( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) );
|
|
573
|
-
|
|
574
|
-
}
|
|
599
|
+
object.getWorldPosition( _tempVector );
|
|
575
600
|
|
|
576
601
|
if ( axis.search( 'X' ) !== - 1 ) {
|
|
577
602
|
|
|
578
|
-
|
|
603
|
+
_tempVector.x = Math.round( _tempVector.x / this.translationSnap ) * this.translationSnap;
|
|
579
604
|
|
|
580
605
|
}
|
|
581
606
|
|
|
582
607
|
if ( axis.search( 'Y' ) !== - 1 ) {
|
|
583
608
|
|
|
584
|
-
|
|
609
|
+
_tempVector.y = Math.round( _tempVector.y / this.translationSnap ) * this.translationSnap;
|
|
585
610
|
|
|
586
611
|
}
|
|
587
612
|
|
|
588
613
|
if ( axis.search( 'Z' ) !== - 1 ) {
|
|
589
614
|
|
|
590
|
-
|
|
615
|
+
_tempVector.z = Math.round( _tempVector.z / this.translationSnap ) * this.translationSnap;
|
|
591
616
|
|
|
592
617
|
}
|
|
593
618
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
object.position.sub( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) );
|
|
597
|
-
|
|
598
|
-
}
|
|
619
|
+
object.position.copy( object.parent.worldToLocal( _tempVector ) );
|
|
599
620
|
|
|
600
621
|
}
|
|
601
622
|
|
|
@@ -966,10 +987,29 @@ function getPointer( event ) {
|
|
|
966
987
|
} else {
|
|
967
988
|
|
|
968
989
|
const rect = this.domElement.getBoundingClientRect();
|
|
990
|
+
const viewport = this.viewport;
|
|
991
|
+
|
|
992
|
+
let originX, originY, regionWidth, regionHeight;
|
|
993
|
+
|
|
994
|
+
if ( viewport !== null ) {
|
|
995
|
+
|
|
996
|
+
originX = viewport.x;
|
|
997
|
+
originY = rect.height - viewport.y - viewport.w;
|
|
998
|
+
regionWidth = viewport.z;
|
|
999
|
+
regionHeight = viewport.w;
|
|
1000
|
+
|
|
1001
|
+
} else {
|
|
1002
|
+
|
|
1003
|
+
originX = 0;
|
|
1004
|
+
originY = 0;
|
|
1005
|
+
regionWidth = rect.width;
|
|
1006
|
+
regionHeight = rect.height;
|
|
1007
|
+
|
|
1008
|
+
}
|
|
969
1009
|
|
|
970
1010
|
return {
|
|
971
|
-
x: ( event.clientX - rect.left ) /
|
|
972
|
-
y: - ( event.clientY - rect.top ) /
|
|
1011
|
+
x: ( event.clientX - rect.left - originX ) / regionWidth * 2 - 1,
|
|
1012
|
+
y: - ( event.clientY - rect.top - originY ) / regionHeight * 2 + 1,
|
|
973
1013
|
button: event.button
|
|
974
1014
|
};
|
|
975
1015
|
|
|
@@ -1120,6 +1160,15 @@ class TransformControlsRoot extends Object3D {
|
|
|
1120
1160
|
|
|
1121
1161
|
}
|
|
1122
1162
|
|
|
1163
|
+
// Cancel out the parent's transform so the gizmo stays world-aligned.
|
|
1164
|
+
|
|
1165
|
+
if ( this.parent ) {
|
|
1166
|
+
|
|
1167
|
+
_tempMatrix.copy( this.parent.matrixWorld ).invert();
|
|
1168
|
+
_tempMatrix.decompose( this.position, this.quaternion, this.scale );
|
|
1169
|
+
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1123
1172
|
super.updateMatrixWorld( force );
|
|
1124
1173
|
|
|
1125
1174
|
}
|
|
@@ -1816,6 +1865,10 @@ class TransformControlsGizmo extends Object3D {
|
|
|
1816
1865
|
handle.visible = handle.visible && ( handle.name.indexOf( 'YZ' ) === - 1 || this.showYZ );
|
|
1817
1866
|
handle.visible = handle.visible && ( handle.name.indexOf( 'XZ' ) === - 1 || this.showXZ );
|
|
1818
1867
|
|
|
1868
|
+
// Hide disabled rotation helpers
|
|
1869
|
+
handle.visible = handle.visible && ( handle.name !== 'E' || this.showE );
|
|
1870
|
+
handle.visible = handle.visible && ( handle.name !== 'XYZE' || this.showXYZE );
|
|
1871
|
+
|
|
1819
1872
|
// highlight selected axis
|
|
1820
1873
|
|
|
1821
1874
|
handle.material._color = handle.material._color || handle.material.color.clone();
|
|
@@ -27,6 +27,13 @@ class CSMFrustum {
|
|
|
27
27
|
*/
|
|
28
28
|
this.zNear = data.webGL === true ? - 1 : 0;
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The zFar value.
|
|
32
|
+
*
|
|
33
|
+
* @type {number}
|
|
34
|
+
*/
|
|
35
|
+
this.zFar = 1;
|
|
36
|
+
|
|
30
37
|
/**
|
|
31
38
|
* An object representing the vertices of the near and
|
|
32
39
|
* far plane in view space.
|
|
@@ -54,6 +61,15 @@ class CSMFrustum {
|
|
|
54
61
|
|
|
55
62
|
}
|
|
56
63
|
|
|
64
|
+
// In case of reversed depth buffer, zNear and zFar must be 1 and 0
|
|
65
|
+
// respectively regardless of the coordinate system.
|
|
66
|
+
if ( data.reversedDepth === true ) {
|
|
67
|
+
|
|
68
|
+
this.zNear = 1;
|
|
69
|
+
this.zFar = 0;
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
57
73
|
}
|
|
58
74
|
|
|
59
75
|
/**
|
|
@@ -66,6 +82,7 @@ class CSMFrustum {
|
|
|
66
82
|
setFromProjectionMatrix( projectionMatrix, maxFar ) {
|
|
67
83
|
|
|
68
84
|
const zNear = this.zNear;
|
|
85
|
+
const zFar = this.zFar;
|
|
69
86
|
const isOrthographic = projectionMatrix.elements[ 2 * 4 + 3 ] === 0;
|
|
70
87
|
|
|
71
88
|
inverseProjectionMatrix.copy( projectionMatrix ).invert();
|
|
@@ -85,10 +102,10 @@ class CSMFrustum {
|
|
|
85
102
|
|
|
86
103
|
} );
|
|
87
104
|
|
|
88
|
-
this.vertices.far[ 0 ].set( 1, 1,
|
|
89
|
-
this.vertices.far[ 1 ].set( 1, - 1,
|
|
90
|
-
this.vertices.far[ 2 ].set( - 1, - 1,
|
|
91
|
-
this.vertices.far[ 3 ].set( - 1, 1,
|
|
105
|
+
this.vertices.far[ 0 ].set( 1, 1, zFar );
|
|
106
|
+
this.vertices.far[ 1 ].set( 1, - 1, zFar );
|
|
107
|
+
this.vertices.far[ 2 ].set( - 1, - 1, zFar );
|
|
108
|
+
this.vertices.far[ 3 ].set( - 1, 1, zFar );
|
|
92
109
|
this.vertices.far.forEach( function ( v ) {
|
|
93
110
|
|
|
94
111
|
v.applyMatrix4( inverseProjectionMatrix );
|
|
@@ -128,6 +145,9 @@ class CSMFrustum {
|
|
|
128
145
|
|
|
129
146
|
target.length = breaks.length;
|
|
130
147
|
|
|
148
|
+
const near = this.vertices.near[ 0 ].z;
|
|
149
|
+
const far = this.vertices.far[ 0 ].z;
|
|
150
|
+
|
|
131
151
|
for ( let i = 0; i < breaks.length; i ++ ) {
|
|
132
152
|
|
|
133
153
|
const cascade = target[ i ];
|
|
@@ -142,9 +162,11 @@ class CSMFrustum {
|
|
|
142
162
|
|
|
143
163
|
} else {
|
|
144
164
|
|
|
165
|
+
const alpha = ( breaks[ i - 1 ] * far - near ) / ( far - near );
|
|
166
|
+
|
|
145
167
|
for ( let j = 0; j < 4; j ++ ) {
|
|
146
168
|
|
|
147
|
-
cascade.vertices.near[ j ].lerpVectors( this.vertices.near[ j ], this.vertices.far[ j ],
|
|
169
|
+
cascade.vertices.near[ j ].lerpVectors( this.vertices.near[ j ], this.vertices.far[ j ], alpha );
|
|
148
170
|
|
|
149
171
|
}
|
|
150
172
|
|
|
@@ -160,9 +182,11 @@ class CSMFrustum {
|
|
|
160
182
|
|
|
161
183
|
} else {
|
|
162
184
|
|
|
185
|
+
const alpha = ( breaks[ i ] * far - near ) / ( far - near );
|
|
186
|
+
|
|
163
187
|
for ( let j = 0; j < 4; j ++ ) {
|
|
164
188
|
|
|
165
|
-
cascade.vertices.far[ j ].lerpVectors( this.vertices.near[ j ], this.vertices.far[ j ],
|
|
189
|
+
cascade.vertices.far[ j ].lerpVectors( this.vertices.near[ j ], this.vertices.far[ j ], alpha );
|
|
166
190
|
|
|
167
191
|
}
|
|
168
192
|
|
|
@@ -202,6 +226,7 @@ class CSMFrustum {
|
|
|
202
226
|
*
|
|
203
227
|
* @typedef {Object} CSMFrustum~Data
|
|
204
228
|
* @property {boolean} [webGL] - Whether this CSM frustum is used with WebGL or WebGPU.
|
|
229
|
+
* @property {boolean} [reversedDepth] - Whether reversed depth buffer is enabled.
|
|
205
230
|
* @property {Matrix4} [projectionMatrix] - A projection matrix usually of the scene's camera.
|
|
206
231
|
* @property {number} [maxFar] - The maximum far value.
|
|
207
232
|
**/
|
|
@@ -159,7 +159,10 @@ class CSMShadowNode extends ShadowBaseNode {
|
|
|
159
159
|
|
|
160
160
|
this.camera = camera;
|
|
161
161
|
|
|
162
|
-
const data = {
|
|
162
|
+
const data = {
|
|
163
|
+
webGL: renderer.coordinateSystem === WebGLCoordinateSystem,
|
|
164
|
+
reversedDepth: renderer.reversedDepthBuffer
|
|
165
|
+
};
|
|
163
166
|
this.mainFrustum = new CSMFrustum( data );
|
|
164
167
|
|
|
165
168
|
const light = this.light;
|
|
@@ -119,6 +119,19 @@ class AsciiEffect {
|
|
|
119
119
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
const htmlEscapes = {
|
|
123
|
+
'&': '&',
|
|
124
|
+
'<': '<',
|
|
125
|
+
'>': '>',
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const reUnescapedHtml = /[&<>]/g;
|
|
129
|
+
|
|
130
|
+
function escapeHTML( s ) {
|
|
131
|
+
|
|
132
|
+
return s.replace( reUnescapedHtml, ( ch ) => htmlEscapes[ ch ] );
|
|
133
|
+
|
|
134
|
+
}
|
|
122
135
|
|
|
123
136
|
const strFont = 'courier new, monospace';
|
|
124
137
|
|
|
@@ -141,7 +154,7 @@ class AsciiEffect {
|
|
|
141
154
|
let aCharList;
|
|
142
155
|
if ( charSet ) {
|
|
143
156
|
|
|
144
|
-
aCharList = ( charSet ).split( '' );
|
|
157
|
+
aCharList = ( charSet ).split( '' ).map( escapeHTML );
|
|
145
158
|
|
|
146
159
|
} else {
|
|
147
160
|
|
|
@@ -15,9 +15,15 @@ import { Color, ColorManagement, SRGBColorSpace } from 'three';
|
|
|
15
15
|
* inside of a glTF file. A normal glTF file can be converted to a Draco-compressed glTF file
|
|
16
16
|
* using [glTF-Pipeline](https://github.com/AnalyticalGraphicsInc/gltf-pipeline).
|
|
17
17
|
*
|
|
18
|
+
* The exporter requires the Draco encoder to be loaded as a global script in advance:
|
|
19
|
+
*
|
|
20
|
+
* ```html
|
|
21
|
+
* <script src="https://cdn.jsdelivr.net/gh/google/draco@1.5.7/javascript/draco_encoder.js"></script>
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
18
24
|
* ```js
|
|
19
25
|
* const exporter = new DRACOExporter();
|
|
20
|
-
* const data = exporter.
|
|
26
|
+
* const data = await exporter.parseAsync( mesh, options );
|
|
21
27
|
* ```
|
|
22
28
|
*
|
|
23
29
|
* @three_import import { DRACOExporter } from 'three/addons/exporters/DRACOExporter.js';
|
|
@@ -27,11 +33,12 @@ class DRACOExporter {
|
|
|
27
33
|
/**
|
|
28
34
|
* Parses the given mesh or point cloud and generates the Draco output.
|
|
29
35
|
*
|
|
36
|
+
* @async
|
|
30
37
|
* @param {(Mesh|Points)} object - The mesh or point cloud to export.
|
|
31
38
|
* @param {DRACOExporter~Options} options - The export options.
|
|
32
|
-
* @return {Int8Array}
|
|
39
|
+
* @return {Promise<Int8Array>} A Promise that resolves with the exported Draco.
|
|
33
40
|
*/
|
|
34
|
-
|
|
41
|
+
async parseAsync( object, options = {} ) {
|
|
35
42
|
|
|
36
43
|
options = Object.assign( {
|
|
37
44
|
decodeSpeed: 5,
|
|
@@ -43,7 +50,7 @@ class DRACOExporter {
|
|
|
43
50
|
exportColor: false,
|
|
44
51
|
}, options );
|
|
45
52
|
|
|
46
|
-
if ( DracoEncoderModule === undefined ) {
|
|
53
|
+
if ( typeof DracoEncoderModule === 'undefined' ) {
|
|
47
54
|
|
|
48
55
|
throw new Error( 'THREE.DRACOExporter: required the draco_encoder to work.' );
|
|
49
56
|
|
|
@@ -51,7 +58,12 @@ class DRACOExporter {
|
|
|
51
58
|
|
|
52
59
|
const geometry = object.geometry;
|
|
53
60
|
|
|
54
|
-
|
|
61
|
+
let dracoEncoder = DracoEncoderModule();
|
|
62
|
+
|
|
63
|
+
// older encoder builds expose the module synchronously, newer builds return a promise
|
|
64
|
+
|
|
65
|
+
if ( dracoEncoder.Encoder === undefined ) dracoEncoder = await dracoEncoder;
|
|
66
|
+
|
|
55
67
|
const encoder = new dracoEncoder.Encoder();
|
|
56
68
|
let builder;
|
|
57
69
|
let dracoObject;
|
|
@@ -146,7 +158,7 @@ class DRACOExporter {
|
|
|
146
158
|
|
|
147
159
|
} else {
|
|
148
160
|
|
|
149
|
-
throw new Error( 'DRACOExporter: Unsupported object type.' );
|
|
161
|
+
throw new Error( 'THREE.DRACOExporter: Unsupported object type.' );
|
|
150
162
|
|
|
151
163
|
}
|
|
152
164
|
|
|
@@ -222,6 +234,15 @@ class DRACOExporter {
|
|
|
222
234
|
|
|
223
235
|
}
|
|
224
236
|
|
|
237
|
+
/**
|
|
238
|
+
* @deprecated Use {@link DRACOExporter#parseAsync} instead.
|
|
239
|
+
*/
|
|
240
|
+
parse() {
|
|
241
|
+
|
|
242
|
+
throw new Error( 'THREE.DRACOExporter: parse() has been replaced by parseAsync().' );
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
|
|
225
246
|
}
|
|
226
247
|
|
|
227
248
|
function createVertexColorSRGBArray( attribute ) {
|