@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
@@ -9,7 +9,6 @@
9
9
  const _endEvent = {
10
10
  type: 'end'
11
11
  };
12
-
13
12
  class TrackballControls extends THREE.EventDispatcher {
14
13
 
15
14
  constructor( object, domElement ) {
@@ -27,6 +26,7 @@
27
26
  this.object = object;
28
27
  this.domElement = domElement;
29
28
  this.domElement.style.touchAction = 'none'; // disable touch scroll
29
+
30
30
  // API
31
31
 
32
32
  this.enabled = true;
@@ -46,18 +46,15 @@
46
46
  this.dynamicDampingFactor = 0.2;
47
47
  this.minDistance = 0;
48
48
  this.maxDistance = Infinity;
49
- this.keys = [ 'KeyA',
50
- /*A*/
51
- 'KeyS',
52
- /*S*/
53
- 'KeyD'
54
- /*D*/
55
- ];
49
+ this.keys = [ 'KeyA' /*A*/, 'KeyS' /*S*/, 'KeyD' /*D*/];
50
+
56
51
  this.mouseButtons = {
57
52
  LEFT: THREE.MOUSE.ROTATE,
58
53
  MIDDLE: THREE.MOUSE.DOLLY,
59
54
  RIGHT: THREE.MOUSE.PAN
60
- }; // internals
55
+ };
56
+
57
+ // internals
61
58
 
62
59
  this.target = new THREE.Vector3();
63
60
  const EPS = 0.000001;
@@ -68,7 +65,6 @@
68
65
  _touchZoomDistanceStart = 0,
69
66
  _touchZoomDistanceEnd = 0,
70
67
  _lastAngle = 0;
71
-
72
68
  const _eye = new THREE.Vector3(),
73
69
  _movePrev = new THREE.Vector2(),
74
70
  _moveCurr = new THREE.Vector2(),
@@ -78,18 +74,21 @@
78
74
  _panStart = new THREE.Vector2(),
79
75
  _panEnd = new THREE.Vector2(),
80
76
  _pointers = [],
81
- _pointerPositions = {}; // for reset
77
+ _pointerPositions = {};
82
78
 
79
+ // for reset
83
80
 
84
81
  this.target0 = this.target.clone();
85
82
  this.position0 = this.object.position.clone();
86
83
  this.up0 = this.object.up.clone();
87
- this.zoom0 = this.object.zoom; // methods
84
+ this.zoom0 = this.object.zoom;
88
85
 
89
- this.handleResize = function () {
86
+ // methods
90
87
 
91
- const box = scope.domElement.getBoundingClientRect(); // adjustments come from similar code in the jquery offset() function
88
+ this.handleResize = function () {
92
89
 
90
+ const box = scope.domElement.getBoundingClientRect();
91
+ // adjustments come from similar code in the jquery offset() function
93
92
  const d = scope.domElement.ownerDocument.documentElement;
94
93
  scope.screen.left = box.left + window.pageXOffset - d.clientLeft;
95
94
  scope.screen.top = box.top + window.pageYOffset - d.clientTop;
@@ -109,7 +108,6 @@
109
108
  };
110
109
 
111
110
  }();
112
-
113
111
  const getMouseOnCircle = function () {
114
112
 
115
113
  const vector = new THREE.Vector2();
@@ -117,12 +115,12 @@
117
115
 
118
116
  vector.set( ( pageX - scope.screen.width * 0.5 - scope.screen.left ) / ( scope.screen.width * 0.5 ), ( scope.screen.height + 2 * ( scope.screen.top - pageY ) ) / scope.screen.width // screen.width intentional
119
117
  );
118
+
120
119
  return vector;
121
120
 
122
121
  };
123
122
 
124
123
  }();
125
-
126
124
  this.rotateCamera = function () {
127
125
 
128
126
  const axis = new THREE.Vector3(),
@@ -135,11 +133,9 @@
135
133
 
136
134
  moveDirection.set( _moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0 );
137
135
  let angle = moveDirection.length();
138
-
139
136
  if ( angle ) {
140
137
 
141
138
  _eye.copy( scope.object.position ).sub( scope.target );
142
-
143
139
  eyeDirection.copy( _eye ).normalize();
144
140
  objectUpDirection.copy( scope.object.up ).normalize();
145
141
  objectSidewaysDirection.crossVectors( objectUpDirection, eyeDirection ).normalize();
@@ -149,25 +145,17 @@
149
145
  axis.crossVectors( moveDirection, _eye ).normalize();
150
146
  angle *= scope.rotateSpeed;
151
147
  quaternion.setFromAxisAngle( axis, angle );
152
-
153
148
  _eye.applyQuaternion( quaternion );
154
-
155
149
  scope.object.up.applyQuaternion( quaternion );
156
-
157
150
  _lastAxis.copy( axis );
158
-
159
151
  _lastAngle = angle;
160
152
 
161
153
  } else if ( ! scope.staticMoving && _lastAngle ) {
162
154
 
163
155
  _lastAngle *= Math.sqrt( 1.0 - scope.dynamicDampingFactor );
164
-
165
156
  _eye.copy( scope.object.position ).sub( scope.target );
166
-
167
157
  quaternion.setFromAxisAngle( _lastAxis, _lastAngle );
168
-
169
158
  _eye.applyQuaternion( quaternion );
170
-
171
159
  scope.object.up.applyQuaternion( quaternion );
172
160
 
173
161
  }
@@ -177,16 +165,13 @@
177
165
  };
