super-three 0.141.0 → 0.147.0

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 (646) hide show
  1. package/README.md +9 -9
  2. package/build/three.cjs +2441 -1569
  3. package/build/three.js +2441 -1569
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2847 -1576
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +71 -150
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +149 -403
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -61
  14. package/examples/js/controls/FlyControls.js +29 -63
  15. package/examples/js/controls/OrbitControls.js +125 -103
  16. package/examples/js/controls/PointerLockControls.js +5 -22
  17. package/examples/js/controls/TrackballControls.js +33 -88
  18. package/examples/js/controls/TransformControls.js +101 -182
  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 +6 -20
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +30 -54
  30. package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
  31. package/examples/js/effects/PeppersGhostEffect.js +14 -41
  32. package/examples/js/effects/StereoEffect.js +2 -6
  33. package/examples/js/environments/RoomEnvironment.js +32 -8
  34. package/examples/js/exporters/ColladaExporter.js +52 -78
  35. package/examples/js/exporters/DRACOExporter.js +22 -34
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +168 -345
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +40 -52
  40. package/examples/js/exporters/PLYExporter.js +50 -57
  41. package/examples/js/exporters/STLExporter.js +5 -14
  42. package/examples/js/exporters/USDZExporter.js +119 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +12 -7
  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 +23 -17
  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 +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +2 -8
  63. package/examples/js/libs/ktx-parse.umd.js +1 -0
  64. package/examples/js/libs/meshopt_decoder.js +98 -32
  65. package/examples/js/lights/LightProbeGenerator.js +32 -39
  66. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  67. package/examples/js/lines/LineGeometry.js +3 -5
  68. package/examples/js/lines/LineMaterial.js +4 -11
  69. package/examples/js/lines/LineSegments2.js +40 -89
  70. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  71. package/examples/js/lines/Wireframe.js +2 -7
  72. package/examples/js/lines/WireframeGeometry2.js +3 -1
  73. package/examples/js/loaders/3DMLoader.js +58 -155
  74. package/examples/js/loaders/3MFLoader.js +72 -106
  75. package/examples/js/loaders/AMFLoader.js +0 -25
  76. package/examples/js/loaders/BVHLoader.js +44 -43
  77. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  78. package/examples/js/loaders/ColladaLoader.js +229 -359
  79. package/examples/js/loaders/DDSLoader.js +24 -25
  80. package/examples/js/loaders/DRACOLoader.js +30 -90
  81. package/examples/js/loaders/EXRLoader.js +69 -177
  82. package/examples/js/loaders/FBXLoader.js +294 -441
  83. package/examples/js/loaders/FontLoader.js +9 -31
  84. package/examples/js/loaders/GCodeLoader.js +15 -16
  85. package/examples/js/loaders/GLTFLoader.js +458 -739
  86. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
  87. package/examples/js/loaders/KMZLoader.js +3 -7
  88. package/examples/js/loaders/KTXLoader.js +12 -30
  89. package/examples/js/loaders/LDrawLoader.js +309 -355
  90. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  91. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  92. package/examples/js/loaders/LWOLoader.js +59 -124
  93. package/examples/js/loaders/LogLuvLoader.js +27 -77
  94. package/examples/js/loaders/LottieLoader.js +4 -4
  95. package/examples/js/loaders/MD2Loader.js +26 -27
  96. package/examples/js/loaders/MDDLoader.js +6 -10
  97. package/examples/js/loaders/MMDLoader.js +180 -189
  98. package/examples/js/loaders/MTLLoader.js +18 -47
  99. package/examples/js/loaders/NRRDLoader.js +44 -84
  100. package/examples/js/loaders/OBJLoader.js +56 -77
  101. package/examples/js/loaders/PCDLoader.js +92 -42
  102. package/examples/js/loaders/PDBLoader.js +17 -13
  103. package/examples/js/loaders/PLYLoader.js +65 -51
  104. package/examples/js/loaders/PRWMLoader.js +11 -22
  105. package/examples/js/loaders/PVRLoader.js +7 -16
  106. package/examples/js/loaders/RGBELoader.js +36 -61
  107. package/examples/js/loaders/RGBMLoader.js +26 -87
  108. package/examples/js/loaders/STLLoader.js +20 -27
  109. package/examples/js/loaders/SVGLoader.js +365 -236
  110. package/examples/js/loaders/TDSLoader.js +81 -118
  111. package/examples/js/loaders/TGALoader.js +39 -41
  112. package/examples/js/loaders/TIFFLoader.js +30 -0
  113. package/examples/js/loaders/TTFLoader.js +0 -8
  114. package/examples/js/loaders/TiltLoader.js +14 -15
  115. package/examples/js/loaders/VOXLoader.js +8 -16
  116. package/examples/js/loaders/VRMLLoader.js +266 -354
  117. package/examples/js/loaders/VTKLoader.js +102 -119
  118. package/examples/js/loaders/XYZLoader.js +2 -4
  119. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  120. package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
  121. package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
  122. package/examples/js/materials/MeshGouraudMaterial.js +387 -0
  123. package/examples/js/math/Capsule.js +0 -17
  124. package/examples/js/math/ColorConverter.js +3 -53
  125. package/examples/js/math/ConvexHull.js +185 -141
  126. package/examples/js/math/ImprovedNoise.js +1 -1
  127. package/examples/js/math/Lut.js +8 -15
  128. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  129. package/examples/js/math/OBB.js +90 -49
  130. package/examples/js/math/Octree.js +2 -57
  131. package/examples/js/math/SimplexNoise.js +74 -88
  132. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  133. package/examples/js/misc/GPUComputationRenderer.js +47 -14
  134. package/examples/js/misc/Gyroscope.js +5 -9
  135. package/examples/js/misc/MD2Character.js +14 -23
  136. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  137. package/examples/js/misc/MorphAnimMesh.js +0 -6
  138. package/examples/js/misc/MorphBlendMesh.js +3 -30
  139. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  140. package/examples/js/misc/RollerCoaster.js +17 -24
  141. package/examples/js/misc/TubePainter.js +18 -12
  142. package/examples/js/misc/Volume.js +173 -194
  143. package/examples/js/misc/VolumeSlice.js +91 -99
  144. package/examples/js/modifiers/CurveModifier.js +19 -21
  145. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  146. package/examples/js/modifiers/SimplifyModifier.js +57 -60
  147. package/examples/js/modifiers/TessellateModifier.js +2 -9
  148. package/examples/js/objects/GroundProjectedEnv.js +181 -0
  149. package/examples/js/objects/Lensflare.js +47 -38
  150. package/examples/js/objects/LightningStorm.js +10 -13
  151. package/examples/js/objects/MarchingCubes.js +80 -59
  152. package/examples/js/objects/Reflector.js +31 -22
  153. package/examples/js/objects/ReflectorForSSRPass.js +20 -25
  154. package/examples/js/objects/Refractor.js +61 -33
  155. package/examples/js/objects/ShadowMesh.js +6 -3
  156. package/examples/js/objects/Sky.js +2 -7
  157. package/examples/js/objects/Water.js +23 -18
  158. package/examples/js/objects/Water2.js +20 -19
  159. package/examples/js/physics/AmmoPhysics.js +23 -20
  160. package/examples/js/physics/OimoPhysics.js +19 -17
  161. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  162. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  163. package/examples/js/postprocessing/BloomPass.js +38 -17
  164. package/examples/js/postprocessing/BokehPass.js +29 -12
  165. package/examples/js/postprocessing/ClearPass.js +1 -6
  166. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  167. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  168. package/examples/js/postprocessing/EffectComposer.js +25 -32
  169. package/examples/js/postprocessing/FilmPass.js +7 -5
  170. package/examples/js/postprocessing/GlitchPass.js +10 -11
  171. package/examples/js/postprocessing/HalftonePass.js +9 -9
  172. package/examples/js/postprocessing/LUTPass.js +2 -15
  173. package/examples/js/postprocessing/MaskPass.js +20 -17
  174. package/examples/js/postprocessing/OutlinePass.js +49 -38
  175. package/examples/js/postprocessing/Pass.js +11 -14
  176. package/examples/js/postprocessing/RenderPass.js +3 -7
  177. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  178. package/examples/js/postprocessing/SAOPass.js +40 -32
  179. package/examples/js/postprocessing/SMAAPass.js +34 -17
  180. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  181. package/examples/js/postprocessing/SSAOPass.js +56 -42
  182. package/examples/js/postprocessing/SSRPass.js +78 -61
  183. package/examples/js/postprocessing/SavePass.js +14 -6
  184. package/examples/js/postprocessing/ShaderPass.js +9 -8
  185. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  186. package/examples/js/postprocessing/TexturePass.js +7 -4
  187. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  188. package/examples/js/renderers/CSS2DRenderer.js +4 -23
  189. package/examples/js/renderers/CSS3DRenderer.js +5 -26
  190. package/examples/js/renderers/Projector.js +31 -108
  191. package/examples/js/renderers/SVGRenderer.js +4 -50
  192. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  193. package/examples/js/shaders/AfterimageShader.js +3 -6
  194. package/examples/js/shaders/BasicShader.js +3 -6
  195. package/examples/js/shaders/BleachBypassShader.js +3 -6
  196. package/examples/js/shaders/BlendShader.js +3 -6
  197. package/examples/js/shaders/BokehShader.js +3 -6
  198. package/examples/js/shaders/BokehShader2.js +4 -13
  199. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  200. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  201. package/examples/js/shaders/ColorifyShader.js +2 -6
  202. package/examples/js/shaders/ConvolutionShader.js +5 -10
  203. package/examples/js/shaders/CopyShader.js +3 -6
  204. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  205. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  206. package/examples/js/shaders/DigitalGlitch.js +3 -6
  207. package/examples/js/shaders/DotScreenShader.js +2 -6
  208. package/examples/js/shaders/FXAAShader.js +1 -3
  209. package/examples/js/shaders/FilmShader.js +3 -6
  210. package/examples/js/shaders/FocusShader.js +3 -6
  211. package/examples/js/shaders/FreiChenShader.js +2 -6
  212. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  213. package/examples/js/shaders/GodRaysShader.js +11 -24
  214. package/examples/js/shaders/HalftoneShader.js +3 -6
  215. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  216. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  217. package/examples/js/shaders/HueSaturationShader.js +3 -6
  218. package/examples/js/shaders/KaleidoShader.js +3 -6
  219. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  220. package/examples/js/shaders/LuminosityShader.js +4 -7
  221. package/examples/js/shaders/MMDToonShader.js +2 -4
  222. package/examples/js/shaders/MirrorShader.js +3 -6
  223. package/examples/js/shaders/NormalMapShader.js +2 -6
  224. package/examples/js/shaders/RGBShiftShader.js +3 -6
  225. package/examples/js/shaders/SAOShader.js +2 -6
  226. package/examples/js/shaders/SMAAShader.js +6 -18
  227. package/examples/js/shaders/SSAOShader.js +2 -6
  228. package/examples/js/shaders/SSRShader.js +6 -18
  229. package/examples/js/shaders/SepiaShader.js +3 -6
  230. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  231. package/examples/js/shaders/TechnicolorShader.js +3 -6
  232. package/examples/js/shaders/ToneMapShader.js +4 -7
  233. package/examples/js/shaders/ToonShader.js +8 -24
  234. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  235. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  236. package/examples/js/shaders/VelocityShader.js +126 -0
  237. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  238. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  239. package/examples/js/shaders/VignetteShader.js +3 -6
  240. package/examples/js/shaders/VolumeShader.js +2 -6
  241. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  242. package/examples/js/textures/FlakesTexture.js +0 -1
  243. package/examples/js/utils/BufferGeometryUtils.js +237 -171
  244. package/examples/js/utils/CameraUtils.js +5 -20
  245. package/examples/js/utils/GPUStatsPanel.js +3 -12
  246. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  247. package/examples/js/utils/GeometryUtils.js +15 -36
  248. package/examples/js/utils/LDrawUtils.js +8 -11
  249. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  250. package/examples/js/utils/SceneUtils.js +109 -14
  251. package/examples/js/utils/ShadowMapViewer.js +17 -14
  252. package/examples/js/utils/SkeletonUtils.js +13 -27
  253. package/examples/js/utils/UVsDebug.js +20 -12
  254. package/examples/js/utils/WorkerPool.js +1 -11
  255. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  256. package/examples/jsm/animation/MMDPhysics.js +28 -22
  257. package/examples/jsm/capabilities/WebGPU.js +3 -1
  258. package/examples/jsm/controls/ArcballControls.js +17 -2
  259. package/examples/jsm/controls/FirstPersonControls.js +20 -27
  260. package/examples/jsm/controls/FlyControls.js +16 -24
  261. package/examples/jsm/controls/OrbitControls.js +44 -9
  262. package/examples/jsm/controls/PointerLockControls.js +0 -7
  263. package/examples/jsm/controls/TrackballControls.js +14 -5
  264. package/examples/jsm/controls/TransformControls.js +18 -16
  265. package/examples/jsm/csm/CSM.js +1 -0
  266. package/examples/jsm/csm/CSMHelper.js +30 -0
  267. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  268. package/examples/jsm/effects/OutlineEffect.js +4 -25
  269. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  270. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  271. package/examples/jsm/effects/StereoEffect.js +2 -2
  272. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  273. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  274. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  275. package/examples/jsm/exporters/GLTFExporter.js +29 -110
  276. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  277. package/examples/jsm/exporters/OBJExporter.js +0 -18
  278. package/examples/jsm/exporters/PLYExporter.js +14 -22
  279. package/examples/jsm/exporters/STLExporter.js +1 -9
  280. package/examples/jsm/exporters/USDZExporter.js +107 -4
  281. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  282. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  283. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  284. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  285. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  286. package/examples/jsm/helpers/ViewHelper.js +24 -0
  287. package/examples/jsm/interactive/HTMLMesh.js +14 -15
  288. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  289. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  290. package/examples/jsm/libs/flow.module.js +610 -160
  291. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  292. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  293. package/examples/jsm/libs/utif.module.js +1579 -0
  294. package/examples/jsm/libs/zstddec.module.js +1 -0
  295. package/examples/jsm/lines/LineSegments2.js +4 -0
  296. package/examples/jsm/loaders/3DMLoader.js +1 -2
  297. package/examples/jsm/loaders/ColladaLoader.js +29 -0
  298. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  299. package/examples/jsm/loaders/EXRLoader.js +3 -13
  300. package/examples/jsm/loaders/FBXLoader.js +26 -3
  301. package/examples/jsm/loaders/FontLoader.js +3 -16
  302. package/examples/jsm/loaders/GLTFLoader.js +321 -464
  303. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  304. package/examples/jsm/loaders/KTX2Loader.js +254 -53
  305. package/examples/jsm/loaders/LDrawLoader.js +149 -87
  306. package/examples/jsm/loaders/LottieLoader.js +4 -2
  307. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  308. package/examples/jsm/loaders/OBJLoader.js +6 -14
  309. package/examples/jsm/loaders/PCDLoader.js +60 -14
  310. package/examples/jsm/loaders/PLYLoader.js +71 -19
  311. package/examples/jsm/loaders/RGBELoader.js +1 -1
  312. package/examples/jsm/loaders/SVGLoader.js +231 -17
  313. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  314. package/examples/jsm/loaders/USDZLoader.js +633 -0
  315. package/examples/jsm/loaders/VRMLLoader.js +36 -26
  316. package/examples/jsm/loaders/VTKLoader.js +1 -1
  317. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  318. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  319. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  320. package/examples/jsm/math/ColorConverter.js +1 -49
  321. package/examples/jsm/math/ConvexHull.js +4 -4
  322. package/examples/jsm/math/Octree.js +1 -1
  323. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  324. package/examples/jsm/misc/Volume.js +169 -171
  325. package/examples/jsm/misc/VolumeSlice.js +78 -80
  326. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  327. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  328. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  329. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  330. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  331. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  332. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  333. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  334. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  335. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  336. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  337. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  338. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  339. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  340. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  341. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  342. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
  343. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  344. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
  345. package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
  346. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  347. package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
  348. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  349. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  350. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  351. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  352. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  353. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  354. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  355. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  356. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  357. package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
  358. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  359. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  360. package/examples/jsm/nodes/Nodes.js +70 -13
  361. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  362. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  363. package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
  364. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  365. package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
  366. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  367. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  368. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  369. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  370. package/examples/jsm/nodes/core/AttributeNode.js +32 -9
  371. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  372. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  373. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  374. package/examples/jsm/nodes/core/Node.js +15 -13
  375. package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
  376. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  377. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  378. package/examples/jsm/nodes/core/NodeVarying.js +17 -0
  379. package/examples/jsm/nodes/core/VaryingNode.js +56 -0
  380. package/examples/jsm/nodes/core/constants.js +13 -13
  381. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  382. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
  383. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  384. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  385. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  386. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  387. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  388. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  389. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  390. package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
  391. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  392. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  393. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  394. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  395. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
  396. package/examples/jsm/nodes/materials/Materials.js +21 -31
  397. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  398. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  399. package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
  400. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  401. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  402. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  403. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
  404. package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
  405. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  406. package/examples/jsm/nodes/math/MathNode.js +7 -17
  407. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  408. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  409. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  410. package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
  411. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
  412. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
  413. package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
  414. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  415. package/examples/jsm/nodes/utils/JoinNode.js +15 -9
  416. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  417. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
  418. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  419. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  420. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  421. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  422. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  423. package/examples/jsm/nodes/utils/TimerNode.js +23 -3
  424. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  425. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  426. package/examples/jsm/objects/Reflector.js +12 -5
  427. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  428. package/examples/jsm/objects/Refractor.js +12 -6
  429. package/examples/jsm/objects/ShadowMesh.js +8 -2
  430. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  431. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  432. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  433. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  434. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  435. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  436. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  437. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  438. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  439. package/examples/jsm/postprocessing/OutlinePass.js +25 -3
  440. package/examples/jsm/postprocessing/Pass.js +2 -0
  441. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  442. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  443. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  444. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  445. package/examples/jsm/postprocessing/SavePass.js +17 -1
  446. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  447. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  448. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  449. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  450. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  451. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  452. package/examples/jsm/renderers/Projector.js +2 -24
  453. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  454. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
  455. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  456. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  457. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  458. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +68 -3
  459. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  460. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  461. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  462. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  463. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  464. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  465. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
  466. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  467. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  468. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  469. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
  470. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  471. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  472. package/examples/jsm/shaders/MMDToonShader.js +2 -4
  473. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  474. package/examples/jsm/shaders/VelocityShader.js +128 -0
  475. package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
  476. package/examples/jsm/utils/GeometryUtils.js +17 -25
  477. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  478. package/examples/jsm/utils/SceneUtils.js +117 -12
  479. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  480. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  481. package/examples/jsm/webxr/VRButton.js +1 -7
  482. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  483. package/package.json +22 -18
  484. package/src/Three.Legacy.js +262 -36
  485. package/src/Three.js +4 -2
  486. package/src/animation/AnimationAction.js +6 -5
  487. package/src/animation/AnimationClip.js +1 -1
  488. package/src/animation/AnimationMixer.js +1 -1
  489. package/src/animation/AnimationUtils.js +204 -199
  490. package/src/animation/KeyframeTrack.js +1 -1
  491. package/src/animation/PropertyBinding.js +31 -5
  492. package/src/audio/AudioContext.js +5 -5
  493. package/src/cameras/CubeCamera.js +14 -21
  494. package/src/constants.js +2 -4
  495. package/src/core/BufferAttribute.js +81 -111
  496. package/src/core/BufferGeometry.js +3 -41
  497. package/src/core/InstancedBufferAttribute.js +0 -10
  498. package/src/core/InstancedBufferGeometry.js +1 -7
  499. package/src/core/InterleavedBuffer.js +1 -1
  500. package/src/core/InterleavedBufferAttribute.js +57 -8
  501. package/src/core/Object3D.js +22 -5
  502. package/src/core/Uniform.js +0 -7
  503. package/src/core/UniformsGroup.js +92 -0
  504. package/src/extras/DataUtils.js +104 -88
  505. package/src/extras/Earcut.js +67 -67
  506. package/src/extras/core/Path.js +1 -0
  507. package/src/extras/core/ShapePath.js +1 -4
  508. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  509. package/src/geometries/BoxGeometry.js +1 -1
  510. package/src/geometries/CapsuleGeometry.js +1 -1
  511. package/src/geometries/CircleGeometry.js +1 -1
  512. package/src/geometries/ConeGeometry.js +1 -1
  513. package/src/geometries/CylinderGeometry.js +2 -1
  514. package/src/geometries/DodecahedronGeometry.js +1 -1
  515. package/src/geometries/EdgesGeometry.js +5 -4
  516. package/src/geometries/ExtrudeGeometry.js +2 -11
  517. package/src/geometries/IcosahedronGeometry.js +1 -1
  518. package/src/geometries/LatheGeometry.js +2 -2
  519. package/src/geometries/OctahedronGeometry.js +1 -1
  520. package/src/geometries/PlaneGeometry.js +2 -1
  521. package/src/geometries/PolyhedronGeometry.js +2 -2
  522. package/src/geometries/RingGeometry.js +1 -1
  523. package/src/geometries/ShapeGeometry.js +3 -2
  524. package/src/geometries/SphereGeometry.js +2 -1
  525. package/src/geometries/TetrahedronGeometry.js +1 -1
  526. package/src/geometries/TorusGeometry.js +2 -1
  527. package/src/geometries/TorusKnotGeometry.js +2 -1
  528. package/src/geometries/TubeGeometry.js +2 -1
  529. package/src/geometries/WireframeGeometry.js +1 -0
  530. package/src/helpers/ArrowHelper.js +9 -0
  531. package/src/helpers/Box3Helper.js +7 -0
  532. package/src/helpers/BoxHelper.js +7 -1
  533. package/src/helpers/CameraHelper.js +97 -38
  534. package/src/helpers/DirectionalLightHelper.js +6 -1
  535. package/src/helpers/GridHelper.js +7 -0
  536. package/src/helpers/HemisphereLightHelper.js +5 -1
  537. package/src/helpers/PlaneHelper.js +15 -9
  538. package/src/helpers/PointLightHelper.js +2 -1
  539. package/src/helpers/PolarGridHelper.js +25 -14
  540. package/src/helpers/SkeletonHelper.js +7 -0
  541. package/src/helpers/SpotLightHelper.js +5 -2
  542. package/src/lights/LightShadow.js +1 -2
  543. package/src/lights/PointLight.js +2 -2
  544. package/src/lights/SpotLight.js +4 -2
  545. package/src/loaders/FileLoader.js +16 -2
  546. package/src/loaders/LoadingManager.js +1 -1
  547. package/src/loaders/MaterialLoader.js +49 -7
  548. package/src/loaders/ObjectLoader.js +9 -42
  549. package/src/materials/Material.js +2 -34
  550. package/src/materials/Materials.js +0 -27
  551. package/src/materials/MeshLambertMaterial.js +28 -1
  552. package/src/materials/MeshPhysicalMaterial.js +1 -1
  553. package/src/materials/ShaderMaterial.js +3 -7
  554. package/src/math/Color.js +8 -18
  555. package/src/math/MathUtils.js +1 -7
  556. package/src/math/Matrix3.js +54 -25
  557. package/src/math/Matrix4.js +3 -27
  558. package/src/math/Quaternion.js +1 -21
  559. package/src/math/Ray.js +2 -5
  560. package/src/math/Sphere.js +36 -21
  561. package/src/math/Vector2.js +4 -24
  562. package/src/math/Vector3.js +7 -46
  563. package/src/math/Vector4.js +4 -24
  564. package/src/objects/InstancedMesh.js +7 -0
  565. package/src/objects/LOD.js +25 -6
  566. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  567. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  568. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  569. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  570. package/src/renderers/WebGLRenderTarget.js +1 -1
  571. package/src/renderers/WebGLRenderer.js +119 -69
  572. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  573. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  574. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  575. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  576. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  577. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  578. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  579. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  580. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  581. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
  582. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  583. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  584. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  585. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  586. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  587. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  588. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  589. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  590. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  591. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  592. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  593. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  594. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  595. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  597. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  598. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  599. package/src/renderers/shaders/ShaderChunk.js +7 -2
  600. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  601. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  602. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  603. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  604. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  605. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  606. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  607. package/src/renderers/shaders/ShaderLib.js +50 -36
  608. package/src/renderers/shaders/UniformsLib.js +13 -12
  609. package/src/renderers/shaders/UniformsUtils.js +29 -0
  610. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  611. package/src/renderers/webgl/WebGLBackground.js +17 -9
  612. package/src/renderers/webgl/WebGLLights.js +37 -17
  613. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  614. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  615. package/src/renderers/webgl/WebGLProgram.js +6 -11
  616. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  617. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  618. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  619. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  620. package/src/renderers/webgl/WebGLShadowMap.js +13 -16
  621. package/src/renderers/webgl/WebGLState.js +125 -41
  622. package/src/renderers/webgl/WebGLTextures.js +94 -39
  623. package/src/renderers/webgl/WebGLUniforms.js +156 -28
  624. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  625. package/src/renderers/webgl/WebGLUtils.js +3 -1
  626. package/src/renderers/webvr/WebVRManager.js +42 -9
  627. package/src/renderers/webvr/WebVRUtils.js +1 -1
  628. package/src/renderers/webxr/WebXRController.js +91 -50
  629. package/src/renderers/webxr/WebXRManager.js +127 -34
  630. package/src/scenes/Scene.js +24 -3
  631. package/src/textures/CompressedArrayTexture.js +18 -0
  632. package/src/textures/Source.js +1 -1
  633. package/src/textures/Texture.js +2 -1
  634. package/src/utils.js +1 -1
  635. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  636. package/examples/js/libs/lottie_canvas.js +0 -12751
  637. package/examples/js/loaders/KTX2Loader.js +0 -558
  638. package/examples/js/shaders/PixelShader.js +0 -51
  639. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  640. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  641. package/examples/jsm/nodes/core/NodeVary.js +0 -14
  642. package/examples/jsm/nodes/core/VaryNode.js +0 -54
  643. package/examples/jsm/package.json +0 -3
  644. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  645. package/examples/jsm/shaders/PixelShader.js +0 -44
  646. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -42,7 +42,6 @@
