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
|
@@ -1,343 +1,339 @@
|
|
|
1
1
|
import { Quaternion } from '../math/Quaternion.js';
|
|
2
2
|
import { AdditiveAnimationBlendMode } from '../constants.js';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// same as Array.prototype.slice, but also works on typed arrays
|
|
5
|
+
function arraySlice( array, from, to ) {
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
arraySlice: function ( array, from, to ) {
|
|
7
|
+
if ( isTypedArray( array ) ) {
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// in ios9 array.subarray(from, undefined) will return empty array
|
|
10
|
+
// but array.subarray(from) or array.subarray(from, len) is correct
|
|
11
|
+
return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
// but array.subarray(from) or array.subarray(from, len) is correct
|
|
13
|
-
return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );
|
|
14
|
-
|
|
15
|
-
}
|
|
13
|
+
}
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
return array.slice( from, to );
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
}
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
// converts an array to a specific type
|
|
20
|
+
function convertArray( array, type, forceClone ) {
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
if ( ! array || // let 'undefined' and 'null' pass
|
|
23
|
+
! forceClone && array.constructor === type ) return array;
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
if ( typeof type.BYTES_PER_ELEMENT === 'number' ) {
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
return new type( array ); // create typed array
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return Array.prototype.slice.call( array ); // create Array
|
|
29
|
+
}
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
return Array.prototype.slice.call( array ); // create Array
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
}
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
! ( object instanceof DataView );
|
|
35
|
+
function isTypedArray( object ) {
|
|
41
36
|
|
|
42
|
-
|
|
37
|
+
return ArrayBuffer.isView( object ) &&
|
|
38
|
+
! ( object instanceof DataView );
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
getKeyframeOrder: function ( times ) {
|
|
40
|
+
}
|
|
46
41
|
|
|
47
|
-
|
|
42
|
+
// returns an array by which times and values can be sorted
|
|
43
|
+
function getKeyframeOrder( times ) {
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
function compareTime( i, j ) {
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
return times[ i ] - times[ j ];
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
const result = new Array( n );
|
|
55
|
-
for ( let i = 0; i !== n; ++ i ) result[ i ] = i;
|
|
49
|
+
}
|
|
56
50
|
|
|
57
|
-
|
|
51
|
+
const n = times.length;
|
|
52
|
+
const result = new Array( n );
|
|
53
|
+
for ( let i = 0; i !== n; ++ i ) result[ i ] = i;
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
result.sort( compareTime );
|
|
60
56
|
|
|
61
|
-
|
|
57
|
+
return result;
|
|
62
58
|
|
|
63
|
-
|
|
64
|
-
sortedArray: function ( values, stride, order ) {
|
|
59
|
+
}
|
|
65
60
|
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
// uses the array previously returned by 'getKeyframeOrder' to sort data
|
|
62
|
+
function sortedArray( values, stride, order ) {
|
|
68
63
|
|
|
69
|
-
|
|
64
|
+
const nValues = values.length;
|
|
65
|
+
const result = new values.constructor( nValues );
|
|
70
66
|
|
|
71
|
-
|
|
67
|
+
for ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {
|
|
72
68
|
|
|
73
|
-
|
|
69
|
+
const srcOffset = order[ i ] * stride;
|
|
74
70
|
|
|
75
|
-
|
|
71
|
+
for ( let j = 0; j !== stride; ++ j ) {
|
|
76
72
|
|
|
77
|
-
|
|
73
|
+
result[ dstOffset ++ ] = values[ srcOffset + j ];
|
|
78
74
|
|
|
79
75
|
}
|
|
80
76
|
|
|
81
|
-
|
|
77
|
+
}
|
|
82
78
|
|
|
83
|
-
|
|
79
|
+
return result;
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {
|
|
81
|
+
}
|
|
87
82
|
|
|
88
|
-
|
|
83
|
+
// function for parsing AOS keyframe formats
|
|
84
|
+
function flattenJSON( jsonKeys, times, values, valuePropertyName ) {
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
let i = 1, key = jsonKeys[ 0 ];
|
|
91
87
|
|
|
92
|
-
|
|
88
|
+
while ( key !== undefined && key[ valuePropertyName ] === undefined ) {
|
|
93
89
|
|
|
94
|
-
|
|
90
|
+
key = jsonKeys[ i ++ ];
|
|
95
91
|
|
|
96
|
-
|
|
92
|
+
}
|
|
97
93
|
|
|
98
|
-
|
|
99
|
-
if ( value === undefined ) return; // no data
|
|
94
|
+
if ( key === undefined ) return; // no data
|
|
100
95
|
|
|
101
|
-
|
|
96
|
+
let value = key[ valuePropertyName ];
|
|
97
|
+
if ( value === undefined ) return; // no data
|
|
102
98
|
|
|
103
|
-
|
|
99
|
+
if ( Array.isArray( value ) ) {
|
|
104
100
|
|
|
105
|
-
|
|
101
|
+
do {
|
|
106
102
|
|
|
107
|
-
|
|
103
|
+
value = key[ valuePropertyName ];
|
|
108
104
|
|
|
109
|
-
|
|
110
|
-
values.push.apply( values, value ); // push all elements
|
|
105
|
+
if ( value !== undefined ) {
|
|
111
106
|
|
|
112
|
-
|
|
107
|
+
times.push( key.time );
|
|
108
|
+
values.push.apply( values, value ); // push all elements
|
|
113
109
|
|
|
114
|
-
|
|
110
|
+
}
|
|
115
111
|
|
|
116
|
-
|
|
112
|
+
key = jsonKeys[ i ++ ];
|
|
117
113
|
|
|
118
|
-
}
|
|
114
|
+
} while ( key !== undefined );
|
|
119
115
|
|
|
120
|
-
|
|
116
|
+
} else if ( value.toArray !== undefined ) {
|
|
121
117
|
|
|
122
|
-
|
|
118
|
+
// ...assume THREE.Math-ish
|
|
123
119
|
|
|
124
|
-
|
|
120
|
+
do {
|
|
125
121
|
|
|
126
|
-
|
|
122
|
+
value = key[ valuePropertyName ];
|
|
127
123
|
|
|
128
|
-
|
|
129
|
-
value.toArray( values, values.length );
|
|
124
|
+
if ( value !== undefined ) {
|
|
130
125
|
|
|
131
|
-
|
|
126
|
+
times.push( key.time );
|
|
127
|
+
value.toArray( values, values.length );
|
|
132
128
|
|
|
133
|
-
|
|
129
|
+
}
|
|
134
130
|
|
|
135
|
-
|
|
131
|
+
key = jsonKeys[ i ++ ];
|
|
136
132
|
|
|
137
|
-
}
|
|
133
|
+
} while ( key !== undefined );
|
|
138
134
|
|
|
139
|
-
|
|
135
|
+
} else {
|
|
140
136
|
|
|
141
|
-
|
|
137
|
+
// otherwise push as-is
|
|
142
138
|
|
|
143
|
-
|
|
139
|
+
do {
|
|
144
140
|
|
|
145
|
-
|
|
141
|
+
value = key[ valuePropertyName ];
|
|
146
142
|
|
|
147
|
-
|
|
148
|
-
values.push( value );
|
|
143
|
+
if ( value !== undefined ) {
|
|
149
144
|
|
|
150
|
-
|
|
145
|
+
times.push( key.time );
|
|
146
|
+
values.push( value );
|
|
151
147
|
|
|
152
|
-
|
|
148
|
+
}
|
|
153
149
|
|
|
154
|
-
|
|
150
|
+
key = jsonKeys[ i ++ ];
|
|
155
151
|
|
|
156
|
-
}
|
|
152
|
+
} while ( key !== undefined );
|
|
157
153
|
|
|
158
|
-
}
|
|
154
|
+
}
|
|
159
155
|
|
|
160
|
-
|
|
156
|
+
}
|
|
161
157
|
|
|
162
|
-
|
|
158
|
+
function subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {
|
|
163
159
|
|
|
164
|
-
|
|
160
|
+
const clip = sourceClip.clone();
|
|
165
161
|
|
|
166
|
-
|
|
162
|
+
clip.name = name;
|
|
167
163
|
|
|
168
|
-
|
|
164
|
+
const tracks = [];
|
|
169
165
|
|
|
170
|
-
|
|
171
|
-
const valueSize = track.getValueSize();
|
|
166
|
+
for ( let i = 0; i < clip.tracks.length; ++ i ) {
|
|
172
167
|
|
|
173
|
-
|
|
174
|
-
|
|
168
|
+
const track = clip.tracks[ i ];
|
|
169
|
+
const valueSize = track.getValueSize();
|
|
175
170
|
|
|
176
|
-
|
|
171
|
+
const times = [];
|
|
172
|
+
const values = [];
|
|
177
173
|
|
|
178
|
-
|
|
174
|
+
for ( let j = 0; j < track.times.length; ++ j ) {
|
|
179
175
|
|
|
180
|
-
|
|
176
|
+
const frame = track.times[ j ] * fps;
|
|
181
177
|
|
|
182
|
-
|
|
178
|
+
if ( frame < startFrame || frame >= endFrame ) continue;
|
|
183
179
|
|
|
184
|
-
|
|
180
|
+
times.push( track.times[ j ] );
|
|
185
181
|
|
|
186
|
-
|
|
182
|
+
for ( let k = 0; k < valueSize; ++ k ) {
|
|
187
183
|
|
|
188
|
-
|
|
184
|
+
values.push( track.values[ j * valueSize + k ] );
|
|
189
185
|
|
|
190
186
|
}
|
|
191
187
|
|
|
192
|
-
|
|
188
|
+
}
|
|
193
189
|
|
|
194
|
-
|
|
195
|
-
track.values = AnimationUtils.convertArray( values, track.values.constructor );
|
|
190
|
+
if ( times.length === 0 ) continue;
|
|
196
191
|
|
|
197
|
-
|
|
192
|
+
track.times = convertArray( times, track.times.constructor );
|
|
193
|
+
track.values = convertArray( values, track.values.constructor );
|
|
198
194
|
|
|
199
|
-
|
|
195
|
+
tracks.push( track );
|
|
200
196
|
|
|
201
|
-
|
|
197
|
+
}
|
|
202
198
|
|
|
203
|
-
|
|
199
|
+
clip.tracks = tracks;
|
|
204
200
|
|
|
205
|
-
|
|
201
|
+
// find minimum .times value across all tracks in the trimmed clip
|
|
206
202
|
|
|
207
|
-
|
|
203
|
+
let minStartTime = Infinity;
|
|
208
204
|
|
|
209
|
-
|
|
205
|
+
for ( let i = 0; i < clip.tracks.length; ++ i ) {
|
|
210
206
|
|
|
211
|
-
|
|
207
|
+
if ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {
|
|
212
208
|
|
|
213
|
-
|
|
209
|
+
minStartTime = clip.tracks[ i ].times[ 0 ];
|
|
214
210
|
|
|
215
211
|
}
|
|
216
212
|
|
|
217
|
-
|
|
213
|
+
}
|
|
218
214
|
|
|
219
|
-
|
|
215
|
+
// shift all tracks such that clip begins at t=0
|
|
220
216
|
|
|
221
|
-
|
|
217
|
+
for ( let i = 0; i < clip.tracks.length; ++ i ) {
|
|
222
218
|
|
|
223
|
-
|
|
219
|
+
clip.tracks[ i ].shift( - 1 * minStartTime );
|
|
224
220
|
|
|
225
|
-
|
|
221
|
+
}
|
|
226
222
|
|
|
227
|
-
|
|
223
|
+
clip.resetDuration();
|
|
228
224
|
|
|
229
|
-
|
|
225
|
+
return clip;
|
|
230
226
|
|
|
231
|
-
|
|
227
|
+
}
|
|
232
228
|
|
|
233
|
-
|
|
229
|
+
function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {
|
|
234
230
|
|
|
235
|
-
|
|
236
|
-
const referenceTime = referenceFrame / fps;
|
|
231
|
+
if ( fps <= 0 ) fps = 30;
|
|
237
232
|
|
|
238
|
-
|
|
239
|
-
|
|
233
|
+
const numTracks = referenceClip.tracks.length;
|
|
234
|
+
const referenceTime = referenceFrame / fps;
|
|
240
235
|
|
|
241
|
-
|
|
242
|
-
|
|
236
|
+
// Make each track's values relative to the values at the reference frame
|
|
237
|
+
for ( let i = 0; i < numTracks; ++ i ) {
|
|
243
238
|
|
|
244
|
-
|
|
245
|
-
|
|
239
|
+
const referenceTrack = referenceClip.tracks[ i ];
|
|
240
|
+
const referenceTrackType = referenceTrack.ValueTypeName;
|
|
246
241
|
|
|
247
|
-
|
|
248
|
-
|
|
242
|
+
// Skip this track if it's non-numeric
|
|
243
|
+
if ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;
|
|
249
244
|
|
|
250
|
-
|
|
251
|
-
|
|
245
|
+
// Find the track in the target clip whose name and type matches the reference track
|
|
246
|
+
const targetTrack = targetClip.tracks.find( function ( track ) {
|
|
252
247
|
|
|
253
|
-
|
|
248
|
+
return track.name === referenceTrack.name
|
|
249
|
+
&& track.ValueTypeName === referenceTrackType;
|
|
254
250
|
|
|
255
|
-
|
|
251
|
+
} );
|
|
256
252
|
|
|
257
|
-
|
|
258
|
-
const referenceValueSize = referenceTrack.getValueSize();
|
|
253
|
+
if ( targetTrack === undefined ) continue;
|
|
259
254
|
|
|
260
|
-
|
|
255
|
+
let referenceOffset = 0;
|
|
256
|
+
const referenceValueSize = referenceTrack.getValueSize();
|
|
261
257
|
|
|
262
|
-
|
|
258
|
+
if ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {
|
|
263
259
|
|
|
264
|
-
|
|
260
|
+
referenceOffset = referenceValueSize / 3;
|
|
265
261
|
|
|
266
|
-
|
|
267
|
-
const targetValueSize = targetTrack.getValueSize();
|
|
262
|
+
}
|
|
268
263
|
|
|
269
|
-
|
|
264
|
+
let targetOffset = 0;
|
|
265
|
+
const targetValueSize = targetTrack.getValueSize();
|
|
270
266
|
|
|
271
|
-
|
|
267
|
+
if ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {
|
|
272
268
|
|
|
273
|
-
|
|
269
|
+
targetOffset = targetValueSize / 3;
|
|
274
270
|
|
|
275
|
-
|
|
276
|
-
let referenceValue;
|
|
271
|
+
}
|
|
277
272
|
|
|
278
|
-
|
|
279
|
-
|
|
273
|
+
const lastIndex = referenceTrack.times.length - 1;
|
|
274
|
+
let referenceValue;
|
|
280
275
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
const endIndex = referenceValueSize - referenceOffset;
|
|
284
|
-
referenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );
|
|
276
|
+
// Find the value to subtract out of the track
|
|
277
|
+
if ( referenceTime <= referenceTrack.times[ 0 ] ) {
|
|
285
278
|
|
|
286
|
-
|
|
279
|
+
// Reference frame is earlier than the first keyframe, so just use the first keyframe
|
|
280
|
+
const startIndex = referenceOffset;
|
|
281
|
+
const endIndex = referenceValueSize - referenceOffset;
|
|
282
|
+
referenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );
|
|
287
283
|
|
|
288
|
-
|
|
289
|
-
const startIndex = lastIndex * referenceValueSize + referenceOffset;
|
|
290
|
-
const endIndex = startIndex + referenceValueSize - referenceOffset;
|
|
291
|
-
referenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );
|
|
284
|
+
} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {
|
|
292
285
|
|
|
293
|
-
|
|
286
|
+
// Reference frame is after the last keyframe, so just use the last keyframe
|
|
287
|
+
const startIndex = lastIndex * referenceValueSize + referenceOffset;
|
|
288
|
+
const endIndex = startIndex + referenceValueSize - referenceOffset;
|
|
289
|
+
referenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );
|
|
294
290
|
|
|
295
|
-
|
|
296
|
-
const interpolant = referenceTrack.createInterpolant();
|
|
297
|
-
const startIndex = referenceOffset;
|
|
298
|
-
const endIndex = referenceValueSize - referenceOffset;
|
|
299
|
-
interpolant.evaluate( referenceTime );
|
|
300
|
-
referenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );
|
|
291
|
+
} else {
|
|
301
292
|
|
|
302
|
-
|
|
293
|
+
// Interpolate to the reference value
|
|
294
|
+
const interpolant = referenceTrack.createInterpolant();
|
|
295
|
+
const startIndex = referenceOffset;
|
|
296
|
+
const endIndex = referenceValueSize - referenceOffset;
|
|
297
|
+
interpolant.evaluate( referenceTime );
|
|
298
|
+
referenceValue = arraySlice( interpolant.resultBuffer, startIndex, endIndex );
|
|
303
299
|
|
|
304
|
-
|
|
305
|
-
if ( referenceTrackType === 'quaternion' ) {
|
|
300
|
+
}
|
|
306
301
|
|
|
307
|
-
|
|
308
|
-
|
|
302
|
+
// Conjugate the quaternion
|
|
303
|
+
if ( referenceTrackType === 'quaternion' ) {
|
|
309
304
|
|
|
310
|
-
|
|
305
|
+
const referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();
|
|
306
|
+
referenceQuat.toArray( referenceValue );
|
|
311
307
|
|
|
312
|
-
|
|
308
|
+
}
|
|
313
309
|
|
|
314
|
-
|
|
315
|
-
for ( let j = 0; j < numTimes; ++ j ) {
|
|
310
|
+
// Subtract the reference value from all of the track values
|
|
316
311
|
|
|
317
|
-
|
|
312
|
+
const numTimes = targetTrack.times.length;
|
|
313
|
+
for ( let j = 0; j < numTimes; ++ j ) {
|
|
318
314
|
|
|
319
|
-
|
|
315
|
+
const valueStart = j * targetValueSize + targetOffset;
|
|
320
316
|
|
|
321
|
-
|
|
322
|
-
Quaternion.multiplyQuaternionsFlat(
|
|
323
|
-
targetTrack.values,
|
|
324
|
-
valueStart,
|
|
325
|
-
referenceValue,
|
|
326
|
-
0,
|
|
327
|
-
targetTrack.values,
|
|
328
|
-
valueStart
|
|
329
|
-
);
|
|
317
|
+
if ( referenceTrackType === 'quaternion' ) {
|
|
330
318
|
|
|
331
|
-
|
|
319
|
+
// Multiply the conjugate for quaternion track types
|
|
320
|
+
Quaternion.multiplyQuaternionsFlat(
|
|
321
|
+
targetTrack.values,
|
|
322
|
+
valueStart,
|
|
323
|
+
referenceValue,
|
|
324
|
+
0,
|
|
325
|
+
targetTrack.values,
|
|
326
|
+
valueStart
|
|
327
|
+
);
|
|
332
328
|
|
|
333
|
-
|
|
329
|
+
} else {
|
|
334
330
|
|
|
335
|
-
|
|
336
|
-
for ( let k = 0; k < valueEnd; ++ k ) {
|
|
331
|
+
const valueEnd = targetValueSize - targetOffset * 2;
|
|
337
332
|
|
|
338
|
-
|
|
333
|
+
// Subtract each value for all other numeric track types
|
|
334
|
+
for ( let k = 0; k < valueEnd; ++ k ) {
|
|
339
335
|
|
|
340
|
-
|
|
336
|
+
targetTrack.values[ valueStart + k ] -= referenceValue[ k ];
|
|
341
337
|
|
|
342
338
|
}
|
|
343
339
|
|
|
@@ -345,12 +341,21 @@ const AnimationUtils = {
|
|
|
345
341
|
|
|
346
342
|
}
|
|
347
343
|
|
|
348
|
-
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
targetClip.blendMode = AdditiveAnimationBlendMode;
|
|
349
347
|
|
|
350
|
-
|
|
348
|
+
return targetClip;
|
|
351
349
|
|
|
352
|
-
|
|
350
|
+
}
|
|
353
351
|
|
|
352
|
+
export {
|
|
353
|
+
arraySlice,
|
|
354
|
+
convertArray,
|
|
355
|
+
isTypedArray,
|
|
356
|
+
getKeyframeOrder,
|
|
357
|
+
sortedArray,
|
|
358
|
+
flattenJSON,
|
|
359
|
+
subclip,
|
|
360
|
+
makeClipAdditive
|
|
354
361
|
};
|
|
355
|
-
|
|
356
|
-
export { AnimationUtils };
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import { CubicInterpolant } from '../math/interpolants/CubicInterpolant.js';
|
|
7
7
|
import { LinearInterpolant } from '../math/interpolants/LinearInterpolant.js';
|
|
8
8
|
import { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant.js';
|
|
9
|
-
import
|
|
9
|
+
import * as AnimationUtils from './AnimationUtils.js';
|
|
10
10
|
|
|
11
11
|
class KeyframeTrack {
|
|
12
12
|
|
|
@@ -10,18 +10,18 @@ const _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\.', '' ) + ']';
|
|
|
10
10
|
|
|
11
11
|
// Parent directories, delimited by '/' or ':'. Currently unused, but must
|
|
12
12
|
// be matched to parse the rest of the track name.
|
|
13
|
-
const _directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', _wordChar );
|
|
13
|
+
const _directoryRe = /*@__PURE__*/ /((?:WC+[\/:])*)/.source.replace( 'WC', _wordChar );
|
|
14
14
|
|
|
15
15
|
// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.
|
|
16
|
-
const _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );
|
|
16
|
+
const _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );
|
|
17
17
|
|
|
18
18
|
// Object on target node, and accessor. May not contain reserved
|
|
19
19
|
// characters. Accessor may contain any character except closing bracket.
|
|
20
|
-
const _objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', _wordChar );
|
|
20
|
+
const _objectRe = /*@__PURE__*/ /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', _wordChar );
|
|
21
21
|
|
|
22
22
|
// Property and accessor. May not contain reserved characters. Accessor may
|
|
23
23
|
// contain any non-bracket characters.
|
|
24
|
-
const _propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', _wordChar );
|
|
24
|
+
const _propertyRe = /*@__PURE__*/ /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', _wordChar );
|
|
25
25
|
|
|
26
26
|
const _trackRe = new RegExp( ''
|
|
27
27
|
+ '^'
|
|
@@ -32,7 +32,7 @@ const _trackRe = new RegExp( ''
|
|
|
32
32
|
+ '$'
|
|
33
33
|
);
|
|
34
34
|
|
|
35
|
-
const _supportedObjectNames = [ 'material', 'materials', 'bones' ];
|
|
35
|
+
const _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];
|
|
36
36
|
|
|
37
37
|
class Composite {
|
|
38
38
|
|
|
@@ -496,6 +496,25 @@ class PropertyBinding {
|
|
|
496
496
|
|
|
497
497
|
break;
|
|
498
498
|
|
|
499
|
+
case 'map':
|
|
500
|
+
|
|
501
|
+
if ( ! targetObject.material ) {
|
|
502
|
+
|
|
503
|
+
console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
|
|
504
|
+
return;
|
|
505
|
+
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
if ( ! targetObject.material.map ) {
|
|
509
|
+
|
|
510
|
+
console.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
|
|
511
|
+
return;
|
|
512
|
+
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
targetObject = targetObject.material.map;
|
|
516
|
+
break;
|
|
517
|
+
|
|
499
518
|
default:
|
|
500
519
|
|
|
501
520
|
if ( targetObject[ objectName ] === undefined ) {
|
|
@@ -13,13 +13,6 @@ class CubeCamera extends Object3D {
|
|
|
13
13
|
|
|
14
14
|
this.type = 'CubeCamera';
|
|
15
15
|
|
|
16
|
-
if ( renderTarget.isWebGLCubeRenderTarget !== true ) {
|
|
17
|
-
|
|
18
|
-
console.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );
|
|
19
|
-
return;
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
16
|
this.renderTarget = renderTarget;
|
|
24
17
|
|
|
25
18
|
const cameraPX = new PerspectiveCamera( fov, aspect, near, far );
|