@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
@@ -4,42 +4,59 @@
4
4
 
5
5
  constructor() {
6
6
 
7
- this.scale = 1; // animation parameters
7
+ this.scale = 1;
8
+
9
+ // animation parameters
8
10
 
9
11
  this.animationFPS = 6;
10
- this.transitionFrames = 15; // movement model parameters
12
+ this.transitionFrames = 15;
13
+
14
+ // movement model parameters
11
15
 
12
16
  this.maxSpeed = 275;
13
17
  this.maxReverseSpeed = - 275;
14
18
  this.frontAcceleration = 600;
15
19
  this.backAcceleration = 600;
16
20
  this.frontDecceleration = 600;
17
- this.angularSpeed = 2.5; // rig
21
+ this.angularSpeed = 2.5;
22
+
23
+ // rig
18
24
 
19
25
  this.root = new THREE.Object3D();
20
26
  this.meshBody = null;
21
27
  this.meshWeapon = null;
22
- this.controls = null; // skins
28
+ this.controls = null;
29
+
30
+ // skins
23
31
 
24
32
  this.skinsBody = [];
25
33
  this.skinsWeapon = [];
26
34
  this.weapons = [];
27
- this.currentSkin = undefined; //
35
+ this.currentSkin = undefined;
28
36
 
29
- this.onLoadComplete = function () {}; // internals
37
+ //
30
38
 
39
+ this.onLoadComplete = function () {};
40
+
41
+ // internals
31
42
 
32
43
  this.meshes = [];
33
44
  this.animations = {};
34
- this.loadCounter = 0; // internal movement control variables
45
+ this.loadCounter = 0;
46
+
47
+ // internal movement control variables
35
48
 
36
49
  this.speed = 0;
37
50
  this.bodyOrientation = 0;
38
51
  this.walkSpeed = this.maxSpeed;
39
- this.crouchSpeed = this.maxSpeed * 0.5; // internal animation parameters
52
+ this.crouchSpeed = this.maxSpeed * 0.5;
53
+
54
+ // internal animation parameters
40
55
 
41
56
  this.activeAnimation = null;
42
- this.oldAnimation = null; // API
57
+ this.oldAnimation = null;
58
+
59
+ // API
43
60
 
44
61
  }
45
62
 
@@ -53,7 +70,6 @@
53
70
  }
54
71
 
55
72
  }
56
-
57
73
  setVisible( enable ) {
58
74
 
59
75
  for ( let i = 0; i < this.meshes.length; i ++ ) {
@@ -64,27 +80,28 @@
64
80
  }
65
81
 
66
82
  }
67
-
68
83
  shareParts( original ) {
69
84
 
70
85
  this.animations = original.animations;
71
86
  this.walkSpeed = original.walkSpeed;
72
87
  this.crouchSpeed = original.crouchSpeed;
73
88
  this.skinsBody = original.skinsBody;
74
- this.skinsWeapon = original.skinsWeapon; // BODY
89
+ this.skinsWeapon = original.skinsWeapon;
75
90
 
76
- const mesh = this._createPart( original.meshBody.geometry, this.skinsBody[ 0 ] );
91
+ // BODY
77
92
 
93
+ const mesh = this._createPart( original.meshBody.geometry, this.skinsBody[ 0 ] );
78
94
  mesh.scale.set( this.scale, this.scale, this.scale );
79
95
  this.root.position.y = original.root.position.y;
80
96
  this.root.add( mesh );
81
97
  this.meshBody = mesh;
82
- this.meshes.push( mesh ); // WEAPONS
98
+ this.meshes.push( mesh );
99
+
100
+ // WEAPONS
83
101
 
84
102
  for ( let i = 0; i < original.weapons.length; i ++ ) {
85
103
 
86
104
  const meshWeapon = this._createPart( original.weapons[ i ].geometry, this.skinsWeapon[ i ] );
87
-
88
105
  meshWeapon.scale.set( this.scale, this.scale, this.scale );
89
106
  meshWeapon.visible = false;
90
107
  meshWeapon.name = original.weapons[ i ].name;
@@ -96,16 +113,13 @@
96
113
  }
97
114
 
98
115
  }