42
42
 
43
43
  if ( Math.abs( num ) < 1e-6 ) num = 0;
44
44
  let a = num.toString();
45
-
46
45
  if ( a.indexOf( '.' ) === - 1 ) {
47
46
 
48
47
  a += '.';
@@ -60,7 +59,6 @@
60
59
  function toStringsFromArray( array ) {
61
60
 
62
61
  const a = [];
63
-
64
62
  for ( let i = 0, il = array.length; i < il; i ++ ) {
65
63
 
66
64
  a.push( toStringsFromNumber( array[ i ] ) );
@@ -84,16 +82,15 @@
84
82
  array.push( ( skin.name !== '' ? skin.name.replace( /\s/g, '_' ) : 'skin' ) + '.osm;' );
85
83
  array.push( bones.length + ';' );
86
84
  array.push( '' );
87
-
88
85
  for ( let i = 0, il = bones.length; i < il; i ++ ) {
89
86
 
90
87
  const bone = bones[ i ];
91
88
  const bone2 = bones2[ i ];
89
+
92
90
  /*
93
91
  * use the bone matrix saved before solving IK.
94
92
  * see CCDIKSolver for the detail.
95
93
  */
96
-
97
94
  if ( useOriginalBones === true && bone.userData.ik !== undefined && bone.userData.ik.originalMatrix !== undefined ) {
98
95
 
99
96
  matrix.fromArray( bone.userData.ik.originalMatrix );
@@ -107,8 +104,9 @@
107
104
  position.setFromMatrixPosition( matrix );
108
105
  quaternion.setFromRotationMatrix( matrix );
109
106
  const pArray = position.sub( bone2.position ).toArray();
110
- const qArray = quaternion2.copy( bone2.quaternion ).conjugate().multiply( quaternion ).toArray(); // right to left
107
+ const qArray = quaternion2.copy( bone2.quaternion ).conjugate().multiply( quaternion ).toArray();
111
108
 
109
+ // right to left
112
110
  pArray[ 2 ] = - pArray[ 2 ];
113
111
  qArray[ 0 ] = - qArray[ 0 ];
114
112
  qArray[ 1 ] = - qArray[ 1 ];
@@ -126,21 +124,18 @@
126
124
 
127
125
  }
128
126
 
129
- } // Unicode to Shift_JIS table
130
-
127
+ }
131
128
 
129
+ // Unicode to Shift_JIS table
132
130
  let u2sTable;
133
-
134
131
  function unicodeToShiftjis( str ) {
135
132
 
136
133
  if ( u2sTable === undefined ) {
137
134
 
138
135
  const encoder = new MMDParser.CharsetEncoder(); // eslint-disable-line no-undef
139
-
140
136
  const table = encoder.s2uTable;
141
137
  u2sTable = {};
142
138
  const keys = Object.keys( table );
143
-
144
139
  for ( let i = 0, il = keys.length; i < il; i ++ ) {
145
140
 
146
141
  let key = keys[ i ];
@@ -153,12 +148,10 @@
153
148
  }
154
149
 
155
150
  const array = [];
156
-
157
151
  for ( let i = 0, il = str.length; i < il; i ++ ) {
158
152
 
159
153
  const code = str.charCodeAt( i );
160
154
  const value = u2sTable[ code ];
161
-
162
155
  if ( value === undefined ) {
163
156
 
164
157
  throw new Error( 'cannot convert charcode 0x' + code.toString( 16 ) );
@@ -13,7 +13,6 @@
13
13
  const normal = new THREE.Vector3();
14
14
  const uv = new THREE.Vector2();
15
15
  const face = [];
16
-
17
16
  function parseMesh( mesh ) {
18
17
 
19
18
  let nbVertex = 0;
@@ -22,71 +21,75 @@
22
21
  const geometry = mesh.geometry;
23
22
  const normalMatrixWorld = new THREE.Matrix3();
24
23
 
25
- if ( geometry.isBufferGeometry !== true ) {
26
-
27
- throw new Error( 'THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.' );
28
-
29
- } // shortcuts
30
-
31
-
24
+ // shortcuts
32
25
  const vertices = geometry.getAttribute( 'position' );
33
26
  const normals = geometry.getAttribute( 'normal' );
34
27
  const uvs = geometry.getAttribute( 'uv' );
35
- const indices = geometry.getIndex(); // name of the mesh object
28
+ const indices = geometry.getIndex();
36
29
 
37
- output += 'o ' + mesh.name + '\n'; // name of the mesh material
30
+ // name of the mesh object
31
+ output += 'o ' + mesh.name + '\n';
38
32
 
33
+ // name of the mesh material
39
34
  if ( mesh.material && mesh.material.name ) {
40
35
 
41
36
  output += 'usemtl ' + mesh.material.name + '\n';
42
37
 
43
- } // vertices
38
+ }
44
39
 
40
+ // vertices
45
41
 
46
42
  if ( vertices !== undefined ) {
47
43
 
48
44
  for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) {
49
45
 
50
- vertex.fromBufferAttribute( vertices, i ); // transform the vertex to world space
46
+ vertex.fromBufferAttribute( vertices, i );
51
47
 
52
- vertex.applyMatrix4( mesh.matrixWorld ); // transform the vertex to export format
48
+ // transform the vertex to world space
49
+ vertex.applyMatrix4( mesh.matrixWorld );
53
50
 
51
+ // transform the vertex to export format
54
52
  output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n';
55
53
 
56
54
  }
57
55
 
58
- } // uvs
56
+ }
59
57
 
58
+ // uvs
60
59
 
61
60
  if ( uvs !== undefined ) {
62
61
 
63
62
  for ( let i = 0, l = uvs.count; i < l; i ++, nbVertexUvs ++ ) {
64
63
 
65
- uv.fromBufferAttribute( uvs, i ); // transform the uv to export format
64
+ uv.fromBufferAttribute( uvs, i );
66
65
 
66
+ // transform the uv to export format
67
67
  output += 'vt ' + uv.x + ' ' + uv.y + '\n';
68
68
 
69
69
  }
70
70
 
71
- } // normals
71
+ }
72
72
 
73
+ // normals
73
74
 
74
75
  if ( normals !== undefined ) {
75
76
 
76
77
  normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
77
-
78
78
  for ( let i = 0, l = normals.count; i < l; i ++, nbNormals ++ ) {
79
79
 
80
- normal.fromBufferAttribute( normals, i ); // transform the normal to world space
80
+ normal.fromBufferAttribute( normals, i );
81
81
 
82
- normal.applyMatrix3( normalMatrixWorld ).normalize(); // transform the normal to export format
82
+ // transform the normal to world space
83
+ normal.applyMatrix3( normalMatrixWorld ).normalize();
83
84
 
85
+ // transform the normal to export format
84
86
  output += 'vn ' + normal.x + ' ' + normal.y + ' ' + normal.z + '\n';
85
87
 
86
88
  }
87
89
 
88
- } // faces
90
+ }
89
91
 
92
+ // faces
90
93
 
91
94
  if ( indices !== null ) {
92
95
 
@@ -97,9 +100,9 @@
97
100
  const j = indices.getX( i + m ) + 1;
98
101
  face[ m ] = indexVertex + j + ( normals || uvs ? '/' + ( uvs ? indexVertexUvs + j : '' ) + ( normals ? '/' + ( indexNormals + j ) : '' ) : '' );
99
102
 
100
- } // transform the face to export format
101
-
103
+ }
102
104
 
105
+ // transform the face to export format
103
106
  output += 'f ' + face.join( ' ' ) + '\n';
104
107
 
105
108
  }
