@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
@@ -7,7 +7,6 @@
7
7
  super( manager );
8
8
 
9
9
  }
10
-
11
10
  load( url, onLoad, onProgress, onError ) {
12
11
 
13
12
  const scope = this;
@@ -41,18 +40,15 @@
41
40
  }, onProgress, onError );
42
41
 
43
42
  }
44
-
45
43
  parse( data ) {
46
44
 
47
45
  // this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X
46
+
48
47
  let _data = data;
49
48
  let _dataPointer = 0;
50
-
51
49
  const _nativeLittleEndian = new Int8Array( new Int16Array( [ 1 ] ).buffer )[ 0 ] > 0;
52
-
53
50
  const _littleEndian = true;
54
51
  const headerObject = {};
55
-
56
52
  function scan( type, chunks ) {
57
53
 
58
54
  if ( chunks === undefined || chunks === null ) {
@@ -63,60 +59,51 @@
63
59
 
64
60
  let _chunkSize = 1;
65
61
  let _array_type = Uint8Array;
66
-
67
62
  switch ( type ) {
68
63
 
69
64
  // 1 byte data types
70
65
  case 'uchar':
71
66
  break;
72
-
73
67
  case 'schar':
74
68
  _array_type = Int8Array;
75
69
  break;
76
70
  // 2 byte data types
77
-
78
71
  case 'ushort':
79
72
  _array_type = Uint16Array;
80
73
  _chunkSize = 2;
81
74
  break;
82
-
83
75
  case 'sshort':
84
76
  _array_type = Int16Array;
85
77
  _chunkSize = 2;
86
78
  break;
87
79
  // 4 byte data types
88
-
89
80
  case 'uint':
90
81
  _array_type = Uint32Array;
91
82
  _chunkSize = 4;
92
83
  break;
93
-
94
84
  case 'sint':
95
85
  _array_type = Int32Array;
96
86
  _chunkSize = 4;
97
87
  break;
98
-
99
88
  case 'float':
100
89
  _array_type = Float32Array;
101
90
  _chunkSize = 4;
102
91
  break;
103
-
104
92
  case 'complex':
105
93
  _array_type = Float64Array;
106
94
  _chunkSize = 8;
107
95
  break;
108
-
109
96
  case 'double':
110
97
  _array_type = Float64Array;
111
98
  _chunkSize = 8;
112
99
  break;
113
100
 
114
- } // increase the data pointer in-place
115
-
116
-
117
- let _bytes = new _array_type( _data.slice( _dataPointer, _dataPointer += chunks * _chunkSize ) ); // if required, flip the endianness of the bytes
101
+ }
118
102
 
103
+ // increase the data pointer in-place
104
+ let _bytes = new _array_type( _data.slice( _dataPointer, _dataPointer += chunks * _chunkSize ) );
119
105
 
106
+ // if required, flip the endianness of the bytes
120
107
  if ( _nativeLittleEndian != _littleEndian ) {
121
108
 
122
109
  // we need to flip here since the format doesn't match the native endianness
@@ -129,18 +116,18 @@
129
116
  // if only one chunk was requested, just return one value
130
117
  return _bytes[ 0 ];
131
118
 
132
- } // return the byte array
133
-
119
+ }
134
120
 
121
+ // return the byte array
135
122
  return _bytes;
136
123
 
137
- } //Flips typed array endianness in-place. Based on https://github.com/kig/DataStream.js/blob/master/DataStream.js.
124
+ }
138
125
 
126
+ //Flips typed array endianness in-place. Based on https://github.com/kig/DataStream.js/blob/master/DataStream.js.
139
127
 