99
-
100
116
  loadParts( config ) {
101
117
 
102
118
  const scope = this;
103
-
104
119
  function loadTextures( baseUrl, textureUrls ) {
105
120
 
106
121
  const textureLoader = new THREE.TextureLoader();
107
122
  const textures = [];
108
-
109
123
  for ( let i = 0; i < textureUrls.length; i ++ ) {
110
124
 
111
125
  textures[ i ] = textureLoader.load( baseUrl + textureUrls[ i ], checkLoadingComplete );
@@ -131,12 +145,14 @@
131
145
  this.crouchSpeed = config.crouchSpeed;
132
146
  this.loadCounter = config.weapons.length * 2 + config.skins.length + 1;
133
147
  const weaponsTextures = [];
148
+ for ( let i = 0; i < config.weapons.length; i ++ ) weaponsTextures[ i ] = config.weapons[ i ][ 1 ];
134
149
 
135
- for ( let i = 0; i < config.weapons.length; i ++ ) weaponsTextures[ i ] = config.weapons[ i ][ 1 ]; // SKINS
136
-
150
+ // SKINS
137
151
 
138
152
  this.skinsBody = loadTextures( config.baseUrl + 'skins/', config.skins );
139
- this.skinsWeapon = loadTextures( config.baseUrl + 'skins/', weaponsTextures ); // BODY
153
+ this.skinsWeapon = loadTextures( config.baseUrl + 'skins/', weaponsTextures );
154
+
155
+ // BODY
140
156
 
141
157
  const loader = new THREE.MD2Loader();
142
158
  loader.load( config.baseUrl + config.body, function ( geo ) {
@@ -144,23 +160,22 @@
144
160
  const boundingBox = new THREE.Box3();
145
161
  boundingBox.setFromBufferAttribute( geo.attributes.position );
146
162
  scope.root.position.y = - scope.scale * boundingBox.min.y;
147
-
148
163
  const mesh = scope._createPart( geo, scope.skinsBody[ 0 ] );
149
-
150
164
  mesh.scale.set( scope.scale, scope.scale, scope.scale );
151
165
  scope.root.add( mesh );
152
166
  scope.meshBody = mesh;
153
167
  scope.meshes.push( mesh );
154
168
  checkLoadingComplete();
155
169
 
156
- } ); // WEAPONS
170
+ } );
171
+
172
+ // WEAPONS
157
173
 
158
174
  const generateCallback = function ( index, name ) {
159
175
 
160
176
  return function ( geo ) {
161
177
 
162
178
  const mesh = scope._createPart( geo, scope.skinsWeapon[ index ] );
163
-
164
179
  mesh.scale.set( scope.scale, scope.scale, scope.scale );
165
180
  mesh.visible = false;
166
181
  mesh.name = name;
@@ -181,14 +196,12 @@
181
196
  }
182
197
 
183
198
  }
184
-
185
199
  setPlaybackRate( rate ) {
186
200
 
187
201
  if ( this.meshBody ) this.meshBody.duration = this.meshBody.baseDuration / rate;
188
202
  if ( this.meshWeapon ) this.meshWeapon.duration = this.meshWeapon.baseDuration / rate;
189
203
 
190
204
  }
191
-
192
205
  setWireframe( wireframeEnabled ) {
193
206
 
194
207
  if ( wireframeEnabled ) {
@@ -204,7 +217,6 @@
204
217
  }
205
218
 
206
219
  }
207
-
208
220
  setSkin( index ) {
209
221
 
210
222
  if ( this.meshBody && this.meshBody.material.wireframe === false ) {
@@ -215,18 +227,14 @@
215
227
  }
216
228
 
217
229
  }
218
-
219
230
  setWeapon( index ) {
220
231
 
221
232
  for ( let i = 0; i < this.weapons.length; i ++ ) this.weapons[ i ].visible = false;
222
-
223
233
  const activeWeapon = this.weapons[ index ];
224
-
225
234
  if ( activeWeapon ) {
226
235
 
227
236
  activeWeapon.visible = true;
228
237
  this.meshWeapon = activeWeapon;
229
-
230
238
  if ( this.activeAnimation ) {
231
239
 
232
240
  activeWeapon.playAnimation( this.activeAnimation );
@@ -237,11 +245,9 @@
237
245
  }
238
246
 
239
247
  }
240
-
241
248
  setAnimation( animationName ) {
242
249
 
243
250
  if ( animationName === this.activeAnimation || ! animationName ) return;
244
-
245
251
  if ( this.meshBody ) {
246
252
 
247
253
  this.meshBody.setAnimationWeight( animationName, 0 );
@@ -260,11 +266,9 @@
260
266
  }
261
267
 
262
268
  }
263
-
264
269
  update( delta ) {
265
270
 
266
271
  if ( this.controls ) this.updateMovementModel( delta );
267
-
268
272
  if ( this.animations ) {
269
273
 
270
274
  this.updateBehaviors();
@@ -273,11 +277,9 @@
273
277
  }
274
278
 
275
279
  }
276
-
277
280
  updateAnimations( delta ) {
278
281
 
279
282
  let mix = 1;
280
-
281
283
  if ( this.blendCounter > 0 ) {
282
284
 
283
285
  mix = ( this.transitionFrames - this.blendCounter ) / this.transitionFrames;
@@ -302,12 +304,13 @@
302
304
  }
303
305
 
304
306
  }
305
-
306
307
  updateBehaviors() {
307
308
 
308
309
  const controls = this.controls;
309
310
  const animations = this.animations;
310
- let moveAnimation, idleAnimation; // crouch vs stand
311
+ let moveAnimation, idleAnimation;
312
+
313
+ // crouch vs stand
311
314
 
312
315
  if ( controls.crouch ) {
313
316
 
@@ -319,8 +322,9 @@
319
322
  moveAnimation = animations[ 'move' ];
320
323
  idleAnimation = animations[ 'idle' ];
321
324
 
322
- } // actions
325
+ }
323
326
 
327
+ // actions
324
328
 
325
329
  if ( controls.jump ) {
326
330
 
@@ -343,8 +347,9 @@
343
347
 
344
348
  }
345
349
 
346
- } // set animations
350
+ }
347
351
 