@@ -113,16 +116,16 @@
113
116
  const j = i + m + 1;
114
117
  face[ m ] = indexVertex + j + ( normals || uvs ? '/' + ( uvs ? indexVertexUvs + j : '' ) + ( normals ? '/' + ( indexNormals + j ) : '' ) : '' );
115
118
 
116
- } // transform the face to export format
117
-
119
+ }
118
120
 
121
+ // transform the face to export format
119
122
  output += 'f ' + face.join( ' ' ) + '\n';
120
123
 
121
124
  }
122
125
 
123
- } // update index
124
-
126
+ }
125
127
 
128
+ // update index
126
129
  indexVertex += nbVertex;
127
130
  indexVertexUvs += nbVertexUvs;
128
131
  indexNormals += nbNormals;
@@ -135,25 +138,21 @@
135
138
  const geometry = line.geometry;
136
139
  const type = line.type;
137
140
 
138
- if ( geometry.isBufferGeometry !== true ) {
139
-
140
- throw new Error( 'THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.' );
141
-
142
- } // shortcuts
143
-
144
-
145
- const vertices = geometry.getAttribute( 'position' ); // name of the line object
141
+ // shortcuts
142
+ const vertices = geometry.getAttribute( 'position' );
146
143
 
144
+ // name of the line object
147
145
  output += 'o ' + line.name + '\n';
