@needle-tools/three 0.145.2 → 0.146.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +3559 -6924
  3. package/build/three.js +3559 -6924
  4. package/build/three.min.js +1 -2
  5. package/build/three.module.js +732 -339
  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 +94 -28
  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/WebGLCubeUVMaps.js +1 -1
  381. package/src/renderers/webgl/WebGLLights.js +0 -4
  382. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  383. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  384. package/src/renderers/webgl/WebGLState.js +31 -1
  385. package/src/renderers/webgl/WebGLTextures.js +71 -18
  386. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  387. package/src/renderers/webgl/WebGLUtils.js +1 -1
  388. package/src/renderers/webxr/WebXRController.js +46 -13
  389. package/src/renderers/webxr/WebXRManager.js +85 -3
  390. package/src/scenes/Scene.js +8 -0
  391. package/src/textures/CompressedArrayTexture.js +18 -0
  392. package/examples/js/libs/lottie_canvas.js +0 -12751
  393. package/examples/js/shaders/PixelShader.js +0 -51
  394. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -11,7 +11,6 @@
11
11
  return new THREE.AnimationClip( null, period, [ track ] );
12
12
 
13
13
  }
14
-
15
14
  static CreateScaleAxisAnimation( period, axis = 'x' ) {
16
15
 
17
16
  const times = [ 0, period ],
@@ -21,13 +20,11 @@
21
20
  return new THREE.AnimationClip( null, period, [ track ] );
22
21
 
23
22
  }
