@plastic-software/three 0.174.0 → 0.175.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -9,15 +9,62 @@ import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack.js';
|
|
|
9
9
|
import { generateUUID } from '../math/MathUtils.js';
|
|
10
10
|
import { NormalAnimationBlendMode } from '../constants.js';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* A reusable set of keyframe tracks which represent an animation.
|
|
14
|
+
*/
|
|
12
15
|
class AnimationClip {
|
|
13
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new animation clip.
|
|
19
|
+
*
|
|
20
|
+
* Note: Instead of instantiating an AnimationClip directly with the constructor, you can
|
|
21
|
+
* use the static interface of this class for creating clips. In most cases though, animation clips
|
|
22
|
+
* will automatically be created by loaders when importing animated 3D assets.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} [name=''] - The clip's name.
|
|
25
|
+
* @param {number} [duration=-1] - The clip's duration in seconds. If a negative value is passed,
|
|
26
|
+
* the duration will be calculated from the passed keyframes.
|
|
27
|
+
* @param {Array<KeyframeTrack>} tracks - An array of keyframe tracks.
|
|
28
|
+
* @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode=NormalAnimationBlendMode] - Defines how the animation
|
|
29
|
+
* is blended/combined when two or more animations are simultaneously played.
|
|
30
|
+
*/
|
|
14
31
|
constructor( name = '', duration = - 1, tracks = [], blendMode = NormalAnimationBlendMode ) {
|
|
15
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The clip's name.
|
|
35
|
+
*
|
|
36
|
+
* @type {string}
|
|
37
|
+
*/
|
|
16
38
|
this.name = name;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* An array of keyframe tracks.
|
|
42
|
+
*
|
|
43
|
+
* @type {Array<KeyframeTrack>}
|
|
44
|
+
*/
|
|
17
45
|
this.tracks = tracks;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The clip's duration in seconds.
|
|
49
|
+
*
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
18
52
|
this.duration = duration;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Defines how the animation is blended/combined when two or more animations
|
|
56
|
+
* are simultaneously played.
|
|
57
|
+
*
|
|
58
|
+
* @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)}
|
|
59
|
+
*/
|
|
19
60
|
this.blendMode = blendMode;
|
|
20
61
|
|
|
62
|
+
/**
|
|
63
|
+
* The UUID of the animation clip.
|
|
64
|
+
*
|
|
65
|
+
* @type {string}
|
|
66
|
+
* @readonly
|
|
67
|
+
*/
|
|
21
68
|
this.uuid = generateUUID();
|
|
22
69
|
|
|
23
70
|
// this means it should figure out its duration by scanning the tracks
|
|
@@ -29,7 +76,13 @@ class AnimationClip {
|
|
|
29
76
|
|
|
30
77
|
}
|
|
31
78
|
|
|
32
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Factory method for creating an animation clip from the given JSON.
|
|
81
|
+
*
|
|
82
|
+
* @static
|
|
83
|
+
* @param {Object} json - The serialized animation clip.
|
|
84
|
+
* @return {AnimationClip} The new animation clip.
|
|
85
|
+
*/
|
|
33
86
|
static parse( json ) {
|
|
34
87
|
|
|
35
88
|
const tracks = [],
|
|
@@ -49,6 +102,13 @@ class AnimationClip {
|
|
|
49
102
|
|
|
50
103
|
}
|
|
51
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Serializes the given animation clip into JSON.
|
|
107
|
+
*
|
|
108
|
+
* @static
|
|
109
|
+
* @param {AnimationClip} clip - The animation clip to serialize.
|
|
110
|
+
* @return {Object} The JSON object.
|
|
111
|
+
*/
|
|
52
112
|
static toJSON( clip ) {
|
|
53
113
|
|
|
54
114
|
const tracks = [],
|
|
@@ -74,6 +134,20 @@ class AnimationClip {
|
|
|
74
134
|
|
|
75
135
|
}
|
|
76
136
|
|
|
137
|
+
/**
|
|
138
|
+
* Returns a new animation clip from the passed morph targets array of a
|
|
139
|
+
* geometry, taking a name and the number of frames per second.
|
|
140
|
+
*
|
|
141
|
+
* Note: The fps parameter is required, but the animation speed can be
|
|
142
|
+
* overridden via {@link AnimationAction#setDuration}.
|
|
143
|
+
*
|
|
144
|
+
* @static
|
|
145
|
+
* @param {string} name - The name of the animation clip.
|
|
146
|
+
* @param {Array<Object>} morphTargetSequence - A sequence of morph targets.
|
|
147
|
+
* @param {number} fps - The Frames-Per-Second value.
|
|
148
|
+
* @param {boolean} noLoop - Whether the clip should be no loop or not.
|
|
149
|
+
* @return {AnimationClip} The new animation clip.
|
|
150
|
+
*/
|
|
77
151
|
static CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {
|
|
78
152
|
|
|
79
153
|
const numMorphTargets = morphTargetSequence.length;
|
|
@@ -116,6 +190,16 @@ class AnimationClip {
|
|
|
116
190
|
|
|
117
191
|
}
|
|
118
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Searches for an animation clip by name, taking as its first parameter
|
|
195
|
+
* either an array of clips, or a mesh or geometry that contains an
|
|
196
|
+
* array named "animations" property.
|
|
197
|
+
*
|
|
198
|
+
* @static
|
|
199
|
+
* @param {(Array<AnimationClip>|Object3D)} objectOrClipArray - The array or object to search through.
|
|
200
|
+
* @param {string} name - The name to search for.
|
|
201
|
+
* @return {?AnimationClip} The found animation clip. Returns `null` if no clip has been found.
|
|
202
|
+
*/
|
|
119
203
|
static findByName( objectOrClipArray, name ) {
|
|
120
204
|
|
|
121
205
|
let clipArray = objectOrClipArray;
|
|
@@ -141,6 +225,19 @@ class AnimationClip {
|
|
|
141
225
|
|
|
142
226
|
}
|
|
143
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Returns an array of new AnimationClips created from the morph target
|
|
230
|
+
* sequences of a geometry, trying to sort morph target names into
|
|
231
|
+
* animation-group-based patterns like "Walk_001, Walk_002, Run_001, Run_002...".
|
|
232
|
+
*
|
|
233
|
+
* See {@link MD2Loader#parse} as an example for how the method should be used.
|
|
234
|
+
*
|
|
235
|
+
* @static
|
|
236
|
+
* @param {Array<Object>} morphTargets - A sequence of morph targets.
|
|
237
|
+
* @param {number} fps - The Frames-Per-Second value.
|
|
238
|
+
* @param {boolean} noLoop - Whether the clip should be no loop or not.
|
|
239
|
+
* @return {Array<AnimationClip>} An array of new animation clips.
|
|
240
|
+
*/
|
|
144
241
|
static CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {
|
|
145
242
|
|
|
146
243
|
const animationToMorphTargets = {};
|
|
@@ -186,9 +283,19 @@ class AnimationClip {
|
|
|
186
283
|
|
|
187
284
|
}
|
|
188
285
|
|
|
189
|
-
|
|
286
|
+
/**
|
|
287
|
+
* Parses the `animation.hierarchy` format and returns a new animation clip.
|
|
288
|
+
*
|
|
289
|
+
* @static
|
|
290
|
+
* @deprecated since r175.
|
|
291
|
+
* @param {Object} animation - A serialized animation clip as JSON.
|
|
292
|
+
* @param {Array<Bones>} bones - An array of bones.
|
|
293
|
+
* @return {?AnimationClip} The new animation clip.
|
|
294
|
+
*/
|
|
190
295
|
static parseAnimation( animation, bones ) {
|
|
191
296
|
|
|
297
|
+
console.warn( 'THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185' );
|
|
298
|
+
|
|
192
299
|
if ( ! animation ) {
|
|
193
300
|
|
|
194
301
|
console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );
|
|
@@ -314,6 +421,11 @@ class AnimationClip {
|
|
|
314
421
|
|
|
315
422
|
}
|
|
316
423
|
|
|
424
|
+
/**
|
|
425
|
+
* Sets the duration of this clip to the duration of its longest keyframe track.
|
|
426
|
+
*
|
|
427
|
+
* @return {AnimationClip} A reference to this animation clip.
|
|
428
|
+
*/
|
|
317
429
|
resetDuration() {
|
|
318
430
|
|
|
319
431
|
const tracks = this.tracks;
|
|
@@ -333,6 +445,11 @@ class AnimationClip {
|
|
|
333
445
|
|
|
334
446
|
}
|
|
335
447
|
|
|
448
|
+
/**
|
|
449
|
+
* Trims all tracks to the clip's duration.
|
|
450
|
+
*
|
|
451
|
+
* @return {AnimationClip} A reference to this animation clip.
|
|
452
|
+
*/
|
|
336
453
|
trim() {
|
|
337
454
|
|
|
338
455
|
for ( let i = 0; i < this.tracks.length; i ++ ) {
|
|
@@ -345,6 +462,12 @@ class AnimationClip {
|
|
|
345
462
|
|
|
346
463
|
}
|
|
347
464
|
|
|
465
|
+
/**
|
|
466
|
+
* Performs minimal validation on each track in the clip. Returns `true` if all
|
|
467
|
+
* tracks are valid.
|
|
468
|
+
*
|
|
469
|
+
* @return {boolean} Whether the clip's keyframes are valid or not.
|
|
470
|
+
*/
|
|
348
471
|
validate() {
|
|
349
472
|
|
|
350
473
|
let valid = true;
|
|
@@ -359,6 +482,12 @@ class AnimationClip {
|
|
|
359
482
|
|
|
360
483
|
}
|
|
361
484
|
|
|
485
|
+
/**
|
|
486
|
+
* Optimizes each track by removing equivalent sequential keys (which are
|
|
487
|
+
* common in morph target sequences).
|
|
488
|
+
*
|
|
489
|
+
* @return {AnimationClip} A reference to this animation clip.
|
|
490
|
+
*/
|
|
362
491
|
optimize() {
|
|
363
492
|
|
|
364
493
|
for ( let i = 0; i < this.tracks.length; i ++ ) {
|
|
@@ -371,6 +500,11 @@ class AnimationClip {
|
|
|
371
500
|
|
|
372
501
|
}
|
|
373
502
|
|
|
503
|
+
/**
|
|
504
|
+
* Returns a new animation clip with copied values from this instance.
|
|
505
|
+
*
|
|
506
|
+
* @return {AnimationClip} A clone of this instance.
|
|
507
|
+
*/
|
|
374
508
|
clone() {
|
|
375
509
|
|
|
376
510
|
const tracks = [];
|
|
@@ -385,6 +519,11 @@ class AnimationClip {
|
|
|
385
519
|
|
|
386
520
|
}
|
|
387
521
|
|
|
522
|
+
/**
|
|
523
|
+
* Serializes this animation clip into JSON.
|
|
524
|
+
*
|
|
525
|
+
* @return {Object} The JSON object.
|
|
526
|
+
*/
|
|
388
527
|
toJSON() {
|
|
389
528
|
|
|
390
529
|
return this.constructor.toJSON( this );
|
|
@@ -6,12 +6,20 @@ import { PropertyMixer } from './PropertyMixer.js';
|
|
|
6
6
|
import { AnimationClip } from './AnimationClip.js';
|
|
7
7
|
import { NormalAnimationBlendMode } from '../constants.js';
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
const _controlInterpolantsResultBuffer = new Float32Array( 1 );
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* `AnimationMixer` is a player for animations on a particular object in
|
|
13
|
+
* the scene. When multiple objects in the scene are animated independently,
|
|
14
|
+
* one `AnimationMixer` may be used for each object.
|
|
15
|
+
*/
|
|
13
16
|
class AnimationMixer extends EventDispatcher {
|
|
14
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new animation mixer.
|
|
20
|
+
*
|
|
21
|
+
* @param {Object3D} root - The object whose animations shall be played by this mixer.
|
|
22
|
+
*/
|
|
15
23
|
constructor( root ) {
|
|
16
24
|
|
|
17
25
|
super();
|
|
@@ -19,7 +27,25 @@ class AnimationMixer extends EventDispatcher {
|
|
|
19
27
|
this._root = root;
|
|
20
28
|
this._initMemoryManager();
|
|
21
29
|
this._accuIndex = 0;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The global mixer time (in seconds; starting with `0` on the mixer's creation).
|
|
33
|
+
*
|
|
34
|
+
* @type {number}
|
|
35
|
+
* @default 0
|
|
36
|
+
*/
|
|
22
37
|
this.time = 0;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A scaling factor for the global time.
|
|
41
|
+
*
|
|
42
|
+
* Note: Setting this member to `0` and later back to `1` is a
|
|
43
|
+
* possibility to pause/unpause all actions that are controlled by this
|
|
44
|
+
* mixer.
|
|
45
|
+
*
|
|
46
|
+
* @type {number}
|
|
47
|
+
* @default 1
|
|
48
|
+
*/
|
|
23
49
|
this.timeScale = 1.0;
|
|
24
50
|
|
|
25
51
|
}
|
|
@@ -510,9 +536,18 @@ class AnimationMixer extends EventDispatcher {
|
|
|
510
536
|
|
|
511
537
|
}
|
|
512
538
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
539
|
+
/**
|
|
540
|
+
* Returns an instance of {@link AnimationAction} for the passed clip.
|
|
541
|
+
*
|
|
542
|
+
* If an action fitting the clip and root parameters doesn't yet exist, it
|
|
543
|
+
* will be created by this method. Calling this method several times with the
|
|
544
|
+
* same clip and root parameters always returns the same action.
|
|
545
|
+
*
|
|
546
|
+
* @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.
|
|
547
|
+
* @param {Object3D} [optionalRoot] - An alternative root object.
|
|
548
|
+
* @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode.
|
|
549
|
+
* @return {?AnimationAction} The animation action.
|
|
550
|
+
*/
|
|
516
551
|
clipAction( clip, optionalRoot, blendMode ) {
|
|
517
552
|
|
|
518
553
|
const root = optionalRoot || this._root,
|
|
@@ -574,7 +609,13 @@ class AnimationMixer extends EventDispatcher {
|
|
|
574
609
|
|
|
575
610
|
}
|
|
576
611
|
|
|
577
|
-
|
|
612
|
+
/**
|
|
613
|
+
* Returns an existing animation action for the passed clip.
|
|
614
|
+
*
|
|
615
|
+
* @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.
|
|
616
|
+
* @param {Object3D} [optionalRoot] - An alternative root object.
|
|
617
|
+
* @return {?AnimationAction} The animation action. Returns `null` if no action was found.
|
|
618
|
+
*/
|
|
578
619
|
existingAction( clip, optionalRoot ) {
|
|
579
620
|
|
|
580
621
|
const root = optionalRoot || this._root,
|
|
@@ -597,7 +638,11 @@ class AnimationMixer extends EventDispatcher {
|
|
|
597
638
|
|
|
598
639
|
}
|
|
599
640
|
|
|
600
|
-
|
|
641
|
+
/**
|
|
642
|
+
* Deactivates all previously scheduled actions on this mixer.
|
|
643
|
+
*
|
|
644
|
+
* @return {AnimationMixer} A reference to thi animation mixer.
|
|
645
|
+
*/
|
|
601
646
|
stopAllAction() {
|
|
602
647
|
|
|
603
648
|
const actions = this._actions,
|
|
@@ -613,7 +658,15 @@ class AnimationMixer extends EventDispatcher {
|
|
|
613
658
|
|
|
614
659
|
}
|
|
615
660
|
|
|
616
|
-
|
|
661
|
+
/**
|
|
662
|
+
* Advances the global mixer time and updates the animation.
|
|
663
|
+
*
|
|
664
|
+
* This is usually done in the render loop by passing the delta
|
|
665
|
+
* time from {@link Clock} or {@link Timer}.
|
|
666
|
+
*
|
|
667
|
+
* @param {number} deltaTime - The delta time in seconds.
|
|
668
|
+
* @return {AnimationMixer} A reference to thi animation mixer.
|
|
669
|
+
*/
|
|
617
670
|
update( deltaTime ) {
|
|
618
671
|
|
|
619
672
|
deltaTime *= this.timeScale;
|
|
@@ -651,8 +704,16 @@ class AnimationMixer extends EventDispatcher {
|
|
|
651
704
|
|
|
652
705
|
}
|
|
653
706
|
|
|
654
|
-
|
|
655
|
-
|
|
707
|
+
/**
|
|
708
|
+
* Sets the global mixer to a specific time and updates the animation accordingly.
|
|
709
|
+
*
|
|
710
|
+
* This is useful when you need to jump to an exact time in an animation. The
|
|
711
|
+
* input parameter will be scaled by {@link AnimationMixer#timeScale}
|
|
712
|
+
*
|
|
713
|
+
* @param {number} time - The time to set in seconds.
|
|
714
|
+
* @return {AnimationMixer} A reference to thi animation mixer.
|
|
715
|
+
*/
|
|
716
|
+
setTime( time ) {
|
|
656
717
|
|
|
657
718
|
this.time = 0; // Zero out time attribute for AnimationMixer object;
|
|
658
719
|
for ( let i = 0; i < this._actions.length; i ++ ) {
|
|
@@ -661,18 +722,27 @@ class AnimationMixer extends EventDispatcher {
|
|
|
661
722
|
|
|
662
723
|
}
|
|
663
724
|
|
|
664
|
-
return this.update(
|
|
725
|
+
return this.update( time ); // Update used to set exact time. Returns "this" AnimationMixer object.
|
|
665
726
|
|
|
666
727
|
}
|
|
667
728
|
|
|
668
|
-
|
|
729
|
+
/**
|
|
730
|
+
* Returns this mixer's root object.
|
|
731
|
+
*
|
|
732
|
+
* @return {Object3D} The mixer's root object.
|
|
733
|
+
*/
|
|
669
734
|
getRoot() {
|
|
670
735
|
|
|
671
736
|
return this._root;
|
|
672
737
|
|
|
673
738
|
}
|
|
674
739
|
|
|
675
|
-
|
|
740
|
+
/**
|
|
741
|
+
* Deallocates all memory resources for a clip. Before using this method make
|
|
742
|
+
* sure to call {@link AnimationAction#stop} for all related actions.
|
|
743
|
+
*
|
|
744
|
+
* @param {AnimationClip} clip - The clip to uncache.
|
|
745
|
+
*/
|
|
676
746
|
uncacheClip( clip ) {
|
|
677
747
|
|
|
678
748
|
const actions = this._actions,
|
|
@@ -714,7 +784,14 @@ class AnimationMixer extends EventDispatcher {
|
|
|
714
784
|
|
|
715
785
|
}
|
|
716
786
|
|
|
717
|
-
|
|
787
|
+
/**
|
|
788
|
+
* Deallocates all memory resources for a root object. Before using this
|
|
789
|
+
* method make sure to call {@link AnimationAction#stop} for all related
|
|
790
|
+
* actions or alternatively {@link AnimationMixer#stopAllAction} when the
|
|
791
|
+
* mixer operates on a single root.
|
|
792
|
+
*
|
|
793
|
+
* @param {Object3D} root - The root object to uncache.
|
|
794
|
+
*/
|
|
718
795
|
uncacheRoot( root ) {
|
|
719
796
|
|
|
720
797
|
const rootUuid = root.uuid,
|
|
@@ -751,7 +828,14 @@ class AnimationMixer extends EventDispatcher {
|
|
|
751
828
|
|
|
752
829
|
}
|
|
753
830
|
|
|
754
|
-
|
|
831
|
+
/**
|
|
832
|
+
* Deallocates all memory resources for an action. The action is identified by the
|
|
833
|
+
* given clip and an optional root object. Before using this method make
|
|
834
|
+
* sure to call {@link AnimationAction#stop} to deactivate the action.
|
|
835
|
+
*
|
|
836
|
+
* @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip.
|
|
837
|
+
* @param {Object3D} [optionalRoot] - An alternative root object.
|
|
838
|
+
*/
|
|
755
839
|
uncacheAction( clip, optionalRoot ) {
|
|
756
840
|
|
|
757
841
|
const action = this.existingAction( clip, optionalRoot );
|
|
@@ -2,40 +2,49 @@ import { PropertyBinding } from './PropertyBinding.js';
|
|
|
2
2
|
import { generateUUID } from '../math/MathUtils.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
5
|
* A group of objects that receives a shared animation state.
|
|
7
6
|
*
|
|
8
7
|
* Usage:
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* - You can also add and remove objects later when the mixer
|
|
16
|
-
* is running.
|
|
9
|
+
* - Add objects you would otherwise pass as 'root' to the
|
|
10
|
+
* constructor or the .clipAction method of AnimationMixer.
|
|
11
|
+
* - Instead pass this object as 'root'.
|
|
12
|
+
* - You can also add and remove objects later when the mixer is running.
|
|
17
13
|
*
|
|
18
14
|
* Note:
|
|
19
15
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* on the group.
|
|
16
|
+
* - Objects of this class appear as one object to the mixer,
|
|
17
|
+
* so cache control of the individual objects must be done on the group.
|
|
23
18
|
*
|
|
24
19
|
* Limitation:
|
|
25
20
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* - A single property can either be controlled through a
|
|
30
|
-
* target group or directly, but not both.
|
|
21
|
+
* - The animated properties must be compatible among the all objects in the group.
|
|
22
|
+
* - A single property can either be controlled through a target group or directly, but not both.
|
|
31
23
|
*/
|
|
32
|
-
|
|
33
24
|
class AnimationObjectGroup {
|
|
34
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new animation group.
|
|
28
|
+
*
|
|
29
|
+
* @param {...Object3D} arguments - An arbitrary number of 3D objects that share the same animation state.
|
|
30
|
+
*/
|
|
35
31
|
constructor() {
|
|
36
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
37
40
|
this.isAnimationObjectGroup = true;
|
|
38
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The UUID of the 3D object.
|
|
44
|
+
*
|
|
45
|
+
* @type {string}
|
|
46
|
+
* @readonly
|
|
47
|
+
*/
|
|
39
48
|
this.uuid = generateUUID();
|
|
40
49
|
|
|
41
50
|
// cached objects followed by the active ones
|
|
@@ -84,6 +93,11 @@ class AnimationObjectGroup {
|
|
|
84
93
|
|
|
85
94
|
}
|
|
86
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Adds an arbitrary number of objects to this animation group.
|
|
98
|
+
*
|
|
99
|
+
* @param {...Object3D} arguments - The 3D objects to add.
|
|
100
|
+
*/
|
|
87
101
|
add() {
|
|
88
102
|
|
|
89
103
|
const objects = this._objects,
|
|
@@ -172,6 +186,11 @@ class AnimationObjectGroup {
|
|
|
172
186
|
|
|
173
187
|
}
|
|
174
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Removes an arbitrary number of objects to this animation group
|
|
191
|
+
*
|
|
192
|
+
* @param {...Object3D} arguments - The 3D objects to remove.
|
|
193
|
+
*/
|
|
175
194
|
remove() {
|
|
176
195
|
|
|
177
196
|
const objects = this._objects,
|
|
@@ -221,7 +240,11 @@ class AnimationObjectGroup {
|
|
|
221
240
|
|
|
222
241
|
}
|
|
223
242
|
|
|
224
|
-
|
|
243
|
+
/**
|
|
244
|
+
* Deallocates all memory resources for the passed 3D objects of this animation group.
|
|
245
|
+
*
|
|
246
|
+
* @param {...Object3D} arguments - The 3D objects to uncache.
|
|
247
|
+
*/
|
|
225
248
|
uncache() {
|
|
226
249
|
|
|
227
250
|
const objects = this._objects,
|