@plastic-software/three 0.167.3 → 0.174.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 (748) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36277 -24023
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46743
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50670
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +70301 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/jsm/Addons.js +3 -15
  15. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  16. package/examples/jsm/animation/CCDIKSolver.js +61 -11
  17. package/examples/jsm/capabilities/WebGL.js +27 -21
  18. package/examples/jsm/capabilities/WebGPU.js +1 -10
  19. package/examples/jsm/controls/ArcballControls.js +262 -231
  20. package/examples/jsm/controls/DragControls.js +1 -1
  21. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  22. package/examples/jsm/controls/FlyControls.js +194 -188
  23. package/examples/jsm/controls/OrbitControls.js +801 -777
  24. package/examples/jsm/controls/PointerLockControls.js +26 -20
  25. package/examples/jsm/controls/TrackballControls.js +469 -448
  26. package/examples/jsm/controls/TransformControls.js +119 -68
  27. package/examples/jsm/csm/CSM.js +2 -2
  28. package/examples/jsm/csm/CSMFrustum.js +7 -4
  29. package/examples/jsm/csm/CSMHelper.js +2 -0
  30. package/examples/jsm/csm/CSMShadowNode.js +442 -0
  31. package/examples/jsm/curves/NURBSCurve.js +33 -2
  32. package/examples/jsm/curves/NURBSUtils.js +3 -0
  33. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  34. package/examples/jsm/effects/OutlineEffect.js +1 -1
  35. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  36. package/examples/jsm/effects/StereoEffect.js +6 -1
  37. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  38. package/examples/jsm/exporters/EXRExporter.js +19 -11
  39. package/examples/jsm/exporters/GLTFExporter.js +181 -109
  40. package/examples/jsm/exporters/KTX2Exporter.js +54 -23
  41. package/examples/jsm/exporters/OBJExporter.js +5 -1
  42. package/examples/jsm/exporters/PLYExporter.js +11 -9
  43. package/examples/jsm/exporters/USDZExporter.js +50 -11
  44. package/examples/jsm/geometries/DecalGeometry.js +73 -21
  45. package/examples/jsm/geometries/TextGeometry.js +1 -12
  46. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  47. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  48. package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
  49. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  50. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  51. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  52. package/examples/jsm/interactive/SelectionHelper.js +3 -1
  53. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  54. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  55. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  56. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  57. package/examples/jsm/lighting/TiledLighting.js +18 -0
  58. package/examples/jsm/lights/LightProbeGenerator.js +26 -12
  59. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  60. package/examples/jsm/lines/LineGeometry.js +25 -0
  61. package/examples/jsm/lines/LineMaterial.js +0 -1
  62. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  63. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  64. package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
  65. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  66. package/examples/jsm/loaders/3DMLoader.js +1 -0
  67. package/examples/jsm/loaders/3MFLoader.js +104 -2
  68. package/examples/jsm/loaders/BVHLoader.js +1 -1
  69. package/examples/jsm/loaders/ColladaLoader.js +15 -12
  70. package/examples/jsm/loaders/DDSLoader.js +42 -0
  71. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  72. package/examples/jsm/loaders/FBXLoader.js +71 -22
  73. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  74. package/examples/jsm/loaders/GLTFLoader.js +29 -14
  75. package/examples/jsm/loaders/KTX2Loader.js +160 -58
  76. package/examples/jsm/loaders/KTXLoader.js +4 -4
  77. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  78. package/examples/jsm/loaders/LottieLoader.js +2 -1
  79. package/examples/jsm/loaders/MTLLoader.js +27 -7
  80. package/examples/jsm/loaders/MaterialXLoader.js +40 -14
  81. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  82. package/examples/jsm/loaders/OBJLoader.js +5 -3
  83. package/examples/jsm/loaders/PCDLoader.js +14 -13
  84. package/examples/jsm/loaders/PDBLoader.js +3 -2
  85. package/examples/jsm/loaders/PLYLoader.js +15 -12
  86. package/examples/jsm/loaders/PVRLoader.js +1 -1
  87. package/examples/jsm/loaders/STLLoader.js +3 -2
  88. package/examples/jsm/loaders/SVGLoader.js +2 -2
  89. package/examples/jsm/loaders/TDSLoader.js +17 -18
  90. package/examples/jsm/loaders/VRMLLoader.js +17 -17
  91. package/examples/jsm/loaders/VTKLoader.js +4 -3
  92. package/examples/jsm/loaders/XYZLoader.js +3 -2
  93. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  94. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  95. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  96. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  97. package/examples/jsm/math/ColorSpaces.js +76 -0
  98. package/examples/jsm/math/ConvexHull.js +1 -1
  99. package/examples/jsm/math/OBB.js +17 -0
  100. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  101. package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
  102. package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
  103. package/examples/jsm/misc/Timer.js +27 -12
  104. package/examples/jsm/misc/Volume.js +28 -18
  105. package/examples/jsm/misc/VolumeSlice.js +19 -16
  106. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  107. package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
  108. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  109. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  110. package/examples/jsm/objects/LensflareMesh.js +324 -0
  111. package/examples/jsm/objects/Reflector.js +5 -2
  112. package/examples/jsm/objects/Sky.js +2 -2
  113. package/examples/jsm/objects/SkyMesh.js +14 -14
  114. package/examples/jsm/objects/Water2.js +1 -1
  115. package/examples/jsm/objects/Water2Mesh.js +11 -9
  116. package/examples/jsm/objects/WaterMesh.js +38 -33
  117. package/examples/jsm/physics/JoltPhysics.js +8 -8
  118. package/examples/jsm/physics/RapierPhysics.js +5 -5
  119. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  120. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  121. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  122. package/examples/jsm/postprocessing/OutlinePass.js +37 -51
  123. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  124. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  125. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  126. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  127. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  128. package/examples/jsm/postprocessing/SSRPass.js +8 -4
  129. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  130. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  131. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  132. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  133. package/examples/jsm/shaders/BokehShader2.js +1 -1
  134. package/examples/jsm/shaders/FXAAShader.js +225 -224
  135. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  136. package/examples/jsm/shaders/OutputShader.js +6 -2
  137. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  138. package/examples/jsm/transpiler/AST.js +12 -2
  139. package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
  140. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  141. package/examples/jsm/transpiler/TSLEncoder.js +96 -21
  142. package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
  143. package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
  144. package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
  145. package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
  146. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
  147. package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
  148. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
  149. package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
  150. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  151. package/examples/jsm/tsl/display/FilmNode.js +100 -0
  152. package/examples/jsm/tsl/display/GTAONode.js +521 -0
  153. package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
  154. package/examples/jsm/tsl/display/LensflareNode.js +278 -0
  155. package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
  156. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  157. package/examples/jsm/tsl/display/OutlineNode.js +750 -0
  158. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
  159. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
  160. package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
  161. package/examples/jsm/tsl/display/SMAANode.js +767 -0
  162. package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
  163. package/examples/jsm/tsl/display/SSRNode.js +538 -0
  164. package/examples/jsm/tsl/display/Sepia.js +24 -0
  165. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
  166. package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
  167. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  168. package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
  169. package/examples/jsm/tsl/display/TransitionNode.js +140 -0
  170. package/examples/jsm/tsl/display/hashBlur.js +34 -0
  171. package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
  172. package/examples/jsm/tsl/math/Bayer.js +18 -0
  173. package/examples/jsm/tsl/utils/Raymarching.js +65 -0
  174. package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
  175. package/examples/jsm/utils/CameraUtils.js +4 -1
  176. package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
  177. package/examples/jsm/utils/GeometryUtils.js +22 -19
  178. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  179. package/examples/jsm/utils/SceneUtils.js +2 -2
  180. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  181. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  182. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  183. package/examples/jsm/utils/UVsDebug.js +1 -1
  184. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
  185. package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
  186. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  187. package/examples/jsm/webxr/Text2D.js +6 -6
  188. package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
  189. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  190. package/package.json +14 -9
  191. package/src/Three.Core.js +182 -0
  192. package/src/Three.Legacy.js +0 -21
  193. package/src/Three.TSL.js +543 -0
  194. package/src/Three.WebGPU.Nodes.js +23 -0
  195. package/src/Three.WebGPU.js +13 -184
  196. package/src/Three.js +1 -176
  197. package/src/animation/AnimationClip.js +2 -2
  198. package/src/animation/AnimationObjectGroup.js +2 -2
  199. package/src/animation/AnimationUtils.js +1 -1
  200. package/src/animation/PropertyBinding.js +2 -2
  201. package/src/audio/Audio.js +379 -2
  202. package/src/audio/AudioAnalyser.js +58 -1
  203. package/src/audio/AudioContext.js +15 -0
  204. package/src/audio/AudioListener.js +76 -0
  205. package/src/audio/PositionalAudio.js +107 -0
  206. package/src/cameras/ArrayCamera.js +29 -0
  207. package/src/cameras/Camera.js +47 -0
  208. package/src/cameras/CubeCamera.js +66 -0
  209. package/src/cameras/OrthographicCamera.js +109 -0
  210. package/src/cameras/PerspectiveCamera.js +173 -34
  211. package/src/cameras/StereoCamera.js +48 -2
  212. package/src/constants.js +6 -6
  213. package/src/core/BufferAttribute.js +4 -9
  214. package/src/core/BufferGeometry.js +48 -8
  215. package/src/core/Clock.js +1 -1
  216. package/src/core/EventDispatcher.js +52 -8
  217. package/src/core/InterleavedBuffer.js +4 -13
  218. package/src/core/Object3D.js +573 -3
  219. package/src/core/RenderTarget.js +22 -4
  220. package/src/core/RenderTarget3D.js +22 -0
  221. package/src/core/RenderTargetArray.js +22 -0
  222. package/src/extras/Controls.js +104 -0
  223. package/src/extras/DataUtils.js +48 -8
  224. package/src/extras/Earcut.js +18 -7
  225. package/src/extras/ImageUtils.js +18 -11
  226. package/src/extras/PMREMGenerator.js +40 -9
  227. package/src/extras/ShapeUtils.js +24 -2
  228. package/src/extras/TextureUtils.js +96 -10
  229. package/src/extras/core/Curve.js +153 -53
  230. package/src/extras/core/CurvePath.js +63 -22
  231. package/src/extras/core/Interpolations.js +29 -3
  232. package/src/extras/core/Path.js +134 -1
  233. package/src/extras/core/Shape.js +66 -3
  234. package/src/extras/core/ShapePath.js +76 -0
  235. package/src/extras/curves/ArcCurve.js +22 -0
  236. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  237. package/src/extras/curves/CubicBezierCurve.js +67 -0
  238. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  239. package/src/extras/curves/EllipseCurve.js +102 -0
  240. package/src/extras/curves/LineCurve.js +36 -0
  241. package/src/extras/curves/LineCurve3.js +36 -0
  242. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  243. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  244. package/src/extras/curves/SplineCurve.js +48 -0
  245. package/src/geometries/BoxGeometry.js +38 -0
  246. package/src/geometries/CapsuleGeometry.js +34 -0
  247. package/src/geometries/CircleGeometry.js +40 -0
  248. package/src/geometries/ConeGeometry.js +38 -0
  249. package/src/geometries/CylinderGeometry.js +50 -4
  250. package/src/geometries/DodecahedronGeometry.js +32 -0
  251. package/src/geometries/EdgesGeometry.js +30 -2
  252. package/src/geometries/ExtrudeGeometry.js +52 -0
  253. package/src/geometries/IcosahedronGeometry.js +32 -0
  254. package/src/geometries/LatheGeometry.js +43 -3
  255. package/src/geometries/OctahedronGeometry.js +32 -0
  256. package/src/geometries/PlaneGeometry.js +34 -0
  257. package/src/geometries/PolyhedronGeometry.js +29 -0
  258. package/src/geometries/RingGeometry.js +36 -0
  259. package/src/geometries/ShapeGeometry.js +37 -0
  260. package/src/geometries/SphereGeometry.js +37 -0
  261. package/src/geometries/TetrahedronGeometry.js +32 -0
  262. package/src/geometries/TorusGeometry.js +35 -0
  263. package/src/geometries/TorusKnotGeometry.js +38 -0
  264. package/src/geometries/TubeGeometry.js +49 -0
  265. package/src/geometries/WireframeGeometry.js +32 -0
  266. package/src/helpers/ArrowHelper.js +60 -3
  267. package/src/helpers/AxesHelper.js +28 -0
  268. package/src/helpers/Box3Helper.js +28 -0
  269. package/src/helpers/BoxHelper.js +43 -7
  270. package/src/helpers/CameraHelper.js +61 -18
  271. package/src/helpers/DirectionalLightHelper.js +52 -0
  272. package/src/helpers/GridHelper.js +26 -0
  273. package/src/helpers/HemisphereLightHelper.js +39 -0
  274. package/src/helpers/PlaneHelper.js +33 -0
  275. package/src/helpers/PointLightHelper.js +43 -0
  276. package/src/helpers/PolarGridHelper.js +30 -0
  277. package/src/helpers/SkeletonHelper.js +39 -2
  278. package/src/helpers/SpotLightHelper.js +40 -0
  279. package/src/lights/AmbientLight.js +25 -0
  280. package/src/lights/DirectionalLight.js +57 -0
  281. package/src/lights/DirectionalLightShadow.js +15 -0
  282. package/src/lights/HemisphereLight.js +32 -0
  283. package/src/lights/Light.js +36 -0
  284. package/src/lights/LightProbe.js +43 -0
  285. package/src/lights/LightShadow.js +159 -0
  286. package/src/lights/PointLight.js +59 -0
  287. package/src/lights/PointLightShadow.js +21 -0
  288. package/src/lights/RectAreaLight.js +59 -0
  289. package/src/lights/SpotLight.js +102 -0
  290. package/src/lights/SpotLightShadow.js +24 -2
  291. package/src/lights/webgpu/IESSpotLight.js +21 -0
  292. package/src/loaders/Loader.js +132 -0
  293. package/src/loaders/MaterialLoader.js +7 -1
  294. package/src/loaders/nodes/NodeLoader.js +189 -0
  295. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  296. package/src/loaders/nodes/NodeObjectLoader.js +151 -0
  297. package/src/materials/LineDashedMaterial.js +0 -1
  298. package/src/materials/Material.js +469 -7
  299. package/src/materials/MeshPhongMaterial.js +1 -1
  300. package/src/materials/MeshPhysicalMaterial.js +2 -2
  301. package/src/materials/MeshStandardMaterial.js +2 -2
  302. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
  303. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  304. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  305. package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
  306. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  307. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  308. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  309. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  310. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
  311. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  312. package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  313. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  314. package/src/materials/nodes/NodeMaterial.js +1180 -0
  315. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
  316. package/src/materials/nodes/PointsNodeMaterial.js +153 -0
  317. package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
  318. package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
  319. package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
  320. package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
  321. package/src/math/Box2.js +177 -0
  322. package/src/math/Box3.js +243 -0
  323. package/src/math/Color.js +343 -0
  324. package/src/math/ColorManagement.js +143 -102
  325. package/src/math/Cylindrical.js +65 -6
  326. package/src/math/Euler.js +137 -4
  327. package/src/math/Frustum.js +83 -0
  328. package/src/math/Interpolant.js +87 -8
  329. package/src/math/Line3.js +96 -2
  330. package/src/math/MathUtils.js +182 -19
  331. package/src/math/Matrix2.js +70 -0
  332. package/src/math/Matrix3.js +229 -4
  333. package/src/math/Matrix4.js +368 -3
  334. package/src/math/Plane.js +164 -2
  335. package/src/math/Quaternion.js +265 -9
  336. package/src/math/Ray.js +160 -0
  337. package/src/math/Sphere.js +147 -0
  338. package/src/math/Spherical.js +73 -11
  339. package/src/math/SphericalHarmonics3.js +112 -14
  340. package/src/math/Triangle.js +230 -2
  341. package/src/math/Vector2.js +396 -10
  342. package/src/math/Vector3.js +550 -13
  343. package/src/math/Vector4.js +415 -9
  344. package/src/math/interpolants/CubicInterpolant.js +10 -1
  345. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  346. package/src/math/interpolants/LinearInterpolant.js +13 -0
  347. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  348. package/src/nodes/Nodes.js +84 -166
  349. package/src/nodes/TSL.js +167 -0
  350. package/src/nodes/accessors/AccessorsUtils.js +39 -10
  351. package/src/nodes/accessors/Arrays.js +68 -0
  352. package/src/nodes/accessors/BatchNode.js +93 -26
  353. package/src/nodes/accessors/Bitangent.js +54 -0
  354. package/src/nodes/accessors/BufferAttributeNode.js +189 -11
  355. package/src/nodes/accessors/BufferNode.js +70 -5
  356. package/src/nodes/accessors/BuiltinNode.js +63 -0
  357. package/src/nodes/accessors/Camera.js +129 -0
  358. package/src/nodes/accessors/ClippingNode.js +152 -43
  359. package/src/nodes/accessors/CubeTextureNode.js +76 -13
  360. package/src/nodes/accessors/InstanceNode.js +118 -35
  361. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  362. package/src/nodes/accessors/Lights.js +129 -0
  363. package/src/nodes/accessors/MaterialNode.js +394 -58
  364. package/src/nodes/accessors/MaterialProperties.js +57 -1
  365. package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
  366. package/src/nodes/accessors/ModelNode.js +159 -12
  367. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
  368. package/src/nodes/accessors/MorphNode.js +60 -13
  369. package/src/nodes/accessors/Normal.js +156 -0
  370. package/src/nodes/accessors/Object3DNode.js +154 -35
  371. package/src/nodes/accessors/PointUVNode.js +35 -6
  372. package/src/nodes/accessors/Position.js +64 -0
  373. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  374. package/src/nodes/accessors/ReferenceNode.js +243 -6
  375. package/src/nodes/accessors/ReflectVector.js +36 -0
  376. package/src/nodes/accessors/RendererReferenceNode.js +57 -7
  377. package/src/nodes/accessors/SceneNode.js +98 -6
  378. package/src/nodes/accessors/SkinningNode.js +214 -21
  379. package/src/nodes/accessors/StorageBufferNode.js +288 -28
  380. package/src/nodes/accessors/StorageTextureNode.js +139 -12
  381. package/src/nodes/accessors/Tangent.js +62 -0
  382. package/src/nodes/accessors/Texture3DNode.js +98 -12
  383. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
  384. package/src/nodes/accessors/TextureNode.js +347 -34
  385. package/src/nodes/accessors/TextureSizeNode.js +51 -9
  386. package/src/nodes/accessors/UV.js +11 -0
  387. package/src/nodes/accessors/UniformArrayNode.js +241 -32
  388. package/src/nodes/accessors/UserDataNode.js +55 -7
  389. package/src/nodes/accessors/VelocityNode.js +223 -0
  390. package/src/nodes/accessors/VertexColorNode.js +45 -6
  391. package/src/nodes/code/CodeNode.js +108 -8
  392. package/src/nodes/code/ExpressionNode.js +38 -7
  393. package/src/nodes/code/FunctionCallNode.js +62 -11
  394. package/src/nodes/code/FunctionNode.js +54 -24
  395. package/src/nodes/code/ScriptableNode.js +241 -17
  396. package/src/nodes/code/ScriptableValueNode.js +93 -8
  397. package/src/nodes/core/ArrayNode.js +142 -0
  398. package/src/nodes/core/AssignNode.js +60 -12
  399. package/src/nodes/core/AttributeNode.js +55 -22
  400. package/src/nodes/core/BypassNode.js +59 -11
  401. package/src/nodes/core/CacheNode.js +64 -10
  402. package/src/nodes/core/ConstNode.js +38 -3
  403. package/src/nodes/core/ContextNode.js +87 -12
  404. package/src/nodes/core/IndexNode.js +102 -10
  405. package/src/nodes/core/InputNode.js +55 -3
  406. package/src/nodes/core/LightingModel.js +65 -5
  407. package/src/nodes/core/MRTNode.js +81 -7
  408. package/src/nodes/core/Node.js +368 -50
  409. package/src/nodes/core/NodeAttribute.js +38 -0
  410. package/src/nodes/core/NodeBuilder.js +1317 -83
  411. package/src/nodes/core/NodeCache.js +41 -2
  412. package/src/nodes/core/NodeCode.js +31 -0
  413. package/src/nodes/core/NodeFrame.js +123 -2
  414. package/src/nodes/core/NodeFunction.js +46 -0
  415. package/src/nodes/core/NodeFunctionInput.js +44 -0
  416. package/src/nodes/core/NodeParser.js +11 -0
  417. package/src/nodes/core/NodeUniform.js +52 -0
  418. package/src/nodes/core/NodeUtils.js +226 -6
  419. package/src/nodes/core/NodeVar.js +47 -1
  420. package/src/nodes/core/NodeVarying.js +28 -0
  421. package/src/nodes/core/OutputStructNode.js +61 -17
  422. package/src/nodes/core/ParameterNode.js +34 -4
  423. package/src/nodes/core/PropertyNode.js +296 -32
  424. package/src/nodes/core/StackNode.js +108 -8
  425. package/src/nodes/core/StructNode.js +120 -0
  426. package/src/nodes/core/StructType.js +13 -0
  427. package/src/nodes/core/StructTypeNode.js +116 -9
  428. package/src/nodes/core/TempNode.js +37 -7
  429. package/src/nodes/core/UniformGroupNode.js +98 -17
  430. package/src/nodes/core/UniformNode.js +72 -4
  431. package/src/nodes/core/VarNode.js +170 -13
  432. package/src/nodes/core/VaryingNode.js +109 -8
  433. package/src/nodes/core/constants.js +40 -0
  434. package/src/nodes/display/BlendModes.js +193 -0
  435. package/src/nodes/display/BumpMapNode.js +47 -10
  436. package/src/nodes/display/ColorAdjustment.js +141 -0
  437. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  438. package/src/nodes/display/ColorSpaceNode.js +147 -68
  439. package/src/nodes/display/FrontFacingNode.js +39 -6
  440. package/src/nodes/display/NormalMapNode.js +55 -13
  441. package/src/nodes/display/PassNode.js +420 -19
  442. package/src/nodes/display/PosterizeNode.js +40 -7
  443. package/src/nodes/display/RenderOutputNode.js +81 -13
  444. package/src/nodes/display/ScreenNode.js +286 -0
  445. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  446. package/src/nodes/display/ToneMappingNode.js +68 -175
  447. package/src/nodes/display/ToonOutlinePassNode.js +183 -0
  448. package/src/nodes/display/ViewportDepthNode.js +210 -36
  449. package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
  450. package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
  451. package/src/nodes/display/ViewportTextureNode.js +68 -11
  452. package/src/nodes/fog/Fog.js +113 -0
  453. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  454. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  455. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  456. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  457. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  458. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  459. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  460. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  461. package/src/nodes/functions/BSDF/LTC.js +50 -6
  462. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  463. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  464. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  465. package/src/nodes/functions/BasicLightingModel.js +27 -6
  466. package/src/nodes/functions/PhongLightingModel.js +38 -8
  467. package/src/nodes/functions/PhysicalLightingModel.js +215 -51
  468. package/src/nodes/functions/ShadowMaskModel.js +24 -1
  469. package/src/nodes/functions/ToonLightingModel.js +24 -5
  470. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  471. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  472. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  473. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  474. package/src/nodes/functions/material/getRoughness.js +2 -2
  475. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  476. package/src/nodes/geometry/RangeNode.js +62 -7
  477. package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
  478. package/src/nodes/gpgpu/BarrierNode.js +89 -0
  479. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  480. package/src/nodes/gpgpu/ComputeNode.js +124 -9
  481. package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
  482. package/src/nodes/lighting/AONode.js +24 -3
  483. package/src/nodes/lighting/AmbientLightNode.js +16 -8
  484. package/src/nodes/lighting/AnalyticLightNode.js +151 -231
  485. package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
  486. package/src/nodes/lighting/BasicLightMapNode.js +25 -5
  487. package/src/nodes/lighting/DirectionalLightNode.js +19 -20
  488. package/src/nodes/lighting/EnvironmentNode.js +34 -17
  489. package/src/nodes/lighting/HemisphereLightNode.js +42 -11
  490. package/src/nodes/lighting/IESSpotLightNode.js +18 -9
  491. package/src/nodes/lighting/IrradianceNode.js +23 -3
  492. package/src/nodes/lighting/LightProbeNode.js +29 -36
  493. package/src/nodes/lighting/LightUtils.js +12 -4
  494. package/src/nodes/lighting/LightingContextNode.js +70 -21
  495. package/src/nodes/lighting/LightingNode.js +22 -9
  496. package/src/nodes/lighting/LightsNode.js +309 -86
  497. package/src/nodes/lighting/PointLightNode.js +66 -32
  498. package/src/nodes/lighting/PointShadowNode.js +306 -0
  499. package/src/nodes/lighting/RectAreaLightNode.js +61 -25
  500. package/src/nodes/lighting/ShadowBaseNode.js +92 -0
  501. package/src/nodes/lighting/ShadowNode.js +812 -0
  502. package/src/nodes/lighting/SpotLightNode.js +73 -31
  503. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  504. package/src/nodes/materialx/lib/mx_hsv.js +27 -22
  505. package/src/nodes/materialx/lib/mx_noise.js +70 -70
  506. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  507. package/src/nodes/math/ConditionalNode.js +230 -0
  508. package/src/nodes/math/Hash.js +21 -0
  509. package/src/nodes/math/MathNode.js +812 -131
  510. package/src/nodes/math/MathUtils.js +47 -8
  511. package/src/nodes/math/OperatorNode.js +410 -66
  512. package/src/nodes/math/TriNoise3D.js +32 -32
  513. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  514. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  515. package/src/nodes/pmrem/PMREMNode.js +188 -28
  516. package/src/nodes/pmrem/PMREMUtils.js +24 -24
  517. package/src/nodes/procedural/Checker.js +22 -0
  518. package/src/nodes/shapes/Shapes.js +32 -0
  519. package/src/nodes/tsl/TSLBase.js +31 -0
  520. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
  521. package/src/nodes/utils/ArrayElementNode.js +45 -5
  522. package/src/nodes/utils/ConvertNode.js +39 -4
  523. package/src/nodes/utils/CubeMapNode.js +88 -8
  524. package/src/nodes/utils/Discard.js +24 -0
  525. package/src/nodes/utils/EquirectUVNode.js +39 -7
  526. package/src/nodes/utils/FlipNode.js +106 -0
  527. package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
  528. package/src/nodes/utils/JoinNode.js +31 -3
  529. package/src/nodes/utils/LoopNode.js +95 -9
  530. package/src/nodes/utils/MatcapUVNode.js +27 -8
  531. package/src/nodes/utils/MaxMipLevelNode.js +57 -6
  532. package/src/nodes/utils/MemberNode.js +68 -0
  533. package/src/nodes/utils/Oscillators.js +41 -0
  534. package/src/nodes/utils/Packing.js +21 -0
  535. package/src/nodes/utils/PostProcessingUtils.js +95 -0
  536. package/src/nodes/utils/RTTNode.js +141 -9
  537. package/src/nodes/utils/ReflectorNode.js +295 -21
  538. package/src/nodes/utils/RemapNode.js +93 -10
  539. package/src/nodes/utils/RotateNode.js +48 -13
  540. package/src/nodes/utils/SetNode.js +50 -4
  541. package/src/nodes/utils/SplitNode.js +62 -6
  542. package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
  543. package/src/nodes/utils/SpriteUtils.js +21 -5
  544. package/src/nodes/utils/StorageArrayElementNode.js +64 -12
  545. package/src/nodes/utils/Timer.js +73 -0
  546. package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
  547. package/src/nodes/utils/UVUtils.js +27 -9
  548. package/src/nodes/utils/ViewportUtils.js +16 -4
  549. package/src/objects/BatchedMesh.js +808 -281
  550. package/src/objects/Bone.js +24 -0
  551. package/src/objects/ClippingGroup.js +68 -0
  552. package/src/objects/Group.js +24 -0
  553. package/src/objects/InstancedMesh.js +120 -2
  554. package/src/objects/LOD.js +120 -5
  555. package/src/objects/Line.js +89 -6
  556. package/src/objects/LineLoop.js +20 -0
  557. package/src/objects/LineSegments.js +18 -0
  558. package/src/objects/Mesh.js +82 -23
  559. package/src/objects/Points.js +62 -0
  560. package/src/objects/Skeleton.js +107 -2
  561. package/src/objects/SkinnedMesh.js +99 -5
  562. package/src/objects/Sprite.js +54 -0
  563. package/src/renderers/WebGLRenderer.js +274 -157
  564. package/src/renderers/common/Animation.js +109 -12
  565. package/src/renderers/common/Attributes.js +40 -0
  566. package/src/renderers/common/Backend.js +504 -44
  567. package/src/renderers/common/Background.js +67 -9
  568. package/src/renderers/common/BindGroup.js +45 -1
  569. package/src/renderers/common/Binding.js +35 -0
  570. package/src/renderers/common/Bindings.js +136 -19
  571. package/src/renderers/common/Buffer.js +49 -0
  572. package/src/renderers/common/BufferUtils.js +25 -0
  573. package/src/renderers/common/BundleGroup.js +83 -0
  574. package/src/renderers/common/ChainMap.js +45 -6
  575. package/src/renderers/common/ClippingContext.js +175 -80
  576. package/src/renderers/common/Color4.js +40 -0
  577. package/src/renderers/common/ComputePipeline.js +24 -0
  578. package/src/renderers/common/Constants.js +2 -1
  579. package/src/renderers/common/CubeRenderTarget.js +22 -3
  580. package/src/renderers/common/DataMap.js +37 -1
  581. package/src/renderers/common/Geometries.js +111 -14
  582. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  583. package/src/renderers/common/Info.js +78 -35
  584. package/src/renderers/common/Lighting.js +73 -0
  585. package/src/renderers/common/Pipeline.js +22 -0
  586. package/src/renderers/common/Pipelines.js +148 -5
  587. package/src/renderers/common/PostProcessing.js +112 -11
  588. package/src/renderers/common/ProgrammableStage.js +60 -2
  589. package/src/renderers/common/QuadMesh.js +56 -5
  590. package/src/renderers/common/RenderBundle.js +14 -8
  591. package/src/renderers/common/RenderBundles.js +39 -10
  592. package/src/renderers/common/RenderContext.js +205 -7
  593. package/src/renderers/common/RenderContexts.js +59 -6
  594. package/src/renderers/common/RenderList.js +230 -21
  595. package/src/renderers/common/RenderLists.js +45 -6
  596. package/src/renderers/common/RenderObject.js +552 -41
  597. package/src/renderers/common/RenderObjects.js +118 -9
  598. package/src/renderers/common/RenderPipeline.js +24 -0
  599. package/src/renderers/common/Renderer.js +1537 -239
  600. package/src/renderers/common/RendererUtils.js +191 -0
  601. package/src/renderers/common/SampledTexture.js +132 -3
  602. package/src/renderers/common/Sampler.js +30 -0
  603. package/src/renderers/common/StorageBuffer.js +24 -0
  604. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  605. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  606. package/src/renderers/common/StorageTexture.js +38 -0
  607. package/src/renderers/common/Textures.js +142 -32
  608. package/src/renderers/common/TimestampQueryPool.js +98 -0
  609. package/src/renderers/common/Uniform.js +225 -3
  610. package/src/renderers/common/UniformBuffer.js +19 -0
  611. package/src/renderers/common/UniformsGroup.js +157 -6
  612. package/src/renderers/common/XRManager.js +1185 -0
  613. package/src/renderers/common/XRRenderTarget.js +74 -0
  614. package/src/renderers/common/extras/PMREMGenerator.js +211 -53
  615. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  616. package/src/renderers/common/nodes/NodeLibrary.js +194 -0
  617. package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
  618. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  619. package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
  620. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  621. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  622. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  623. package/src/renderers/common/nodes/Nodes.js +390 -70
  624. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  625. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  626. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  627. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  628. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  629. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  630. package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
  631. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  632. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  633. package/src/renderers/webgl/WebGLBackground.js +24 -1
  634. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  635. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  636. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  637. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  638. package/src/renderers/webgl/WebGLProgram.js +27 -29
  639. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  640. package/src/renderers/webgl/WebGLState.js +68 -11
  641. package/src/renderers/webgl/WebGLTextures.js +49 -10
  642. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  643. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  644. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  645. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  646. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  648. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  649. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  650. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  651. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  652. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  653. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  654. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  655. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  656. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  657. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  658. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  659. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  660. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  661. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  662. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  663. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  664. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  665. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  666. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  667. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  668. package/src/renderers/webxr/WebXRManager.js +54 -32
  669. package/src/scenes/Fog.js +60 -0
  670. package/src/scenes/FogExp2.js +51 -0
  671. package/src/scenes/Scene.js +87 -0
  672. package/src/textures/Data3DTexture.js +2 -2
  673. package/src/textures/DepthTexture.js +2 -0
  674. package/src/textures/Source.js +2 -2
  675. package/src/textures/Texture.js +368 -5
  676. package/src/textures/VideoFrameTexture.js +35 -0
  677. package/src/utils.js +33 -1
  678. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  679. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  680. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  681. package/examples/jsm/controls/Controls.js +0 -32
  682. package/examples/jsm/exporters/MMDExporter.js +0 -217
  683. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  684. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  685. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  686. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  687. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  688. package/examples/jsm/loaders/TiltLoader.js +0 -520
  689. package/examples/jsm/objects/InstancedPoints.js +0 -21
  690. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  691. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  692. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  693. package/src/nodes/accessors/BitangentNode.js +0 -13
  694. package/src/nodes/accessors/CameraNode.js +0 -19
  695. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  696. package/src/nodes/accessors/NormalNode.js +0 -14
  697. package/src/nodes/accessors/PositionNode.js +0 -10
  698. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  699. package/src/nodes/accessors/TangentNode.js +0 -23
  700. package/src/nodes/accessors/UVNode.js +0 -3
  701. package/src/nodes/core/NodeKeywords.js +0 -80
  702. package/src/nodes/core/UniformGroup.js +0 -13
  703. package/src/nodes/display/AfterImageNode.js +0 -152
  704. package/src/nodes/display/AnamorphicNode.js +0 -145
  705. package/src/nodes/display/BlendModeNode.js +0 -128
  706. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  707. package/src/nodes/display/DenoiseNode.js +0 -198
  708. package/src/nodes/display/DotScreenNode.js +0 -75
  709. package/src/nodes/display/FXAANode.js +0 -327
  710. package/src/nodes/display/FilmNode.js +0 -52
  711. package/src/nodes/display/GTAONode.js +0 -324
  712. package/src/nodes/display/GaussianBlurNode.js +0 -207
  713. package/src/nodes/display/Lut3DNode.js +0 -53
  714. package/src/nodes/display/RGBShiftNode.js +0 -49
  715. package/src/nodes/display/SepiaNode.js +0 -18
  716. package/src/nodes/display/TransitionNode.js +0 -76
  717. package/src/nodes/display/ViewportNode.js +0 -137
  718. package/src/nodes/fog/FogExp2Node.js +0 -34
  719. package/src/nodes/fog/FogNode.js +0 -48
  720. package/src/nodes/fog/FogRangeNode.js +0 -35
  721. package/src/nodes/lighting/LightNode.js +0 -57
  722. package/src/nodes/loaders/NodeLoader.js +0 -110
  723. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  724. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  725. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  726. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  727. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  728. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  729. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  730. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  731. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  732. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  733. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  734. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  735. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  736. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  737. package/src/nodes/materials/NodeMaterial.js +0 -680
  738. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  739. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  740. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  741. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  742. package/src/nodes/math/CondNode.js +0 -139
  743. package/src/nodes/math/HashNode.js +0 -34
  744. package/src/nodes/procedural/CheckerNode.js +0 -42
  745. package/src/nodes/utils/DiscardNode.js +0 -28
  746. package/src/nodes/utils/OscNode.js +0 -81
  747. package/src/nodes/utils/PackingNode.js +0 -55
  748. package/src/nodes/utils/TimerNode.js +0 -94
