super-three 0.141.0 → 0.144.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/README.md +8 -8
- package/build/three.cjs +1558 -1034
- package/build/three.js +1558 -1034
- package/build/three.min.js +1 -1
- package/build/three.module.js +2012 -1243
- package/examples/js/animation/MMDPhysics.js +1 -16
- package/examples/js/controls/ArcballControls.js +16 -3
- package/examples/js/controls/FirstPersonControls.js +0 -7
- package/examples/js/controls/FlyControls.js +0 -8
- package/examples/js/controls/OrbitControls.js +0 -4
- package/examples/js/controls/PointerLockControls.js +0 -8
- package/examples/js/controls/TrackballControls.js +0 -2
- package/examples/js/controls/TransformControls.js +20 -16
- package/examples/js/effects/AnaglyphEffect.js +2 -2
- package/examples/js/effects/OutlineEffect.js +4 -24
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/js/effects/PeppersGhostEffect.js +2 -2
- package/examples/js/effects/StereoEffect.js +2 -2
- package/examples/js/environments/RoomEnvironment.js +22 -0
- package/examples/js/exporters/ColladaExporter.js +4 -13
- package/examples/js/exporters/DRACOExporter.js +0 -12
- package/examples/js/exporters/GLTFExporter.js +28 -29
- package/examples/js/exporters/OBJExporter.js +2 -23
- package/examples/js/exporters/PLYExporter.js +12 -24
- package/examples/js/exporters/STLExporter.js +0 -7
- package/examples/js/exporters/USDZExporter.js +6 -0
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/ParametricGeometry.js +1 -8
- package/examples/js/interactive/SelectionHelper.js +2 -0
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/loaders/ColladaLoader.js +1 -0
- package/examples/js/loaders/DRACOLoader.js +2 -25
- package/examples/js/loaders/EXRLoader.js +2 -13
- package/examples/js/loaders/FBXLoader.js +10 -3
- package/examples/js/loaders/FontLoader.js +3 -16
- package/examples/js/loaders/GLTFLoader.js +52 -36
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
- package/examples/js/loaders/LDrawLoader.js +139 -74
- package/examples/js/loaders/OBJLoader.js +7 -13
- package/examples/js/loaders/PCDLoader.js +59 -14
- package/examples/js/loaders/PLYLoader.js +3 -3
- package/examples/js/loaders/SVGLoader.js +4 -3
- package/examples/js/loaders/TIFFLoader.js +31 -0
- package/examples/js/loaders/VRMLLoader.js +33 -24
- package/examples/js/loaders/VTKLoader.js +1 -1
- package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
- package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
- package/examples/js/materials/MeshGouraudMaterial.js +385 -0
- package/examples/js/math/ColorConverter.js +0 -50
- package/examples/js/misc/GPUComputationRenderer.js +23 -0
- package/examples/js/misc/Volume.js +198 -190
- package/examples/js/misc/VolumeSlice.js +90 -88
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/GroundProjectedEnv.js +193 -0
- package/examples/js/objects/Reflector.js +9 -2
- package/examples/js/objects/ReflectorForSSRPass.js +3 -4
- package/examples/js/objects/Refractor.js +10 -4
- package/examples/js/objects/ShadowMesh.js +5 -1
- package/examples/js/postprocessing/OutlinePass.js +5 -3
- package/examples/js/renderers/CSS2DRenderer.js +2 -2
- package/examples/js/renderers/CSS3DRenderer.js +2 -2
- package/examples/js/renderers/Projector.js +2 -23
- package/examples/js/shaders/LuminosityShader.js +1 -1
- package/examples/js/shaders/MMDToonShader.js +6 -2
- package/examples/js/shaders/ToneMapShader.js +1 -1
- package/examples/js/utils/BufferGeometryUtils.js +1 -1
- package/examples/js/utils/GeometryUtils.js +2 -18
- package/examples/js/utils/PackedPhongMaterial.js +1 -1
- package/examples/js/utils/SceneUtils.js +0 -16
- package/examples/jsm/animation/MMDPhysics.js +3 -22
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +0 -7
- package/examples/jsm/controls/FlyControls.js +0 -7
- package/examples/jsm/controls/OrbitControls.js +0 -5
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +0 -3
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -31
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +14 -3
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/interactive/HTMLMesh.js +9 -9
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +10 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +52 -36
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +192 -30
- package/examples/jsm/loaders/LDrawLoader.js +135 -74
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +59 -13
- package/examples/jsm/loaders/PLYLoader.js +3 -3
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +4 -3
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +393 -0
- package/examples/jsm/loaders/VRMLLoader.js +23 -25
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +43 -13
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
- package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +14 -12
- package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
- package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
- package/examples/jsm/nodes/materials/Materials.js +13 -25
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -12
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
- package/examples/jsm/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- package/examples/jsm/postprocessing/OutlinePass.js +5 -3
- package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -2
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +1 -21
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/package.json +18 -14
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +3 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +24 -5
- package/src/cameras/CubeCamera.js +0 -7
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +56 -7
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +2 -1
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +1 -0
- package/src/helpers/HemisphereLightHelper.js +1 -0
- package/src/helpers/PlaneHelper.js +6 -9
- package/src/helpers/PolarGridHelper.js +18 -14
- package/src/helpers/SpotLightHelper.js +1 -0
- package/src/lights/SpotLight.js +2 -0
- package/src/loaders/FileLoader.js +12 -1
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +4 -41
- package/src/materials/Material.js +1 -33
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +3 -13
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +1 -7
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- package/src/renderers/WebGLRenderer.js +84 -8
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib.js +31 -31
- package/src/renderers/shaders/UniformsLib.js +12 -11
- package/src/renderers/shaders/UniformsUtils.js +14 -0
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +37 -13
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +10 -15
- package/src/renderers/webgl/WebGLState.js +47 -0
- package/src/renderers/webgl/WebGLUniforms.js +4 -4
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +2 -0
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +45 -37
- package/src/renderers/webxr/WebXRManager.js +58 -33
- package/src/scenes/Scene.js +16 -3
- package/src/textures/Source.js +1 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -1213,7 +1213,7 @@
|
|
|
1213
1213
|
return new THREE.BoxGeometry( param.width * 2, param.height * 2, param.depth * 2, 8, 8, 8 );
|
|
1214
1214
|
|
|
1215
1215
|
case 2:
|
|
1216
|
-
return new
|
|
1216
|
+
return new THREE.CapsuleGeometry( param.width, param.height, 8, 16 );
|
|
1217
1217
|
|
|
1218
1218
|
default:
|
|
1219
1219
|
return null;
|
|
@@ -1222,21 +1222,6 @@
|
|
|
1222
1222
|
|
|
1223
1223
|
}
|
|
1224
1224
|
|
|
1225
|
-
function createCapsuleGeometry( radius, cylinderHeight, segmentsRadius, segmentsHeight ) {
|
|
1226
|
-
|
|
1227
|
-
var geometry = new THREE.CylinderGeometry( radius, radius, cylinderHeight, segmentsRadius, segmentsHeight, true );
|
|
1228
|
-
var upperSphere = new THREE.Mesh( new THREE.SphereGeometry( radius, segmentsRadius, segmentsHeight, 0, Math.PI * 2, 0, Math.PI / 2 ) );
|
|
1229
|
-
var lowerSphere = new THREE.Mesh( new THREE.SphereGeometry( radius, segmentsRadius, segmentsHeight, 0, Math.PI * 2, Math.PI / 2, Math.PI / 2 ) );
|
|
1230
|
-
upperSphere.position.set( 0, cylinderHeight / 2, 0 );
|
|
1231
|
-
lowerSphere.position.set( 0, - cylinderHeight / 2, 0 );
|
|
1232
|
-
upperSphere.updateMatrix();
|
|
1233
|
-
lowerSphere.updateMatrix();
|
|
1234
|
-
geometry.merge( upperSphere.geometry, upperSphere.matrix );
|
|
1235
|
-
geometry.merge( lowerSphere.geometry, lowerSphere.matrix );
|
|
1236
|
-
return geometry;
|
|
1237
|
-
|
|
1238
|
-
}
|
|
1239
|
-
|
|
1240
1225
|
for ( var i = 0, il = bodies.length; i < il; i ++ ) {
|
|
1241
1226
|
|
|
1242
1227
|
var param = bodies[ i ].params;
|
|
@@ -1850,7 +1850,7 @@
|
|
|
1850
1850
|
|
|
1851
1851
|
this._gizmoMatrixState.copy( this._gizmoMatrixState0 );
|
|
1852
1852
|
|
|
1853
|
-
if ( this.camera.zoom
|
|
1853
|
+
if ( this.camera.zoom !== 1 ) {
|
|
1854
1854
|
|
|
1855
1855
|
//adapt gizmos size to camera zoom
|
|
1856
1856
|
const size = 1 / this.camera.zoom;
|
|
@@ -1867,9 +1867,22 @@
|
|
|
1867
1867
|
|
|
1868
1868
|
}
|
|
1869
1869
|
|
|
1870
|
-
this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale );
|
|
1870
|
+
this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); //
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
this._gizmos.traverse( function ( object ) {
|
|
1874
|
+
|
|
1875
|
+
if ( object.isLine ) {
|
|
1876
|
+
|
|
1877
|
+
object.geometry.dispose();
|
|
1878
|
+
object.material.dispose();
|
|
1879
|
+
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
} );
|
|
1883
|
+
|
|
1884
|
+
this._gizmos.clear(); //
|
|
1871
1885
|
|
|
1872
|
-
this._gizmos.clear();
|
|
1873
1886
|
|
|
1874
1887
|
this._gizmos.add( gizmoX );
|
|
1875
1888
|
|
|
@@ -10,13 +10,6 @@
|
|
|
10
10
|
|
|
11
11
|
constructor( object, domElement ) {
|
|
12
12
|
|
|
13
|
-
if ( domElement === undefined ) {
|
|
14
|
-
|
|
15
|
-
console.warn( 'THREE.FirstPersonControls: The second parameter "domElement" is now mandatory.' );
|
|
16
|
-
domElement = document;
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
13
|
this.object = object;
|
|
21
14
|
this.domElement = domElement; // API
|
|
22
15
|
|
|
@@ -9,14 +9,6 @@
|
|
|
9
9
|
constructor( object, domElement ) {
|
|
10
10
|
|
|
11
11
|
super();
|
|
12
|
-
|
|
13
|
-
if ( domElement === undefined ) {
|
|
14
|
-
|
|
15
|
-
console.warn( 'THREE.FlyControls: The second parameter "domElement" is now mandatory.' );
|
|
16
|
-
domElement = document;
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
12
|
this.object = object;
|
|
21
13
|
this.domElement = domElement; // API
|
|
22
14
|
|
|
@@ -21,8 +21,6 @@
|
|
|
21
21
|
constructor( object, domElement ) {
|
|
22
22
|
|
|
23
23
|
super();
|
|
24
|
-
if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' );
|
|
25
|
-
if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
|
|
26
24
|
this.object = object;
|
|
27
25
|
this.domElement = domElement;
|
|
28
26
|
this.domElement.style.touchAction = 'none'; // disable touch scroll
|
|
@@ -844,8 +842,6 @@
|
|
|
844
842
|
|
|
845
843
|
function onMouseMove( event ) {
|
|
846
844
|
|
|
847
|
-
if ( scope.enabled === false ) return;
|
|
848
|
-
|
|
849
845
|
switch ( state ) {
|
|
850
846
|
|
|
851
847
|
case STATE.ROTATE:
|
|
@@ -21,14 +21,6 @@
|
|
|
21
21
|
constructor( camera, domElement ) {
|
|
22
22
|
|
|
23
23
|
super();
|
|
24
|
-
|
|
25
|
-
if ( domElement === undefined ) {
|
|
26
|
-
|
|
27
|
-
console.warn( 'THREE.PointerLockControls: The second parameter "domElement" is now mandatory.' );
|
|
28
|
-
domElement = document.body;
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
24
|
this.domElement = domElement;
|
|
33
25
|
this.isLocked = false; // Set to constrain the pitch of the camera
|
|
34
26
|
// Range is 0 to Math.PI radians
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
constructor( object, domElement ) {
|
|
16
16
|
|
|
17
17
|
super();
|
|
18
|
-
if ( domElement === undefined ) console.warn( 'THREE.TrackballControls: The second parameter "domElement" is now mandatory.' );
|
|
19
|
-
if ( domElement === document ) console.error( 'THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
|
|
20
18
|
const scope = this;
|
|
21
19
|
const STATE = {
|
|
22
20
|
NONE: - 1,
|
|
@@ -181,7 +181,17 @@
|
|
|
181
181
|
|
|
182
182
|
this.camera.updateMatrixWorld();
|
|
183
183
|
this.camera.matrixWorld.decompose( this.cameraPosition, this.cameraQuaternion, this._cameraScale );
|
|
184
|
-
|
|
184
|
+
|
|
185
|
+
if ( this.camera.isOrthographicCamera ) {
|
|
186
|
+
|
|
187
|
+
this.camera.getWorldDirection( this.eye );
|
|
188
|
+
|
|
189
|
+
} else {
|
|
190
|
+
|
|
191
|
+
this.eye.copy( this.cameraPosition ).sub( this.worldPosition ).normalize();
|
|
192
|
+
|
|
193
|
+
}
|
|
194
|
+
|
|
185
195
|
super.updateMatrixWorld( this );
|
|
186
196
|
|
|
187
197
|
}
|
|
@@ -521,7 +531,7 @@
|
|
|
521
531
|
this.visible = true;
|
|
522
532
|
return this;
|
|
523
533
|
|
|
524
|
-
} //
|
|
534
|
+
} // Detach from object
|
|
525
535
|
|
|
526
536
|
|
|
527
537
|
detach() {
|
|
@@ -599,12 +609,6 @@
|
|
|
599
609
|
|
|
600
610
|
}
|
|
601
611
|
|
|
602
|
-
update() {
|
|
603
|
-
|
|
604
|
-
console.warn( 'THREE.TransformControls: update function has no more functionality and therefore has been deprecated.' );
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
|
|
608
612
|
} // mouse / touch event handlers
|
|
609
613
|
|
|
610
614
|
|
|
@@ -1109,12 +1113,12 @@
|
|
|
1109
1113
|
if ( this.mode === 'translate' || this.mode === 'scale' ) {
|
|
1110
1114
|
|
|
1111
1115
|
// Hide translate and scale axis facing the camera
|
|
1112
|
-
const
|
|
1113
|
-
const
|
|
1116
|
+
const AXIS_HIDE_THRESHOLD = 0.99;
|
|
1117
|
+
const PLANE_HIDE_THRESHOLD = 0.2;
|
|
1114
1118
|
|
|
1115
1119
|
if ( handle.name === 'X' ) {
|
|
1116
1120
|
|
|
1117
|
-
if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) >
|
|
1121
|
+
if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {
|
|
1118
1122
|
|
|
1119
1123
|
handle.scale.set( 1e-10, 1e-10, 1e-10 );
|
|
1120
1124
|
handle.visible = false;
|
|
@@ -1125,7 +1129,7 @@
|
|
|
1125
1129
|
|
|
1126
1130
|
if ( handle.name === 'Y' ) {
|
|
1127
1131
|
|
|
1128
|
-
if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) >
|
|
1132
|
+
if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {
|
|
1129
1133
|
|
|
1130
1134
|
handle.scale.set( 1e-10, 1e-10, 1e-10 );
|
|
1131
1135
|
handle.visible = false;
|
|
@@ -1136,7 +1140,7 @@
|
|
|
1136
1140
|
|
|
1137
1141
|
if ( handle.name === 'Z' ) {
|
|
1138
1142
|
|
|
1139
|
-
if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) >
|
|
1143
|
+
if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {
|
|
1140
1144
|
|
|
1141
1145
|
handle.scale.set( 1e-10, 1e-10, 1e-10 );
|
|
1142
1146
|
handle.visible = false;
|
|
@@ -1147,7 +1151,7 @@
|
|
|
1147
1151
|
|
|
1148
1152
|
if ( handle.name === 'XY' ) {
|
|
1149
1153
|
|
|
1150
|
-
if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) <
|
|
1154
|
+
if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {
|
|
1151
1155
|
|
|
1152
1156
|
handle.scale.set( 1e-10, 1e-10, 1e-10 );
|
|
1153
1157
|
handle.visible = false;
|
|
@@ -1158,7 +1162,7 @@
|
|
|
1158
1162
|
|
|
1159
1163
|
if ( handle.name === 'YZ' ) {
|
|
1160
1164
|
|
|
1161
|
-
if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) <
|
|
1165
|
+
if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {
|
|
1162
1166
|
|
|
1163
1167
|
handle.scale.set( 1e-10, 1e-10, 1e-10 );
|
|
1164
1168
|
handle.visible = false;
|
|
@@ -1169,7 +1173,7 @@
|
|
|
1169
1173
|
|
|
1170
1174
|
if ( handle.name === 'XZ' ) {
|
|
1171
1175
|
|
|
1172
|
-
if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) <
|
|
1176
|
+
if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {
|
|
1173
1177
|
|
|
1174
1178
|
handle.scale.set( 1e-10, 1e-10, 1e-10 );
|
|
1175
1179
|
handle.visible = false;
|
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
this.render = function ( scene, camera ) {
|
|
63
63
|
|
|
64
64
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
65
|
-
scene.updateMatrixWorld();
|
|
66
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
65
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
66
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
67
67
|
|
|
68
68
|
_stereo.update( camera );
|
|
69
69
|
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
* // How to set outline parameters for each material
|
|
50
50
|
* material.userData.outlineParameters = {
|
|
51
51
|
* thickness: 0.01,
|
|
52
|
-
* color: [ 0, 0, 0 ]
|
|
52
|
+
* color: [ 0, 0, 0 ],
|
|
53
53
|
* alpha: 0.8,
|
|
54
54
|
* visible: true,
|
|
55
55
|
* keepAlive: true
|
|
@@ -336,26 +336,6 @@
|
|
|
336
336
|
|
|
337
337
|
this.render = function ( scene, camera ) {
|
|
338
338
|
|
|
339
|
-
let renderTarget;
|
|
340
|
-
let forceClear = false;
|
|
341
|
-
|
|
342
|
-
if ( arguments[ 2 ] !== undefined ) {
|
|
343
|
-
|
|
344
|
-
console.warn( 'THREE.OutlineEffect.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );
|
|
345
|
-
renderTarget = arguments[ 2 ];
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
if ( arguments[ 3 ] !== undefined ) {
|
|
350
|
-
|
|
351
|
-
console.warn( 'THREE.OutlineEffect.render(): the forceClear argument has been removed. Use .clear() instead.' );
|
|
352
|
-
forceClear = arguments[ 3 ];
|
|
353
|
-
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
if ( renderTarget !== undefined ) renderer.setRenderTarget( renderTarget );
|
|
357
|
-
if ( forceClear ) renderer.clear();
|
|
358
|
-
|
|
359
339
|
if ( this.enabled === false ) {
|
|
360
340
|
|
|
361
341
|
renderer.render( scene, camera );
|
|
@@ -374,10 +354,10 @@
|
|
|
374
354
|
this.renderOutline = function ( scene, camera ) {
|
|
375
355
|
|
|
376
356
|
const currentAutoClear = renderer.autoClear;
|
|
377
|
-
const currentSceneAutoUpdate = scene.
|
|
357
|
+
const currentSceneAutoUpdate = scene.matrixWorldAutoUpdate;
|
|
378
358
|
const currentSceneBackground = scene.background;
|
|
379
359
|
const currentShadowMapEnabled = renderer.shadowMap.enabled;
|
|
380
|
-
scene.
|
|
360
|
+
scene.matrixWorldAutoUpdate = false;
|
|
381
361
|
scene.background = null;
|
|
382
362
|
renderer.autoClear = false;
|
|
383
363
|
renderer.shadowMap.enabled = false;
|
|
@@ -385,7 +365,7 @@
|
|
|
385
365
|
renderer.render( scene, camera );
|
|
386
366
|
scene.traverse( restoreOriginalMaterial );
|
|
387
367
|
cleanupCache();
|
|
388
|
-
scene.
|
|
368
|
+
scene.matrixWorldAutoUpdate = currentSceneAutoUpdate;
|
|
389
369
|
scene.background = currentSceneBackground;
|
|
390
370
|
renderer.autoClear = currentAutoClear;
|
|
391
371
|
renderer.shadowMap.enabled = currentShadowMapEnabled;
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
|
|
51
51
|
this.render = function ( scene, camera ) {
|
|
52
52
|
|
|
53
|
-
scene.updateMatrixWorld();
|
|
54
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
53
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
54
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
55
55
|
|
|
56
56
|
_stereo.update( camera );
|
|
57
57
|
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
|
|
58
58
|
this.render = function ( scene, camera ) {
|
|
59
59
|
|
|
60
|
-
scene.updateMatrixWorld();
|
|
61
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
60
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
61
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
62
62
|
camera.matrixWorld.decompose( _position, _quaternion, _scale ); // front
|
|
63
63
|
|
|
64
64
|
_cameraF.position.copy( _position );
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
|
|
24
24
|
this.render = function ( scene, camera ) {
|
|
25
25
|
|
|
26
|
-
scene.updateMatrixWorld();
|
|
27
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
26
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
27
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
28
28
|
|
|
29
29
|
_stereo.update( camera );
|
|
30
30
|
|
|
@@ -85,6 +85,28 @@
|
|
|
85
85
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
dispose() {
|
|
89
|
+
|
|
90
|
+
const resources = new Set();
|
|
91
|
+
this.traverse( object => {
|
|
92
|
+
|
|
93
|
+
if ( object.isMesh ) {
|
|
94
|
+
|
|
95
|
+
resources.add( object.geometry );
|
|
96
|
+
resources.add( object.material );
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
} );
|
|
101
|
+
|
|
102
|
+
for ( const resource of resources ) {
|
|
103
|
+
|
|
104
|
+
resource.dispose();
|
|
105
|
+
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
}
|
|
109
|
+
|
|
88
110
|
}
|
|
89
111
|
|
|
90
112
|
function createAreaLightMaterial( intensity ) {
|
|
@@ -208,21 +208,12 @@
|
|
|
208
208
|
// Returns the mesh id
|
|
209
209
|
|
|
210
210
|
|
|
211
|
-
function processGeometry(
|
|
211
|
+
function processGeometry( bufferGeometry ) {
|
|
212
212
|
|
|
213
|
-
let info = geometryInfo.get(
|
|
213
|
+
let info = geometryInfo.get( bufferGeometry );
|
|
214
214
|
|
|
215
215
|
if ( ! info ) {
|
|
216
216
|
|
|
217
|
-
// convert the geometry to bufferGeometry if it isn't already
|
|
218
|
-
const bufferGeometry = g;
|
|
219
|
-
|
|
220
|
-
if ( bufferGeometry.isBufferGeometry !== true ) {
|
|
221
|
-
|
|
222
|
-
throw new Error( 'THREE.ColladaExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
226
217
|
const meshid = `Mesh${libraryGeometries.length + 1}`;
|
|
227
218
|
const indexCount = bufferGeometry.index ? bufferGeometry.index.count * bufferGeometry.index.itemSize : bufferGeometry.attributes.position.count;
|
|
228
219
|
const groups = bufferGeometry.groups != null && bufferGeometry.groups.length !== 0 ? bufferGeometry.groups : [ {
|
|
@@ -230,7 +221,7 @@
|
|
|
230
221
|
count: indexCount,
|
|
231
222
|
materialIndex: 0
|
|
232
223
|
} ];
|
|
233
|
-
const gname =
|
|
224
|
+
const gname = bufferGeometry.name ? ` name="${bufferGeometry.name}"` : '';
|
|
234
225
|
let gnode = `<geometry id="${meshid}"${gname}><mesh>`; // define the geometry node and the vertices for the geometry
|
|
235
226
|
|
|
236
227
|
const posName = `${meshid}-position`;
|
|
@@ -312,7 +303,7 @@
|
|
|
312
303
|
meshid: meshid,
|
|
313
304
|
bufferGeometry: bufferGeometry
|
|
314
305
|
};
|
|
315
|
-
geometryInfo.set(
|
|
306
|
+
geometryInfo.set( bufferGeometry, info );
|
|
316
307
|
|
|
317
308
|
}
|
|
318
309
|
|
|
@@ -27,12 +27,6 @@
|
|
|
27
27
|
exportColor: false
|
|
28
28
|
} ) {
|
|
29
29
|
|
|
30
|
-
if ( object.isBufferGeometry === true ) {
|
|
31
|
-
|
|
32
|
-
throw new Error( 'DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.' );
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
30
|
if ( DracoEncoderModule === undefined ) {
|
|
37
31
|
|
|
38
32
|
throw new Error( 'THREE.DRACOExporter: required the draco_encoder to work.' );
|
|
@@ -45,12 +39,6 @@
|
|
|
45
39
|
let builder;
|
|
46
40
|
let dracoObject;
|
|
47
41
|
|
|
48
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
49
|
-
|
|
50
|
-
throw new Error( 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.' );
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
42
|
if ( object.isMesh === true ) {
|
|
55
43
|
|
|
56
44
|
builder = new dracoEncoder.MeshBuilder();
|
|
@@ -77,13 +77,6 @@
|
|
|
77
77
|
|
|
78
78
|
parse( input, onDone, onError, options ) {
|
|
79
79
|
|
|
80
|
-
if ( typeof onError === 'object' ) {
|
|
81
|
-
|
|
82
|
-
console.warn( 'THREE.GLTFExporter: parse() expects options as the fourth argument now.' );
|
|
83
|
-
options = onError;
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
80
|
const writer = new GLTFWriter();
|
|
88
81
|
const plugins = [];
|
|
89
82
|
|
|
@@ -300,27 +293,15 @@
|
|
|
300
293
|
|
|
301
294
|
}
|
|
302
295
|
|
|
303
|
-
let cachedCanvas = null;
|
|
304
|
-
|
|
305
296
|
function getCanvas() {
|
|
306
297
|
|
|
307
|
-
if ( cachedCanvas ) {
|
|
308
|
-
|
|
309
|
-
return cachedCanvas;
|
|
310
|
-
|
|
311
|
-
}
|
|
312
|
-
|
|
313
298
|
if ( typeof document === 'undefined' && typeof OffscreenCanvas !== 'undefined' ) {
|
|
314
299
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
} else {
|
|
318
|
-
|
|
319
|
-
cachedCanvas = document.createElement( 'canvas' );
|
|
300
|
+
return new OffscreenCanvas( 1, 1 );
|
|
320
301
|
|
|
321
302
|
}
|
|
322
303
|
|
|
323
|
-
return
|
|
304
|
+
return document.createElement( 'canvas' );
|
|
324
305
|
|
|
325
306
|
}
|
|
326
307
|
|
|
@@ -676,6 +657,27 @@
|
|
|
676
657
|
buildMetalRoughTexture( metalnessMap, roughnessMap ) {
|
|
677
658
|
|
|
678
659
|
if ( metalnessMap === roughnessMap ) return metalnessMap;
|
|
660
|
+
|
|
661
|
+
function getEncodingConversion( map ) {
|
|
662
|
+
|
|
663
|
+
if ( map.encoding === THREE.sRGBEncoding ) {
|
|
664
|
+
|
|
665
|
+
return function SRGBToLinear( c ) {
|
|
666
|
+
|
|
667
|
+
return c < 0.04045 ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
|
|
668
|
+
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
return function LinearToLinear( c ) {
|
|
674
|
+
|
|
675
|
+
return c;
|
|
676
|
+
|
|
677
|
+
};
|
|
678
|
+
|
|
679
|
+
}
|
|
680
|
+
|
|
679
681
|
console.warn( 'THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.' );
|
|
680
682
|
const metalness = metalnessMap?.image;
|
|
681
683
|
const roughness = roughnessMap?.image;
|
|
@@ -692,11 +694,12 @@
|
|
|
692
694
|
if ( metalness ) {
|
|
693
695
|
|
|
694
696
|
context.drawImage( metalness, 0, 0, width, height );
|
|
697
|
+
const convert = getEncodingConversion( metalnessMap );
|
|
695
698
|
const data = context.getImageData( 0, 0, width, height ).data;
|
|
696
699
|
|
|
697
700
|
for ( let i = 2; i < data.length; i += 4 ) {
|
|
698
701
|
|
|
699
|
-
composite.data[ i ] = data[ i ];
|
|
702
|
+
composite.data[ i ] = convert( data[ i ] / 256 ) * 256;
|
|
700
703
|
|
|
701
704
|
}
|
|
702
705
|
|
|
@@ -705,11 +708,12 @@
|
|
|
705
708
|
if ( roughness ) {
|
|
706
709
|
|
|
707
710
|
context.drawImage( roughness, 0, 0, width, height );
|
|
711
|
+
const convert = getEncodingConversion( roughnessMap );
|
|
708
712
|
const data = context.getImageData( 0, 0, width, height ).data;
|
|
709
713
|
|
|
710
714
|
for ( let i = 1; i < data.length; i += 4 ) {
|
|
711
715
|
|
|
712
|
-
composite.data[ i ] = data[ i ];
|
|
716
|
+
composite.data[ i ] = convert( data[ i ] / 256 ) * 256;
|
|
713
717
|
|
|
714
718
|
}
|
|
715
719
|
|
|
@@ -720,6 +724,7 @@
|
|
|
720
724
|
const reference = metalnessMap || roughnessMap;
|
|
721
725
|
const texture = reference.clone();
|
|
722
726
|
texture.source = new THREE.Source( canvas );
|
|
727
|
+
texture.encoding = THREE.LinearEncoding;
|
|
723
728
|
return texture;
|
|
724
729
|
|
|
725
730
|
}
|
|
@@ -1348,12 +1353,6 @@
|
|
|
1348
1353
|
|
|
1349
1354
|
}
|
|
1350
1355
|
|
|
1351
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
1352
|
-
|
|
1353
|
-
throw new Error( 'THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
1354
|
-
|
|
1355
|
-
}
|
|
1356
|
-
|
|
1357
1356
|
const meshDef = {};
|
|
1358
1357
|
const attributes = {};
|
|
1359
1358
|
const primitives = [];
|
|
@@ -20,14 +20,7 @@
|
|
|
20
20
|
let nbNormals = 0;
|
|
21
21
|
let nbVertexUvs = 0;
|
|
22
22
|
const geometry = mesh.geometry;
|
|
23
|
-
const normalMatrixWorld = new THREE.Matrix3();
|
|
24
|
-
|
|
25
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
26
|
-
|
|
27
|
-
throw new Error( 'THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
28
|
-
|
|
29
|
-
} // shortcuts
|
|
30
|
-
|
|
23
|
+
const normalMatrixWorld = new THREE.Matrix3(); // shortcuts
|
|
31
24
|
|
|
32
25
|
const vertices = geometry.getAttribute( 'position' );
|
|
33
26
|
const normals = geometry.getAttribute( 'normal' );
|
|
@@ -133,14 +126,7 @@
|
|
|
133
126
|
|
|
134
127
|
let nbVertex = 0;
|
|
135
128
|
const geometry = line.geometry;
|
|
136
|
-
const type = line.type;
|
|
137
|
-
|
|
138
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
139
|
-
|
|
140
|
-
throw new Error( 'THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
141
|
-
|
|
142
|
-
} // shortcuts
|
|
143
|
-
|
|
129
|
+
const type = line.type; // shortcuts
|
|
144
130
|
|
|
145
131
|
const vertices = geometry.getAttribute( 'position' ); // name of the line object
|
|
146
132
|
|
|
@@ -193,13 +179,6 @@
|
|
|
193
179
|
|
|
194
180
|
let nbVertex = 0;
|
|
195
181
|
const geometry = points.geometry;
|
|
196
|
-
|
|
197
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
198
|
-
|
|
199
|
-
throw new Error( 'THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
182
|
const vertices = geometry.getAttribute( 'position' );
|
|
204
183
|
const colors = geometry.getAttribute( 'color' );
|
|
205
184
|
output += 'o ' + points.name + '\n';
|
|
@@ -17,30 +17,16 @@
|
|
|
17
17
|
|
|
18
18
|
parse( object, onDone, options ) {
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
console.warn( 'THREE.PLYExporter: The options parameter is now the third argument to the "parse" function. See the documentation for the new API.' );
|
|
23
|
-
options = onDone;
|
|
24
|
-
onDone = undefined;
|
|
25
|
-
|
|
26
|
-
} // Iterate over the valid meshes in the object
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
// Iterate over the valid meshes in the object
|
|
29
21
|
function traverseMeshes( cb ) {
|
|
30
22
|
|
|
31
23
|
object.traverse( function ( child ) {
|
|
32
24
|
|
|
33
|
-
if ( child.isMesh === true ) {
|
|
25
|
+
if ( child.isMesh === true || child.isPoints ) {
|
|
34
26
|
|
|
35
27
|
const mesh = child;
|
|
36
28
|
const geometry = mesh.geometry;
|
|
37
29
|
|
|
38
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
39
|
-
|
|
40
|
-
throw new Error( 'THREE.PLYExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
30
|
if ( geometry.hasAttribute( 'position' ) === true ) {
|
|
45
31
|
|
|
46
32
|
cb( mesh, geometry );
|
|
@@ -62,6 +48,7 @@
|
|
|
62
48
|
};
|
|
63
49
|
options = Object.assign( defaultOptions, options );
|
|
64
50
|
const excludeAttributes = options.excludeAttributes;
|
|
51
|
+
let includeIndices = true;
|
|
65
52
|
let includeNormals = false;
|
|
66
53
|
let includeColors = false;
|
|
67
54
|
let includeUVs = false; // count the vertices, check which properties are used,
|
|
@@ -75,13 +62,6 @@
|
|
|
75
62
|
|
|
76
63
|
const mesh = child;
|
|
77
64
|
const geometry = mesh.geometry;
|
|
78
|
-
|
|
79
|
-
if ( geometry.isBufferGeometry !== true ) {
|
|
80
|
-
|
|
81
|
-
throw new Error( 'THREE.PLYExporter: Geometry is not of type THREE.BufferGeometry.' );
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
65
|
const vertices = geometry.getAttribute( 'position' );
|
|
86
66
|
const normals = geometry.getAttribute( 'normal' );
|
|
87
67
|
const uvs = geometry.getAttribute( 'uv' );
|
|
@@ -100,11 +80,19 @@
|
|
|
100
80
|
if ( uvs !== undefined ) includeUVs = true;
|
|
101
81
|
if ( colors !== undefined ) includeColors = true;
|
|
102
82
|
|
|
83
|
+
} else if ( child.isPoints ) {
|
|
84
|
+
|
|
85
|
+
const mesh = child;
|
|
86
|
+
const geometry = mesh.geometry;
|
|
87
|
+
const vertices = geometry.getAttribute( 'position' );
|
|
88
|
+
vertexCount += vertices.count;
|
|
89
|
+
includeIndices = false;
|
|
90
|
+
|
|
103
91
|
}
|
|
104
92
|
|
|
105
93
|
} );
|
|
106
94
|
const tempColor = new THREE.Color();
|
|
107
|
-
|
|
95
|
+
includeIndices = includeIndices && excludeAttributes.indexOf( 'index' ) === - 1;
|
|
108
96
|
includeNormals = includeNormals && excludeAttributes.indexOf( 'normal' ) === - 1;
|
|
109
97
|
includeColors = includeColors && excludeAttributes.indexOf( 'color' ) === - 1;
|
|
110
98
|
includeUVs = includeUVs && excludeAttributes.indexOf( 'uv' ) === - 1;
|