352
+ // set animations
348
353
 
349
354
  if ( controls.moveForward || controls.moveBackward || controls.moveLeft || controls.moveRight ) {
350
355
 
@@ -364,8 +369,9 @@
364
369
 
365
370
  }
366
371
 
367
- } // set animation direction
372
+ }
368
373
 
374
+ // set animation direction
369
375
 
370
376
  if ( controls.moveForward ) {
371
377
 
@@ -404,7 +410,6 @@
404
410
  }
405
411
 
406
412
  }
407
-
408
413
  updateMovementModel( delta ) {
409
414
 
410
415
  function exponentialEaseOut( k ) {
@@ -413,16 +418,19 @@
413
418
 
414
419
  }
415
420
 
416
- const controls = this.controls; // speed based on controls
421
+ const controls = this.controls;
422
+
423
+ // speed based on controls
417
424
 
418
425
  if ( controls.crouch ) this.maxSpeed = this.crouchSpeed; else this.maxSpeed = this.walkSpeed;
419
426
  this.maxReverseSpeed = - this.maxSpeed;
420
427
  if ( controls.moveForward ) this.speed = THREE.MathUtils.clamp( this.speed + delta * this.frontAcceleration, this.maxReverseSpeed, this.maxSpeed );
421
- if ( controls.moveBackward ) this.speed = THREE.MathUtils.clamp( this.speed - delta * this.backAcceleration, this.maxReverseSpeed, this.maxSpeed ); // orientation based on controls
428
+ if ( controls.moveBackward ) this.speed = THREE.MathUtils.clamp( this.speed - delta * this.backAcceleration, this.maxReverseSpeed, this.maxSpeed );
429
+
430
+ // orientation based on controls
422
431
  // (don't just stand while turning)
423
432
 
424
433
  const dir = 1;
425
-
426
434
  if ( controls.moveLeft ) {
427
435
 
428
436
  this.bodyOrientation += delta * this.angularSpeed;
@@ -435,8 +443,9 @@
435
443
  this.bodyOrientation -= delta * this.angularSpeed;
436
444
  this.speed = THREE.MathUtils.clamp( this.speed + dir * delta * this.frontAcceleration, this.maxReverseSpeed, this.maxSpeed );
437
445
 
438
- } // speed decay
446
+ }
439
447
 
448
+ // speed decay
440
449
 
441
450
  if ( ! ( controls.moveForward || controls.moveBackward ) ) {
442
451
 
@@ -452,17 +461,21 @@
452
461
 
453
462
  }
454
463
 
455
- } // displacement
464
+ }
456
465
 
466
+ // displacement
457
467
 