@@ -5,7 +5,7 @@ import { EventDispatcher } from './EventDispatcher.js';
5
5
  import { Euler } from '../math/Euler.js';
6
6
  import { Layers } from './Layers.js';
7
7
  import { Matrix3 } from '../math/Matrix3.js';
8
- import * as MathUtils from '../math/MathUtils.js';
8
+ import { generateUUID } from '../math/MathUtils.js';
9
9
 
10
10
  let _object3DId = 0;
11
11
 
@@ -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
 
41
- this.uuid = MathUtils.generateUUID();
42
-
90
+ /**
91
+ * The UUID of the 3D object.
92
+ *
93
+ * @type {string}
94
+ * @readonly
95
+ */
96
+ this.uuid = generateUUID();
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,245 @@ 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
+ * An object that can be used to store custom data about the 3D object. It
335
+ * should not hold references to functions as these will not be cloned.
336
+ *
337
+ * @type {Object}
338
+ */
119
339
  this.userData = {};
120
340
 
121
341
  }
122
342
 
343
+ /**
344
+ * A callback that is executed immediately before a 3D object is rendered to a shadow map.
345
+ *
346
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
347
+ * @param {Object3D} object - The 3D object.
348
+ * @param {Camera} camera - The camera that is used to render the scene.
349
+ * @param {Camera} shadowCamera - The shadow camera.
350
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
351
+ * @param {Material} depthMaterial - The depth material.
352
+ * @param {Object} group - The geometry group data.
353
+ */
123
354
  onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