24
-
25
23
  static CreateShakeAnimation( duration, shakeScale ) {
26
24
 
27
25
  const times = [],
28
26
  values = [],
29
27
  tmp = new THREE.Vector3();
30
-
31
28
  for ( let i = 0; i < duration * 10; i ++ ) {
32
29
 
33
30
  times.push( i / 10 );
@@ -40,13 +37,11 @@
40
37
  return new THREE.AnimationClip( null, duration, [ track ] );
41
38
 
42
39
  }
43
-
44
40
  static CreatePulsationAnimation( duration, pulseScale ) {
45
41
 
46
42
  const times = [],
47
43
  values = [],
48
44
  tmp = new THREE.Vector3();
49
-
50
45
  for ( let i = 0; i < duration * 10; i ++ ) {
51
46
 
52
47
  times.push( i / 10 );
@@ -60,7 +55,6 @@
60
55
  return new THREE.AnimationClip( null, duration, [ track ] );
61
56
 
62
57
  }
63
-
64
58
  static CreateVisibilityAnimation( duration ) {
65
59
 
66
60
  const times = [ 0, duration / 2, duration ],
@@ -70,13 +64,11 @@
70
64
  return new THREE.AnimationClip( null, duration, [ track ] );
71
65
 
72
66
  }
73
-
74
67
  static CreateMaterialColorAnimation( duration, colors ) {
75
68
 
76
69
  const times = [],
77
70
  values = [],
78
71
  timeStep = duration / colors.length;
79
-
80
72
  for ( let i = 0; i <= colors.length; i ++ ) {
81
73
 
82
74
  times.push( i * timeStep );
@@ -1,26 +1,17 @@
1
1
  ( function () {
2
2
 
3
3
  const _q = new THREE.Quaternion();
4
-
5
4
  const _targetPos = new THREE.Vector3();
6
-
7
5
  const _targetVec = new THREE.Vector3();
8
-
9
6
  const _effectorPos = new THREE.Vector3();
10
-
11
7
  const _effectorVec = new THREE.Vector3();
12
-
13
8
  const _linkPos = new THREE.Vector3();
14
-
15
9
  const _invLinkQ = new THREE.Quaternion();
16
-
17
10
  const _linkScale = new THREE.Vector3();
18
-
19
11
  const _axis = new THREE.Vector3();
20
-
21
12
  const _vector = new THREE.Vector3();
22
-
23
13
  const _matrix = new THREE.Matrix4();
14
+
24
15
  /**
25
16
  * CCD Algorithm
26
17
  * - https://sites.google.com/site/auraliusproject/ccd-algorithm
@@ -41,7 +32,6 @@
41
32
  * } ];
42
33
  */
43
34
 
44
-
45
35
  class CCDIKSolver {
46
36
 
47
37
  /**
@@ -52,21 +42,18 @@
52
42
 
53
43
  this.mesh = mesh;
54
44
  this.iks = iks;
55
-
56
45
  this._valid();
57
46
 
58
47
  }
48
+
59
49
  /**
60
50
  * Update all IK bones.
61
51
  *
62
52
  * @return {CCDIKSolver}
63
53
  */
64
-
65
-
66
54
  update() {
67
55
 
68
56
  const iks = this.iks;
69
-
70
57
  for ( let i = 0, il = iks.length; i < il; i ++ ) {
71
58
 
72
59
  this.updateOne( iks[ i ] );
@@ -76,64 +63,55 @@
76
63
  return this;
77
64
 
78
65
  }
66
+
79
67
  /**
80
68
  * Update one IK bone
81
69
  *
82
70
  * @param {Object} ik parameter
83
71
  * @return {CCDIKSolver}
84
72
  */
85
-
86
-
87
73
  updateOne( ik ) {
88
74
 
89
- const bones = this.mesh.skeleton.bones; // for reference overhead reduction in loop
75
+ const bones = this.mesh.skeleton.bones;
90
76
 
77
+ // for reference overhead reduction in loop
91
78
  const math = Math;
92
79
  const effector = bones[ ik.effector ];
93
- const target = bones[ ik.target ]; // don't use getWorldPosition() here for the performance
94
- // because it calls updateMatrixWorld( true ) inside.
80
+ const target = bones[ ik.target ];
95
81
 
82
+ // don't use getWorldPosition() here for the performance
83
+ // because it calls updateMatrixWorld( true ) inside.
96
84
  _targetPos.setFromMatrixPosition( target.matrixWorld );
97
-
98
85
  const links = ik.links;
99
86
  const iteration = ik.iteration !== undefined ? ik.iteration : 1;
100
-
101
87
  for ( let i = 0; i < iteration; i ++ ) {
102
88
 
103
89
  let rotated = false;
104
-
105
90
  for ( let j = 0, jl = links.length; j < jl; j ++ ) {
106
91
 
107
- const link = bones[ links[ j ].index ]; // skip this link and following links.
108
- // this skip is used for MMD performance optimization.
92
+ const link = bones[ links[ j ].index ];
109
93
 
94
+ // skip this link and following links.
95
+ // this skip is used for MMD performance optimization.
110
96
  if ( links[ j ].enabled === false ) break;
111
97
  const limitation = links[ j ].limitation;
112
98
  const rotationMin = links[ j ].rotationMin;
113
- const rotationMax = links[ j ].rotationMax; // don't use getWorldPosition/Quaternion() here for the performance
114
- // because they call updateMatrixWorld( true ) inside.
99
+ const rotationMax = links[ j ].rotationMax;
115
100
 
101
+ // don't use getWorldPosition/Quaternion() here for the performance
102
+ // because they call updateMatrixWorld( true ) inside.
116
103
  link.matrixWorld.decompose( _linkPos, _invLinkQ, _linkScale );
117
-
118
104
  _invLinkQ.invert();
105
+ _effectorPos.setFromMatrixPosition( effector.matrixWorld );
119
106
 
120
- _effectorPos.setFromMatrixPosition( effector.matrixWorld ); // work in link world
121
-
122
-
107
+ // work in link world
123
108
  _effectorVec.subVectors( _effectorPos, _linkPos );
124
-
125
109
  _effectorVec.applyQuaternion( _invLinkQ );
126
-
127
110
  _effectorVec.normalize();
128
-
129
111
  _targetVec.subVectors( _targetPos, _linkPos );
130
-
131
112
  _targetVec.applyQuaternion( _invLinkQ );
132
-
133
113
  _targetVec.normalize();
134
-
135
114
  let angle = _targetVec.dot( _effectorVec );
136
-
137
115
  if ( angle > 1.0 ) {
138
116
 
139
117
  angle = 1.0;
@@ -144,10 +122,10 @@
144
122
 
145
123
  }
146
124
 
147
- angle = math.acos( angle ); // skip if changing angle is too small to prevent vibration of bone
125
+ angle = math.acos( angle );
148
126
 
127
+ // skip if changing angle is too small to prevent vibration of bone
149
128
  if ( angle < 1e-5 ) continue;
150
-
151
129
  if ( ik.minAngle !== undefined && angle < ik.minAngle ) {
152
130
 
153
131
  angle = ik.minAngle;
@@ -161,13 +139,11 @@
161
139
  }
162
140
 
163
141
  _axis.crossVectors( _effectorVec, _targetVec );
164
-
165
142
  _axis.normalize();
166
-
167
143
  _q.setFromAxisAngle( _axis, angle );
144
+ link.quaternion.multiply( _q );
168
145
 
169
- link.quaternion.multiply( _q ); // TODO: re-consider the limitation specification
170
-
146
+ // TODO: re-consider the limitation specification
171
147
  if ( limitation !== undefined ) {
172
148
 
173
149
  let c = link.quaternion.w;
@@ -201,25 +177,24 @@
201
177
  return this;
202
178
 
203
179
  }
180
+
204
181
  /**
205
182
  * Creates Helper
206
183
  *
207
184
  * @return {CCDIKHelper}
208
185
  */
209
-
210
-
211
186
  createHelper() {
212
187
 
213
188
  return new CCDIKHelper( this.mesh, this.mesh.geometry.userData.MMD.iks );
214
189
 
215
- } // private methods
190
+ }
216
191
 
192
+ // private methods
217
193
 
218
194
  _valid() {
219
195
 
220
196
  const iks = this.iks;
221
197
  const bones = this.mesh.skeleton.bones;
222
-
223
198
  for ( let i = 0, il = iks.length; i < il; i ++ ) {
224
199
 
225
200
  const ik = iks[ i ];
@@ -227,11 +202,9 @@
227
202
  const links = ik.links;
228
203
  let link0, link1;
229
204
  link0 = effector;
230
-
231
205
  for ( let j = 0, jl = links.length; j < jl; j ++ ) {
232
206
 
233
207
  link1 = bones[ links[ j ].index ];
234
-
235
208
  if ( link0.parent !== link1 ) {
236
209
 
237
210
  console.warn( 'THREE.CCDIKSolver: bone ' + link0.name + ' is not the child of bone ' + link1.name );
@@ -247,7 +220,6 @@
247
220
  }
248
221
 
249
222
  }
250
-
251
223
  function getPosition( bone, matrixWorldInv ) {
252
224
 
253
225
  return _vector.setFromMatrixPosition( bone.matrixWorld ).applyMatrix4( matrixWorldInv );
@@ -262,24 +234,23 @@
262
234
  array[ index * 3 + 2 ] = v.z;
263
235
 
264
236
  }
237
+
265
238
  /**
266
239
  * Visualize IK bones
267
240
  *
268
241
  * @param {SkinnedMesh} mesh
269
242
  * @param {Array<Object>} iks
270
243
  */
271
-
272
-
273
244
  class CCDIKHelper extends THREE.Object3D {
274
245
 
275
- constructor( mesh, iks = [] ) {
246
+ constructor( mesh, iks = [], sphereSize = 0.25 ) {
276
247
 
277
248
  super();
278
249
  this.root = mesh;
279
250
  this.iks = iks;
280
251
  this.matrix.copy( mesh.matrixWorld );
281
252
  this.matrixAutoUpdate = false;
282
- this.sphereGeometry = new THREE.SphereGeometry( 0.25, 16, 8 );
253
+ this.sphereGeometry = new THREE.SphereGeometry( sphereSize, 16, 8 );
283
254
  this.targetSphereMaterial = new THREE.MeshBasicMaterial( {
284
255
  color: new THREE.Color( 0xff8888 ),
285
256
  depthTest: false,
@@ -304,27 +275,22 @@
304
275
  depthWrite: false,
305
276
  transparent: true
306
277
  } );
307
-
308
278
  this._init();
309
279
 
310
280
  }
281
+
311
282
  /**
312
283
  * Updates IK bones visualization.
313
284
  */
314
-
315
-
316
285
  updateMatrixWorld( force ) {
317
286
 
318
287
  const mesh = this.root;
319
-
320
288
  if ( this.visible ) {
321
289
 
322
290
  let offset = 0;
323
291
  const iks = this.iks;
324
292
  const bones = mesh.skeleton.bones;
325
-
326
293
  _matrix.copy( mesh.matrixWorld ).invert();
327
-
328
294
  for ( let i = 0, il = iks.length; i < il; i ++ ) {
329
295
 
330
296
  const ik = iks[ i ];
@@ -334,7 +300,6 @@
334
300
  const effectorMesh = this.children[ offset ++ ];
335
301
  targetMesh.position.copy( getPosition( targetBone, _matrix ) );
336
302
  effectorMesh.position.copy( getPosition( effectorBone, _matrix ) );
337
-
338
303
  for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
339
304
 
340
305
  const link = ik.links[ j ];
@@ -348,7 +313,6 @@
348
313
  const array = line.geometry.attributes.position.array;
349
314
  setPositionOfBoneToAttributeArray( array, 0, targetBone, _matrix );
350
315
  setPositionOfBoneToAttributeArray( array, 1, effectorBone, _matrix );
351
-
352
316
  for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
353
317
 
354
318
  const link = ik.links[ j ];
@@ -366,14 +330,34 @@
366
330
  this.matrix.copy( mesh.matrixWorld );
367
331
  super.updateMatrixWorld( force );
368
332
 
369
- } // private method
333
+ }
370
334
 
335
+ /**
336
+ * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
337
+ */
338
+ dispose() {
339
+
340
+ this.sphereGeometry.dispose();
341
+ this.targetSphereMaterial.dispose();
342
+ this.effectorSphereMaterial.dispose();
343
+ this.linkSphereMaterial.dispose();
344
+ this.lineMaterial.dispose();
345
+ const children = this.children;
346
+ for ( let i = 0; i < children.length; i ++ ) {
347
+
348
+ const child = children[ i ];
349
+ if ( child.isLine ) child.geometry.dispose();
350
+
351
+ }
352
+
353
+ }
354
+
355
+ // private method
371
356
 
372
357
  _init() {
373
358
 
374
359
  const scope = this;
375
360
  const iks = this.iks;
376
-
377
361
  function createLineGeometry( ik ) {
378
362
 
379
363
  const geometry = new THREE.BufferGeometry();
@@ -412,7 +396,6 @@
412
396
  const ik = iks[ i ];
413
397
  this.add( createTargetMesh() );
414
398
  this.add( createEffectorMesh() );
415
-
416
399
  for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
417
400
 
418
401
  this.add( createLinkMesh() );