super-three 0.173.5 → 0.175.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (832) hide show
  1. package/build/three.cjs +21993 -1359
  2. package/build/three.core.js +21129 -1188
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +835 -142
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +8 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +19493 -17617
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +19477 -17617
  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 +144 -42
  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 +194 -71
  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 +74 -30
  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 +51 -5
  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 +36 -1
  94. package/examples/jsm/loaders/DDSLoader.js +25 -1
  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 +71 -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 +222 -9
  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 +87 -19
  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 +56 -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 +90 -70
  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 +105 -13
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +109 -73
  162. package/examples/jsm/misc/VolumeSlice.js +91 -48
  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 +75 -2
  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 +134 -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 +268 -134
  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/AST.js +10 -0
  273. package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
  274. package/examples/jsm/transpiler/TSLEncoder.js +83 -15
  275. package/examples/jsm/transpiler/Transpiler.js +31 -0
  276. package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
  277. package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
  278. package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
  279. package/examples/jsm/tsl/display/BleachBypass.js +1 -2
  280. package/examples/jsm/tsl/display/BloomNode.js +15 -16
  281. package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
  282. package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
  283. package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
  284. package/examples/jsm/tsl/display/FXAANode.js +2 -3
  285. package/examples/jsm/tsl/display/FilmNode.js +9 -8
  286. package/examples/jsm/tsl/display/GTAONode.js +11 -12
  287. package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
  288. package/examples/jsm/tsl/display/LensflareNode.js +15 -16
  289. package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
  290. package/examples/jsm/tsl/display/MotionBlur.js +1 -2
  291. package/examples/jsm/tsl/display/OutlineNode.js +7 -8
  292. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
  293. package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
  294. package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
  295. package/examples/jsm/tsl/display/SMAANode.js +13 -7
  296. package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
  297. package/examples/jsm/tsl/display/SSRNode.js +6 -7
  298. package/examples/jsm/tsl/display/Sepia.js +1 -2
  299. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
  300. package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
  301. package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
  302. package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
  303. package/examples/jsm/tsl/display/TransitionNode.js +4 -5
  304. package/examples/jsm/tsl/display/hashBlur.js +1 -2
  305. package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
  306. package/examples/jsm/tsl/math/Bayer.js +31 -0
  307. package/examples/jsm/tsl/utils/Raymarching.js +67 -0
  308. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  309. package/examples/jsm/utils/CameraUtils.js +10 -7
  310. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  311. package/examples/jsm/utils/GeometryUtils.js +12 -13
  312. package/examples/jsm/utils/LDrawUtils.js +11 -4
  313. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  314. package/examples/jsm/utils/SceneUtils.js +50 -3
  315. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  316. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  317. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  318. package/examples/jsm/utils/SortUtils.js +14 -5
  319. package/examples/jsm/utils/UVsDebug.js +9 -4
  320. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  321. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  322. package/examples/jsm/utils/WorkerPool.js +65 -2
  323. package/examples/jsm/webxr/ARButton.js +18 -0
  324. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  325. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  326. package/examples/jsm/webxr/Text2D.js +11 -0
  327. package/examples/jsm/webxr/VRButton.js +30 -0
  328. package/examples/jsm/webxr/XRButton.js +22 -0
  329. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  330. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  331. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  332. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  333. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  334. package/examples/jsm/webxr/XRPlanes.js +17 -0
  335. package/package.json +3 -4
  336. package/src/Three.TSL.js +7 -1
  337. package/src/animation/AnimationAction.js +262 -30
  338. package/src/animation/AnimationClip.js +141 -2
  339. package/src/animation/AnimationMixer.js +99 -15
  340. package/src/animation/AnimationObjectGroup.js +41 -18
  341. package/src/animation/AnimationUtils.js +169 -19
  342. package/src/animation/KeyframeTrack.js +144 -10
  343. package/src/animation/PropertyBinding.js +77 -3
  344. package/src/animation/PropertyMixer.js +72 -5
  345. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  346. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  347. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  348. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  349. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  350. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  351. package/src/audio/Audio.js +339 -0
  352. package/src/audio/AudioAnalyser.js +58 -1
  353. package/src/audio/AudioContext.js +15 -0
  354. package/src/audio/AudioListener.js +76 -0
  355. package/src/audio/PositionalAudio.js +107 -0
  356. package/src/cameras/ArrayCamera.js +28 -0
  357. package/src/cameras/Camera.js +47 -0
  358. package/src/cameras/CubeCamera.js +66 -0
  359. package/src/cameras/OrthographicCamera.js +109 -0
  360. package/src/cameras/PerspectiveCamera.js +163 -40
  361. package/src/cameras/StereoCamera.js +46 -0
  362. package/src/constants.js +1429 -5
  363. package/src/core/BufferAttribute.js +413 -3
  364. package/src/core/BufferGeometry.js +337 -1
  365. package/src/core/Clock.js +60 -0
  366. package/src/core/EventDispatcher.js +44 -2
  367. package/src/core/GLBufferAttribute.js +99 -0
  368. package/src/core/InstancedBufferAttribute.js +29 -0
  369. package/src/core/InstancedBufferGeometry.js +20 -0
  370. package/src/core/InstancedInterleavedBuffer.js +26 -0
  371. package/src/core/InterleavedBuffer.js +137 -3
  372. package/src/core/InterleavedBufferAttribute.js +197 -0
  373. package/src/core/Layers.js +71 -10
  374. package/src/core/Object3D.js +593 -0
  375. package/src/core/Raycaster.js +134 -1
  376. package/src/core/RenderTarget.js +170 -11
  377. package/src/core/RenderTarget3D.js +25 -0
  378. package/src/core/RenderTargetArray.js +18 -0
  379. package/src/core/Uniform.js +29 -0
  380. package/src/core/UniformsGroup.js +84 -2
  381. package/src/extras/Controls.js +88 -1
  382. package/src/extras/DataUtils.js +48 -8
  383. package/src/extras/Earcut.js +13 -780
  384. package/src/extras/ImageUtils.js +20 -2
  385. package/src/extras/PMREMGenerator.js +41 -25
  386. package/src/extras/ShapeUtils.js +24 -2
  387. package/src/extras/TextureUtils.js +95 -15
  388. package/src/extras/core/Curve.js +150 -50
  389. package/src/extras/core/CurvePath.js +63 -22
  390. package/src/extras/core/Interpolations.js +29 -3
  391. package/src/extras/core/Path.js +134 -1
  392. package/src/extras/core/Shape.js +63 -0
  393. package/src/extras/core/ShapePath.js +76 -0
  394. package/src/extras/curves/ArcCurve.js +22 -0
  395. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  396. package/src/extras/curves/CubicBezierCurve.js +67 -0
  397. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  398. package/src/extras/curves/EllipseCurve.js +102 -0
  399. package/src/extras/curves/LineCurve.js +36 -0
  400. package/src/extras/curves/LineCurve3.js +36 -0
  401. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  402. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  403. package/src/extras/curves/SplineCurve.js +48 -0
  404. package/src/extras/lib/earcut.js +685 -0
  405. package/src/geometries/BoxGeometry.js +38 -0
  406. package/src/geometries/CapsuleGeometry.js +34 -0
  407. package/src/geometries/CircleGeometry.js +40 -0
  408. package/src/geometries/ConeGeometry.js +38 -0
  409. package/src/geometries/CylinderGeometry.js +39 -0
  410. package/src/geometries/DodecahedronGeometry.js +32 -0
  411. package/src/geometries/EdgesGeometry.js +28 -0
  412. package/src/geometries/ExtrudeGeometry.js +112 -28
  413. package/src/geometries/IcosahedronGeometry.js +32 -0
  414. package/src/geometries/LatheGeometry.js +40 -0
  415. package/src/geometries/OctahedronGeometry.js +32 -0
  416. package/src/geometries/PlaneGeometry.js +34 -0
  417. package/src/geometries/PolyhedronGeometry.js +29 -0
  418. package/src/geometries/RingGeometry.js +36 -0
  419. package/src/geometries/ShapeGeometry.js +37 -0
  420. package/src/geometries/SphereGeometry.js +37 -0
  421. package/src/geometries/TetrahedronGeometry.js +32 -0
  422. package/src/geometries/TorusGeometry.js +35 -0
  423. package/src/geometries/TorusKnotGeometry.js +38 -0
  424. package/src/geometries/TubeGeometry.js +49 -0
  425. package/src/geometries/WireframeGeometry.js +32 -0
  426. package/src/helpers/ArrowHelper.js +60 -3
  427. package/src/helpers/AxesHelper.js +28 -0
  428. package/src/helpers/Box3Helper.js +28 -0
  429. package/src/helpers/BoxHelper.js +43 -7
  430. package/src/helpers/CameraHelper.js +45 -5
  431. package/src/helpers/DirectionalLightHelper.js +52 -0
  432. package/src/helpers/GridHelper.js +26 -0
  433. package/src/helpers/HemisphereLightHelper.js +39 -0
  434. package/src/helpers/PlaneHelper.js +33 -0
  435. package/src/helpers/PointLightHelper.js +43 -0
  436. package/src/helpers/PolarGridHelper.js +30 -0
  437. package/src/helpers/SkeletonHelper.js +39 -2
  438. package/src/helpers/SpotLightHelper.js +40 -0
  439. package/src/lights/AmbientLight.js +25 -0
  440. package/src/lights/DirectionalLight.js +57 -0
  441. package/src/lights/DirectionalLightShadow.js +15 -0
  442. package/src/lights/HemisphereLight.js +32 -0
  443. package/src/lights/Light.js +36 -0
  444. package/src/lights/LightProbe.js +43 -0
  445. package/src/lights/LightShadow.js +159 -0
  446. package/src/lights/PointLight.js +59 -0
  447. package/src/lights/PointLightShadow.js +21 -0
  448. package/src/lights/RectAreaLight.js +59 -0
  449. package/src/lights/SpotLight.js +102 -0
  450. package/src/lights/SpotLightShadow.js +22 -0
  451. package/src/lights/webgpu/IESSpotLight.js +21 -0
  452. package/src/loaders/AnimationLoader.js +31 -0
  453. package/src/loaders/AudioLoader.js +31 -0
  454. package/src/loaders/BufferGeometryLoader.js +34 -0
  455. package/src/loaders/Cache.js +45 -0
  456. package/src/loaders/CompressedTextureLoader.js +36 -3
  457. package/src/loaders/CubeTextureLoader.js +45 -0
  458. package/src/loaders/DataTextureLoader.js +44 -3
  459. package/src/loaders/FileLoader.js +57 -1
  460. package/src/loaders/ImageBitmapLoader.js +57 -0
  461. package/src/loaders/ImageLoader.js +30 -0
  462. package/src/loaders/Loader.js +130 -0
  463. package/src/loaders/LoaderUtils.js +18 -36
  464. package/src/loaders/LoadingManager.js +142 -0
  465. package/src/loaders/MaterialLoader.js +57 -0
  466. package/src/loaders/ObjectLoader.js +53 -0
  467. package/src/loaders/TextureLoader.js +33 -0
  468. package/src/loaders/nodes/NodeLoader.js +13 -9
  469. package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
  470. package/src/loaders/nodes/NodeObjectLoader.js +12 -12
  471. package/src/materials/LineBasicMaterial.js +74 -1
  472. package/src/materials/LineDashedMaterial.js +52 -0
  473. package/src/materials/Material.js +481 -4
  474. package/src/materials/MeshBasicMaterial.js +165 -0
  475. package/src/materials/MeshDepthMaterial.js +93 -0
  476. package/src/materials/MeshDistanceMaterial.js +76 -0
  477. package/src/materials/MeshLambertMaterial.js +273 -0
  478. package/src/materials/MeshMatcapMaterial.js +142 -0
  479. package/src/materials/MeshNormalMaterial.js +113 -0
  480. package/src/materials/MeshPhongMaterial.js +288 -0
  481. package/src/materials/MeshPhysicalMaterial.js +292 -1
  482. package/src/materials/MeshStandardMaterial.js +297 -0
  483. package/src/materials/MeshToonMaterial.js +218 -0
  484. package/src/materials/PointsMaterial.js +89 -0
  485. package/src/materials/RawShaderMaterial.js +25 -0
  486. package/src/materials/ShaderMaterial.js +215 -6
  487. package/src/materials/ShadowMaterial.js +54 -0
  488. package/src/materials/SpriteMaterial.js +82 -0
  489. package/src/materials/nodes/Line2NodeMaterial.js +14 -14
  490. package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
  491. package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
  492. package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
  493. package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
  494. package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
  495. package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
  496. package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
  497. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
  498. package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
  499. package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
  500. package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
  501. package/src/materials/nodes/NodeMaterial.js +66 -47
  502. package/src/materials/nodes/PointsNodeMaterial.js +6 -6
  503. package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
  504. package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
  505. package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
  506. package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
  507. package/src/math/Box2.js +177 -0
  508. package/src/math/Box3.js +243 -0
  509. package/src/math/Color.js +343 -0
  510. package/src/math/Cylindrical.js +65 -6
  511. package/src/math/Euler.js +137 -4
  512. package/src/math/Frustum.js +83 -0
  513. package/src/math/Interpolant.js +87 -8
  514. package/src/math/Line3.js +94 -0
  515. package/src/math/MathUtils.js +405 -19
  516. package/src/math/Matrix2.js +70 -0
  517. package/src/math/Matrix3.js +229 -4
  518. package/src/math/Matrix4.js +368 -3
  519. package/src/math/Plane.js +164 -2
  520. package/src/math/Quaternion.js +262 -6
  521. package/src/math/Ray.js +160 -0
  522. package/src/math/Sphere.js +147 -0
  523. package/src/math/Spherical.js +70 -8
  524. package/src/math/SphericalHarmonics3.js +112 -14
  525. package/src/math/Triangle.js +206 -2
  526. package/src/math/Vector2.js +388 -2
  527. package/src/math/Vector3.js +541 -4
  528. package/src/math/Vector4.js +393 -0
  529. package/src/math/interpolants/CubicInterpolant.js +10 -1
  530. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  531. package/src/math/interpolants/LinearInterpolant.js +13 -0
  532. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  533. package/src/nodes/Nodes.js +1 -0
  534. package/src/nodes/TSL.js +1 -0
  535. package/src/nodes/accessors/AccessorsUtils.js +4 -2
  536. package/src/nodes/accessors/Arrays.js +6 -6
  537. package/src/nodes/accessors/BatchNode.js +10 -11
  538. package/src/nodes/accessors/Bitangent.js +6 -2
  539. package/src/nodes/accessors/BufferAttributeNode.js +33 -31
  540. package/src/nodes/accessors/BufferNode.js +12 -13
  541. package/src/nodes/accessors/BuiltinNode.js +7 -8
  542. package/src/nodes/accessors/Camera.js +9 -2
  543. package/src/nodes/accessors/ClippingNode.js +4 -4
  544. package/src/nodes/accessors/CubeTextureNode.js +17 -19
  545. package/src/nodes/accessors/InstanceNode.js +10 -11
  546. package/src/nodes/accessors/InstancedMeshNode.js +3 -4
  547. package/src/nodes/accessors/Lights.js +12 -15
  548. package/src/nodes/accessors/MaterialNode.js +45 -9
  549. package/src/nodes/accessors/MaterialProperties.js +51 -2
  550. package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
  551. package/src/nodes/accessors/ModelNode.js +20 -3
  552. package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
  553. package/src/nodes/accessors/MorphNode.js +29 -26
  554. package/src/nodes/accessors/Normal.js +11 -3
  555. package/src/nodes/accessors/Object3DNode.js +51 -16
  556. package/src/nodes/accessors/PointUVNode.js +2 -3
  557. package/src/nodes/accessors/Position.js +8 -3
  558. package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
  559. package/src/nodes/accessors/ReferenceNode.js +31 -31
  560. package/src/nodes/accessors/ReflectVector.js +4 -2
  561. package/src/nodes/accessors/RendererReferenceNode.js +9 -10
  562. package/src/nodes/accessors/SceneNode.js +5 -4
  563. package/src/nodes/accessors/SkinningNode.js +53 -44
  564. package/src/nodes/accessors/StorageBufferNode.js +24 -24
  565. package/src/nodes/accessors/StorageTextureNode.js +17 -17
  566. package/src/nodes/accessors/Tangent.js +6 -2
  567. package/src/nodes/accessors/Texture3DNode.js +11 -12
  568. package/src/nodes/accessors/TextureBicubic.js +2 -3
  569. package/src/nodes/accessors/TextureNode.js +68 -47
  570. package/src/nodes/accessors/TextureSizeNode.js +5 -6
  571. package/src/nodes/accessors/UV.js +2 -3
  572. package/src/nodes/accessors/UniformArrayNode.js +24 -24
  573. package/src/nodes/accessors/UserDataNode.js +11 -12
  574. package/src/nodes/accessors/VelocityNode.js +4 -5
  575. package/src/nodes/accessors/VertexColorNode.js +7 -8
  576. package/src/nodes/code/CodeNode.js +15 -13
  577. package/src/nodes/code/ExpressionNode.js +8 -9
  578. package/src/nodes/code/FunctionCallNode.js +29 -9
  579. package/src/nodes/code/FunctionNode.js +1 -1
  580. package/src/nodes/code/ScriptableNode.js +27 -28
  581. package/src/nodes/code/ScriptableValueNode.js +11 -12
  582. package/src/nodes/core/ArrayNode.js +29 -12
  583. package/src/nodes/core/AssignNode.js +4 -5
  584. package/src/nodes/core/AttributeNode.js +8 -9
  585. package/src/nodes/core/BypassNode.js +3 -4
  586. package/src/nodes/core/CacheNode.js +5 -6
  587. package/src/nodes/core/ConstNode.js +4 -4
  588. package/src/nodes/core/ContextNode.js +9 -9
  589. package/src/nodes/core/IndexNode.js +8 -4
  590. package/src/nodes/core/InputNode.js +7 -7
  591. package/src/nodes/core/LightingModel.js +17 -17
  592. package/src/nodes/core/MRTNode.js +9 -10
  593. package/src/nodes/core/Node.js +49 -37
  594. package/src/nodes/core/NodeAttribute.js +7 -7
  595. package/src/nodes/core/NodeBuilder.js +248 -175
  596. package/src/nodes/core/NodeCache.js +4 -4
  597. package/src/nodes/core/NodeCode.js +6 -6
  598. package/src/nodes/core/NodeFrame.js +10 -10
  599. package/src/nodes/core/NodeFunction.js +8 -8
  600. package/src/nodes/core/NodeFunctionInput.js +8 -8
  601. package/src/nodes/core/NodeParser.js +1 -1
  602. package/src/nodes/core/NodeUniform.js +7 -7
  603. package/src/nodes/core/NodeUtils.js +22 -24
  604. package/src/nodes/core/NodeVar.js +9 -9
  605. package/src/nodes/core/NodeVarying.js +4 -4
  606. package/src/nodes/core/OutputStructNode.js +2 -3
  607. package/src/nodes/core/ParameterNode.js +6 -7
  608. package/src/nodes/core/PropertyNode.js +41 -13
  609. package/src/nodes/core/StackNode.js +11 -12
  610. package/src/nodes/core/StructNode.js +2 -3
  611. package/src/nodes/core/StructTypeNode.js +10 -6
  612. package/src/nodes/core/TempNode.js +3 -3
  613. package/src/nodes/core/UniformGroupNode.js +15 -12
  614. package/src/nodes/core/UniformNode.js +9 -10
  615. package/src/nodes/core/VarNode.js +14 -18
  616. package/src/nodes/core/VaryingNode.js +10 -10
  617. package/src/nodes/core/constants.js +0 -2
  618. package/src/nodes/display/BlendModes.js +21 -14
  619. package/src/nodes/display/BumpMapNode.js +5 -6
  620. package/src/nodes/display/ColorAdjustment.js +13 -9
  621. package/src/nodes/display/ColorSpaceFunctions.js +4 -4
  622. package/src/nodes/display/ColorSpaceNode.js +15 -12
  623. package/src/nodes/display/FrontFacingNode.js +3 -3
  624. package/src/nodes/display/NormalMapNode.js +5 -6
  625. package/src/nodes/display/PassNode.js +122 -35
  626. package/src/nodes/display/PosterizeNode.js +2 -3
  627. package/src/nodes/display/RenderOutputNode.js +8 -9
  628. package/src/nodes/display/ScreenNode.js +16 -7
  629. package/src/nodes/display/ToneMappingFunctions.js +12 -8
  630. package/src/nodes/display/ToneMappingNode.js +8 -8
  631. package/src/nodes/display/ToonOutlinePassNode.js +3 -4
  632. package/src/nodes/display/ViewportDepthNode.js +15 -7
  633. package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
  634. package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
  635. package/src/nodes/display/ViewportTextureNode.js +16 -16
  636. package/src/nodes/fog/Fog.js +5 -2
  637. package/src/nodes/functions/BSDF/LTC.js +45 -1
  638. package/src/nodes/functions/BasicLightingModel.js +5 -8
  639. package/src/nodes/functions/PhongLightingModel.js +6 -8
  640. package/src/nodes/functions/PhysicalLightingModel.js +40 -42
  641. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  642. package/src/nodes/functions/ToonLightingModel.js +5 -6
  643. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  644. package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
  645. package/src/nodes/geometry/RangeNode.js +4 -5
  646. package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
  647. package/src/nodes/gpgpu/BarrierNode.js +6 -4
  648. package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
  649. package/src/nodes/gpgpu/ComputeNode.js +43 -16
  650. package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
  651. package/src/nodes/lighting/AONode.js +2 -2
  652. package/src/nodes/lighting/AmbientLightNode.js +1 -1
  653. package/src/nodes/lighting/AnalyticLightNode.js +50 -9
  654. package/src/nodes/lighting/BasicLightMapNode.js +2 -2
  655. package/src/nodes/lighting/DirectionalLightNode.js +3 -12
  656. package/src/nodes/lighting/EnvironmentNode.js +5 -8
  657. package/src/nodes/lighting/HemisphereLightNode.js +1 -1
  658. package/src/nodes/lighting/LightProbeNode.js +1 -1
  659. package/src/nodes/lighting/LightUtils.js +1 -5
  660. package/src/nodes/lighting/LightingContextNode.js +10 -10
  661. package/src/nodes/lighting/LightingNode.js +1 -1
  662. package/src/nodes/lighting/LightsNode.js +68 -25
  663. package/src/nodes/lighting/PointLightNode.js +12 -27
  664. package/src/nodes/lighting/PointShadowNode.js +5 -6
  665. package/src/nodes/lighting/RectAreaLightNode.js +5 -10
  666. package/src/nodes/lighting/ShadowBaseNode.js +8 -9
  667. package/src/nodes/lighting/ShadowNode.js +28 -15
  668. package/src/nodes/lighting/SpotLightNode.js +8 -19
  669. package/src/nodes/math/ConditionalNode.js +26 -9
  670. package/src/nodes/math/Hash.js +2 -3
  671. package/src/nodes/math/MathNode.js +217 -150
  672. package/src/nodes/math/MathUtils.js +8 -6
  673. package/src/nodes/math/OperatorNode.js +198 -89
  674. package/src/nodes/math/TriNoise3D.js +2 -3
  675. package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
  676. package/src/nodes/parsers/GLSLNodeParser.js +1 -1
  677. package/src/nodes/pmrem/PMREMNode.js +61 -37
  678. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  679. package/src/nodes/procedural/Checker.js +2 -3
  680. package/src/nodes/shapes/Shapes.js +2 -3
  681. package/src/nodes/tsl/TSLBase.js +2 -1
  682. package/src/nodes/tsl/TSLCore.js +117 -19
  683. package/src/nodes/utils/ArrayElementNode.js +5 -3
  684. package/src/nodes/utils/ConvertNode.js +3 -3
  685. package/src/nodes/utils/CubeMapNode.js +7 -8
  686. package/src/nodes/utils/DebugNode.js +70 -0
  687. package/src/nodes/utils/Discard.js +5 -5
  688. package/src/nodes/utils/EquirectUVNode.js +3 -4
  689. package/src/nodes/utils/FlipNode.js +3 -3
  690. package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
  691. package/src/nodes/utils/JoinNode.js +29 -4
  692. package/src/nodes/utils/LoopNode.js +67 -35
  693. package/src/nodes/utils/MatcapUVNode.js +1 -2
  694. package/src/nodes/utils/MaxMipLevelNode.js +4 -5
  695. package/src/nodes/utils/MemberNode.js +2 -2
  696. package/src/nodes/utils/Oscillators.js +8 -6
  697. package/src/nodes/utils/Packing.js +4 -4
  698. package/src/nodes/utils/PostProcessingUtils.js +6 -5
  699. package/src/nodes/utils/RTTNode.js +19 -19
  700. package/src/nodes/utils/ReflectorNode.js +35 -25
  701. package/src/nodes/utils/RemapNode.js +9 -9
  702. package/src/nodes/utils/RotateNode.js +3 -4
  703. package/src/nodes/utils/SetNode.js +3 -3
  704. package/src/nodes/utils/SplitNode.js +5 -5
  705. package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
  706. package/src/nodes/utils/SpriteUtils.js +5 -6
  707. package/src/nodes/utils/StorageArrayElementNode.js +3 -4
  708. package/src/nodes/utils/Timer.js +9 -5
  709. package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
  710. package/src/nodes/utils/UVUtils.js +4 -4
  711. package/src/nodes/utils/ViewportUtils.js +3 -4
  712. package/src/objects/BatchedMesh.js +319 -32
  713. package/src/objects/Bone.js +24 -0
  714. package/src/objects/ClippingGroup.js +4 -4
  715. package/src/objects/Group.js +24 -0
  716. package/src/objects/InstancedMesh.js +120 -2
  717. package/src/objects/LOD.js +99 -5
  718. package/src/objects/Line.js +82 -0
  719. package/src/objects/LineLoop.js +20 -0
  720. package/src/objects/LineSegments.js +18 -0
  721. package/src/objects/Mesh.js +75 -0
  722. package/src/objects/Points.js +60 -0
  723. package/src/objects/Skeleton.js +105 -0
  724. package/src/objects/SkinnedMesh.js +99 -5
  725. package/src/objects/Sprite.js +54 -0
  726. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  727. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  728. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  729. package/src/renderers/WebGLRenderTarget.js +19 -0
  730. package/src/renderers/WebGLRenderer.js +622 -83
  731. package/src/renderers/common/Animation.js +6 -6
  732. package/src/renderers/common/Attributes.js +3 -3
  733. package/src/renderers/common/Backend.js +40 -31
  734. package/src/renderers/common/Background.js +4 -3
  735. package/src/renderers/common/BindGroup.js +5 -5
  736. package/src/renderers/common/Binding.js +4 -4
  737. package/src/renderers/common/Bindings.js +10 -0
  738. package/src/renderers/common/Buffer.js +5 -5
  739. package/src/renderers/common/BufferUtils.js +7 -9
  740. package/src/renderers/common/BundleGroup.js +6 -6
  741. package/src/renderers/common/ChainMap.js +3 -3
  742. package/src/renderers/common/ClippingContext.js +8 -8
  743. package/src/renderers/common/Color4.js +8 -8
  744. package/src/renderers/common/ComputePipeline.js +2 -2
  745. package/src/renderers/common/CubeRenderTarget.js +13 -0
  746. package/src/renderers/common/DataMap.js +2 -2
  747. package/src/renderers/common/Geometries.js +6 -6
  748. package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
  749. package/src/renderers/common/Info.js +17 -17
  750. package/src/renderers/common/Pipeline.js +3 -3
  751. package/src/renderers/common/Pipelines.js +12 -12
  752. package/src/renderers/common/PostProcessing.js +13 -1
  753. package/src/renderers/common/ProgrammableStage.js +11 -11
  754. package/src/renderers/common/QuadMesh.js +5 -3
  755. package/src/renderers/common/RenderContext.js +24 -24
  756. package/src/renderers/common/RenderContexts.js +4 -4
  757. package/src/renderers/common/RenderList.js +16 -16
  758. package/src/renderers/common/RenderObject.js +27 -27
  759. package/src/renderers/common/RenderObjects.js +4 -4
  760. package/src/renderers/common/RenderPipeline.js +1 -1
  761. package/src/renderers/common/Renderer.js +272 -200
  762. package/src/renderers/common/RendererUtils.js +0 -2
  763. package/src/renderers/common/SampledTexture.js +20 -20
  764. package/src/renderers/common/Sampler.js +5 -5
  765. package/src/renderers/common/StorageBuffer.js +2 -2
  766. package/src/renderers/common/StorageBufferAttribute.js +4 -4
  767. package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
  768. package/src/renderers/common/StorageTexture.js +6 -6
  769. package/src/renderers/common/Textures.js +6 -6
  770. package/src/renderers/common/TimestampQueryPool.js +66 -7
  771. package/src/renderers/common/Uniform.js +26 -26
  772. package/src/renderers/common/UniformBuffer.js +2 -2
  773. package/src/renderers/common/UniformsGroup.js +18 -18
  774. package/src/renderers/common/XRManager.js +369 -54
  775. package/src/renderers/common/XRRenderTarget.js +5 -5
  776. package/src/renderers/common/extras/PMREMGenerator.js +62 -37
  777. package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
  778. package/src/renderers/common/nodes/NodeLibrary.js +13 -13
  779. package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
  780. package/src/renderers/common/nodes/NodeSampler.js +1 -1
  781. package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
  782. package/src/renderers/common/nodes/NodeUniform.js +9 -9
  783. package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
  784. package/src/renderers/common/nodes/Nodes.js +13 -13
  785. package/src/renderers/shaders/UniformsLib.js +1 -4
  786. package/src/renderers/shaders/UniformsUtils.js +1 -3
  787. package/src/renderers/webgl/WebGLBackground.js +4 -2
  788. package/src/renderers/webgl/WebGLState.js +19 -19
  789. package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
  790. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
  791. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
  792. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
  793. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
  794. package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
  795. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
  796. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
  797. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
  798. package/src/renderers/webgpu/WebGPUBackend.js +200 -119
  799. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
  800. package/src/renderers/webgpu/WebGPURenderer.js +19 -13
  801. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
  802. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
  803. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
  804. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
  805. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
  806. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  807. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
  808. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
  809. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
  810. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
  811. package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
  812. package/src/renderers/webxr/WebXRController.js +87 -2
  813. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  814. package/src/renderers/webxr/WebXRManager.js +185 -9
  815. package/src/scenes/Fog.js +60 -0
  816. package/src/scenes/FogExp2.js +51 -0
  817. package/src/scenes/Scene.js +88 -0
  818. package/src/textures/CanvasTexture.js +28 -0
  819. package/src/textures/CompressedArrayTexture.js +57 -0
  820. package/src/textures/CompressedCubeTexture.js +29 -0
  821. package/src/textures/CompressedTexture.js +64 -6
  822. package/src/textures/CubeTexture.js +52 -4
  823. package/src/textures/Data3DTexture.js +77 -0
  824. package/src/textures/DataArrayTexture.js +93 -0
  825. package/src/textures/DataTexture.js +65 -0
  826. package/src/textures/DepthTexture.js +61 -9
  827. package/src/textures/FramebufferTexture.js +62 -0
  828. package/src/textures/Source.js +69 -0
  829. package/src/textures/Texture.js +362 -3
  830. package/src/textures/VideoFrameTexture.js +43 -6
  831. package/src/textures/VideoTexture.js +49 -4
  832. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -22,30 +22,118 @@ const _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );
22
22
  const _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );
23
23
  const _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );
24
24
 
25
+ /**
26
+ * Fires when the object has been added to its parent object.
27
+ *
28
+ * @event Object3D#added
29
+ * @type {Object}
30
+ */
25
31
  const _addedEvent = { type: 'added' };
32
+
33
+ /**
34
+ * Fires when the object has been removed from its parent object.
35
+ *
36
+ * @event Object3D#removed
37
+ * @type {Object}
38
+ */
26
39
  const _removedEvent = { type: 'removed' };
27
40
 
41
+ /**
42
+ * Fires when a new child object has been added.
43
+ *
44
+ * @event Object3D#childadded
45
+ * @type {Object}
46
+ */
28
47
  const _childaddedEvent = { type: 'childadded', child: null };
48
+
49
+ /**
50
+ * Fires when a new child object has been added.
51
+ *
52
+ * @event Object3D#childremoved
53
+ * @type {Object}
54
+ */
29
55
  const _childremovedEvent = { type: 'childremoved', child: null };
30
56
 
57
+ /**
58
+ * This is the base class for most objects in three.js and provides a set of
59
+ * properties and methods for manipulating objects in 3D space.
60
+ *
61
+ * @augments EventDispatcher
62
+ */
31
63
  class Object3D extends EventDispatcher {
32
64
 
65
+ /**
66
+ * Constructs a new 3D object.
67
+ */
33
68
  constructor() {
34
69
 
35
70
  super();
36
71
 
72
+ /**
73
+ * This flag can be used for type testing.
74
+ *
75
+ * @type {boolean}
76
+ * @readonly
77
+ * @default true
78
+ */
37
79
  this.isObject3D = true;
38
80
 
81
+ /**
82
+ * The ID of the 3D object.
83
+ *
84
+ * @name Object3D#id
85
+ * @type {number}
86
+ * @readonly
87
+ */
39
88
  Object.defineProperty( this, 'id', { value: _object3DId ++ } );
40
89
 
90
+ /**
91
+ * The UUID of the 3D object.
92
+ *
93
+ * @type {string}
94
+ * @readonly
95
+ */
41
96
  this.uuid = generateUUID();
42
97
 
98
+ /**
99
+ * The name of the 3D object.
100
+ *
101
+ * @type {string}
102
+ */
43
103
  this.name = '';
104
+
105
+ /**
106
+ * The type property is used for detecting the object type
107
+ * in context of serialization/deserialization.
108
+ *
109
+ * @type {string}
110
+ * @readonly
111
+ */
44
112
  this.type = 'Object3D';
45
113
 
114
+ /**
115
+ * A reference to the parent object.
116
+ *
117
+ * @type {?Object3D}
118
+ * @default null
119
+ */
46
120
  this.parent = null;
121
+
122
+ /**
123
+ * An array holding the child 3D objects of this instance.
124
+ *
125
+ * @type {Array<Object3D>}
126
+ */
47
127
  this.children = [];
48
128
 
129
+ /**
130
+ * Defines the `up` direction of the 3D object which influences
131
+ * the orientation via methods like {@link Object3D#lookAt}.
132
+ *
133
+ * The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`.
134
+ *
135
+ * @type {Vector3}
136
+ */
49
137
  this.up = Object3D.DEFAULT_UP.clone();
50
138
 
51
139
  const position = new Vector3();
@@ -69,65 +157,268 @@ class Object3D extends EventDispatcher {
69
157
  quaternion._onChange( onQuaternionChange );
70
158
 
71
159
  Object.defineProperties( this, {
160
+ /**
161
+ * Represents the object's local position.
162
+ *
163
+ * @name Object3D#position
164
+ * @type {Vector3}
165
+ * @default (0,0,0)
166
+ */
72
167
  position: {
73
168
  configurable: true,
74
169
  enumerable: true,
75
170
  value: position
76
171
  },
172
+ /**
173
+ * Represents the object's local rotation as Euler angles, in radians.
174
+ *
175
+ * @name Object3D#rotation
176
+ * @type {Euler}
177
+ * @default (0,0,0)
178
+ */
77
179
  rotation: {
78
180
  configurable: true,
79
181
  enumerable: true,
80
182
  value: rotation
81
183
  },
184
+ /**
185
+ * Represents the object's local rotation as Quaternions.
186
+ *
187
+ * @name Object3D#quaternion
188
+ * @type {Quaternion}
189
+ */
82
190
  quaternion: {
83
191
  configurable: true,
84
192
  enumerable: true,
85
193
  value: quaternion
86
194
  },
195
+ /**
196
+ * Represents the object's local scale.
197
+ *
198
+ * @name Object3D#scale
199
+ * @type {Vector3}
200
+ * @default (1,1,1)
201
+ */
87
202
  scale: {
88
203
  configurable: true,
89
204
  enumerable: true,
90
205
  value: scale
91
206
  },
207
+ /**
208
+ * Represents the object's model-view matrix.
209
+ *
210
+ * @name Object3D#modelViewMatrix
211
+ * @type {Matrix4}
212
+ */
92
213
  modelViewMatrix: {
93
214
  value: new Matrix4()
94
215
  },
216
+ /**
217
+ * Represents the object's normal matrix.
218
+ *
219
+ * @name Object3D#normalMatrix
220
+ * @type {Matrix3}
221
+ */
95
222
  normalMatrix: {
96
223
  value: new Matrix3()
97
224
  }
98
225
  } );
99
226
 
227
+ /**
228
+ * Represents the object's transformation matrix in local space.
229
+ *
230
+ * @type {Matrix4}
231
+ */
100
232
  this.matrix = new Matrix4();
233
+
234
+ /**
235
+ * Represents the object's transformation matrix in world space.
236
+ * If the 3D object has no parent, then it's identical to the local transformation matrix
237
+ *
238
+ * @type {Matrix4}
239
+ */
101
240
  this.matrixWorld = new Matrix4();
102
241
 
242
+ /**
243
+ * When set to `true`, the engine automatically computes the local matrix from position,
244
+ * rotation and scale every frame.
245
+ *
246
+ * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.
247
+ *
248
+ * @type {boolean}
249
+ * @default true
250
+ */
103
251
  this.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;
104
252
 
253
+ /**
254
+ * When set to `true`, the engine automatically computes the world matrix from the current local
255
+ * matrix and the object's transformation hierarchy.
256
+ *
257
+ * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.
258
+ *
259
+ * @type {boolean}
260
+ * @default true
261
+ */
105
262
  this.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer
263
+
264
+ /**
265
+ * When set to `true`, it calculates the world matrix in that frame and resets this property
266
+ * to `false`.
267
+ *
268
+ * @type {boolean}
269
+ * @default false
270
+ */
106
271
  this.matrixWorldNeedsUpdate = false;
107
272
 
273
+ /**
274
+ * The layer membership of the 3D object. The 3D object is only visible if it has
275
+ * at least one layer in common with the camera in use. This property can also be
276
+ * used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}.
277
+ *
278
+ * @type {Layers}
279
+ */
108
280
  this.layers = new Layers();
281
+
282
+ /**
283
+ * When set to `true`, the 3D object gets rendered.
284
+ *
285
+ * @type {boolean}
286
+ * @default true
287
+ */
109
288
  this.visible = true;
110
289
 
290
+ /**
291
+ * When set to `true`, the 3D object gets rendered into shadow maps.
292
+ *
293
+ * @type {boolean}
294
+ * @default false
295
+ */
111
296
  this.castShadow = false;
297
+
298
+ /**
299
+ * When set to `true`, the 3D object is affected by shadows in the scene.
300
+ *
301
+ * @type {boolean}
302
+ * @default false
303
+ */
112
304
  this.receiveShadow = false;
113
305
 
306
+ /**
307
+ * When set to `true`, the 3D object is honored by view frustum culling.
308
+ *
309
+ * @type {boolean}
310
+ * @default true
311
+ */
114
312
  this.frustumCulled = true;
313
+
314
+ /**
315
+ * This value allows the default rendering order of scene graph objects to be
316
+ * overridden although opaque and transparent objects remain sorted independently.
317
+ * When this property is set for an instance of {@link Group},all descendants
318
+ * objects will be sorted and rendered together. Sorting is from lowest to highest
319
+ * render order.
320
+ *
321
+ * @type {number}
322
+ * @default 0
323
+ */
115
324
  this.renderOrder = 0;
116
325
 
326
+ /**
327
+ * An array holding the animation clips of the 3D object.
328
+ *
329
+ * @type {Array<AnimationClip>}
330
+ */
117
331
  this.animations = [];
118
332
 
333
+ /**
334
+ * Custom depth material to be used when rendering to the depth map. Can only be used
335
+ * in context of meshes. When shadow-casting with a {@link DirectionalLight} or {@link SpotLight},
336
+ * if you are modifying vertex positions in the vertex shader you must specify a custom depth
337
+ * material for proper shadows.
338
+ *
339
+ * Only relevant in context of {@link WebGLRenderer}.
340
+ *
341
+ * @type {(Material|undefined)}
342
+ * @default undefined
343
+ */
344
+ this.customDepthMaterial = undefined;
345
+
346
+ /**
347
+ * Same as {@link Object3D#customDepthMaterial}, but used with {@link PointLight}.
348
+ *
349
+ * Only relevant in context of {@link WebGLRenderer}.
350
+ *
351
+ * @type {(Material|undefined)}
352
+ * @default undefined
353
+ */
354
+ this.customDistanceMaterial = undefined;
355
+
356
+ /**
357
+ * An object that can be used to store custom data about the 3D object. It
358
+ * should not hold references to functions as these will not be cloned.
359
+ *
360
+ * @type {Object}
361
+ */
119
362
  this.userData = {};
120
363
 
121
364
  }
122
365
 
366
+ /**
367
+ * A callback that is executed immediately before a 3D object is rendered to a shadow map.
368
+ *
369
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
370
+ * @param {Object3D} object - The 3D object.
371
+ * @param {Camera} camera - The camera that is used to render the scene.
372
+ * @param {Camera} shadowCamera - The shadow camera.
373
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
374
+ * @param {Material} depthMaterial - The depth material.
375
+ * @param {Object} group - The geometry group data.
376
+ */
123
377
  onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
124
378
 
379
+ /**
380
+ * A callback that is executed immediately after a 3D object is rendered to a shadow map.
381
+ *
382
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
383
+ * @param {Object3D} object - The 3D object.
384
+ * @param {Camera} camera - The camera that is used to render the scene.
385
+ * @param {Camera} shadowCamera - The shadow camera.
386
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
387
+ * @param {Material} depthMaterial - The depth material.
388
+ * @param {Object} group - The geometry group data.
389
+ */
125
390
  onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
126
391
 
392
+ /**
393
+ * A callback that is executed immediately before a 3D object is rendered.
394
+ *
395
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
396
+ * @param {Object3D} object - The 3D object.
397
+ * @param {Camera} camera - The camera that is used to render the scene.
398
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
399
+ * @param {Material} material - The 3D object's material.
400
+ * @param {Object} group - The geometry group data.
401
+ */
127
402
  onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}
128
403
 
404
+ /**
405
+ * A callback that is executed immediately after a 3D object is rendered.
406
+ *
407
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
408
+ * @param {Object3D} object - The 3D object.
409
+ * @param {Camera} camera - The camera that is used to render the scene.
410
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
411
+ * @param {Material} material - The 3D object's material.
412
+ * @param {Object} group - The geometry group data.
413
+ */
129
414
  onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}