124
355
 
356
+ /**
357
+ * A callback that is executed immediately after a 3D object is rendered to a shadow map.
358
+ *
359
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
360
+ * @param {Object3D} object - The 3D object.
361
+ * @param {Camera} camera - The camera that is used to render the scene.
362
+ * @param {Camera} shadowCamera - The shadow camera.
363
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
364
+ * @param {Material} depthMaterial - The depth material.
365
+ * @param {Object} group - The geometry group data.
366
+ */
125
367
  onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
126
368
 
369
+ /**
370
+ * A callback that is executed immediately before a 3D object is rendered.
371
+ *
372
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
373
+ * @param {Object3D} object - The 3D object.
374
+ * @param {Camera} camera - The camera that is used to render the scene.
375
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
376
+ * @param {Material} material - The 3D object's material.
377
+ * @param {Object} group - The geometry group data.
378
+ */
127
379
  onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}
128
380
 
381
+ /**
382
+ * A callback that is executed immediately after a 3D object is rendered.
383
+ *
384
+ * @param {Renderer|WebGLRenderer} renderer - The renderer.
385
+ * @param {Object3D} object - The 3D object.
386
+ * @param {Camera} camera - The camera that is used to render the scene.
387
+ * @param {BufferGeometry} geometry - The 3D object's geometry.
388
+ * @param {Material} material - The 3D object's material.
389
+ * @param {Object} group - The geometry group data.
390
+ */
129
391
  onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}