458
468
  const forwardDelta = this.speed * delta;
459
469
  this.root.position.x += Math.sin( this.bodyOrientation ) * forwardDelta;
460
- this.root.position.z += Math.cos( this.bodyOrientation ) * forwardDelta; // steering
470
+ this.root.position.z += Math.cos( this.bodyOrientation ) * forwardDelta;
471
+
472
+ // steering
461
473
 
462
474
  this.root.rotation.y = this.bodyOrientation;
463
475
 
464
- } // internal
476
+ }
465
477
 
478
+ // internal
466
479
 
467
480
  _createPart( geometry, skinMap ) {
468
481
 
@@ -474,13 +487,19 @@
474
487
  color: 0xffffff,
475
488
  wireframe: false,
476
489
  map: skinMap
477
- } ); //
490
+ } );
491
+
492
+ //
478
493
 
479
494
  const mesh = new THREE.MorphBlendMesh( geometry, materialTexture );
480
- mesh.rotation.y = - Math.PI / 2; //
495
+ mesh.rotation.y = - Math.PI / 2;
496
+
497
+ //
481
498
 
482
499
  mesh.materialTexture = materialTexture;
483
- mesh.materialWireframe = materialWireframe; //
500
+ mesh.materialWireframe = materialWireframe;
501
+
502
+ //
484
503
 
485
504
  mesh.autoCreateAnimations( this.animationFPS );
486
505
  return mesh;
@@ -10,19 +10,16 @@
10
10
  this.activeAction = null;
11
11
 
12
12
  }
13
-
14
13
  setDirectionForward() {
15
14
 
16
15
  this.mixer.timeScale = 1.0;
17
16
 
18
17
  }
19
-
20
18
  setDirectionBackward() {
21
19
 
22
20
  this.mixer.timeScale = - 1.0;
23
21
 
24
22
  }
25
-
26
23
  playAnimation( label, fps ) {
27
24
 
28
25
  if ( this.activeAction ) {
@@ -33,7 +30,6 @@
33
30
  }
34
31
 
35
32
  const clip = THREE.AnimationClip.findByName( this, label );
36
-
37
33
  if ( clip ) {
38
34
 
39
35
  const action = this.mixer.clipAction( clip );
@@ -47,13 +43,11 @@
47
43
  }
48
44
 
49
45
  }
50
-
51
46
  updateAnimation( delta ) {
52
47
 
53
48
  this.mixer.update( delta );
54
49
 
55
50
  }
56
-
57
51
  copy( source, recursive ) {
58
52
 
59
53
  super.copy( source, recursive );
@@ -6,7 +6,9 @@
6
6
 
7
7
  super( geometry, material );
8
8
  this.animationsMap = {};
9
- this.animationsList = []; // prepare default animation
9
+ this.animationsList = [];
10
+
11
+ // prepare default animation
10
12
  // (all frames played together in 1 second)
11
13
 
12
14
  const numFrames = Object.keys( this.morphTargetDictionary ).length;
@@ -18,7 +20,6 @@
18
20
  this.setAnimationWeight( name, 1 );
19
21
 
20
22
  }