178
166
 
179
167
  }();
180
-
181
168
  this.zoomCamera = function () {
182
169
 
183
170
  let factor;
184
-
185
171
  if ( _state === STATE.TOUCH_ZOOM_PAN ) {
186
172
 
187
173
  factor = _touchZoomDistanceStart / _touchZoomDistanceEnd;
188
174
  _touchZoomDistanceStart = _touchZoomDistanceEnd;
189
-
190
175
  if ( scope.object.isPerspectiveCamera ) {
191
176
 
192
177
  _eye.multiplyScalar( factor );
@@ -205,7 +190,6 @@
205
190
  } else {
206
191
 
207
192
  factor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * scope.zoomSpeed;
208
-
209
193
  if ( factor !== 1.0 && factor > 0.0 ) {
210
194
 
211
195
  if ( scope.object.isPerspectiveCamera ) {
@@ -247,7 +231,6 @@
247
231
  return function panCamera() {
248
232
 
249
233
  mouseChange.copy( _panEnd ).sub( _panStart );
250
-
251
234
  if ( mouseChange.lengthSq() ) {
252
235
 
253
236
  if ( scope.object.isOrthographicCamera ) {
@@ -264,7 +247,6 @@
264
247
  pan.add( objectUp.copy( scope.object.up ).setLength( mouseChange.y ) );
265
248
  scope.object.position.add( pan );
266
249
  scope.target.add( pan );
267
-
268
250
  if ( scope.staticMoving ) {
269
251
 
270
252
  _panStart.copy( _panEnd );
@@ -280,7 +262,6 @@
280
262
  };
281
263
 
282
264
  }();
283
-
284
265
  this.checkDistances = function () {
285
266
 
286
267
  if ( ! scope.noZoom || ! scope.noPan ) {
@@ -288,7 +269,6 @@
288
269
  if ( _eye.lengthSq() > scope.maxDistance * scope.maxDistance ) {
289
270
 
290
271
  scope.object.position.addVectors( scope.target, _eye.setLength( scope.maxDistance ) );
291
-
292
272
  _zoomStart.copy( _zoomEnd );
293
273
 
294
274
  }
@@ -296,7 +276,6 @@
296
276
  if ( _eye.lengthSq() < scope.minDistance * scope.minDistance ) {
297
277
 
298
278
  scope.object.position.addVectors( scope.target, _eye.setLength( scope.minDistance ) );
299
-
300
279
  _zoomStart.copy( _zoomEnd );
301
280
 
302
281
  }
@@ -308,7 +287,6 @@
308
287
  this.update = function () {
309
288
 
310
289
  _eye.subVectors( scope.object.position, scope.target );
311
-
312
290
  if ( ! scope.noRotate ) {
313
291
 
314
292
  scope.rotateCamera();
@@ -328,12 +306,10 @@
328
306
  }
329
307
 
330
308
  scope.object.position.addVectors( scope.target, _eye );
331
-
332
309
  if ( scope.object.isPerspectiveCamera ) {
333
310
 
334
311
  scope.checkDistances();
335
312
  scope.object.lookAt( scope.target );
336
-
337
313
  if ( lastPosition.distanceToSquared( scope.object.position ) > EPS ) {
338
314
 
339
315
  scope.dispatchEvent( _changeEvent );
@@ -344,7 +320,6 @@
344
320
  } else if ( scope.object.isOrthographicCamera ) {
345
321
 
346
322
  scope.object.lookAt( scope.target );
347
-
348
323
  if ( lastPosition.distanceToSquared( scope.object.position ) > EPS || lastZoom !== scope.object.zoom ) {
349
324
 
350
325
  scope.dispatchEvent( _changeEvent );
@@ -370,32 +345,30 @@
370
345
  scope.object.up.copy( scope.up0 );
371
346
  scope.object.zoom = scope.zoom0;
372
347
  scope.object.updateProjectionMatrix();
373
-
374
348
  _eye.subVectors( scope.object.position, scope.target );
375
-
376
349
  scope.object.lookAt( scope.target );
377
350
  scope.dispatchEvent( _changeEvent );
378
351
  lastPosition.copy( scope.object.position );
379
352
  lastZoom = scope.object.zoom;
380
353
 
381
- }; // listeners
354
+ };
382
355
 
356
+ // listeners
383
357
 
384
358
  function onPointerDown( event ) {
385
359
 
386
360
  if ( scope.enabled === false ) return;
387
-
388
361
  if ( _pointers.length === 0 ) {
389
362
 
390
363
  scope.domElement.setPointerCapture( event.pointerId );
391
364
  scope.domElement.addEventListener( 'pointermove', onPointerMove );
392
365
  scope.domElement.addEventListener( 'pointerup', onPointerUp );
393
366
 
394
- } //
367
+ }
395
368
 
369
+ //
396
370
 
397
371
  addPointer( event );
398
-
399
372
  if ( event.pointerType === 'touch' ) {
400
373
 
401
374
  onTouchStart( event );
@@ -411,7 +384,6 @@
411
384
  function onPointerMove( event ) {
412
385
 
413
386
  if ( scope.enabled === false ) return;
414
-
415
387
  if ( event.pointerType === 'touch' ) {
416
388
 
417
389
  onTouchMove( event );
@@ -427,7 +399,6 @@
427
399
  function onPointerUp( event ) {
428
400
 
429
401
  if ( scope.enabled === false ) return;
430
-
431
402
  if ( event.pointerType === 'touch' ) {
432
403
 
433
404
  onTouchEnd( event );
@@ -436,11 +407,11 @@
436
407
 
437
408
  onMouseUp();
438
409
 
439
- } //
410
+ }
440
411
 
412
+ //
441
413
 
442
414
  removePointer( event );
443
-
444
415
  if ( _pointers.length === 0 ) {
445
416
 
446
417
  scope.domElement.releasePointerCapture( event.pointerId );
@@ -461,7 +432,6 @@
461
432
 
462
433
  if ( scope.enabled === false ) return;
463
434
  window.removeEventListener( 'keydown', keydown );
464
-
465
435
  if ( _keyState !== STATE.NONE ) {
466
436
 
467
437
  return;
@@ -499,11 +469,9 @@
499
469
  case scope.mouseButtons.LEFT:
500
470
  _state = STATE.ROTATE;
501
471
  break;
502
-
503
472
  case scope.mouseButtons.MIDDLE:
504
473
  _state = STATE.ZOOM;
505
474
  break;
506
-
507
475
  case scope.mouseButtons.RIGHT:
508
476
  _state = STATE.PAN;
509
477
  break;
@@ -513,23 +481,19 @@
513
481
  }
514
482
 
515
483
  const state = _keyState !== STATE.NONE ? _keyState : _state;
516
-
517
484
  if ( state === STATE.ROTATE && ! scope.noRotate ) {
518
485
 
519
486
  _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );
520
-
521
487
  _movePrev.copy( _moveCurr );
522
488
 
523
489
  } else if ( state === STATE.ZOOM && ! scope.noZoom ) {
524
490
 
525
491
  _zoomStart.copy( getMouseOnScreen( event.pageX, event.pageY ) );
526
-
527
492
  _zoomEnd.copy( _zoomStart );
528
493
 
529
494
  } else if ( state === STATE.PAN && ! scope.noPan ) {
530
495
 
531
496
  _panStart.copy( getMouseOnScreen( event.pageX, event.pageY ) );
532
-
533
497
  _panEnd.copy( _panStart );
534
498
 
535
499
  }
@@ -541,11 +505,9 @@
541
505
  function onMouseMove( event ) {
542
506
 
543
507
  const state = _keyState !== STATE.NONE ? _keyState : _state;
544
-
545
508
  if ( state === STATE.ROTATE && ! scope.noRotate ) {
546
509
 
547
510
  _movePrev.copy( _moveCurr );
548
-
549
511
  _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );
550
512
 
551
513
  } else if ( state === STATE.ZOOM && ! scope.noZoom ) {
@@ -572,19 +534,16 @@
572
534
  if ( scope.enabled === false ) return;
573
535
  if ( scope.noZoom === true ) return;
574
536
  event.preventDefault();
575
-
576
537
  switch ( event.deltaMode ) {
577
538
 
578
539
  case 2:
579
540
  // Zoom in pages
580
541
  _zoomStart.y -= event.deltaY * 0.025;
581
542
  break;
582
-
583
543
  case 1:
584
544
  // Zoom in lines
585
545
  _zoomStart.y -= event.deltaY * 0.01;
586
546
  break;
587
-
588
547
  default:
589
548
  // undefined, 0, assume pixels
590
549
  _zoomStart.y -= event.deltaY * 0.00025;
@@ -600,18 +559,13 @@
600
559
  function onTouchStart( event ) {
601
560
 
602
561
  trackPointer( event );
603
-
604
562
  switch ( _pointers.length ) {
605
563
 
606
564
  case 1:
607
565
  _state = STATE.TOUCH_ROTATE;
608
-
609
566
  _moveCurr.copy( getMouseOnCircle( _pointers[ 0 ].pageX, _pointers[ 0 ].pageY ) );
610
-
611
567
  _movePrev.copy( _moveCurr );
612
-
613
568
  break;
614
-
615
569
  default:
616
570
  // 2 or more
617
571
  _state = STATE.TOUCH_ZOOM_PAN;
@@ -620,11 +574,8 @@
620
574
  _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy );
621
575
  const x = ( _pointers[ 0 ].pageX + _pointers[ 1 ].pageX ) / 2;
622
576
  const y = ( _pointers[ 0 ].pageY + _pointers[ 1 ].pageY ) / 2;
623
-
624
577
  _panStart.copy( getMouseOnScreen( x, y ) );
625
-
626
578
  _panEnd.copy( _panStart );
627
-
628
579
  break;
629
580
 
630
581
  }
@@ -636,27 +587,22 @@
636
587
  function onTouchMove( event ) {
637
588
 
638
589
  trackPointer( event );
639
-
640
590
  switch ( _pointers.length ) {
641
591
 
642
592
  case 1:
643
593
  _movePrev.copy( _moveCurr );
644
-
645
594
  _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );
646
-
647
595
  break;
648
-
649
596
  default:
650
597
  // 2 or more
598
+
651
599
  const position = getSecondPointerPosition( event );
652
600
  const dx = event.pageX - position.x;
653
601
  const dy = event.pageY - position.y;
654
602
  _touchZoomDistanceEnd = Math.sqrt( dx * dx + dy * dy );
655
603
  const x = ( event.pageX + position.x ) / 2;
656
604
  const y = ( event.pageY + position.y ) / 2;
657
-
658
605
  _panEnd.copy( getMouseOnScreen( x, y ) );
659
-
660
606
  break;
661
607
 
662
608
  }
@@ -670,22 +616,25 @@
670
616
  case 0:
671
617
  _state = STATE.NONE;
672
618
  break;
673
-
674
619
  case 1:
675
620
  _state = STATE.TOUCH_ROTATE;
676
-
677
621
  _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );
678
-
679
622
  _movePrev.copy( _moveCurr );
680
-
681
623
  break;
682
-
683
624
  case 2:
684
625
  _state = STATE.TOUCH_ZOOM_PAN;
626
+ for ( let i = 0; i < _pointers.length; i ++ ) {
685
627
 
686
- _moveCurr.copy( getMouseOnCircle( event.pageX - _movePrev.x, event.pageY - _movePrev.y ) );
628
+ if ( _pointers[ i ].pointerId !== event.pointerId ) {
687
629
 
688
- _movePrev.copy( _moveCurr );
630
+ const position = _pointerPositions[ _pointers[ i ].pointerId ];
631
+ _moveCurr.copy( getMouseOnCircle( position.x, position.y ) );
632
+ _movePrev.copy( _moveCurr );
633
+ break;
634
+
635
+ }
636
+
637
+ }
689
638
 
690
639
  break;
691
640
 
@@ -711,13 +660,11 @@
711
660
  function removePointer( event ) {
712
661
 
713
662
  delete _pointerPositions[ event.pointerId ];
714
-
715
663
  for ( let i = 0; i < _pointers.length; i ++ ) {
716
664
 
717
665
  if ( _pointers[ i ].pointerId == event.pointerId ) {
718
666
 
719
667
  _pointers.splice( i, 1 );
720
-
721
668
  return;
722
669
 
723
670
  }
@@ -729,7 +676,6 @@
729
676
  function trackPointer( event ) {
730
677
 
731
678
  let position = _pointerPositions[ event.pointerId ];
732
-
733
679
  if ( position === undefined ) {
734
680
 
735
681
  position = new THREE.Vector2();
@@ -769,8 +715,9 @@
769
715
  } );
770
716
  window.addEventListener( 'keydown', keydown );
771
717
  window.addEventListener( 'keyup', keyup );
772
- this.handleResize(); // force an update at start
718
+ this.handleResize();
773
719
 
720
+ // force an update at start
774
721
  this.update();
775
722
 
776
723
  }