@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.
Files changed (567) hide show
  1. package/build/three.cjs +10744 -1476
  2. package/build/three.core.js +9633 -1096
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +918 -189
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +4 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2658 -1697
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2654 -1709
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +1 -1
  13. package/examples/jsm/animation/AnimationClipCreator.js +57 -6
  14. package/examples/jsm/animation/CCDIKSolver.js +93 -39
  15. package/examples/jsm/capabilities/WebGL.js +28 -3
  16. package/examples/jsm/capabilities/WebGPU.js +16 -6
  17. package/examples/jsm/controls/ArcballControls.js +424 -154
  18. package/examples/jsm/controls/DragControls.js +93 -2
  19. package/examples/jsm/controls/FirstPersonControls.js +113 -4
  20. package/examples/jsm/controls/FlyControls.js +49 -2
  21. package/examples/jsm/controls/MapControls.js +42 -9
  22. package/examples/jsm/controls/OrbitControls.js +345 -42
  23. package/examples/jsm/controls/PointerLockControls.js +111 -9
  24. package/examples/jsm/controls/TrackballControls.js +159 -8
  25. package/examples/jsm/controls/TransformControls.js +252 -6
  26. package/examples/jsm/csm/CSM.js +226 -15
  27. package/examples/jsm/csm/CSMFrustum.js +52 -0
  28. package/examples/jsm/csm/CSMHelper.js +47 -0
  29. package/examples/jsm/csm/CSMShader.js +10 -1
  30. package/examples/jsm/csm/CSMShadowNode.js +156 -13
  31. package/examples/jsm/curves/CurveExtras.js +289 -31
  32. package/examples/jsm/curves/NURBSCurve.js +57 -14
  33. package/examples/jsm/curves/NURBSSurface.js +50 -6
  34. package/examples/jsm/curves/NURBSUtils.js +96 -112
  35. package/examples/jsm/curves/NURBSVolume.js +22 -4
  36. package/examples/jsm/effects/AnaglyphEffect.js +30 -0
  37. package/examples/jsm/effects/AsciiEffect.js +60 -15
  38. package/examples/jsm/effects/OutlineEffect.js +59 -111
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
  40. package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
  41. package/examples/jsm/effects/StereoEffect.js +29 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +49 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +23 -4
  44. package/examples/jsm/exporters/DRACOExporter.js +53 -13
  45. package/examples/jsm/exporters/EXRExporter.js +37 -8
  46. package/examples/jsm/exporters/GLTFExporter.js +171 -48
  47. package/examples/jsm/exporters/KTX2Exporter.js +20 -0
  48. package/examples/jsm/exporters/OBJExporter.js +18 -0
  49. package/examples/jsm/exporters/PLYExporter.js +39 -9
  50. package/examples/jsm/exporters/STLExporter.js +25 -5
  51. package/examples/jsm/exporters/USDZExporter.js +70 -3
  52. package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +18 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +20 -9
  55. package/examples/jsm/geometries/ParametricFunctions.js +97 -0
  56. package/examples/jsm/geometries/ParametricGeometry.js +37 -5
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +22 -38
  59. package/examples/jsm/geometries/TextGeometry.js +44 -16
  60. package/examples/jsm/helpers/LightProbeHelper.js +35 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +35 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
  64. package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
  65. package/examples/jsm/helpers/TextureHelper.js +27 -0
  66. package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
  67. package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
  68. package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
  69. package/examples/jsm/helpers/ViewHelper.js +75 -1
  70. package/examples/jsm/interactive/HTMLMesh.js +25 -0
  71. package/examples/jsm/interactive/InteractiveGroup.js +65 -5
  72. package/examples/jsm/interactive/SelectionBox.js +74 -9
  73. package/examples/jsm/interactive/SelectionHelper.js +71 -29
  74. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  75. package/examples/jsm/lighting/TiledLighting.js +23 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +26 -1
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
  79. package/examples/jsm/lines/Line2.js +36 -0
  80. package/examples/jsm/lines/LineGeometry.js +52 -0
  81. package/examples/jsm/lines/LineMaterial.js +95 -0
  82. package/examples/jsm/lines/LineSegments2.js +51 -2
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
  84. package/examples/jsm/lines/Wireframe.js +38 -2
  85. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +25 -1
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
  88. package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
  89. package/examples/jsm/loaders/3DMLoader.js +71 -2
  90. package/examples/jsm/loaders/3MFLoader.js +41 -3
  91. package/examples/jsm/loaders/AMFLoader.js +31 -12
  92. package/examples/jsm/loaders/BVHLoader.js +57 -11
  93. package/examples/jsm/loaders/ColladaLoader.js +35 -0
  94. package/examples/jsm/loaders/DDSLoader.js +24 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +73 -1
  96. package/examples/jsm/loaders/EXRLoader.js +40 -8
  97. package/examples/jsm/loaders/FBXLoader.js +42 -14
  98. package/examples/jsm/loaders/FontLoader.js +60 -2
  99. package/examples/jsm/loaders/GCodeLoader.js +33 -5
  100. package/examples/jsm/loaders/GLTFLoader.js +218 -5
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
  102. package/examples/jsm/loaders/IESLoader.js +41 -0
  103. package/examples/jsm/loaders/KMZLoader.js +32 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +86 -18
  105. package/examples/jsm/loaders/KTXLoader.js +26 -6
  106. package/examples/jsm/loaders/LDrawLoader.js +115 -5
  107. package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
  108. package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
  109. package/examples/jsm/loaders/LUTImageLoader.js +78 -38
  110. package/examples/jsm/loaders/LWOLoader.js +46 -7
  111. package/examples/jsm/loaders/LottieLoader.js +37 -0
  112. package/examples/jsm/loaders/MD2Loader.js +36 -1
  113. package/examples/jsm/loaders/MDDLoader.js +56 -12
  114. package/examples/jsm/loaders/MTLLoader.js +38 -33
  115. package/examples/jsm/loaders/MaterialXLoader.js +33 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +36 -5
  117. package/examples/jsm/loaders/OBJLoader.js +48 -1
  118. package/examples/jsm/loaders/PCDLoader.js +47 -0
  119. package/examples/jsm/loaders/PDBLoader.js +40 -2
  120. package/examples/jsm/loaders/PLYLoader.js +62 -32
  121. package/examples/jsm/loaders/PVRLoader.js +23 -5
  122. package/examples/jsm/loaders/RGBELoader.js +38 -5
  123. package/examples/jsm/loaders/RGBMLoader.js +67 -1
  124. package/examples/jsm/loaders/STLLoader.js +47 -38
  125. package/examples/jsm/loaders/SVGLoader.js +113 -20
  126. package/examples/jsm/loaders/TDSLoader.js +81 -61
  127. package/examples/jsm/loaders/TGALoader.js +22 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +22 -0
  129. package/examples/jsm/loaders/TTFLoader.js +36 -2
  130. package/examples/jsm/loaders/USDZLoader.js +34 -1
  131. package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
  132. package/examples/jsm/loaders/VOXLoader.js +57 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +32 -1
  134. package/examples/jsm/loaders/VTKLoader.js +38 -0
  135. package/examples/jsm/loaders/XYZLoader.js +35 -0
  136. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
  137. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
  138. package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
  139. package/examples/jsm/math/Capsule.js +89 -14
  140. package/examples/jsm/math/ColorConverter.js +21 -0
  141. package/examples/jsm/math/ColorSpaces.js +53 -0
  142. package/examples/jsm/math/ConvexHull.js +514 -92
  143. package/examples/jsm/math/ImprovedNoise.js +14 -2
  144. package/examples/jsm/math/Lut.js +111 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
  146. package/examples/jsm/math/OBB.js +139 -46
  147. package/examples/jsm/math/Octree.js +132 -5
  148. package/examples/jsm/math/SimplexNoise.js +66 -42
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
  150. package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
  151. package/examples/jsm/misc/Gyroscope.js +11 -0
  152. package/examples/jsm/misc/MD2Character.js +115 -2
  153. package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
  154. package/examples/jsm/misc/MorphAnimMesh.js +43 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +102 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
  158. package/examples/jsm/misc/RollerCoaster.js +52 -0
  159. package/examples/jsm/misc/Timer.js +79 -2
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +108 -72
  162. package/examples/jsm/misc/VolumeSlice.js +88 -45
  163. package/examples/jsm/modifiers/CurveModifier.js +57 -34
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
  167. package/examples/jsm/modifiers/TessellateModifier.js +33 -2
  168. package/examples/jsm/objects/GroundedSkybox.js +23 -5
  169. package/examples/jsm/objects/Lensflare.js +91 -2
  170. package/examples/jsm/objects/LensflareMesh.js +53 -2
  171. package/examples/jsm/objects/MarchingCubes.js +88 -5
  172. package/examples/jsm/objects/Reflector.js +70 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
  174. package/examples/jsm/objects/Refractor.js +61 -0
  175. package/examples/jsm/objects/ShadowMesh.js +53 -4
  176. package/examples/jsm/objects/Sky.js +26 -9
  177. package/examples/jsm/objects/SkyMesh.js +60 -9
  178. package/examples/jsm/objects/Water.js +44 -5
  179. package/examples/jsm/objects/Water2.js +42 -3
  180. package/examples/jsm/objects/Water2Mesh.js +38 -3
  181. package/examples/jsm/objects/WaterMesh.js +94 -7
  182. package/examples/jsm/physics/AmmoPhysics.js +47 -0
  183. package/examples/jsm/physics/JoltPhysics.js +48 -0
  184. package/examples/jsm/physics/RapierPhysics.js +56 -0
  185. package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
  186. package/examples/jsm/postprocessing/BloomPass.js +125 -24
  187. package/examples/jsm/postprocessing/BokehPass.js +98 -22
  188. package/examples/jsm/postprocessing/ClearPass.js +53 -3
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
  190. package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
  191. package/examples/jsm/postprocessing/EffectComposer.js +131 -0
  192. package/examples/jsm/postprocessing/FilmPass.js +53 -5
  193. package/examples/jsm/postprocessing/GTAOPass.js +191 -48
  194. package/examples/jsm/postprocessing/GlitchPass.js +84 -33
  195. package/examples/jsm/postprocessing/HalftonePass.js +64 -10
  196. package/examples/jsm/postprocessing/LUTPass.js +37 -8
  197. package/examples/jsm/postprocessing/MaskPass.js +90 -0
  198. package/examples/jsm/postprocessing/OutlinePass.js +266 -133
  199. package/examples/jsm/postprocessing/OutputPass.js +53 -14
  200. package/examples/jsm/postprocessing/Pass.js +98 -4
  201. package/examples/jsm/postprocessing/RenderPass.js +83 -0
  202. package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
  203. package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
  204. package/examples/jsm/postprocessing/SAOPass.js +126 -53
  205. package/examples/jsm/postprocessing/SMAAPass.js +103 -71
  206. package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
  207. package/examples/jsm/postprocessing/SSAOPass.js +160 -47
  208. package/examples/jsm/postprocessing/SSRPass.js +230 -49
  209. package/examples/jsm/postprocessing/SavePass.js +68 -16
  210. package/examples/jsm/postprocessing/ShaderPass.js +64 -7
  211. package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
  212. package/examples/jsm/postprocessing/TexturePass.js +71 -8
  213. package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
  214. package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
  215. package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
  216. package/examples/jsm/renderers/Projector.js +18 -2
  217. package/examples/jsm/renderers/SVGRenderer.js +124 -0
  218. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
  219. package/examples/jsm/shaders/AfterimageShader.js +6 -4
  220. package/examples/jsm/shaders/BasicShader.js +6 -2
  221. package/examples/jsm/shaders/BleachBypassShader.js +8 -4
  222. package/examples/jsm/shaders/BlendShader.js +6 -2
  223. package/examples/jsm/shaders/BokehShader.js +7 -4
  224. package/examples/jsm/shaders/BokehShader2.js +7 -3
  225. package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
  226. package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
  227. package/examples/jsm/shaders/ColorifyShader.js +6 -2
  228. package/examples/jsm/shaders/ConvolutionShader.js +7 -39
  229. package/examples/jsm/shaders/CopyShader.js +6 -2
  230. package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
  231. package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
  232. package/examples/jsm/shaders/DigitalGlitch.js +7 -7
  233. package/examples/jsm/shaders/DotScreenShader.js +6 -4
  234. package/examples/jsm/shaders/ExposureShader.js +6 -2
  235. package/examples/jsm/shaders/FXAAShader.js +15 -7
  236. package/examples/jsm/shaders/FilmShader.js +10 -0
  237. package/examples/jsm/shaders/FocusShader.js +6 -4
  238. package/examples/jsm/shaders/FreiChenShader.js +7 -3
  239. package/examples/jsm/shaders/GTAOShader.js +33 -39
  240. package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
  241. package/examples/jsm/shaders/GodRaysShader.js +14 -5
  242. package/examples/jsm/shaders/HalftoneShader.js +11 -5
  243. package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
  244. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
  245. package/examples/jsm/shaders/HueSaturationShader.js +7 -3
  246. package/examples/jsm/shaders/KaleidoShader.js +8 -4
  247. package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
  248. package/examples/jsm/shaders/LuminosityShader.js +6 -3
  249. package/examples/jsm/shaders/MirrorShader.js +7 -4
  250. package/examples/jsm/shaders/NormalMapShader.js +5 -3
  251. package/examples/jsm/shaders/OutputShader.js +11 -0
  252. package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
  253. package/examples/jsm/shaders/RGBShiftShader.js +5 -1
  254. package/examples/jsm/shaders/SAOShader.js +8 -2
  255. package/examples/jsm/shaders/SMAAShader.js +23 -1
  256. package/examples/jsm/shaders/SSAOShader.js +23 -5
  257. package/examples/jsm/shaders/SSRShader.js +25 -1
  258. package/examples/jsm/shaders/SepiaShader.js +6 -4
  259. package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
  260. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
  261. package/examples/jsm/shaders/TechnicolorShader.js +7 -4
  262. package/examples/jsm/shaders/ToonShader.js +29 -7
  263. package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
  264. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
  265. package/examples/jsm/shaders/VelocityShader.js +6 -2
  266. package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
  267. package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
  268. package/examples/jsm/shaders/VignetteShader.js +6 -4
  269. package/examples/jsm/shaders/VolumeShader.js +7 -1
  270. package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
  271. package/examples/jsm/textures/FlakesTexture.js +12 -0
  272. package/examples/jsm/transpiler/Transpiler.js +31 -0
  273. package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
  274. package/examples/jsm/tsl/display/BloomNode.js +1 -1
  275. package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
  276. package/examples/jsm/tsl/display/SSRNode.js +1 -1
  277. package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
  278. package/examples/jsm/tsl/math/Bayer.js +14 -1
  279. package/examples/jsm/tsl/utils/Raymarching.js +4 -2
  280. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  281. package/examples/jsm/utils/CameraUtils.js +10 -7
  282. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  283. package/examples/jsm/utils/GeometryUtils.js +12 -13
  284. package/examples/jsm/utils/LDrawUtils.js +11 -4
  285. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  286. package/examples/jsm/utils/SceneUtils.js +50 -3
  287. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  288. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  289. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  290. package/examples/jsm/utils/SortUtils.js +14 -5
  291. package/examples/jsm/utils/UVsDebug.js +9 -4
  292. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  293. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  294. package/examples/jsm/utils/WorkerPool.js +65 -2
  295. package/examples/jsm/webxr/ARButton.js +18 -0
  296. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  297. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  298. package/examples/jsm/webxr/Text2D.js +11 -0
  299. package/examples/jsm/webxr/VRButton.js +30 -0
  300. package/examples/jsm/webxr/XRButton.js +22 -0
  301. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  302. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  303. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  304. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  305. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  306. package/examples/jsm/webxr/XRPlanes.js +17 -0
  307. package/package.json +1 -1
  308. package/src/Three.TSL.js +3 -1
  309. package/src/animation/AnimationAction.js +262 -30
  310. package/src/animation/AnimationClip.js +141 -2
  311. package/src/animation/AnimationMixer.js +99 -15
  312. package/src/animation/AnimationObjectGroup.js +41 -18
  313. package/src/animation/AnimationUtils.js +168 -18
  314. package/src/animation/KeyframeTrack.js +144 -10
  315. package/src/animation/PropertyBinding.js +77 -3
  316. package/src/animation/PropertyMixer.js +72 -5
  317. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  318. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  319. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  320. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  321. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  322. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  323. package/src/audio/AudioAnalyser.js +1 -1
  324. package/src/audio/AudioListener.js +2 -2
  325. package/src/audio/PositionalAudio.js +5 -5
  326. package/src/constants.js +1432 -5
  327. package/src/core/BufferAttribute.js +413 -3
  328. package/src/core/BufferGeometry.js +337 -1
  329. package/src/core/Clock.js +60 -0
  330. package/src/core/GLBufferAttribute.js +99 -0
  331. package/src/core/InstancedBufferAttribute.js +29 -0
  332. package/src/core/InstancedBufferGeometry.js +20 -0
  333. package/src/core/InstancedInterleavedBuffer.js +26 -0
  334. package/src/core/InterleavedBuffer.js +137 -3
  335. package/src/core/InterleavedBufferAttribute.js +197 -0
  336. package/src/core/Layers.js +71 -10
  337. package/src/core/Object3D.js +23 -0
  338. package/src/core/Raycaster.js +134 -1
  339. package/src/core/RenderTarget.js +166 -7
  340. package/src/core/RenderTarget3D.js +25 -0
  341. package/src/core/RenderTargetArray.js +18 -0
  342. package/src/core/Uniform.js +29 -0
  343. package/src/core/UniformsGroup.js +84 -2
  344. package/src/extras/Controls.js +16 -1
  345. package/src/extras/Earcut.js +3 -781
  346. package/src/extras/ImageUtils.js +3 -2
  347. package/src/extras/PMREMGenerator.js +22 -17
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/extras/core/Path.js +1 -1
  350. package/src/extras/lib/earcut.js +685 -0
  351. package/src/geometries/ConeGeometry.js +2 -2
  352. package/src/geometries/CylinderGeometry.js +2 -2
  353. package/src/geometries/ExtrudeGeometry.js +71 -39
  354. package/src/geometries/LatheGeometry.js +1 -1
  355. package/src/lights/LightShadow.js +1 -1
  356. package/src/lights/webgpu/IESSpotLight.js +1 -1
  357. package/src/loaders/AnimationLoader.js +31 -0
  358. package/src/loaders/AudioLoader.js +31 -0
  359. package/src/loaders/BufferGeometryLoader.js +34 -0
  360. package/src/loaders/Cache.js +45 -0
  361. package/src/loaders/CompressedTextureLoader.js +36 -3
  362. package/src/loaders/CubeTextureLoader.js +45 -0
  363. package/src/loaders/DataTextureLoader.js +44 -3
  364. package/src/loaders/FileLoader.js +57 -1
  365. package/src/loaders/ImageBitmapLoader.js +57 -0
  366. package/src/loaders/ImageLoader.js +30 -0
  367. package/src/loaders/Loader.js +4 -6
  368. package/src/loaders/LoaderUtils.js +18 -36
  369. package/src/loaders/LoadingManager.js +142 -0
  370. package/src/loaders/MaterialLoader.js +57 -0
  371. package/src/loaders/ObjectLoader.js +58 -1
  372. package/src/loaders/TextureLoader.js +33 -0
  373. package/src/loaders/nodes/NodeLoader.js +6 -2
  374. package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
  375. package/src/loaders/nodes/NodeObjectLoader.js +3 -3
  376. package/src/materials/LineBasicMaterial.js +74 -1
  377. package/src/materials/LineDashedMaterial.js +52 -0
  378. package/src/materials/Material.js +18 -3
  379. package/src/materials/MeshBasicMaterial.js +165 -0
  380. package/src/materials/MeshDepthMaterial.js +93 -0
  381. package/src/materials/MeshDistanceMaterial.js +76 -0
  382. package/src/materials/MeshLambertMaterial.js +273 -0
  383. package/src/materials/MeshMatcapMaterial.js +142 -0
  384. package/src/materials/MeshNormalMaterial.js +113 -0
  385. package/src/materials/MeshPhongMaterial.js +288 -0
  386. package/src/materials/MeshPhysicalMaterial.js +292 -1
  387. package/src/materials/MeshStandardMaterial.js +297 -0
  388. package/src/materials/MeshToonMaterial.js +218 -0
  389. package/src/materials/PointsMaterial.js +89 -0
  390. package/src/materials/RawShaderMaterial.js +25 -0
  391. package/src/materials/ShaderMaterial.js +215 -6
  392. package/src/materials/ShadowMaterial.js +54 -0
  393. package/src/materials/SpriteMaterial.js +82 -0
  394. package/src/materials/nodes/Line2NodeMaterial.js +1 -1
  395. package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
  396. package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
  397. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  398. package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
  399. package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
  400. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  401. package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
  402. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
  403. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  404. package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
  405. package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
  406. package/src/materials/nodes/NodeMaterial.js +7 -3
  407. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  408. package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
  409. package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
  410. package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
  411. package/src/math/Color.js +1 -1
  412. package/src/math/MathUtils.js +223 -0
  413. package/src/nodes/Nodes.js +1 -0
  414. package/src/nodes/accessors/BatchNode.js +8 -8
  415. package/src/nodes/accessors/BuiltinNode.js +1 -1
  416. package/src/nodes/accessors/CubeTextureNode.js +1 -1
  417. package/src/nodes/accessors/InstanceNode.js +5 -5
  418. package/src/nodes/accessors/InstancedMeshNode.js +1 -1
  419. package/src/nodes/accessors/MorphNode.js +27 -23
  420. package/src/nodes/accessors/Normal.js +1 -1
  421. package/src/nodes/accessors/Object3DNode.js +12 -12
  422. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  423. package/src/nodes/accessors/ReferenceNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +46 -37
  425. package/src/nodes/accessors/StorageBufferNode.js +1 -1
  426. package/src/nodes/accessors/StorageTextureNode.js +3 -3
  427. package/src/nodes/accessors/Texture3DNode.js +1 -1
  428. package/src/nodes/accessors/TextureNode.js +25 -5
  429. package/src/nodes/accessors/TextureSizeNode.js +1 -1
  430. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  431. package/src/nodes/code/CodeNode.js +4 -4
  432. package/src/nodes/code/ExpressionNode.js +4 -4
  433. package/src/nodes/code/FunctionCallNode.js +23 -3
  434. package/src/nodes/code/ScriptableNode.js +4 -4
  435. package/src/nodes/code/ScriptableValueNode.js +2 -2
  436. package/src/nodes/core/AssignNode.js +1 -1
  437. package/src/nodes/core/AttributeNode.js +1 -1
  438. package/src/nodes/core/BypassNode.js +1 -1
  439. package/src/nodes/core/CacheNode.js +1 -1
  440. package/src/nodes/core/ContextNode.js +1 -1
  441. package/src/nodes/core/InputNode.js +2 -2
  442. package/src/nodes/core/Node.js +14 -2
  443. package/src/nodes/core/NodeBuilder.js +86 -14
  444. package/src/nodes/core/StackNode.js +5 -5
  445. package/src/nodes/core/StructNode.js +1 -1
  446. package/src/nodes/core/StructTypeNode.js +2 -2
  447. package/src/nodes/core/VarNode.js +2 -8
  448. package/src/nodes/core/VaryingNode.js +3 -3
  449. package/src/nodes/display/BlendModes.js +4 -4
  450. package/src/nodes/display/BumpMapNode.js +1 -1
  451. package/src/nodes/display/NormalMapNode.js +1 -1
  452. package/src/nodes/display/PosterizeNode.js +1 -1
  453. package/src/nodes/display/ScreenNode.js +3 -3
  454. package/src/nodes/display/ViewportDepthNode.js +2 -2
  455. package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
  456. package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
  457. package/src/nodes/display/ViewportTextureNode.js +4 -4
  458. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  459. package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
  460. package/src/nodes/geometry/RangeNode.js +1 -1
  461. package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
  462. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  463. package/src/nodes/gpgpu/ComputeNode.js +30 -2
  464. package/src/nodes/lighting/AnalyticLightNode.js +9 -1
  465. package/src/nodes/lighting/LightsNode.js +3 -3
  466. package/src/nodes/lighting/ShadowNode.js +1 -1
  467. package/src/nodes/math/ConditionalNode.js +20 -3
  468. package/src/nodes/math/MathNode.js +83 -78
  469. package/src/nodes/math/OperatorNode.js +171 -82
  470. package/src/nodes/pmrem/PMREMNode.js +4 -4
  471. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  472. package/src/nodes/tsl/TSLBase.js +2 -1
  473. package/src/nodes/tsl/TSLCore.js +115 -12
  474. package/src/nodes/utils/ArrayElementNode.js +3 -1
  475. package/src/nodes/utils/CubeMapNode.js +3 -3
  476. package/src/nodes/utils/DebugNode.js +70 -0
  477. package/src/nodes/utils/EquirectUVNode.js +2 -2
  478. package/src/nodes/utils/JoinNode.js +27 -2
  479. package/src/nodes/utils/LoopNode.js +58 -28
  480. package/src/nodes/utils/MaxMipLevelNode.js +1 -1
  481. package/src/nodes/utils/ReflectorNode.js +2 -2
  482. package/src/nodes/utils/RemapNode.js +6 -6
  483. package/src/nodes/utils/RotateNode.js +1 -1
  484. package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
  485. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  486. package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
  487. package/src/objects/BatchedMesh.js +4 -4
  488. package/src/objects/InstancedMesh.js +2 -2
  489. package/src/objects/LOD.js +1 -1
  490. package/src/objects/Skeleton.js +1 -1
  491. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  492. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  493. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  494. package/src/renderers/WebGLRenderTarget.js +19 -0
  495. package/src/renderers/WebGLRenderer.js +617 -79
  496. package/src/renderers/common/Animation.js +2 -2
  497. package/src/renderers/common/Attributes.js +2 -2
  498. package/src/renderers/common/Backend.js +12 -3
  499. package/src/renderers/common/Background.js +1 -0
  500. package/src/renderers/common/Color4.js +1 -1
  501. package/src/renderers/common/CubeRenderTarget.js +13 -0
  502. package/src/renderers/common/PostProcessing.js +2 -0
  503. package/src/renderers/common/QuadMesh.js +2 -0
  504. package/src/renderers/common/RenderList.js +2 -2
  505. package/src/renderers/common/RenderObject.js +1 -1
  506. package/src/renderers/common/RenderObjects.js +2 -2
  507. package/src/renderers/common/Renderer.js +52 -31
  508. package/src/renderers/common/XRManager.js +333 -10
  509. package/src/renderers/common/extras/PMREMGenerator.js +6 -0
  510. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  511. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
  512. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
  513. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
  514. package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
  515. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
  516. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
  517. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
  518. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
  519. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
  520. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
  521. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
  522. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
  523. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
  524. package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
  525. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
  526. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
  527. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
  528. package/src/renderers/shaders/ShaderChunk.js +2 -0
  529. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
  530. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  531. package/src/renderers/shaders/UniformsLib.js +6 -5
  532. package/src/renderers/shaders/UniformsUtils.js +1 -3
  533. package/src/renderers/webgl/WebGLBackground.js +4 -2
  534. package/src/renderers/webgl/WebGLMaterials.js +12 -0
  535. package/src/renderers/webgl/WebGLProgram.js +25 -5
  536. package/src/renderers/webgl/WebGLPrograms.js +21 -7
  537. package/src/renderers/webgl/WebGLState.js +9 -9
  538. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  539. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  540. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  541. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  542. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  543. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  544. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  545. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  546. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  547. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  548. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  549. package/src/renderers/webxr/WebXRController.js +87 -2
  550. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  551. package/src/renderers/webxr/WebXRManager.js +173 -1
  552. package/src/scenes/Scene.js +2 -1
  553. package/src/textures/CanvasTexture.js +28 -0
  554. package/src/textures/CompressedArrayTexture.js +57 -0
  555. package/src/textures/CompressedCubeTexture.js +29 -0
  556. package/src/textures/CompressedTexture.js +64 -6
  557. package/src/textures/CubeTexture.js +52 -4
  558. package/src/textures/Data3DTexture.js +77 -0
  559. package/src/textures/DataArrayTexture.js +93 -0
  560. package/src/textures/DataTexture.js +65 -0
  561. package/src/textures/DepthTexture.js +59 -9
  562. package/src/textures/FramebufferTexture.js +62 -0
  563. package/src/textures/Source.js +69 -0
  564. package/src/textures/Texture.js +5 -5
  565. package/src/textures/VideoFrameTexture.js +43 -6
  566. package/src/textures/VideoTexture.js +49 -4
  567. 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
- // parse the animation.hierarchy format
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
- // return an action for a clip optionally using a custom root target
514
- // object (this method allocates a lot of dynamic memory in case a
515
- // previously unknown clip/root combination is specified)
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
- // get an existing action
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
- // deactivates all previously scheduled actions
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
- // advance the time and update apply the animation
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
- // Allows you to seek to a specific time in an animation.
655
- setTime( timeInSeconds ) {
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( timeInSeconds ); // Update used to set exact time. Returns "this" AnimationMixer object.
725
+ return this.update( time ); // Update used to set exact time. Returns "this" AnimationMixer object.
665
726
 
666
727
  }
667
728
 
668
- // return this mixer's root target object
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
- // free all resources specific to a particular clip
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
- // free all resources specific to a particular root target object
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
- // remove a targeted clip from the cache
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
- * - Add objects you would otherwise pass as 'root' to the
11
- * constructor or the .clipAction method of AnimationMixer.
12
- *
13
- * - Instead pass this object as 'root'.
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
- * Objects of this class appear as one object to the mixer,
21
- * so cache control of the individual objects must be done
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
- * - The animated properties must be compatible among the
27
- * all objects in the group.
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
- // remove & forget
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,