148
-
149
146
  if ( vertices !== undefined ) {
150
147
 
151
148
  for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) {
152
149
 
153
- vertex.fromBufferAttribute( vertices, i ); // transform the vertex to world space
150
+ vertex.fromBufferAttribute( vertices, i );
154
151
 
155
- vertex.applyMatrix4( line.matrixWorld ); // transform the vertex to export format
152
+ // transform the vertex to world space
153
+ vertex.applyMatrix4( line.matrixWorld );
156
154
 
155
+ // transform the vertex to export format
157
156
  output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n';
158
157
 
159
158
  }
@@ -163,7 +162,6 @@
163
162
  if ( type === 'Line' ) {
164
163
 
165
164
  output += 'l ';
166
-
167
165
  for ( let j = 1, l = vertices.count; j <= l; j ++ ) {
168
166
 
169
167
  output += indexVertex + j + ' ';
@@ -182,9 +180,9 @@
182
180
 
183
181
  }
184
182
 
185
- } // update index
186
-
183
+ }
187
184
 
185
+ // update index
188
186
  indexVertex += nbVertex;
189
187
 
190
188
  }
@@ -193,17 +191,9 @@
193
191
 
194
192
  let nbVertex = 0;
195
193
  const geometry = points.geometry;
196
-
197
- if ( geometry.isBufferGeometry !== true ) {
198
-
199
- throw new Error( 'THREE.OBJExporter: Geometry is not of type THREE.BufferGeometry.' );
200
-
201
- }
202
-
203
194
  const vertices = geometry.getAttribute( 'position' );