130
415
 
416
+ /**
417
+ * Applies the given transformation matrix to the object and updates the object's position,
418
+ * rotation and scale.
419
+ *
420
+ * @param {Matrix4} matrix - The transformation matrix.
421
+ */
131
422
  applyMatrix4( matrix ) {
132
423
 
133
424
  if ( this.matrixAutoUpdate ) this.updateMatrix();
@@ -138,6 +429,12 @@ class Object3D extends EventDispatcher {
138
429
 
139
430
  }
140
431
 
432
+ /**
433
+ * Applies a rotation represented by given the quaternion to the 3D object.
434
+ *
435
+ * @param {Quaternion} q - The quaternion.
436
+ * @return {Object3D} A reference to this instance.
437
+ */
141
438
  applyQuaternion( q ) {
142
439
 
143
440
  this.quaternion.premultiply( q );
@@ -146,6 +443,12 @@ class Object3D extends EventDispatcher {
146
443
 
147
444
  }
148
445
 
446
+ /**
447
+ * Sets the given rotation represented as an axis/angle couple to the 3D object.
448
+ *
449
+ * @param {Vector3} axis - The (normalized) axis vector.
450
+ * @param {number} angle - The angle in radians.
451
+ */
149
452
  setRotationFromAxisAngle( axis, angle ) {
150
453
 
151
454
  // assumes axis is normalized
@@ -154,12 +457,23 @@ class Object3D extends EventDispatcher {
154
457
 
155
458
  }
156
459
 
460
+ /**
461
+ * Sets the given rotation represented as Euler angles to the 3D object.
462
+ *
463
+ * @param {Euler} euler - The Euler angles.
464
+ */
157
465
  setRotationFromEuler( euler ) {
158
466
 
159
467
  this.quaternion.setFromEuler( euler, true );
160
468
 
161
469
  }
162
470
 
471
+ /**
472
+ * Sets the given rotation represented as rotation matrix to the 3D object.
473
+ *
474
+ * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be
475
+ * a pure rotation matrix (i.e, unscaled).
476
+ */
163
477
  setRotationFromMatrix( m ) {
164
478
 
165
479
  // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
@@ -168,6 +482,11 @@ class Object3D extends EventDispatcher {
168
482
 
169
483
  }
170
484
 
485
+ /**
486
+ * Sets the given rotation represented as a Quaternion to the 3D object.
487
+ *
488
+ * @param {Quaternion} q - The Quaternion
489
+ */
171
490
  setRotationFromQuaternion( q ) {
172
491
 
173
492
  // assumes q is normalized
@@ -176,6 +495,13 @@ class Object3D extends EventDispatcher {
176
495
 
177
496
  }
178
497
 
498
+ /**
499
+ * Rotates the 3D object along an axis in local space.
500
+ *
501
+ * @param {Vector3} axis - The (normalized) axis vector.
502
+ * @param {number} angle - The angle in radians.
503
+ * @return {Object3D} A reference to this instance.
504
+ */
179
505
  rotateOnAxis( axis, angle ) {
180
506
 
181
507
  // rotate object on axis in object space
@@ -189,6 +515,13 @@ class Object3D extends EventDispatcher {
189
515
 
190
516
  }
191
517
 
518
+ /**
519
+ * Rotates the 3D object along an axis in world space.
520
+ *
521
+ * @param {Vector3} axis - The (normalized) axis vector.
522
+ * @param {number} angle - The angle in radians.
523
+ * @return {Object3D} A reference to this instance.
524
+ */
192
525
  rotateOnWorldAxis( axis, angle ) {
193
526
 
194
527
  // rotate object on axis in world space
@@ -203,24 +536,49 @@ class Object3D extends EventDispatcher {
203
536
 
204
537
  }
205
538
 
539
+ /**
540
+ * Rotates the 3D object around its X axis in local space.
541
+ *
542
+ * @param {number} angle - The angle in radians.
543
+ * @return {Object3D} A reference to this instance.
544
+ */
206
545
  rotateX( angle ) {
207
546
 
208
547
  return this.rotateOnAxis( _xAxis, angle );
209
548
 
210
549
  }
211
550
 
551
+ /**
552
+ * Rotates the 3D object around its Y axis in local space.
553
+ *
554
+ * @param {number} angle - The angle in radians.
555
+ * @return {Object3D} A reference to this instance.
556
+ */
212
557
  rotateY( angle ) {
213
558
 
214
559
  return this.rotateOnAxis( _yAxis, angle );
215
560
 
216
561
  }
217
562
 
563
+ /**
564
+ * Rotates the 3D object around its Z axis in local space.
565
+ *
566
+ * @param {number} angle - The angle in radians.
567
+ * @return {Object3D} A reference to this instance.
568
+ */
218
569
  rotateZ( angle ) {
219
570
 
220
571
  return this.rotateOnAxis( _zAxis, angle );
221
572
 
222
573
  }
223
574
 
575
+ /**
576
+ * Translate the 3D object by a distance along the given axis in local space.
577
+ *
578
+ * @param {Vector3} axis - The (normalized) axis vector.
579
+ * @param {number} distance - The distance in world units.
580
+ * @return {Object3D} A reference to this instance.
581
+ */
224
582
  translateOnAxis( axis, distance ) {
225
583
 
226
584
  // translate object by distance along axis in object space
@@ -234,24 +592,48 @@ class Object3D extends EventDispatcher {
234
592
 
235
593
  }
236
594
 
595
+ /**
596
+ * Translate the 3D object by a distance along its X-axis in local space.
597
+ *
598
+ * @param {number} distance - The distance in world units.
599
+ * @return {Object3D} A reference to this instance.
600
+ */
237
601
  translateX( distance ) {
238
602
 
239
603
  return this.translateOnAxis( _xAxis, distance );
240
604
 
241
605
  }
242
606
 
607
+ /**
608
+ * Translate the 3D object by a distance along its Y-axis in local space.
609
+ *
610
+ * @param {number} distance - The distance in world units.
611
+ * @return {Object3D} A reference to this instance.
612
+ */
243
613
  translateY( distance ) {
244
614
 
245
615
  return this.translateOnAxis( _yAxis, distance );
246
616
 
247
617
  }
248
618
 
619
+ /**
620
+ * Translate the 3D object by a distance along its Z-axis in local space.
621
+ *
622
+ * @param {number} distance - The distance in world units.
623
+ * @return {Object3D} A reference to this instance.
624
+ */
249
625
  translateZ( distance ) {
250
626
 
251
627
  return this.translateOnAxis( _zAxis, distance );
252
628
 
253
629
  }
254
630
 
631
+ /**
632
+ * Converts the given vector from this 3D object's local space to world space.
633
+ *
634
+ * @param {Vector3} vector - The vector to convert.
635
+ * @return {Vector3} The converted vector.
636
+ */
255
637
  localToWorld( vector ) {
256
638
 
257
639
  this.updateWorldMatrix( true, false );
@@ -260,6 +642,12 @@ class Object3D extends EventDispatcher {
260
642
 
261
643
  }
262
644
 
645
+ /**
646
+ * Converts the given vector from this 3D object's word space to local space.
647
+ *
648
+ * @param {Vector3} vector - The vector to convert.
649
+ * @return {Vector3} The converted vector.
650
+ */
263
651
  worldToLocal( vector ) {
264
652
 
265
653
  this.updateWorldMatrix( true, false );
@@ -268,6 +656,15 @@ class Object3D extends EventDispatcher {
268
656
 
269
657
  }
270
658
 
659
+ /**
660
+ * Rotates the object to face a point in world space.
661
+ *
662
+ * This method does not support objects having non-uniformly-scaled parent(s).
663
+ *
664
+ * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space
665
+ * @param {number} [y] - The y coordinate in world space.
666
+ * @param {number} [z] - The z coordinate in world space.
667
+ */
271
668
  lookAt( x, y, z ) {
272
669
 
273
670
  // This method does not support objects having non-uniformly-scaled parent(s)
@@ -310,6 +707,16 @@ class Object3D extends EventDispatcher {
310
707
 
311
708
  }
312
709
 
710
+ /**
711
+ * Adds the given 3D object as a child to this 3D object. An arbitrary number of
712
+ * objects may be added. Any current parent on an object passed in here will be
713
+ * removed, since an object can have at most one parent.
714
+ *
715
+ * @fires Object3D#added
716
+ * @fires Object3D#childadded
717
+ * @param {Object3D} object - The 3D object to add.
718
+ * @return {Object3D} A reference to this instance.
719
+ */
313
720
  add( object ) {
314
721
 
315
722
  if ( arguments.length > 1 ) {
@@ -353,6 +760,15 @@ class Object3D extends EventDispatcher {
353
760
 
354
761
  }
355
762
 
763
+ /**
764
+ * Removes the given 3D object as child from this 3D object.
765
+ * An arbitrary number of objects may be removed.
766
+ *
767
+ * @fires Object3D#removed
768
+ * @fires Object3D#childremoved
769
+ * @param {Object3D} object - The 3D object to remove.
770
+ * @return {Object3D} A reference to this instance.
771
+ */
356
772
  remove( object ) {
357
773
 
358
774
  if ( arguments.length > 1 ) {
@@ -386,6 +802,13 @@ class Object3D extends EventDispatcher {
386
802
 
387
803
  }
388
804
 
805
+ /**
806
+ * Removes this 3D object from its current parent.
807
+ *
808
+ * @fires Object3D#removed
809
+ * @fires Object3D#childremoved
810
+ * @return {Object3D} A reference to this instance.
811
+ */
389
812
  removeFromParent() {
390
813
 
391
814
  const parent = this.parent;
@@ -400,12 +823,28 @@ class Object3D extends EventDispatcher {
400
823
 
401
824
  }
402
825
 
826
+ /**
827
+ * Removes all child objects.
828
+ *
829
+ * @fires Object3D#removed
830
+ * @fires Object3D#childremoved
831
+ * @return {Object3D} A reference to this instance.
832
+ */
403
833
  clear() {
404
834
 
405
835
  return this.remove( ... this.children );
406
836
 
407
837
  }
408
838
 
839
+ /**
840
+ * Adds the given 3D object as a child of this 3D object, while maintaining the object's world
841
+ * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).
842
+ *
843
+ * @fires Object3D#added
844
+ * @fires Object3D#childadded
845
+ * @param {Object3D} object - The 3D object to attach.
846
+ * @return {Object3D} A reference to this instance.
847
+ */
409
848
  attach( object ) {
410
849
 
411
850
  // adds object as a child of this, while maintaining the object's world transform
@@ -442,18 +881,40 @@ class Object3D extends EventDispatcher {
442
881
 
443
882
  }
444
883
 
884
+ /**
885
+ * Searches through the 3D object and its children, starting with the 3D object
886
+ * itself, and returns the first with a matching ID.
887
+ *
888
+ * @param {number} id - The id.
889
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
890
+ */
445
891
  getObjectById( id ) {
446
892
 
447
893
  return this.getObjectByProperty( 'id', id );
448
894
 
449
895
  }
450
896
 
897
+ /**
898
+ * Searches through the 3D object and its children, starting with the 3D object
899
+ * itself, and returns the first with a matching name.
900
+ *
901
+ * @param {string} name - The name.
902
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
903
+ */
451
904
  getObjectByName( name ) {
452
905
 
453
906
  return this.getObjectByProperty( 'name', name );
454
907
 
455
908
  }
456
909
 
910
+ /**
911
+ * Searches through the 3D object and its children, starting with the 3D object
912
+ * itself, and returns the first with a matching property value.
913
+ *
914
+ * @param {string} name - The name of the property.
915
+ * @param {any} value - The value.
916
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
917
+ */
457
918
  getObjectByProperty( name, value ) {
458
919
 
459
920
  if ( this[ name ] === value ) return this;
@@ -475,6 +936,15 @@ class Object3D extends EventDispatcher {
475
936
 
476
937
  }
477
938
 
939
+ /**
940
+ * Searches through the 3D object and its children, starting with the 3D object
941
+ * itself, and returns all 3D objects with a matching property value.
942
+ *
943
+ * @param {string} name - The name of the property.
944
+ * @param {any} value - The value.
945
+ * @param {Array<Object3D>} result - The method stores the result in this array.
946
+ * @return {Array<Object3D>} The found 3D objects.
947
+ */
478
948
  getObjectsByProperty( name, value, result = [] ) {
479
949
 
480
950
  if ( this[ name ] === value ) result.push( this );
@@ -491,6 +961,12 @@ class Object3D extends EventDispatcher {
491
961
 
492
962
  }
493
963
 
964
+ /**
965
+ * Returns a vector representing the position of the 3D object in world space.
966
+ *
967
+ * @param {Vector3} target - The target vector the result is stored to.
968
+ * @return {Vector3} The 3D object's position in world space.
969
+ */
494
970
  getWorldPosition( target ) {
495
971
 
496
972
  this.updateWorldMatrix( true, false );
@@ -499,6 +975,12 @@ class Object3D extends EventDispatcher {
499
975
 
500
976
  }
501
977
 
978
+ /**
979
+ * Returns a Quaternion representing the position of the 3D object in world space.
980
+ *
981
+ * @param {Quaternion} target - The target Quaternion the result is stored to.
982
+ * @return {Quaternion} The 3D object's rotation in world space.
983
+ */
502
984
  getWorldQuaternion( target ) {
503
985
 
504
986
  this.updateWorldMatrix( true, false );
@@ -509,6 +991,12 @@ class Object3D extends EventDispatcher {
509
991
 
510
992
  }
511
993
 
994
+ /**
995
+ * Returns a vector representing the scale of the 3D object in world space.
996
+ *
997
+ * @param {Vector3} target - The target vector the result is stored to.
998
+ * @return {Vector3} The 3D object's scale in world space.
999
+ */
512
1000
  getWorldScale( target ) {
513
1001
 
514
1002
  this.updateWorldMatrix( true, false );
@@ -519,6 +1007,12 @@ class Object3D extends EventDispatcher {
519
1007
 
520
1008
  }
521
1009
 
1010
+ /**
1011
+ * Returns a vector representing the ("look") direction of the 3D object in world space.
1012
+ *
1013
+ * @param {Vector3} target - The target vector the result is stored to.
1014
+ * @return {Vector3} The 3D object's direction in world space.
1015
+ */
522
1016
  getWorldDirection( target ) {
523
1017
 
524
1018
  this.updateWorldMatrix( true, false );
@@ -529,8 +1023,24 @@ class Object3D extends EventDispatcher {
529
1023
 
530
1024
  }
531
1025
 
1026
+ /**
1027
+ * Abstract method to get intersections between a casted ray and this
1028
+ * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}
1029
+ * implement this method in order to use raycasting.
1030
+ *
1031
+ * @abstract
1032
+ * @param {Raycaster} raycaster - The raycaster.
1033
+ * @param {Array<Object>} intersects - An array holding the result of the method.
1034
+ */
532
1035
  raycast( /* raycaster, intersects */ ) {}
533
1036
 
1037
+ /**
1038
+ * Executes the callback on this 3D object and all descendants.
1039
+ *
1040
+ * Note: Modifying the scene graph inside the callback is discouraged.
1041
+ *
1042
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1043
+ */
534
1044
  traverse( callback ) {
535
1045
 
536
1046
  callback( this );
@@ -545,6 +1055,14 @@ class Object3D extends EventDispatcher {
545
1055
 
546
1056
  }
547
1057
 
1058
+ /**
1059
+ * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.
1060
+ * Descendants of invisible 3D objects are not traversed.
1061
+ *
1062
+ * Note: Modifying the scene graph inside the callback is discouraged.
1063
+ *
1064
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1065
+ */
548
1066
  traverseVisible( callback ) {
549
1067
 
550
1068
  if ( this.visible === false ) return;
@@ -561,6 +1079,13 @@ class Object3D extends EventDispatcher {
561
1079
 
562
1080
  }
563
1081
 
1082
+ /**
1083
+ * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.
1084
+ *
1085
+ * Note: Modifying the scene graph inside the callback is discouraged.
1086
+ *
1087
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1088
+ */
564
1089
  traverseAncestors( callback ) {
565
1090
 
566
1091
  const parent = this.parent;
@@ -575,6 +1100,10 @@ class Object3D extends EventDispatcher {
575
1100
 
576
1101
  }
577
1102
 
1103
+ /**
1104
+ * Updates the transformation matrix in local space by computing it from the current
1105
+ * position, rotation and scale values.
1106
+ */
578
1107
  updateMatrix() {
579
1108
 
580
1109
  this.matrix.compose( this.position, this.quaternion, this.scale );
@@ -583,6 +1112,17 @@ class Object3D extends EventDispatcher {
583
1112
 
584
1113
  }
585
1114
 
1115
+ /**
1116
+ * Updates the transformation matrix in world space of this 3D objects and its descendants.
1117
+ *
1118
+ * To ensure correct results, this method also recomputes the 3D object's transformation matrix in
1119
+ * local space. The computation of the local and world matrix can be controlled with the
1120
+ * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both
1121
+ * `true` by default. Set these flags to `false` if you need more control over the update matrix process.
1122
+ *
1123
+ * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
1124
+ * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
1125
+ */
586
1126
  updateMatrixWorld( force ) {
587
1127
 
588
1128
  if ( this.matrixAutoUpdate ) this.updateMatrix();
@@ -623,6 +1163,13 @@ class Object3D extends EventDispatcher {
623
1163
 
624
1164
  }
625
1165
 
1166
+ /**
1167
+ * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the
1168
+ * update of ancestor and descendant nodes.
1169
+ *
1170
+ * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.
1171
+ * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.
1172
+ */
626
1173
  updateWorldMatrix( updateParents, updateChildren ) {
627
1174
 
628
1175
  const parent = this.parent;
@@ -667,6 +1214,13 @@ class Object3D extends EventDispatcher {
667
1214
 
668
1215
  }
669
1216
 
1217
+ /**
1218
+ * Serializes the 3D object into JSON.
1219
+ *
1220
+ * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
1221
+ * @return {Object} A JSON object representing the serialized 3D object.
1222
+ * @see {@link ObjectLoader#parse}
1223
+ */
670
1224
  toJSON( meta ) {
671
1225
 
672
1226
  // meta is a string when called from JSON.stringify
@@ -962,12 +1516,25 @@ class Object3D extends EventDispatcher {
962
1516
 
963
1517
  }
964
1518
 
1519
+ /**
1520
+ * Returns a new 3D object with copied values from this instance.
1521
+ *
1522
+ * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.
1523
+ * @return {Object3D} A clone of this instance.
1524
+ */
965
1525
  clone( recursive ) {
966
1526
 
967
1527
  return new this.constructor().copy( this, recursive );
968
1528
 
969
1529
  }
970
1530
 
1531
+ /**
1532
+ * Copies the values of the given 3D object to this instance.
1533
+ *
1534
+ * @param {Object3D} source - The 3D object to copy.
1535
+ * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.
1536
+ * @return {Object3D} A reference to this instance.
1537
+ */
971
1538
  copy( source, recursive = true ) {
972
1539
 
973
1540
  this.name = source.name;
@@ -1017,8 +1584,34 @@ class Object3D extends EventDispatcher {
1017
1584
 
1018
1585
  }
1019
1586
 
1587
+ /**
1588
+ * The default up direction for objects, also used as the default
1589
+ * position for {@link DirectionalLight} and {@link HemisphereLight}.
1590
+ *
1591
+ * @static
1592
+ * @type {Vector3}
1593
+ * @default (0,1,0)
1594
+ */
1020
1595
  Object3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );
1596
+
1597
+ /**
1598
+ * The default setting for {@link Object3D#matrixAutoUpdate} for
1599
+ * newly created 3D objects.
1600
+ *
1601
+ * @static
1602
+ * @type {boolean}
1603
+ * @default true
1604
+ */
1021
1605
  Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true;
1606
+
1607
+ /**
1608
+ * The default setting for {@link Object3D#matrixWorldAutoUpdate} for
1609
+ * newly created 3D objects.
1610
+ *
1611
+ * @static
1612
+ * @type {boolean}
1613
+ * @default true
1614
+ */
1022
1615
  Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;
1023
1616
 
1024
1617
  export { Object3D };