140
128
  function flipEndianness( array, chunkSize ) {
141
129
 
142
130
  const u8 = new Uint8Array( array.buffer, array.byteOffset, array.byteLength );
143
-
144
131
  for ( let i = 0; i < array.byteLength; i += chunkSize ) {
145
132
 
146
133
  for ( let j = i + chunkSize - 1, k = i; j > k; j --, k ++ ) {
@@ -155,19 +142,16 @@
155
142
 
156
143
  return array;
157
144
 
158
- } //parse the header
159
-
145
+ }
160
146
 
147
+ //parse the header
161
148
  function parseHeader( header ) {
162
149
 
163
150
  let data, field, fn, i, l, m, _i, _len;
164
-
165
151
  const lines = header.split( /\r?\n/ );
166
-
167
152
  for ( _i = 0, _len = lines.length; _i < _len; _i ++ ) {
168
153
 
169
154
  l = lines[ _i ];
170
-
171
155
  if ( l.match( /NRRD\d+/ ) ) {
172
156
 
173
157
  headerObject.isNrrd = true;
@@ -177,7 +161,6 @@
177
161
  field = m[ 1 ].trim();
178
162
  data = m[ 2 ].trim();
179
163
  fn = _fieldFunctions[ field ];
180
-
181
164
  if ( fn ) {
182
165
 
183
166
  fn.call( headerObject, data );
@@ -210,8 +193,9 @@
210
193
  headerObject.vectors = [];
211
194
  headerObject.vectors.push( [ 1, 0, 0 ] );
212
195
  headerObject.vectors.push( [ 0, 1, 0 ] );
213
- headerObject.vectors.push( [ 0, 0, 1 ] ); //apply spacing if defined
196
+ headerObject.vectors.push( [ 0, 0, 1 ] );
214
197
 
198
+ //apply spacing if defined
215
199
  if ( headerObject.spacings ) {
216
200
 
217
201
  for ( i = 0; i <= 2; i ++ ) {
@@ -232,23 +216,22 @@
232
216
 
233
217
  }
234
218
 
235
- } //parse the data when registred as one of this type : 'text', 'ascii', 'txt'
236
-
219
+ }
237
220
 
221
+ //parse the data when registred as one of this type : 'text', 'ascii', 'txt'
238
222
  function parseDataAsText( data, start, end ) {
239
223
 
240
224
  let number = '';
241
225
  start = start || 0;
242
226
  end = end || data.length;
243
- let value; //length of the result is the product of the sizes
244
-
227
+ let value;
228
+ //length of the result is the product of the sizes
245
229
  const lengthOfTheResult = headerObject.sizes.reduce( function ( previous, current ) {
246
230
 
247
231
  return previous * current;
248
232
 
249
233
  }, 1 );
250
234
  let base = 10;
251
-
252
235
  if ( headerObject.encoding === 'hex' ) {
253
236
 
254
237
  base = 16;
@@ -258,7 +241,6 @@
258
241
  const result = new headerObject.__array( lengthOfTheResult );
259
242
  let resultIndex = 0;
260
243
  let parsingFunction = parseInt;
261
-
262
244
  if ( headerObject.__array === Float32Array || headerObject.__array === Float64Array ) {
263
245
 
264
246
  parsingFunction = parseFloat;
@@ -267,8 +249,8 @@
267
249
 
268
250
  for ( let i = start; i < end; i ++ ) {
269
251
 
270
- value = data[ i ]; //if value is not a space
271
-
252
+ value = data[ i ];
253
+ //if value is not a space
272
254
  if ( ( value < 9 || value > 13 ) && value !== 32 ) {
273
255
 
274
256
  number += String.fromCharCode( value );
@@ -300,31 +282,28 @@
300
282
  }
301
283
 
302
284
  const _bytes = scan( 'uchar', data.byteLength );
303
-
304
285
  const _length = _bytes.length;
305
286
  let _header = null;
306
287
  let _data_start = 0;
307
288
  let i;
308
-
309
289
  for ( i = 1; i < _length; i ++ ) {
310
290
 
311
291
  if ( _bytes[ i - 1 ] == 10 && _bytes[ i ] == 10 ) {
312
292
 
313
293
  // we found two line breaks in a row
314
294
  // now we know what the header is
315
- _header = this.parseChars( _bytes, 0, i - 2 ); // this is were the data starts
316
-
295
+ _header = this.parseChars( _bytes, 0, i - 2 );
296
+ // this is were the data starts
317
297
  _data_start = i + 1;
318
298
  break;
319
299
 
320
300
  }
321
301
 
322
- } // parse the header
323
-
302
+ }
324
303
 
304
+ // parse the header
325
305
  parseHeader( _header );
326
306
  _data = _bytes.subarray( _data_start ); // the data without header
327
-
328
307
  if ( headerObject.encoding.substring( 0, 2 ) === 'gz' ) {
329
308
 
330
309
  // we need to decompress the datastream
@@ -339,7 +318,6 @@
339
318
 
340
319
  //we need to copy the array to create a new array buffer, else we retrieve the original arraybuffer with the header
341
320
  const _copy = new Uint8Array( _data.length );
342
-
343
321
  for ( let i = 0; i < _data.length; i ++ ) {
344
322
 
345
323
  _copy[ i ] = _data[ i ];
@@ -348,29 +326,31 @@
348
326
 
349
327
  _data = _copy;
350
328
 
351
- } // .. let's use the underlying array buffer
352
-
329
+ }
353
330
 
331
+ // .. let's use the underlying array buffer
354
332
  _data = _data.buffer;
355
333
  const volume = new THREE.Volume();
356
- volume.header = headerObject; //
334
+ volume.header = headerObject;
335
+ //
357
336
  // parse the (unzipped) data to a datastream of the correct type
358
337
  //
359
-
360
- volume.data = new headerObject.__array( _data ); // get the min and max intensities
361
-
338
+ volume.data = new headerObject.__array( _data );
339
+ // get the min and max intensities
362
340
  const min_max = volume.computeMinMax();
363
341
  const min = min_max[ 0 ];
364
- const max = min_max[ 1 ]; // attach the scalar range to the volume
365
-
342
+ const max = min_max[ 1 ];
343
+ // attach the scalar range to the volume
366
344
  volume.windowLow = min;
367
- volume.windowHigh = max; // get the image dimensions
345
+ volume.windowHigh = max;
368
346
 
347
+ // get the image dimensions
369
348
  volume.dimensions = [ headerObject.sizes[ 0 ], headerObject.sizes[ 1 ], headerObject.sizes[ 2 ] ];
370
349
  volume.xLength = volume.dimensions[ 0 ];
371
350
  volume.yLength = volume.dimensions[ 1 ];
372
- volume.zLength = volume.dimensions[ 2 ]; // Identify axis order in the space-directions matrix from the header if possible.
351
+ volume.zLength = volume.dimensions[ 2 ];
373
352
 
353
+ // Identify axis order in the space-directions matrix from the header if possible.
374
354
  if ( headerObject.vectors ) {
375
355
 
376
356
  const xIndex = headerObject.vectors.findIndex( vector => vector[ 0 ] !== 0 );
@@ -386,17 +366,17 @@
386
366
 
387
367
  volume.axisOrder = [ 'x', 'y', 'z' ];
388
368
 
389
- } // spacing
390
-
369
+ }
391
370
 
371
+ // spacing
392
372
  const spacingX = new THREE.Vector3().fromArray( headerObject.vectors[ 0 ] ).length();
393
373
  const spacingY = new THREE.Vector3().fromArray( headerObject.vectors[ 1 ] ).length();
394
374
  const spacingZ = new THREE.Vector3().fromArray( headerObject.vectors[ 2 ] ).length();
395
- volume.spacing = [ spacingX, spacingY, spacingZ ]; // Create IJKtoRAS matrix
375
+ volume.spacing = [ spacingX, spacingY, spacingZ ];
396
376
 
377
+ // Create IJKtoRAS matrix
397
378
  volume.matrix = new THREE.Matrix4();
398
379
  const transitionMatrix = new THREE.Matrix4();
399
-
400
380
  if ( headerObject.space === 'left-posterior-superior' ) {
401
381
 
402
382
  transitionMatrix.set( - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 );
@@ -422,9 +402,10 @@
422
402
 
423
403
  volume.inverseMatrix = new THREE.Matrix4();
424
404
  volume.inverseMatrix.copy( volume.matrix ).invert();
425
- volume.RASDimensions = new THREE.Vector3( volume.xLength, volume.yLength, volume.zLength ).applyMatrix4( volume.matrix ).round().toArray().map( Math.abs ); // .. and set the default threshold
426
- // only if the threshold was not already set
405
+ volume.RASDimensions = new THREE.Vector3( volume.xLength, volume.yLength, volume.zLength ).applyMatrix4( volume.matrix ).round().toArray().map( Math.abs );
427
406
 
407
+ // .. and set the default threshold
408
+ // only if the threshold was not already set
428
409
  if ( volume.lowerThreshold === - Infinity ) {
429
410
 
430
411
  volume.lowerThreshold = min;
@@ -440,7 +421,6 @@
440
421
  return volume;
441
422
 
442
423
  }
443
-
444
424
  parseChars( array, start, end ) {
445
425
 
446
426
  // without borders, use the whole array
@@ -456,10 +436,9 @@
456
436
 
457
437
  }
458
438
 
459
- let output = ''; // create and append the chars
460
-
439
+ let output = '';
440
+ // create and append the chars
461
441
  let i = 0;
462
-
463
442
  for ( i = start; i < end; ++ i ) {
464
443
 
465
444
  output += String.fromCharCode( array[ i ] );
@@ -471,7 +450,6 @@
471
450
  }
472
451
 
473
452
  }
474
-
475
453
  const _fieldFunctions = {
476
454
  type: function ( data ) {
477
455
 
@@ -483,13 +461,11 @@
483
461
  case 'uint8_t':
484
462
  this.__array = Uint8Array;
485
463
  break;
486
-
487
464
  case 'signed char':
488
465
  case 'int8':
489
466
  case 'int8_t':
490
467
  this.__array = Int8Array;
491
468
  break;
492
-
493
469
  case 'short':
494
470
  case 'short int':
495
471
  case 'signed short':
@@ -498,7 +474,6 @@
498
474
  case 'int16_t':
499
475
  this.__array = Int16Array;
500
476
  break;
501
-
502
477
  case 'ushort':
503
478
  case 'unsigned short':
504
479
  case 'unsigned short int':
@@ -506,29 +481,24 @@
506
481
  case 'uint16_t':
507
482
  this.__array = Uint16Array;
508
483
  break;
509
-
510
484
  case 'int':
511
485
  case 'signed int':
512
486
  case 'int32':
513
487
  case 'int32_t':
514
488
  this.__array = Int32Array;
515
489
  break;
516
-
517
490
  case 'uint':
518
491
  case 'unsigned int':
519
492
  case 'uint32':
520
493
  case 'uint32_t':
521
494
  this.__array = Uint32Array;
522
495
  break;
523
-
524
496
  case 'float':
525
497
  this.__array = Float32Array;
526
498
  break;
527
-
528
499
  case 'double':
529
500
  this.__array = Float64Array;
530
501
  break;
531
-
532
502
  default:
533
503
  throw new Error( 'Unsupported NRRD data type: ' + data );
534
504
 
@@ -558,13 +528,10 @@
558
528
  return this.sizes = function () {
559
529
 
560
530
  const _ref = data.split( /\s+/ );
561
-
562
531
  const _results = [];
563
-
564
532
  for ( let _i = 0, _len = _ref.length; _i < _len; _i ++ ) {
565
533
 
566
534
  i = _ref[ _i ];
567
-
568
535
  _results.push( parseInt( i, 10 ) );
569
536
 
570
537
  }
@@ -591,21 +558,16 @@
591
558
  return this.vectors = function () {
592
559
 
593
560
  const _results = [];
594
-
595
561
  for ( let _i = 0, _len = parts.length; _i < _len; _i ++ ) {
596
562
 
597
563
  v = parts[ _i ];
598
-
599
564
  _results.push( function () {
600
565
 
601
566
  const _ref = v.slice( 1, - 1 ).split( /,/ );
602
-
603
567
  const _results2 = [];
604
-
605
568
  for ( let _j = 0, _len2 = _ref.length; _j < _len2; _j ++ ) {
606
569
 
607
570
  f = _ref[ _j ];
608
-
609
571
  _results2.push( parseFloat( f ) );
610
572
 
611
573
  }
@@ -628,11 +590,9 @@
628
590
  return this.spacings = function () {
629
591
 
630
592
  const _results = [];
631
-
632
593
  for ( let _i = 0, _len = parts.length; _i < _len; _i ++ ) {
633
594
 
634
595
  f = parts[ _i ];
635
-
636
596
  _results.push( parseFloat( f ) );
637
597
 
638
598
  }