204
195
  const colors = geometry.getAttribute( 'color' );
205
196
  output += 'o ' + points.name + '\n';
206
-
207
197
  if ( vertices !== undefined ) {
208
198
 
209
199
  for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) {
@@ -211,7 +201,6 @@
211
201
  vertex.fromBufferAttribute( vertices, i );
212
202
  vertex.applyMatrix4( points.matrixWorld );
213
203
  output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z;
214
-
215
204
  if ( colors !== undefined ) {
216
205
 
217
206
  color.fromBufferAttribute( colors, i ).convertLinearToSRGB();
@@ -224,7 +213,6 @@
224
213
  }
225
214
 
226
215
  output += 'p ';
227
-
228
216
  for ( let j = 1, l = vertices.count; j <= l; j ++ ) {
229
217
 
230
218
  output += indexVertex + j + ' ';
@@ -233,9 +221,9 @@
233
221
 
234
222
  output += '\n';
235
223
 
236
- } // update index
237
-
224
+ }
238
225
 
226
+ // update index
239
227
  indexVertex += nbVertex;
240
228
 
241
229
  }
@@ -17,30 +17,15 @@
17
17
 
18
18
  parse( object, onDone, options ) {
19
19
 
20
- if ( onDone && typeof onDone === 'object' ) {
21
-
22
- console.warn( 'THREE.PLYExporter: The options parameter is now the third argument to the "parse" function. See the documentation for the new API.' );
23
- options = onDone;
24
- onDone = undefined;
25
-
26
- } // Iterate over the valid meshes in the object
27
-
28
-
20
+ // Iterate over the valid meshes in the object
29
21
  function traverseMeshes( cb ) {
30
22
 
31
23
  object.traverse( function ( child ) {
32
24
 
33
- if ( child.isMesh === true ) {
25
+ if ( child.isMesh === true || child.isPoints ) {
34
26
 
35
27
  const mesh = child;
36
28
  const geometry = mesh.geometry;
37
-
38
- if ( geometry.isBufferGeometry !== true ) {
39
-
40
- throw new Error( 'THREE.PLYExporter: Geometry is not of type THREE.BufferGeometry.' );
41
-
42
- }
43
-
44
29
  if ( geometry.hasAttribute( 'position' ) === true ) {
45
30
 
46
31
  cb( mesh, geometry );
@@ -51,9 +36,9 @@
51
36
 
52
37
  } );
53
38
 
54
- } // Default options
55
-
39
+ }
56
40
 
41
+ // Default options
57
42
  const defaultOptions = {
58
43
  binary: false,
59
44
  excludeAttributes: [],
@@ -62,11 +47,13 @@
62
47
  };
63
48
  options = Object.assign( defaultOptions, options );
64
49
  const excludeAttributes = options.excludeAttributes;
50
+ let includeIndices = true;
65
51
  let includeNormals = false;
66
52
  let includeColors = false;
67
- let includeUVs = false; // count the vertices, check which properties are used,
68
- // and cache the BufferGeometry
53
+ let includeUVs = false;
69
54
 
55
+ // count the vertices, check which properties are used,
56
+ // and cache the BufferGeometry
70
57
  let vertexCount = 0;
71
58
  let faceCount = 0;
72
59
  object.traverse( function ( child ) {
@@ -75,19 +62,11 @@
75
62
 
76
63
  const mesh = child;
77
64
  const geometry = mesh.geometry;
78
-
79
- if ( geometry.isBufferGeometry !== true ) {
80
-
81
- throw new Error( 'THREE.PLYExporter: Geometry is not of type THREE.BufferGeometry.' );
82
-
83
- }
84
-
85
65
  const vertices = geometry.getAttribute( 'position' );
86
66
  const normals = geometry.getAttribute( 'normal' );
87
67
  const uvs = geometry.getAttribute( 'uv' );
88
68
  const colors = geometry.getAttribute( 'color' );
89
69
  const indices = geometry.getIndex();
90
-
91
70
  if ( vertices === undefined ) {
92
71
 
93
72
  return;
@@ -100,15 +79,22 @@
100
79
  if ( uvs !== undefined ) includeUVs = true;
101
80
  if ( colors !== undefined ) includeColors = true;
102
81
 
82
+ } else if ( child.isPoints ) {
83
+
84
+ const mesh = child;
85
+ const geometry = mesh.geometry;
86
+ const vertices = geometry.getAttribute( 'position' );
87
+ vertexCount += vertices.count;
88
+ includeIndices = false;
89
+
103
90
  }
104
91
 
105
92
  } );
106
93
  const tempColor = new THREE.Color();
107
- const includeIndices = excludeAttributes.indexOf( 'index' ) === - 1;
94
+ includeIndices = includeIndices && excludeAttributes.indexOf( 'index' ) === - 1;
108
95
  includeNormals = includeNormals && excludeAttributes.indexOf( 'normal' ) === - 1;
109
96
  includeColors = includeColors && excludeAttributes.indexOf( 'color' ) === - 1;
110
97
  includeUVs = includeUVs && excludeAttributes.indexOf( 'uv' ) === - 1;
111
-
112
98
  if ( includeIndices && faceCount !== Math.floor( faceCount ) ) {
113
99
 
114
100
  // point cloud meshes will not have an index array and may not have a
@@ -120,9 +106,9 @@
120
106
  }
121
107
 
122
108
  const indexByteCount = 4;
123
- let header = 'ply\n' + `format ${options.binary ? options.littleEndian ? 'binary_little_endian' : 'binary_big_endian' : 'ascii'} 1.0\n` + `element vertex ${vertexCount}\n` + // position
109
+ let header = 'ply\n' + `format ${options.binary ? options.littleEndian ? 'binary_little_endian' : 'binary_big_endian' : 'ascii'} 1.0\n` + `element vertex ${vertexCount}\n` +
110
+ // position
124
111
  'property float x\n' + 'property float y\n' + 'property float z\n';
125
-
126
112
  if ( includeNormals === true ) {
127
113
 
128
114
  // normal
@@ -151,23 +137,25 @@
151
137
 
152
138
  }
153
139
 
154
- header += 'end_header\n'; // Generate attribute data
140
+ header += 'end_header\n';
155
141
 
142
+ // Generate attribute data
156
143
  const vertex = new THREE.Vector3();
157
144
  const normalMatrixWorld = new THREE.Matrix3();
158
145
  let result = null;
159
-
160
146
  if ( options.binary === true ) {
161
147
 
162
148
  // Binary File Generation
163
- const headerBin = new TextEncoder().encode( header ); // 3 position values at 4 bytes
149
+ const headerBin = new TextEncoder().encode( header );
150
+
151
+ // 3 position values at 4 bytes
164
152
  // 3 normal values at 4 bytes
165
153
  // 3 color channels with 1 byte
166
154
  // 2 uv values at 4 bytes
155
+ const vertexListLength = vertexCount * ( 4 * 3 + ( includeNormals ? 4 * 3 : 0 ) + ( includeColors ? 3 : 0 ) + ( includeUVs ? 4 * 2 : 0 ) );
167
156
 
168
- const vertexListLength = vertexCount * ( 4 * 3 + ( includeNormals ? 4 * 3 : 0 ) + ( includeColors ? 3 : 0 ) + ( includeUVs ? 4 * 2 : 0 ) ); // 1 byte shape desciptor
157
+ // 1 byte shape desciptor
169
158
  // 3 vertex indices at ${indexByteCount} bytes
170
-
171
159
  const faceListLength = includeIndices ? faceCount * ( indexByteCount * 3 + 1 ) : 0;
172
160
  const output = new DataView( new ArrayBuffer( headerBin.length + vertexListLength + faceListLength ) );
173
161
  new Uint8Array( output.buffer ).set( headerBin, 0 );
@@ -182,19 +170,20 @@
182
170
  const colors = geometry.getAttribute( 'color' );
183
171
  const indices = geometry.getIndex();
184
172
  normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
185
-
186
173
  for ( let i = 0, l = vertices.count; i < l; i ++ ) {
187
174
 
188
175
  vertex.fromBufferAttribute( vertices, i );
189
- vertex.applyMatrix4( mesh.matrixWorld ); // Position information
176
+ vertex.applyMatrix4( mesh.matrixWorld );
190
177
 
178
+ // Position information
191
179
  output.setFloat32( vOffset, vertex.x, options.littleEndian );
192
180
  vOffset += 4;
193
181
  output.setFloat32( vOffset, vertex.y, options.littleEndian );
194
182
  vOffset += 4;
195
183
  output.setFloat32( vOffset, vertex.z, options.littleEndian );
196
- vOffset += 4; // Normal information
184
+ vOffset += 4;
197
185
 
186
+ // Normal information
198
187
  if ( includeNormals === true ) {
199
188
 
200
189
  if ( normals != null ) {
@@ -219,9 +208,9 @@
219
208
 
220
209
  }
221
210
 
222
- } // UV information
223
-
211
+ }
224
212
 
213
+ // UV information
225
214
  if ( includeUVs === true ) {
226
215
 
227
216
  if ( uvs != null ) {
@@ -240,9 +229,9 @@
240
229
 
241
230
  }
242
231
 
243
- } // THREE.Color information
244
-
232
+ }
245
233
 
234
+ // THREE.Color information
246
235
  if ( includeColors === true ) {
247
236
 
248
237
  if ( colors != null ) {
@@ -273,6 +262,7 @@
273
262
  if ( includeIndices === true ) {
274
263
 
275
264
  // Create the face list
265
+
276
266
  if ( indices !== null ) {
277
267
 
278
268
  for ( let i = 0, l = indices.count; i < l; i += 3 ) {
@@ -305,10 +295,10 @@
305
295
 
306
296
  }
307
297
 
308
- } // Save the amount of verts we've already written so we can offset
309
- // the face index on the next mesh
310
-
298
+ }
311
299
 
300
+ // Save the amount of verts we've already written so we can offset
301
+ // the face index on the next mesh
312
302
  writtenVertices += vertices.count;
313
303
 
314
304
  } );
@@ -328,15 +318,18 @@
328
318
  const uvs = geometry.getAttribute( 'uv' );
329
319
  const colors = geometry.getAttribute( 'color' );
330
320
  const indices = geometry.getIndex();
331
- normalMatrixWorld.getNormalMatrix( mesh.matrixWorld ); // form each line
321
+ normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
332
322
 
323
+ // form each line
333
324
  for ( let i = 0, l = vertices.count; i < l; i ++ ) {
334
325
 
335
326
  vertex.fromBufferAttribute( vertices, i );
336
- vertex.applyMatrix4( mesh.matrixWorld ); // Position information
327
+ vertex.applyMatrix4( mesh.matrixWorld );
337
328
 
338
- let line = vertex.x + ' ' + vertex.y + ' ' + vertex.z; // Normal information
329
+ // Position information
330
+ let line = vertex.x + ' ' + vertex.y + ' ' + vertex.z;
339
331
 
332
+ // Normal information
340
333
  if ( includeNormals === true ) {
341
334
 
342
335
  if ( normals != null ) {
@@ -351,9 +344,9 @@
351
344
 
352
345
  }
353
346
 
354
- } // UV information
355
-
347
+ }
356
348
 
349
+ // UV information
357
350
  if ( includeUVs === true ) {
358
351
 
359
352
  if ( uvs != null ) {
@@ -366,9 +359,9 @@
366
359
 
367
360
  }
368
361
 
369
- } // THREE.Color information
370
-
362
+ }
371
363
 
364
+ // THREE.Color information
372
365
  if ( includeColors === true ) {
373
366
 
374
367
  if ( colors != null ) {
@@ -386,9 +379,9 @@
386
379
 
387
380
  vertexList += line + '\n';
388
381
 
389
- } // Create the face list
390
-
382
+ }
391
383
 
384
+ // Create the face list
392
385
  if ( includeIndices === true ) {
393
386
 
394
387
  if ( indices !== null ) {
@@ -13,7 +13,9 @@
13
13
 
14
14
  parse( scene, options = {} ) {
15
15
 
16
- const binary = options.binary !== undefined ? options.binary : false; //
16
+ const binary = options.binary !== undefined ? options.binary : false;
17
+
18
+ //
17
19
 
18
20
  const objects = [];
19
21
  let triangles = 0;
@@ -22,13 +24,6 @@
22
24
  if ( object.isMesh ) {
23
25
 
24
26
  const geometry = object.geometry;
25
-
26
- if ( geometry.isBufferGeometry !== true ) {
27
-
28
- throw new Error( 'THREE.STLExporter: Geometry is not of type THREE.BufferGeometry.' );
29
-
30
- }
31
-
32
27
  const index = geometry.index;
33
28
  const positionAttribute = geometry.getAttribute( 'position' );
34
29
  triangles += index !== null ? index.count / 3 : positionAttribute.count / 3;
@@ -64,17 +59,16 @@
64
59
  const cb = new THREE.Vector3();
65
60
  const ab = new THREE.Vector3();
66
61
  const normal = new THREE.Vector3();
67
-
68
62
  for ( let i = 0, il = objects.length; i < il; i ++ ) {
69
63
 
70
64
  const object = objects[ i ].object3d;
71
65
  const geometry = objects[ i ].geometry;
72
66
  const index = geometry.index;
73
67
  const positionAttribute = geometry.getAttribute( 'position' );
74
-
75
68
  if ( index !== null ) {
76
69
 
77
70
  // indexed geometry
71
+
78
72
  for ( let j = 0; j < index.count; j += 3 ) {
79
73
 
80
74
  const a = index.getX( j + 0 );
@@ -87,6 +81,7 @@
87
81
  } else {
88
82
 
89
83
  // non-indexed geometry
84
+
90
85
  for ( let j = 0; j < positionAttribute.count; j += 3 ) {
91
86
 
92
87
  const a = j + 0;
@@ -107,13 +102,11 @@
107
102
  }
108
103
 
109
104
  return output;
110
-
111
105
  function writeFace( a, b, c, positionAttribute, object ) {
112
106
 
113
107
  vA.fromBufferAttribute( positionAttribute, a );
114
108
  vB.fromBufferAttribute( positionAttribute, b );
115
109
  vC.fromBufferAttribute( positionAttribute, c );
116
-
117
110
  if ( object.isSkinnedMesh === true ) {
118
111
 
119
112
  object.boneTransform( a, vA );
@@ -129,7 +122,6 @@
129
122
  writeVertex( vA );
130
123
  writeVertex( vB );
131
124
  writeVertex( vC );
132
-
133
125
  if ( binary === true ) {
134
126
 
135
127
  output.setUint16( offset, 0, true );
@@ -150,7 +142,6 @@
150
142
  ab.subVectors( vA, vB );
151
143
  cb.cross( ab ).normalize();
152
144
  normal.copy( cb ).normalize();
153
-
154
145
  if ( binary === true ) {
155
146
 
156
147
  output.setFloat32( offset, normal.x, true );