@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
@@ -10,45 +10,147 @@ import {
10
10
  import { MD2Loader } from '../loaders/MD2Loader.js';
11
11
  import { MorphBlendMesh } from '../misc/MorphBlendMesh.js';
12
12
 
13
+ /**
14
+ * This class represents a management component for animated MD2
15
+ * character assets. It provides a larger API compared to {@link MD2Character}.
16
+ */
13
17
  class MD2CharacterComplex {
14
18
 
19
+ /**
20
+ * Constructs a new MD2 character.
21
+ */
15
22
  constructor() {
16
23
 
24
+ /**
25
+ * The mesh scale.
26
+ *
27
+ * @type {number}
28
+ * @default 1
29
+ */
17
30
  this.scale = 1;
18
31
 
19
- // animation parameters
20
-
32
+ /**
33
+ * The FPS
34
+ *
35
+ * @type {number}
36
+ * @default 6
37
+ */
21
38
  this.animationFPS = 6;
22
- this.transitionFrames = 15;
23
39
 
24
- // movement model parameters
40
+ /**
41
+ * The transition frames.
42
+ *
43
+ * @type {number}
44
+ * @default 15
45
+ */
46
+ this.transitionFrames = 15;
25
47
 
48
+ /**
49
+ * The character's maximum speed.
50
+ *
51
+ * @type {number}
52
+ * @default 275
53
+ */
26
54
  this.maxSpeed = 275;
55
+
56
+ /**
57
+ * The character's maximum reverse speed.
58
+ *
59
+ * @type {number}
60
+ * @default - 275
61
+ */
27
62
  this.maxReverseSpeed = - 275;
28
63
 
64
+ /**
65
+ * The character's front acceleration.
66
+ *
67
+ * @type {number}
68
+ * @default 600
69
+ */
29
70
  this.frontAcceleration = 600;
71
+
72
+ /**
73
+ * The character's back acceleration.
74
+ *
75
+ * @type {number}
76
+ * @default 600
77
+ */
30
78
  this.backAcceleration = 600;
31
79
 
80
+ /**
81
+ * The character's front decceleration.
82
+ *
83
+ * @type {number}
84
+ * @default 600
85
+ */
32
86
  this.frontDecceleration = 600;
33
87
 
88
+ /**
89
+ * The character's angular speed.
90
+ *
91
+ * @type {number}
92
+ * @default 2.5
93
+ */
34
94
  this.angularSpeed = 2.5;
35
95
 
36
- // rig
37
-
96
+ /**
97
+ * The root 3D object
98
+ *
99
+ * @type {Object3D}
100
+ */
38
101
  this.root = new Object3D();
39
102
 
103
+ /**
104
+ * The body mesh.
105
+ *
106
+ * @type {?Mesh}
107
+ * @default null
108
+ */
40
109
  this.meshBody = null;
110
+
111
+ /**
112
+ * The weapon mesh.
113
+ *
114
+ * @type {?Mesh}
115
+ * @default null
116
+ */
41
117
  this.meshWeapon = null;
42
118
 
119
+ /**
120
+ * The movement controls.
121
+ *
122
+ * @type {Object}
123
+ * @default null
124
+ */
43
125
  this.controls = null;
44
126
 
45
- // skins
46
-
127
+ /**
128
+ * The body skins.
129
+ *
130
+ * @type {Array<Texture>}
131
+ */
47
132
  this.skinsBody = [];
133
+
134
+ /**
135
+ * The weapon skins.
136
+ *
137
+ * @type {Array<Texture>}
138
+ */
48
139
  this.skinsWeapon = [];
49
140
 
141
+ /**
142
+ * The weapon meshes.
143
+ *
144
+ * @type {Array<Mesh>}
145
+ */
50
146
  this.weapons = [];
51
147
 
148
+ /**
149
+ * The current skin.
150
+ *
151
+ * @type {Texture}
152
+ * @default undefined
153
+ */
52
154
  this.currentSkin = undefined;
53
155
 
54
156
  //
@@ -79,6 +181,11 @@ class MD2CharacterComplex {
79
181
 
80
182
  }
81
183
 
184
+ /**
185
+ * Toggles shadow casting and receiving on the character's meshes.
186
+ *
187
+ * @param {boolean} enable - Whether to enable shadows or not.
188
+ */
82
189
  enableShadows( enable ) {
83
190
 
84
191
  for ( let i = 0; i < this.meshes.length; i ++ ) {
@@ -90,6 +197,11 @@ class MD2CharacterComplex {
90
197
 
91
198
  }
92
199
 
200
+ /**
201
+ * Toggles visibility on the character's meshes.
202
+ *
203
+ * @param {boolean} enable - Whether the character is visible or not.
204
+ */
93
205
  setVisible( enable ) {
94
206
 
95
207
  for ( let i = 0; i < this.meshes.length; i ++ ) {
@@ -101,6 +213,11 @@ class MD2CharacterComplex {
101
213
 
102
214
  }
103
215
 
216
+ /**
217
+ * Shares certain resources from a different character model.
218
+ *
219
+ * @param {MD2CharacterComplex} original - The original MD2 character.
220
+ */
104
221
  shareParts( original ) {
105
222
 
106
223
  this.animations = original.animations;
@@ -143,6 +260,11 @@ class MD2CharacterComplex {
143
260
 
144
261
  }
145
262
 
263
+ /**
264
+ * Loads the character model for the given config.
265
+ *
266
+ * @param {Object} config - The config which defines the model and textures paths.
267
+ */
146
268
  loadParts( config ) {
147
269
 
148
270
  const scope = this;
@@ -241,6 +363,11 @@ class MD2CharacterComplex {
241
363
 
242
364
  }
243
365
 
366
+ /**
367
+ * Sets the animation playback rate.
368
+ *
369
+ * @param {number} rate - The playback rate to set.
370
+ */
244
371
  setPlaybackRate( rate ) {
245
372
 
246
373
  if ( this.meshBody ) this.meshBody.duration = this.meshBody.baseDuration / rate;
@@ -248,6 +375,11 @@ class MD2CharacterComplex {
248
375
 
249
376
  }
250
377
 
378
+ /**
379
+ * Sets the wireframe material flag.
380
+ *
381
+ * @param {boolean} wireframeEnabled - Whether to enable wireframe rendering or not.
382
+ */
251
383
  setWireframe( wireframeEnabled ) {
252
384
 
253
385
  if ( wireframeEnabled ) {
@@ -264,6 +396,12 @@ class MD2CharacterComplex {
264
396
 
265
397
  }
266
398
 
399
+ /**
400
+ * Sets the skin defined by the given skin index. This will result in a different texture
401
+ * for the body mesh.
402
+ *
403
+ * @param {number} index - The skin index.
404
+ */
267
405
  setSkin( index ) {
268
406
 
269
407
  if ( this.meshBody && this.meshBody.material.wireframe === false ) {
@@ -275,6 +413,12 @@ class MD2CharacterComplex {
275
413
 
276
414
  }
277
415
 
416
+ /**
417
+ * Sets the weapon defined by the given weapon index. This will result in a different weapon
418
+ * hold by the character.
419
+ *
420
+ * @param {number} index - The weapon index.
421
+ */
278
422
  setWeapon( index ) {
279
423
 
280
424
  for ( let i = 0; i < this.weapons.length; i ++ ) this.weapons[ i ].visible = false;
@@ -297,6 +441,11 @@ class MD2CharacterComplex {
297
441
 
298
442
  }
299
443
 
444
+ /**
445
+ * Sets the defined animation clip as the active animation.
446
+ *
447
+ * @param {string} animationName - The name of the animation clip.
448
+ */
300
449
  setAnimation( animationName ) {
301
450
 
302
451
  if ( animationName === this.activeAnimation || ! animationName ) return;
@@ -336,6 +485,11 @@ class MD2CharacterComplex {
336
485
 
337
486
  }
338
487
 
488
+ /**
489
+ * Updates the animations of the mesh. Must be called inside the animation loop.
490
+ *
491
+ * @param {number} delta - The delta time in seconds.
492
+ */
339
493
  updateAnimations( delta ) {
340
494
 
341
495
  let mix = 1;
@@ -367,6 +521,9 @@ class MD2CharacterComplex {
367
521
 
368
522
  }
369
523
 
524
+ /**
525
+ * Updates the animation state based on the control inputs.
526
+ */
370
527
  updateBehaviors() {
371
528
 
372
529
  const controls = this.controls;
@@ -476,6 +633,11 @@ class MD2CharacterComplex {
476
633
 
477
634
  }
478
635
 
636
+ /**
637
+ * Transforms the character model based on the control input.
638
+ *
639
+ * @param {number} delta - The delta time in seconds.
640
+ */
479
641
  updateMovementModel( delta ) {
480
642
 
481
643
  function exponentialEaseOut( k ) {
@@ -4,31 +4,69 @@ import {
4
4
  Mesh
5
5
  } from 'three';
6
6
 
7
+ /**
8
+ * A special type of an animated mesh with a simple interface
9
+ * for animation playback. It allows to playback just one animation
10
+ * without any transitions or fading between animation changes.
11
+ *
12
+ * @augments Mesh
13
+ */
7
14
  class MorphAnimMesh extends Mesh {
8
15
 
16
+ /**
17
+ * Constructs a new morph anim mesh.
18
+ *
19
+ * @param {BufferGeometry} [geometry] - The mesh geometry.
20
+ * @param {Material|Array<Material>} [material] - The mesh material.
21
+ */
9
22
  constructor( geometry, material ) {
10
23
 
11
24
  super( geometry, material );
12
25
 
13
26
  this.type = 'MorphAnimMesh';
14
27
 
28
+ /**
29
+ * The internal animation mixer.
30
+ *
31
+ * @type {AnimationMixer}
32
+ */
15
33
  this.mixer = new AnimationMixer( this );
34
+
35
+ /**
36
+ * The current active animation action.
37
+ *
38
+ * @type {?AnimationAction}
39
+ * @default null
40
+ */
16
41
  this.activeAction = null;
17
42
 
18
43
  }
19
44
 
45
+ /**
46
+ * Sets the animation playback direction to "forward".
47
+ */
20
48
  setDirectionForward() {
21
49
 
22
50
  this.mixer.timeScale = 1.0;
23
51
 
24
52
  }
25
53
 
54
+ /**
55
+ * Sets the animation playback direction to "backward".
56
+ */
26
57
  setDirectionBackward() {
27
58
 
28
59
  this.mixer.timeScale = - 1.0;
29
60
 
30
61
  }
31
62
 
63
+ /**
64
+ * Plays the defined animation clip. The implementation assumes the animation
65
+ * clips are stored in {@link Object3D#animations} or the geometry.
66
+ *
67
+ * @param {string} label - The name of the animation clip.
68
+ * @param {number} fps - The FPS of the animation clip.
69
+ */
32
70
  playAnimation( label, fps ) {
33
71
 
34
72
  if ( this.activeAction ) {
@@ -54,6 +92,11 @@ class MorphAnimMesh extends Mesh {
54
92
 
55
93
  }
56
94
 
95
+ /**
96
+ * Updates the animations of the mesh. Must be called inside the animation loop.
97
+ *
98
+ * @param {number} delta - The delta time in seconds.
99
+ */
57
100
  updateAnimation( delta ) {
58
101
 
59
102
  this.mixer.update( delta );
@@ -3,13 +3,38 @@ import {
3
3
  Mesh
4
4
  } from 'three';
5
5
 
6
+ /**
7
+ * A special type of an animated mesh with a more advanced interface
8
+ * for animation playback. Unlike {@link MorphAnimMesh}. It allows to
9
+ * playback more than one morph animation at the same time but without
10
+ * fading options.
11
+ *
12
+ * @augments Mesh
13
+ */
6
14
  class MorphBlendMesh extends Mesh {
7
15
 
16
+ /**
17
+ * Constructs a new morph blend mesh.
18
+ *
19
+ * @param {BufferGeometry} [geometry] - The mesh geometry.
20
+ * @param {Material|Array<Material>} [material] - The mesh material.
21
+ */
8
22
  constructor( geometry, material ) {
9
23
 
10
24
  super( geometry, material );
11
25
 
26
+ /**
27
+ * A dictionary of animations.
28
+ *
29
+ * @type {Object<string,Object>}
30
+ */
12
31
  this.animationsMap = {};
32
+
33
+ /**
34
+ * A list of animations.
35
+ *
36
+ * @type {Array<Object>}
37
+ */
13
38
  this.animationsList = [];
14
39
 
15
40
  // prepare default animation
@@ -29,6 +54,14 @@ class MorphBlendMesh extends Mesh {
29
54
 
30
55
  }
31
56
 
57
+ /**
58
+ * Creates a new animation.
59
+ *
60
+ * @param {string} name - The animation name.
61
+ * @param {number} start - The start time.
62
+ * @param {number} end - The end time.
63
+ * @param {number} fps - The FPS.
64
+ */
32
65
  createAnimation( name, start, end, fps ) {
33
66
 
34
67
  const animation = {
@@ -60,6 +93,12 @@ class MorphBlendMesh extends Mesh {
60
93
 
61
94
  }
62
95
 
96
+ /**
97
+ * Automatically creates animations based on the values in
98
+ * {@link Mesh#morphTargetDictionary}.
99
+ *
100
+ * @param {number} fps - The FPS of all animations.
101
+ */
63
102
  autoCreateAnimations( fps ) {
64
103
 
65
104
  const pattern = /([a-z]+)_?(\d+)/i;
@@ -104,6 +143,12 @@ class MorphBlendMesh extends Mesh {
104
143
 
105
144
  }
106
145
 
146
+ /**
147
+ * Sets the animation playback direction to "forward" for the
148
+ * defined animation.
149
+ *
150
+ * @param {string} name - The animation name.
151
+ */
107
152
  setAnimationDirectionForward( name ) {
108
153
 
109
154
  const animation = this.animationsMap[ name ];
@@ -117,6 +162,12 @@ class MorphBlendMesh extends Mesh {
117
162
 
118
163
  }
119
164
 
165
+ /**
166
+ * Sets the animation playback direction to "backward" for the
167
+ * defined animation.
168
+ *
169
+ * @param {string} name - The animation name.
170
+ */
120
171
  setAnimationDirectionBackward( name ) {
121
172
 
122
173
  const animation = this.animationsMap[ name ];
@@ -130,6 +181,12 @@ class MorphBlendMesh extends Mesh {
130
181
 
131
182
  }
132
183
 
184
+ /**
185
+ * Sets the FPS to the given value for the defined animation.
186
+ *
187
+ * @param {string} name - The animation name.
188
+ * @param {number} fps - The FPS to set.
189
+ */
133
190
  setAnimationFPS( name, fps ) {
134
191
 
135
192
  const animation = this.animationsMap[ name ];
@@ -143,6 +200,12 @@ class MorphBlendMesh extends Mesh {
143
200
 
144
201
  }
145
202
 
203
+ /**
204
+ * Sets the duration to the given value for the defined animation.
205
+ *
206
+ * @param {string} name - The animation name.
207
+ * @param {number} duration - The duration to set.
208
+ */
146
209
  setAnimationDuration( name, duration ) {
147
210
 
148
211
  const animation = this.animationsMap[ name ];
@@ -156,6 +219,12 @@ class MorphBlendMesh extends Mesh {
156
219
 
157
220
  }
158
221
 
222
+ /**
223
+ * Sets the weight to the given value for the defined animation.
224
+ *
225
+ * @param {string} name - The animation name.
226
+ * @param {number} weight - The weight to set.
227
+ */
159
228
  setAnimationWeight( name, weight ) {
160
229
 
161
230
  const animation = this.animationsMap[ name ];
@@ -168,6 +237,12 @@ class MorphBlendMesh extends Mesh {
168
237
 
169
238
  }
170
239
 
240
+ /**
241
+ * Sets the time to the given value for the defined animation.
242
+ *
243
+ * @param {string} name - The animation name.
244
+ * @param {number} time - The time to set.
245
+ */
171
246
  setAnimationTime( name, time ) {
172
247
 
173
248
  const animation = this.animationsMap[ name ];
@@ -180,6 +255,12 @@ class MorphBlendMesh extends Mesh {
180
255
 
181
256
  }
182
257
 
258
+ /**
259
+ * Returns the time for the defined animation.
260
+ *
261
+ * @param {string} name - The animation name.
262
+ * @return {number} The time.
263
+ */
183
264
  getAnimationTime( name ) {
184
265
 
185
266
  let time = 0;
@@ -196,6 +277,12 @@ class MorphBlendMesh extends Mesh {
196
277
 
197
278
  }
198
279
 
280
+ /**
281
+ * Returns the duration for the defined animation.
282
+ *
283
+ * @param {string} name - The animation name.
284
+ * @return {number} The duration.
285
+ */
199
286
  getAnimationDuration( name ) {
200
287
 
201
288
  let duration = - 1;
@@ -212,6 +299,11 @@ class MorphBlendMesh extends Mesh {
212
299
 
213
300
  }
214
301
 
302
+ /**
303
+ * Plays the defined animation.
304
+ *
305
+ * @param {string} name - The animation name.
306
+ */
215
307
  playAnimation( name ) {
216
308
 
217
309
  const animation = this.animationsMap[ name ];
@@ -229,6 +321,11 @@ class MorphBlendMesh extends Mesh {
229
321
 
230
322
  }
231
323
 
324
+ /**
325
+ * Stops the defined animation.
326
+ *
327
+ * @param {string} name - The animation name.
328
+ */
232
329
  stopAnimation( name ) {
233
330
 
234
331
  const animation = this.animationsMap[ name ];
@@ -241,6 +338,11 @@ class MorphBlendMesh extends Mesh {
241
338
 
242
339
  }
243
340
 
341
+ /**
342
+ * Updates the animations of the mesh.
343
+ *
344
+ * @param {number} delta - The delta time in seconds.
345
+ */
244
346
  update( delta ) {
245
347
 
246
348
  for ( let i = 0, il = this.animationsList.length; i < il; i ++ ) {
@@ -2,7 +2,7 @@ import { DoubleSide, FloatType, HalfFloatType, Mesh, MeshBasicMaterial, MeshPhon
2
2
  import { potpack } from '../libs/potpack.module.js';
3
3
 
4
4
  /**
5
- * Progressive Light Map Accumulator, by [zalo](https://github.com/zalo/)
5
+ * Progressive Light Map Accumulator, by [zalo]{@link https://github.com/zalo/}.
6
6
  *
7
7
  * To use, simply construct a `ProgressiveLightMap` object,
8
8
  * `plmap.addObjectsToLightMap(object)` an array of semi-static
@@ -13,17 +13,37 @@ import { potpack } from '../libs/potpack.module.js';
13
13
  * This should begin accumulating lightmaps which apply to
14
14
  * your objects, so you can start jittering lighting to achieve
15
15
  * the texture-space effect you're looking for.
16
+ *
17
+ * This class can only be used with {@link WebGLRenderer}.
18
+ * When using {@link WebGPURenderer}, import from `ProgressiveLightMapGPU.js`.
16
19
  */
17
20
  class ProgressiveLightMap {
18
21
 
19
22
  /**
20
- * @param {WebGLRenderer} renderer An instance of WebGLRenderer.
21
- * @param {number} [res=1024] The side-long dimension of you total lightmap.
23
+ * Constructs a new progressive light map.
24
+ *
25
+ * @param {WebGLRenderer} renderer - The renderer.
26
+ * @param {number} [res=1024] - The side-long dimension of the total lightmap.
22
27
  */
23
28
  constructor( renderer, res = 1024 ) {
24
29
 
30
+ /**
31
+ * The renderer.
32
+ *
33
+ * @type {WebGLRenderer}
34
+ */
25
35
  this.renderer = renderer;
36
+
37
+ /**
38
+ * The side-long dimension of the total lightmap.
39
+ *
40
+ * @type {number}
41
+ * @default 1024
42
+ */
26
43
  this.res = res;
44
+
45
+ // internals
46
+
27
47
  this.lightMapContainers = [];
28
48
  this.scene = new Scene();
29
49
  this.buffer1Active = false;
@@ -76,7 +96,8 @@ class ProgressiveLightMap {
76
96
 
77
97
  /**
78
98
  * Sets these objects' materials' lightmaps and modifies their uv1's.
79
- * @param {Object3D} objects An array of objects and lights to set up your lightmap.
99
+ *
100
+ * @param {Array<Object3D>} objects - An array of objects and lights to set up your lightmap.
80
101
  */
81
102
  addObjectsToLightMap( objects ) {
82
103
 
@@ -142,10 +163,11 @@ class ProgressiveLightMap {
142
163
  }
143
164
 
144
165
  /**
145
- * This function renders each mesh one at a time into their respective surface maps
146
- * @param {Camera} camera Standard Rendering Camera
147
- * @param {number} blendWindow When >1, samples will accumulate over time.
148
- * @param {boolean} blurEdges Whether to fix UV Edges via blurring
166
+ * This function renders each mesh one at a time into their respective surface maps.
167
+ *
168
+ * @param {Camera} camera - The camera the scene is rendered with.
169
+ * @param {number} [blendWindow=100] - When >1, samples will accumulate over time.
170
+ * @param {boolean} [blurEdges=true] - Whether to fix UV Edges via blurring.
149
171
  */
150
172
  update( camera, blendWindow = 100, blurEdges = true ) {
151
173
 
@@ -215,10 +237,11 @@ class ProgressiveLightMap {
215
237
 
216
238
  }
217
239
 
218
- /** DEBUG
219
- * Draw the lightmap in the main scene. Call this after adding the objects to it.
220
- * @param {boolean} visible Whether the debug plane should be visible
221
- * @param {Vector3} position Where the debug plane should be drawn
240
+ /**
241
+ * Draws the lightmap in the main scene. Call this after adding the objects to it.
242
+ *
243
+ * @param {boolean} visible - Whether the debug plane should be visible
244
+ * @param {Vector3} [position] - Where the debug plane should be drawn
222
245
  */
223
246
  showDebugLightmap( visible, position = undefined ) {
224
247
 
@@ -251,9 +274,11 @@ class ProgressiveLightMap {
251
274
  }
252
275
 
253
276
  /**
254
- * INTERNAL Creates the Blurring Plane
255
- * @param {number} res The square resolution of this object's lightMap.
256
- * @param {WebGLRenderTexture} lightMap The lightmap to initialize the plane with.
277
+ * Creates the Blurring Plane.
278
+ *
279
+ * @private
280
+ * @param {number} res - The square resolution of this object's lightMap.
281
+ * @param {WebGLRenderTarget} [lightMap] - The lightmap to initialize the plane with.
257
282
  */
258
283
  _initializeBlurPlane( res, lightMap = null ) {
259
284