130
392
 
393
+ /**
394
+ * Applies the given transformation matrix to the object and updates the object's position,
395
+ * rotation and scale.
396
+ *
397
+ * @param {Matrix4} matrix - The transformation matrix.
398
+ */
131
399
  applyMatrix4( matrix ) {
132
400
 
133
401
  if ( this.matrixAutoUpdate ) this.updateMatrix();
@@ -138,6 +406,12 @@ class Object3D extends EventDispatcher {
138
406
 
139
407
  }
140
408
 
409
+ /**
410
+ * Applies a rotation represented by given the quaternion to the 3D object.
411
+ *
412
+ * @param {Quaternion} q - The quaternion.
413
+ * @return {Object3D} A reference to this instance.
414
+ */
141
415
  applyQuaternion( q ) {
142
416
 
143
417
  this.quaternion.premultiply( q );
@@ -146,6 +420,12 @@ class Object3D extends EventDispatcher {
146
420
 
147
421
  }
148
422
 
423
+ /**
424
+ * Sets the given rotation represented as an axis/angle couple to the 3D object.
425
+ *
426
+ * @param {Vector3} axis - The (normalized) axis vector.
427
+ * @param {number} angle - The angle in radians.
428
+ */
149
429
  setRotationFromAxisAngle( axis, angle ) {
150
430
 
151
431
  // assumes axis is normalized
@@ -154,12 +434,23 @@ class Object3D extends EventDispatcher {
154
434
 
155
435
  }
156
436
 
437
+ /**
438
+ * Sets the given rotation represented as Euler angles to the 3D object.
439
+ *
440
+ * @param {Euler} euler - The Euler angles.
441
+ */
157
442
  setRotationFromEuler( euler ) {
158
443
 
159
444
  this.quaternion.setFromEuler( euler, true );
160
445
 
161
446
  }
162
447
 
448
+ /**
449
+ * Sets the given rotation represented as rotation matrix to the 3D object.
450
+ *
451
+ * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be
452
+ * a pure rotation matrix (i.e, unscaled).
453
+ */
163
454
  setRotationFromMatrix( m ) {
164
455
 
165
456
  // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
@@ -168,6 +459,11 @@ class Object3D extends EventDispatcher {
168
459
 
169
460
  }
170
461
 
462
+ /**
463
+ * Sets the given rotation represented as a Quaternion to the 3D object.
464
+ *
465
+ * @param {Quaternion} q - The Quaternion
466
+ */
171
467
  setRotationFromQuaternion( q ) {
172
468
 
173
469
  // assumes q is normalized
@@ -176,6 +472,13 @@ class Object3D extends EventDispatcher {
176
472
 
177
473
  }
178
474
 
475
+ /**
476
+ * Rotates the 3D object along an axis in local space.
477
+ *
478
+ * @param {Vector3} axis - The (normalized) axis vector.
479
+ * @param {number} angle - The angle in radians.
480
+ * @return {Object3D} A reference to this instance.
481
+ */
179
482
  rotateOnAxis( axis, angle ) {
180
483
 
181
484
  // rotate object on axis in object space
@@ -189,6 +492,13 @@ class Object3D extends EventDispatcher {
189
492
 
190
493
  }
191
494
 
495
+ /**
496
+ * Rotates the 3D object along an axis in world space.
497
+ *
498
+ * @param {Vector3} axis - The (normalized) axis vector.
499
+ * @param {number} angle - The angle in radians.
500
+ * @return {Object3D} A reference to this instance.
501
+ */
192
502
  rotateOnWorldAxis( axis, angle ) {
193
503
 
194
504
  // rotate object on axis in world space
@@ -203,24 +513,49 @@ class Object3D extends EventDispatcher {
203
513
 
204
514
  }
205
515
 
516
+ /**
517
+ * Rotates the 3D object around its X axis in local space.
518
+ *
519
+ * @param {number} angle - The angle in radians.
520
+ * @return {Object3D} A reference to this instance.
521
+ */
206
522
  rotateX( angle ) {
207
523
 
208
524
  return this.rotateOnAxis( _xAxis, angle );
209
525
 
210
526
  }
211
527
 
528
+ /**
529
+ * Rotates the 3D object around its Y axis in local space.
530
+ *
531
+ * @param {number} angle - The angle in radians.
532
+ * @return {Object3D} A reference to this instance.
533
+ */
212
534
  rotateY( angle ) {
213
535
 
214
536
  return this.rotateOnAxis( _yAxis, angle );
215
537
 
216
538
  }
217
539
 
540
+ /**
541
+ * Rotates the 3D object around its Z axis in local space.
542
+ *
543
+ * @param {number} angle - The angle in radians.
544
+ * @return {Object3D} A reference to this instance.
545
+ */
218
546
  rotateZ( angle ) {
219
547
 
220
548
  return this.rotateOnAxis( _zAxis, angle );
221
549
 
222
550
  }
223
551
 
552
+ /**
553
+ * Translate the 3D object by a distance along the given axis in local space.
554
+ *
555
+ * @param {Vector3} axis - The (normalized) axis vector.
556
+ * @param {number} distance - The distance in world units.
557
+ * @return {Object3D} A reference to this instance.
558
+ */
224
559
  translateOnAxis( axis, distance ) {
225
560
 
226
561
  // translate object by distance along axis in object space
@@ -234,24 +569,48 @@ class Object3D extends EventDispatcher {
234
569
 
235
570
  }
236
571
 
572
+ /**
573
+ * Translate the 3D object by a distance along its X-axis in local space.
574
+ *
575
+ * @param {number} distance - The distance in world units.
576
+ * @return {Object3D} A reference to this instance.
577
+ */
237
578
  translateX( distance ) {
238
579
 
239
580
  return this.translateOnAxis( _xAxis, distance );
240
581
 
241
582
  }
242
583
 
584
+ /**
585
+ * Translate the 3D object by a distance along its Y-axis in local space.
586
+ *
587
+ * @param {number} distance - The distance in world units.
588
+ * @return {Object3D} A reference to this instance.
589
+ */
243
590
  translateY( distance ) {
244
591
 
245
592
  return this.translateOnAxis( _yAxis, distance );
246
593
 
247
594
  }
248
595
 
596
+ /**
597
+ * Translate the 3D object by a distance along its Z-axis in local space.
598
+ *
599
+ * @param {number} distance - The distance in world units.
600
+ * @return {Object3D} A reference to this instance.
601
+ */
249
602
  translateZ( distance ) {
250
603
 
251
604
  return this.translateOnAxis( _zAxis, distance );
252
605
 
253
606
  }
254
607
 
608
+ /**
609
+ * Converts the given vector from this 3D object's local space to world space.
610
+ *
611
+ * @param {Vector3} vector - The vector to convert.
612
+ * @return {Vector3} The converted vector.
613
+ */
255
614
  localToWorld( vector ) {
256
615
 
257
616
  this.updateWorldMatrix( true, false );
@@ -260,6 +619,12 @@ class Object3D extends EventDispatcher {
260
619
 
261
620
  }
262
621
 
622
+ /**
623
+ * Converts the given vector from this 3D object's word space to local space.
624
+ *
625
+ * @param {Vector3} vector - The vector to convert.
626
+ * @return {Vector3} The converted vector.
627
+ */
263
628
  worldToLocal( vector ) {
264
629
 
265
630
  this.updateWorldMatrix( true, false );
@@ -268,6 +633,15 @@ class Object3D extends EventDispatcher {
268
633
 
269
634
  }
270
635
 
636
+ /**
637
+ * Rotates the object to face a point in world space.
638
+ *
639
+ * This method does not support objects having non-uniformly-scaled parent(s).
640
+ *
641
+ * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space
642
+ * @param {number} [y] - The y coordinate in world space.
643
+ * @param {number} [z] - The z coordinate in world space.
644
+ */
271
645
  lookAt( x, y, z ) {
272
646
 
273
647
  // This method does not support objects having non-uniformly-scaled parent(s)
@@ -310,6 +684,16 @@ class Object3D extends EventDispatcher {
310
684
 
311
685
  }
312
686
 
687
+ /**
688
+ * Adds the given 3D object as a child to this 3D object. An arbitrary number of
689
+ * objects may be added. Any current parent on an object passed in here will be
690
+ * removed, since an object can have at most one parent.
691
+ *
692
+ * @fires Object3D#added
693
+ * @fires Object3D#childadded
694
+ * @param {Object3D} object - The 3D object to add.
695
+ * @return {Object3D} A reference to this instance.
696
+ */
313
697
  add( object ) {
314
698
 
315
699
  if ( arguments.length > 1 ) {
@@ -353,6 +737,15 @@ class Object3D extends EventDispatcher {
353
737
 
354
738
  }
355
739
 
740
+ /**
741
+ * Removes the given 3D object as child from this 3D object.
742
+ * An arbitrary number of objects may be removed.
743
+ *
744
+ * @fires Object3D#removed
745
+ * @fires Object3D#childremoved
746
+ * @param {Object3D} object - The 3D object to remove.
747
+ * @return {Object3D} A reference to this instance.
748
+ */
356
749
  remove( object ) {
357
750
 
358
751
  if ( arguments.length > 1 ) {
@@ -386,6 +779,13 @@ class Object3D extends EventDispatcher {
386
779
 
387
780
  }
388
781
 
782
+ /**
783
+ * Removes this 3D object from its current parent.
784
+ *
785
+ * @fires Object3D#removed
786
+ * @fires Object3D#childremoved
787
+ * @return {Object3D} A reference to this instance.
788
+ */
389
789
  removeFromParent() {
390
790
 
391
791
  const parent = this.parent;
@@ -400,12 +800,28 @@ class Object3D extends EventDispatcher {
400
800
 
401
801
  }
402
802
 
803
+ /**
804
+ * Removes all child objects.
805
+ *
806
+ * @fires Object3D#removed
807
+ * @fires Object3D#childremoved
808
+ * @return {Object3D} A reference to this instance.
809
+ */
403
810
  clear() {
404
811
 
405
812
  return this.remove( ... this.children );
406
813
 
407
814
  }
408
815
 
816
+ /**
817
+ * Adds the given 3D object as a child of this 3D object, while maintaining the object's world
818
+ * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).
819
+ *
820
+ * @fires Object3D#added
821
+ * @fires Object3D#childadded
822
+ * @param {Object3D} object - The 3D object to attach.
823
+ * @return {Object3D} A reference to this instance.
824
+ */
409
825
  attach( object ) {
410
826
 
411
827
  // adds object as a child of this, while maintaining the object's world transform
@@ -442,18 +858,40 @@ class Object3D extends EventDispatcher {
442
858
 
443
859
  }
444
860
 
861
+ /**
862
+ * Searches through the 3D object and its children, starting with the 3D object
863
+ * itself, and returns the first with a matching ID.
864
+ *
865
+ * @param {number} id - The id.
866
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
867
+ */
445
868
  getObjectById( id ) {
446
869
 
447
870
  return this.getObjectByProperty( 'id', id );
448
871
 
449
872
  }
450
873
 
874
+ /**
875
+ * Searches through the 3D object and its children, starting with the 3D object
876
+ * itself, and returns the first with a matching name.
877
+ *
878
+ * @param {string} name - The name.
879
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
880
+ */
451
881
  getObjectByName( name ) {
452
882
 
453
883
  return this.getObjectByProperty( 'name', name );
454
884
 
455
885
  }
456
886
 
887
+ /**
888
+ * Searches through the 3D object and its children, starting with the 3D object
889
+ * itself, and returns the first with a matching property value.
890
+ *
891
+ * @param {string} name - The name of the property.
892
+ * @param {any} value - The value.
893
+ * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
894
+ */
457
895
  getObjectByProperty( name, value ) {
458
896
 
459
897
  if ( this[ name ] === value ) return this;
@@ -475,6 +913,15 @@ class Object3D extends EventDispatcher {
475
913
 
476
914
  }
477
915
 
916
+ /**
917
+ * Searches through the 3D object and its children, starting with the 3D object
918
+ * itself, and returns all 3D objects with a matching property value.
919
+ *
920
+ * @param {string} name - The name of the property.
921
+ * @param {any} value - The value.
922
+ * @param {Array<Object3D>} result - The method stores the result in this array.
923
+ * @return {Array<Object3D>} The found 3D objects.
924
+ */
478
925
  getObjectsByProperty( name, value, result = [] ) {
479
926
 
480
927
  if ( this[ name ] === value ) result.push( this );
@@ -491,6 +938,12 @@ class Object3D extends EventDispatcher {
491
938
 
492
939
  }
493
940
 
941
+ /**
942
+ * Returns a vector representing the position of the 3D object in world space.
943
+ *
944
+ * @param {Vector3} target - The target vector the result is stored to.
945
+ * @return {Vector3} The 3D object's position in world space.
946
+ */
494
947
  getWorldPosition( target ) {
495
948
 
496
949
  this.updateWorldMatrix( true, false );
@@ -499,6 +952,12 @@ class Object3D extends EventDispatcher {
499
952
 
500
953
  }
501
954
 
955
+ /**
956
+ * Returns a Quaternion representing the position of the 3D object in world space.
957
+ *
958
+ * @param {Quaternion} target - The target Quaternion the result is stored to.
959
+ * @return {Quaternion} The 3D object's rotation in world space.
960
+ */
502
961
  getWorldQuaternion( target ) {
503
962
 
504
963
  this.updateWorldMatrix( true, false );
@@ -509,6 +968,12 @@ class Object3D extends EventDispatcher {
509
968
 
510
969
  }
511
970
 
971
+ /**
972
+ * Returns a vector representing the scale of the 3D object in world space.
973
+ *
974
+ * @param {Vector3} target - The target vector the result is stored to.
975
+ * @return {Vector3} The 3D object's scale in world space.
976
+ */
512
977
  getWorldScale( target ) {
513
978
 
514
979
  this.updateWorldMatrix( true, false );
@@ -519,6 +984,12 @@ class Object3D extends EventDispatcher {
519
984
 
520
985
  }
521
986
 
987
+ /**
988
+ * Returns a vector representing the ("look") direction of the 3D object in world space.
989
+ *
990
+ * @param {Vector3} target - The target vector the result is stored to.
991
+ * @return {Vector3} The 3D object's direction in world space.
992
+ */
522
993
  getWorldDirection( target ) {
523
994
 
524
995
  this.updateWorldMatrix( true, false );
@@ -529,8 +1000,24 @@ class Object3D extends EventDispatcher {
529
1000
 
530
1001
  }
531
1002
 
1003
+ /**
1004
+ * Abstract method to get intersections between a casted ray and this
1005
+ * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}
1006
+ * implement this method in order to use raycasting.
1007
+ *
1008
+ * @abstract
1009
+ * @param {Raycaster} raycaster - The raycaster.
1010
+ * @param {Array<Object>} intersects - An array holding the result of the method.
1011
+ */
532
1012
  raycast( /* raycaster, intersects */ ) {}
533
1013
 
1014
+ /**
1015
+ * Executes the callback on this 3D object and all descendants.
1016
+ *
1017
+ * Note: Modifying the scene graph inside the callback is discouraged.
1018
+ *
1019
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1020
+ */
534
1021
  traverse( callback ) {
535
1022
 
536
1023
  callback( this );
@@ -545,6 +1032,14 @@ class Object3D extends EventDispatcher {
545
1032
 
546
1033
  }
547
1034
 
1035
+ /**
1036
+ * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.
1037
+ * Descendants of invisible 3D objects are not traversed.
1038
+ *
1039
+ * Note: Modifying the scene graph inside the callback is discouraged.
1040
+ *
1041
+ * @param {Function} callback - A callback function that allows to process the current 3D object.
1042
+ */
548
1043
  traverseVisible( callback ) {
549
1044
 
550
1045
  if ( this.visible === false ) return;
@@ -561,6 +1056,13 @@ class Object3D extends EventDispatcher {
561
1056
 
562
1057
  }
563
1058
 
1059
+ /**
1060
+ * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.
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
+ */
564
1066
  traverseAncestors( callback ) {
565
1067
 
566
1068
  const parent = this.parent;
@@ -575,6 +1077,10 @@ class Object3D extends EventDispatcher {
575
1077
 
576
1078
  }
577
1079
 
1080
+ /**
1081
+ * Updates the transformation matrix in local space by computing it from the current
1082
+ * position, rotation and scale values.
1083
+ */
578
1084
  updateMatrix() {
579
1085
 
580
1086
  this.matrix.compose( this.position, this.quaternion, this.scale );
@@ -583,6 +1089,17 @@ class Object3D extends EventDispatcher {
583
1089
 
584
1090
  }
585
1091
 
1092
+ /**
1093
+ * Updates the transformation matrix in world space of this 3D objects and its descendants.
1094
+ *
1095
+ * To ensure correct results, this method also recomputes the 3D object's transformation matrix in
1096
+ * local space. The computation of the local and world matrix can be controlled with the
1097
+ * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both
1098
+ * `true` by default. Set these flags to `false` if you need more control over the update matrix process.
1099
+ *
1100
+ * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
1101
+ * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
1102
+ */
586
1103
  updateMatrixWorld( force ) {
587
1104
 
588
1105
  if ( this.matrixAutoUpdate ) this.updateMatrix();
@@ -623,6 +1140,13 @@ class Object3D extends EventDispatcher {
623
1140
 
624
1141
  }
625
1142
 
1143
+ /**
1144
+ * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the
1145
+ * update of ancestor and descendant nodes.
1146
+ *
1147
+ * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.
1148
+ * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.
1149
+ */
626
1150
  updateWorldMatrix( updateParents, updateChildren ) {
627
1151
 
628
1152
  const parent = this.parent;
@@ -667,6 +1191,13 @@ class Object3D extends EventDispatcher {
667
1191
 
668
1192
  }
669
1193
 
1194
+ /**
1195
+ * Serializes the 3D object into JSON.
1196
+ *
1197
+ * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
1198
+ * @return {Object} A JSON object representing the serialized 3D object.
1199
+ * @see {@link ObjectLoader#parse}
1200
+ */
670
1201
  toJSON( meta ) {
671
1202
 
672
1203
  // meta is a string when called from JSON.stringify
@@ -962,12 +1493,25 @@ class Object3D extends EventDispatcher {
962
1493
 
963
1494
  }
964
1495
 
1496
+ /**
1497
+ * Returns a new 3D object with copied values from this instance.
1498
+ *
1499
+ * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.
1500
+ * @return {Object3D} A clone of this instance.
1501
+ */
965
1502
  clone( recursive ) {
966
1503
 
967
1504
  return new this.constructor().copy( this, recursive );
968
1505
 
969
1506
  }
970
1507
 
1508
+ /**
1509
+ * Copies the values of the given 3D object to this instance.
1510
+ *
1511
+ * @param {Object3D} source - The 3D object to copy.
1512
+ * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.
1513
+ * @return {Object3D} A reference to this instance.
1514
+ */
971
1515
  copy( source, recursive = true ) {
972
1516
 
973
1517
  this.name = source.name;
@@ -1017,8 +1561,34 @@ class Object3D extends EventDispatcher {
1017
1561
 
1018
1562
  }
1019
1563
 
1564
+ /**
1565
+ * The default up direction for objects, also used as the default
1566
+ * position for {@link DirectionalLight} and {@link HemisphereLight}.
1567
+ *
1568
+ * @static
1569
+ * @type {Vector3}
1570
+ * @default (0,1,0)
1571
+ */
1020
1572
  Object3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );
1573
+
1574
+ /**
1575
+ * The default setting for {@link Object3D#matrixAutoUpdate} for
1576
+ * newly created 3D objects.
1577
+ *
1578
+ * @static
1579
+ * @type {boolean}
1580
+ * @default true
1581
+ */
1021
1582
  Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true;
1583
+
1584
+ /**
1585
+ * The default setting for {@link Object3D#matrixWorldAutoUpdate} for
1586
+ * newly created 3D objects.
1587
+ *
1588
+ * @static
1589
+ * @type {boolean}
1590
+ * @default true
1591
+ */
1022
1592
  Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;
1023
1593
 
1024
1594
  export { Object3D };