@needle-tools/three 0.145.4 → 0.146.2

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 (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +75 -19
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -23,7 +23,6 @@
23
23
  super( manager );
24
24
 
25
25
  }
26
-
27
26
  load( url, onLoad, onProgress, onError ) {
28
27
 
29
28
  const scope = this;
@@ -57,20 +56,17 @@
57
56
  }, onProgress, onError );
58
57
 
59
58
  }
60
-
61
59
  parse( data ) {
62
60
 
63
61
  function loadDocument( data ) {
64
62
 
65
63
  let view = new DataView( data );
66
64
  const magic = String.fromCharCode( view.getUint8( 0 ), view.getUint8( 1 ) );
67
-
68
65
  if ( magic === 'PK' ) {
69
66
 
70
67
  let zip = null;
71
68
  let file = null;
72
69
  console.log( 'THREE.AMFLoader: Loading Zip' );
73
-
74
70
  try {
75
71
 
76
72
  zip = fflate.unzipSync( new Uint8Array( data ) ); // eslint-disable-line no-undef
@@ -103,7 +99,6 @@
103
99
 
104
100
  const fileText = THREE.LoaderUtils.decodeText( view );
105
101
  const xmlData = new DOMParser().parseFromString( fileText, 'application/xml' );
106
-
107
102
  if ( xmlData.documentElement.nodeName.toLowerCase() !== 'amf' ) {
108
103
 
109
104
  console.log( 'THREE.AMFLoader: Error loading AMF - no AMF document found.' );
@@ -119,7 +114,6 @@
119
114
 
120
115
  let scale = 1.0;
121
116
  let unit = 'millimeter';
122
-
123
117
  if ( node.documentElement.attributes.unit !== undefined ) {
124
118
 
125
119
  unit = node.documentElement.attributes.unit.value.toLowerCase();
@@ -133,7 +127,6 @@
133
127
  meter: 1000.0,
134
128
  micron: 0.001
135
129
  };
136
-
137
130
  if ( scaleUnits[ unit ] !== undefined ) {
138
131
 
139
132
  scale = scaleUnits[ unit ];
@@ -156,11 +149,9 @@
156
149
  a: 1.0
157
150
  };
158
151
  let loadedMaterial = null;
159
-
160
152
  for ( let i = 0; i < node.childNodes.length; i ++ ) {
161
153
 
162
154
  const matChildEl = node.childNodes[ i ];
163
-
164
155
  if ( matChildEl.nodeName === 'metadata' && matChildEl.attributes.type !== undefined ) {
165
156
 
166
157
  if ( matChildEl.attributes.type.value === 'name' ) {
@@ -182,7 +173,6 @@
182
173
  color: new THREE.Color( color.r, color.g, color.b ),
183
174
  name: matName
184
175
  } );
185
-
186
176
  if ( color.a !== 1.0 ) {
187
177
 
188
178
  loadedMaterial.transparent = true;
@@ -205,11 +195,9 @@
205
195
  b: 1.0,
206
196
  a: 1.0
207
197
  };
208
-
209
198
  for ( let i = 0; i < node.childNodes.length; i ++ ) {
210
199
 
211
200
  const matColor = node.childNodes[ i ];
212
-
213
201
  if ( matColor.nodeName === 'r' ) {
214
202
 
215
203
  color.r = matColor.textContent;
@@ -242,7 +230,6 @@
242
230
  materialid: null
243
231
  };
244
232
  let currVolumeNode = node.firstElementChild;
245
-
246
233
  if ( node.attributes.materialid !== undefined ) {
247
234
 
248
235
  volume.materialId = node.attributes.materialid.nodeValue;
@@ -285,13 +272,11 @@
285
272
  const vertArray = [];
286
273
  const normalArray = [];
287
274
  let currVerticesNode = node.firstElementChild;
288
-
289
275
  while ( currVerticesNode ) {
290
276
 
291
277
  if ( currVerticesNode.nodeName === 'vertex' ) {
292
278
 
293
279
  let vNode = currVerticesNode.firstElementChild;
294
-
295
280
  while ( vNode ) {
296
281
 
297
282
  if ( vNode.nodeName === 'coordinates' ) {
@@ -336,7 +321,6 @@
336
321
  };
337
322
  let currColor = null;
338
323
  let currObjNode = node.firstElementChild;
339
-
340
324
  while ( currObjNode ) {
341
325
 
342
326
  if ( currObjNode.nodeName === 'metadata' ) {
@@ -364,7 +348,6 @@
364
348
  volumes: [],
365
349
  color: currColor
366
350
  };
367
-
368
351
  while ( currMeshNode ) {
369
352
 
370
353
  if ( currMeshNode.nodeName === 'vertices' ) {
@@ -406,11 +389,9 @@
406
389
  const amfObjects = {};
407
390
  const childNodes = xmlData.documentElement.childNodes;
408
391
  let i, j;
409
-
410
392
  for ( i = 0; i < childNodes.length; i ++ ) {
411
393
 
412
394
  const child = childNodes[ i ];
413
-
414
395
  if ( child.nodeName === 'metadata' ) {
415
396
 
416
397
  if ( child.attributes.type !== undefined ) {
@@ -449,21 +430,18 @@
449
430
  sceneObject.name = amfName;
450
431
  sceneObject.userData.author = amfAuthor;
451
432
  sceneObject.userData.loader = 'AMF';
452
-
453
433
  for ( const id in amfObjects ) {
454
434
 
455
435
  const part = amfObjects[ id ];
456
436
  const meshes = part.meshes;
457
437
  const newObject = new THREE.Group();
458
438
  newObject.name = part.name || '';
459
-
460
439
  for ( i = 0; i < meshes.length; i ++ ) {
461
440
 
462
441
  let objDefaultMaterial = defaultMaterial;
463
442
  const mesh = meshes[ i ];
464
443
  const vertices = new THREE.Float32BufferAttribute( mesh.vertices, 3 );
465
444
  let normals = null;
466
-
467
445
  if ( mesh.normals.length ) {
468
446
 
469
447
  normals = new THREE.Float32BufferAttribute( mesh.normals, 3 );
@@ -475,7 +453,6 @@
475
453
  const color = mesh.color;
476
454
  objDefaultMaterial = defaultMaterial.clone();
477
455
  objDefaultMaterial.color = new THREE.Color( color.r, color.g, color.b );
478
-
479
456
  if ( color.a !== 1.0 ) {
480
457
 
481
458
  objDefaultMaterial.transparent = true;
@@ -486,7 +463,6 @@
486
463
  }
487
464
 
488
465
  const volumes = mesh.volumes;
489
-
490
466
  for ( j = 0; j < volumes.length; j ++ ) {
491
467
 
492
468
  const volume = volumes[ j ];
@@ -494,7 +470,6 @@
494
470
  let material = objDefaultMaterial;
495
471
  newGeometry.setIndex( volume.triangles );
496
472
  newGeometry.setAttribute( 'position', vertices.clone() );
497
-
498
473
  if ( normals ) {
499
474
 
500
475
  newGeometry.setAttribute( 'normal', normals.clone() );
@@ -16,7 +16,6 @@
16
16
  this.animateBoneRotations = true;
17
17
 
18
18
  }
19
-
20
19
  load( url, onLoad, onProgress, onError ) {
21
20
 
22
21
  const scope = this;
@@ -49,7 +48,6 @@
49
48
  }, onProgress, onError );
50
49
 
51
50
  }
52
-
53
51
  parse( text ) {
54
52
 
55
53
  /*
@@ -61,6 +59,7 @@
61
59
  function readBvh( lines ) {
62
60
 
63
61
  // read model structure
62
+
64
63
  if ( nextLine( lines ) !== 'HIERARCHY' ) {
65
64
 
66
65
  console.error( 'THREE.BVHLoader: HIERARCHY expected.' );
@@ -68,35 +67,37 @@
68
67
  }
69
68
 
70
69
  const list = []; // collects flat array of all bones
70
+ const root = readNode( lines, nextLine( lines ), list );
71
71
 
72
- const root = readNode( lines, nextLine( lines ), list ); // read motion data
72
+ // read motion data
73
73
 
74
74
  if ( nextLine( lines ) !== 'MOTION' ) {
75
75
 
76
76
  console.error( 'THREE.BVHLoader: MOTION expected.' );
77
77
 
78
- } // number of frames
78
+ }
79
79
 
80
+ // number of frames
80
81
 
81
82
  let tokens = nextLine( lines ).split( /[\s]+/ );
82
83
  const numFrames = parseInt( tokens[ 1 ] );
83
-
84
84
  if ( isNaN( numFrames ) ) {
85
85
 
86
86
  console.error( 'THREE.BVHLoader: Failed to read number of frames.' );
87
87
 
88
- } // frame time
88
+ }
89
89
 
90
+ // frame time
90
91
 
91
92
  tokens = nextLine( lines ).split( /[\s]+/ );
92
93
  const frameTime = parseFloat( tokens[ 2 ] );
93
-
94
94
  if ( isNaN( frameTime ) ) {
95
95
 
96
96
  console.error( 'THREE.BVHLoader: Failed to read frame time.' );
97
97
 
98
- } // read frame data line by line
98
+ }
99
99
 
100
+ // read frame data line by line
100
101
 
101
102
  for ( let i = 0; i < numFrames; i ++ ) {
102
103
 
@@ -108,6 +109,7 @@
108
109
  return list;
109
110
 
110
111
  }
112
+
111
113
  /*
112
114
  Recursively reads data from a single frame into the bone hierarchy.
113
115
  The passed bone hierarchy has to be structured in the same order as the BVH file.
@@ -117,12 +119,13 @@
117
119
  - frameTime: playback time for this keyframe.
118
120
  - bone: the bone to read frame data from.
119
121
  */
120
-
121
-
122
122
  function readFrameData( data, frameTime, bone ) {
123
123
 
124
124
  // end sites have no motion data
125
- if ( bone.type === 'ENDSITE' ) return; // add keyframe
125
+
126
+ if ( bone.type === 'ENDSITE' ) return;
127
+
128
+ // add keyframe
126
129
 
127
130
  const keyframe = {
128
131
  time: frameTime,
@@ -133,7 +136,9 @@
133
136
  const quat = new THREE.Quaternion();
134
137
  const vx = new THREE.Vector3( 1, 0, 0 );
135
138
  const vy = new THREE.Vector3( 0, 1, 0 );
136
- const vz = new THREE.Vector3( 0, 0, 1 ); // parse values for each channel in node
139
+ const vz = new THREE.Vector3( 0, 0, 1 );
140
+
141
+ // parse values for each channel in node
137
142
 
138
143
  for ( let i = 0; i < bone.channels.length; i ++ ) {
139
144
 
@@ -142,37 +147,32 @@
142
147
  case 'Xposition':
143
148
  keyframe.position.x = parseFloat( data.shift().trim() );
144
149
  break;
145
-
146
150
  case 'Yposition':
147
151
  keyframe.position.y = parseFloat( data.shift().trim() );
148
152
  break;
149
-
150
153
  case 'Zposition':
151
154
  keyframe.position.z = parseFloat( data.shift().trim() );
152
155
  break;
153
-
154
156
  case 'Xrotation':
155
157
  quat.setFromAxisAngle( vx, parseFloat( data.shift().trim() ) * Math.PI / 180 );
156
158
  keyframe.rotation.multiply( quat );
157
159
  break;
158
-
159
160
  case 'Yrotation':
160
161
  quat.setFromAxisAngle( vy, parseFloat( data.shift().trim() ) * Math.PI / 180 );
161
162
  keyframe.rotation.multiply( quat );
162
163
  break;
163
-
164
164
  case 'Zrotation':
165
165
  quat.setFromAxisAngle( vz, parseFloat( data.shift().trim() ) * Math.PI / 180 );
166
166
  keyframe.rotation.multiply( quat );
167
167
  break;
168
-
169
168
  default:
170
169
  console.warn( 'THREE.BVHLoader: Invalid channel type.' );
171
170
 
172
171
  }
173
172
 
174
- } // parse child nodes
173
+ }
175
174
 
175
+ // parse child nodes
176
176
 
177
177
  for ( let i = 0; i < bone.children.length; i ++ ) {
178
178
 
@@ -181,6 +181,7 @@
181
181
  }
182
182
 
183
183
  }
184
+
184
185
  /*
185
186
  Recursively parses the HIERACHY section of the BVH file
186
187
  - lines: all lines of the file. lines are consumed as we go along.
@@ -188,8 +189,6 @@
188
189
  - list: collects a flat list of nodes
189
190
  returns: a BVH node including children
190
191
  */
191
-
192
-
193
192
  function readNode( lines, firstline, list ) {
194
193
 
195
194
  const node = {
@@ -197,10 +196,11 @@
197
196
  type: '',
198
197
  frames: []
199
198
  };
200
- list.push( node ); // parse node type and name
199
+ list.push( node );
201
200
 
202
- let tokens = firstline.split( /[\s]+/ );
201
+ // parse node type and name
203
202
 
203
+ let tokens = firstline.split( /[\s]+/ );
204
204
  if ( tokens[ 0 ].toUpperCase() === 'END' && tokens[ 1 ].toUpperCase() === 'SITE' ) {
205
205
 
206
206
  node.type = 'ENDSITE';
@@ -217,11 +217,11 @@
217
217
 
218
218
  console.error( 'THREE.BVHLoader: Expected opening { after type & name' );
219
219
 
220
- } // parse OFFSET
220
+ }
221
221
 
222
+ // parse OFFSET
222
223
 
223
224
  tokens = nextLine( lines ).split( /[\s]+/ );
224
-
225
225
  if ( tokens[ 0 ] !== 'OFFSET' ) {
226
226
 
227
227
  console.error( 'THREE.BVHLoader: Expected OFFSET but got: ' + tokens[ 0 ] );
@@ -235,19 +235,19 @@
235
235
  }
236
236
 
237
237
  const offset = new THREE.Vector3( parseFloat( tokens[ 1 ] ), parseFloat( tokens[ 2 ] ), parseFloat( tokens[ 3 ] ) );
238
-
239
238
  if ( isNaN( offset.x ) || isNaN( offset.y ) || isNaN( offset.z ) ) {
240
239
 
241
240
  console.error( 'THREE.BVHLoader: Invalid values of OFFSET.' );
242
241
 
243
242
  }
244
243
 
245
- node.offset = offset; // parse CHANNELS definitions
244
+ node.offset = offset;
245
+
246
+ // parse CHANNELS definitions
246
247
 
247
248
  if ( node.type !== 'ENDSITE' ) {
248
249
 
249
250
  tokens = nextLine( lines ).split( /[\s]+/ );
250
-
251
251
  if ( tokens[ 0 ] !== 'CHANNELS' ) {
252
252
 
253
253
  console.error( 'THREE.BVHLoader: Expected CHANNELS definition.' );
@@ -258,13 +258,13 @@
258
258
  node.channels = tokens.splice( 2, numChannels );
259
259
  node.children = [];
260
260
 
261
- } // read children
261
+ }
262
262
 
263
+ // read children
263
264
 
264
265
  while ( true ) {
265
266
 
266
267
  const line = nextLine( lines );
267
-
268
268
  if ( line === '}' ) {
269
269
 
270
270
  return node;
@@ -278,21 +278,19 @@
278
278
  }
279
279
 
280
280
  }
281
+
281
282
  /*
282
283
  recursively converts the internal bvh node structure to a THREE.Bone hierarchy
283
284
  source: the bvh root node
284
285
  list: pass an empty array, collects a flat list of all converted THREE.Bones
285
286
  returns the root THREE.Bone
286
287
  */
287
-
288
-
289
288
  function toTHREEBone( source, list ) {
290
289
 
291
290
  const bone = new THREE.Bone();
292
291
  list.push( bone );
293
292
  bone.position.add( source.offset );
294
293
  bone.name = source.name;
295
-
296
294
  if ( source.type !== 'ENDSITE' ) {
297
295
 
298
296
  for ( let i = 0; i < source.children.length; i ++ ) {
@@ -306,30 +304,34 @@
306
304
  return bone;
307
305
 
308
306
  }
307
+
309
308
  /*
310
309
  builds a THREE.AnimationClip from the keyframe data saved in each bone.
311
310
  bone: bvh root node
312
311
  returns: a THREE.AnimationClip containing position and quaternion tracks
313
312
  */
314
-
315
-
316
313
  function toTHREEAnimation( bones ) {
317
314
 
318
- const tracks = []; // create a position and quaternion animation track for each node
315
+ const tracks = [];
316
+
317
+ // create a position and quaternion animation track for each node
319
318
 
320
319
  for ( let i = 0; i < bones.length; i ++ ) {
321
320
 
322
321
  const bone = bones[ i ];
323
- if ( bone.type === 'ENDSITE' ) continue; // track data
322
+ if ( bone.type === 'ENDSITE' ) continue;
323
+
324
+ // track data
324
325
 
325
326
  const times = [];
326
327
  const positions = [];
327
328
  const rotations = [];
328
-
329
329
  for ( let j = 0; j < bone.frames.length; j ++ ) {
330
330
 
331
331
  const frame = bone.frames[ j ];
332
- times.push( frame.time ); // the animation system animates the position property,
332
+ times.push( frame.time );
333
+
334
+ // the animation system animates the position property,
333
335
  // so we have to add the joint offset to all values
334
336
 
335
337
  positions.push( frame.position.x + bone.offset.x );
@@ -359,15 +361,14 @@
359
361
  return new THREE.AnimationClip( 'animation', - 1, tracks );
360
362
 
361
363
  }
364
+
362
365
  /*
363
366
  returns the next non-empty line in lines
364
367
  */
365
-
366
-
367
368
  function nextLine( lines ) {
368
369
 
369
- let line; // skip empty lines
370
-
370
+ let line;
371
+ // skip empty lines
371
372
  while ( ( line = lines.shift().trim() ).length === 0 ) {}
372
373
 
373
374
  return line;