21
-
22
23
  createAnimation( name, start, end, fps ) {
23
24
 
24
25
  const animation = {
@@ -40,18 +41,15 @@
40
41
  this.animationsList.push( animation );
41
42
 
42
43
  }
43
-
44
44
  autoCreateAnimations( fps ) {
45
45
 
46
46
  const pattern = /([a-z]+)_?(\d+)/i;
47
47
  let firstAnimation;
48
48
  const frameRanges = {};
49
49
  let i = 0;
50
-
51
50
  for ( const key in this.morphTargetDictionary ) {
52
51
 
53
52
  const chunks = key.match( pattern );
54
-
55
53
  if ( chunks && chunks.length > 1 ) {
56
54
 
57
55
  const name = chunks[ 1 ];
@@ -80,11 +78,9 @@
80
78
  this.firstAnimation = firstAnimation;
81
79
 
82
80
  }
83
-
84
81
  setAnimationDirectionForward( name ) {
85
82
 
86
83
  const animation = this.animationsMap[ name ];
87
-
88
84
  if ( animation ) {
89
85
 
90
86
  animation.direction = 1;
@@ -93,11 +89,9 @@
93
89
  }
94
90
 
95
91
  }
96
-
97
92
  setAnimationDirectionBackward( name ) {
98
93
 
99
94
  const animation = this.animationsMap[ name ];
100
-
101
95
  if ( animation ) {
102
96
 
103
97
  animation.direction = - 1;
@@ -106,11 +100,9 @@
106
100
  }
107
101
 
108
102
  }
109
-
110
103
  setAnimationFPS( name, fps ) {
111
104
 
112
105
  const animation = this.animationsMap[ name ];
113
-
114
106
  if ( animation ) {
115
107
 
116
108
  animation.fps = fps;
@@ -119,11 +111,9 @@
119
111
  }
120
112
 
121
113
  }
122
-
123
114
  setAnimationDuration( name, duration ) {
124
115
 
125
116
  const animation = this.animationsMap[ name ];
126
-
127
117
  if ( animation ) {
128
118
 
129
119
  animation.duration = duration;
@@ -132,11 +122,9 @@
132
122
  }
133
123
 
134
124
  }
135
-
136
125
  setAnimationWeight( name, weight ) {
137
126
 
138
127
  const animation = this.animationsMap[ name ];
139
-
140
128
  if ( animation ) {
141
129
 
142
130
  animation.weight = weight;
@@ -144,11 +132,9 @@
144
132
  }
145
133
 
146
134
  }
147
-
148
135
  setAnimationTime( name, time ) {
149
136
 
150
137
  const animation = this.animationsMap[ name ];
151
-
152
138
  if ( animation ) {
153
139
 
154
140
  animation.time = time;
@@ -156,12 +142,10 @@
156
142
  }
157
143
 
158
144
  }
159
-
160
145
  getAnimationTime( name ) {
161
146
 
162
147
  let time = 0;
163
148
  const animation = this.animationsMap[ name ];
164
-
165
149
  if ( animation ) {
166
150
 
167
151
  time = animation.time;
@@ -171,12 +155,10 @@
171
155
  return time;
172
156
 
173
157
  }
174
-
175
158
  getAnimationDuration( name ) {
176
159
 
177
160
  let duration = - 1;
178
161
  const animation = this.animationsMap[ name ];
179
-
180
162
  if ( animation ) {
181
163
 
182
164
  duration = animation.duration;
@@ -186,11 +168,9 @@
186
168
  return duration;
187
169
 
188
170
  }
189
-
190
171
  playAnimation( name ) {
191
172
 
192
173
  const animation = this.animationsMap[ name ];
193
-
194
174
  if ( animation ) {
195
175
 
196
176
  animation.time = 0;
@@ -203,11 +183,9 @@
203
183
  }
204
184
 
205
185
  }
206
-
207
186
  stopAnimation( name ) {
208
187
 
209
188
  const animation = this.animationsMap[ name ];
210
-
211
189
  if ( animation ) {
212
190
 
213
191
  animation.active = false;
@@ -215,7 +193,6 @@
215
193
  }
216
194
 
217
195
  }
218
-
219
196
  update( delta ) {
220
197
 
221
198
  for ( let i = 0, il = this.animationsList.length; i < il; i ++ ) {
@@ -224,13 +201,11 @@
224
201
  if ( ! animation.active ) continue;
225
202
  const frameTime = animation.duration / animation.length;
226
203
  animation.time += animation.direction * delta;
227
-
228
204
  if ( animation.mirroredLoop ) {
229
205
 
230
206
  if ( animation.time > animation.duration || animation.time < 0 ) {
231
207
 
232
208
  animation.direction *= - 1;
233
-
234
209
  if ( animation.time > animation.duration ) {
235
210
 
236
211
  animation.time = animation.duration;
@@ -256,7 +231,6 @@
256
231
 
257
232
  const keyframe = animation.start + THREE.MathUtils.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );
258
233
  const weight = animation.weight;
259
-
260
234
  if ( keyframe !== animation.currentFrame ) {
261
235
 
262
236
  this.morphTargetInfluences[ animation.lastFrame ] = 0;
@@ -269,7 +243,6 @@
269
243
 
270
244
  let mix = animation.time % frameTime / frameTime;
271
245
  if ( animation.directionBackwards ) mix = 1 - mix;
272
-
273
246
  if ( animation.currentFrame !== animation.lastFrame ) {
274
247
 
275
248
  this.morphTargetInfluences[ animation.currentFrame ] = mix * weight;