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
@@ -217,7 +217,7 @@ class CCDIKSolver {
217
217
  */
218
218
  createHelper() {
219
219
 
220
- return new CCDIKHelper( this.mesh, this.mesh.geometry.userData.MMD.iks );
220
+ return new CCDIKHelper( this.mesh, this.iks );
221
221
 
222
222
  }
223
223
 
@@ -283,7 +283,7 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
283
283
  */
284
284
  class CCDIKHelper extends Object3D {
285
285
 
286
- constructor( mesh, iks = [] ) {
286
+ constructor( mesh, iks = [], sphereSize = 0.25 ) {
287
287
 
288
288
  super();
289
289
 
@@ -293,7 +293,7 @@ class CCDIKHelper extends Object3D {
293
293
  this.matrix.copy( mesh.matrixWorld );
294
294
  this.matrixAutoUpdate = false;
295
295
 
296
- this.sphereGeometry = new SphereGeometry( 0.25, 16, 8 );
296
+ this.sphereGeometry = new SphereGeometry( sphereSize, 16, 8 );
297
297
 
298
298
  this.targetSphereMaterial = new MeshBasicMaterial( {
299
299
  color: new Color( 0xff8888 ),
@@ -393,6 +393,30 @@ class CCDIKHelper extends Object3D {
393
393
 
394
394
  }
395
395
 
396
+ /**
397
+ * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
398
+ */
399
+ dispose() {
400
+
401
+ this.sphereGeometry.dispose();
402
+
403
+ this.targetSphereMaterial.dispose();
404
+ this.effectorSphereMaterial.dispose();
405
+ this.linkSphereMaterial.dispose();
406
+ this.lineMaterial.dispose();
407
+
408
+ const children = this.children;
409
+
410
+ for ( let i = 0; i < children.length; i ++ ) {
411
+
412
+ const child = children[ i ];
413
+
414
+ if ( child.isLine ) child.geometry.dispose();
415
+
416
+ }
417
+
418
+ }
419
+
396
420
  // private method
397
421
 
398
422
  _init() {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Bone,
3
3
  BoxGeometry,
4
+ CapsuleGeometry,
4
5
  Color,
5
- CylinderGeometry,
6
6
  Euler,
7
7
  Matrix4,
8
8
  Mesh,
@@ -209,7 +209,7 @@ class MMDPhysics {
209
209
  // mesh's default world transform as position(0, 0, 0),
210
210
  // quaternion(0, 0, 0, 1) and scale(0, 0, 0)
211
211
 
212
- let parent = mesh.parent;
212
+ const parent = mesh.parent;
213
213
 
214
214
  if ( parent !== null ) mesh.parent = null;
215
215
 
@@ -1292,6 +1292,31 @@ class MMDPhysicsHelper extends Object3D {
1292
1292
 
1293
1293
  }
1294
1294
 
1295
+
1296
+ /**
1297
+ * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
1298
+ */
1299
+ dispose() {
1300
+
1301
+ const materials = this.materials;
1302
+ const children = this.children;
1303
+
1304
+ for ( let i = 0; i < materials.length; i ++ ) {
1305
+
1306
+ materials[ i ].dispose();
1307
+
1308
+ }
1309
+
1310
+ for ( let i = 0; i < children.length; i ++ ) {
1311
+
1312
+ const child = children[ i ];
1313
+
1314
+ if ( child.isMesh ) child.geometry.dispose();
1315
+
1316
+ }
1317
+
1318
+ }
1319
+
1295
1320
  /**
1296
1321
  * Updates Rigid Bodies visualization.
1297
1322
  */
@@ -1358,7 +1383,7 @@ class MMDPhysicsHelper extends Object3D {
1358
1383
  return new BoxGeometry( param.width * 2, param.height * 2, param.depth * 2, 8, 8, 8 );
1359
1384
 
1360
1385
  case 2:
1361
- return new createCapsuleGeometry( param.width, param.height, 16, 8 );
1386
+ return new CapsuleGeometry( param.width, param.height, 8, 16 );
1362
1387
 
1363
1388
  default:
1364
1389
  return null;
@@ -1367,25 +1392,6 @@ class MMDPhysicsHelper extends Object3D {
1367
1392
 
1368
1393
  }
1369
1394
 
1370
- function createCapsuleGeometry( radius, cylinderHeight, segmentsRadius, segmentsHeight ) {
1371
-
1372
- var geometry = new CylinderGeometry( radius, radius, cylinderHeight, segmentsRadius, segmentsHeight, true );
1373
- var upperSphere = new Mesh( new SphereGeometry( radius, segmentsRadius, segmentsHeight, 0, Math.PI * 2, 0, Math.PI / 2 ) );
1374
- var lowerSphere = new Mesh( new SphereGeometry( radius, segmentsRadius, segmentsHeight, 0, Math.PI * 2, Math.PI / 2, Math.PI / 2 ) );
1375
-
1376
- upperSphere.position.set( 0, cylinderHeight / 2, 0 );
1377
- lowerSphere.position.set( 0, - cylinderHeight / 2, 0 );
1378
-
1379
- upperSphere.updateMatrix();
1380
- lowerSphere.updateMatrix();
1381
-
1382
- geometry.merge( upperSphere.geometry, upperSphere.matrix );
1383
- geometry.merge( lowerSphere.geometry, lowerSphere.matrix );
1384
-
1385
- return geometry;
1386
-
1387
- }
1388
-
1389
1395
  for ( var i = 0, il = bodies.length; i < il; i ++ ) {
1390
1396
 
1391
1397
  var param = bodies[ i ].params;
@@ -14,7 +14,9 @@ class WebGPU {
14
14
 
15
15
  static getErrorMessage() {
16
16
 
17
- const message = 'Your browser does not support <a href="https://gpuweb.github.io/gpuweb/" style="color:blue">WebGPU</a>';
17
+ let message = 'Your browser does not support <a href="https://gpuweb.github.io/gpuweb/" style="color:blue">WebGPU</a>';
18
+
19
+ if ( !! window.chrome ) message += '<br>Try: <b>chrome://flags/#enable-unsafe-webgpu</b>';
18
20
 
19
21
  const element = document.createElement( 'div' );
20
22
  element.id = 'webgpumessage';
@@ -1040,7 +1040,7 @@ class ArcballControls extends EventDispatcher {
1040
1040
 
1041
1041
  }
1042
1042
 
1043
- this._v3_1.setFromMatrixPosition(this._gizmoMatrixState);
1043
+ this._v3_1.setFromMatrixPosition( this._gizmoMatrixState );
1044
1044
 
1045
1045
  this.applyTransformMatrix( this.scale( size, this._v3_1 ) );
1046
1046
 
@@ -2279,7 +2279,7 @@ class ArcballControls extends EventDispatcher {
2279
2279
  this._gizmoMatrixState0.identity().setPosition( tbCenter );
2280
2280
  this._gizmoMatrixState.copy( this._gizmoMatrixState0 );
2281
2281
 
2282
- if ( this.camera.zoom != 1 ) {
2282
+ if ( this.camera.zoom !== 1 ) {
2283
2283
 
2284
2284
  //adapt gizmos size to camera zoom
2285
2285
  const size = 1 / this.camera.zoom;
@@ -2294,8 +2294,23 @@ class ArcballControls extends EventDispatcher {
2294
2294
 
2295
2295
  this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale );
2296
2296
 
2297
+ //
2298
+
2299
+ this._gizmos.traverse( function ( object ) {
2300
+
2301
+ if ( object.isLine ) {
2302
+
2303
+ object.geometry.dispose();
2304
+ object.material.dispose();
2305
+
2306
+ }
2307
+
2308
+ } );
2309
+
2297
2310
  this._gizmos.clear();
2298
2311
 
2312
+ //
2313
+
2299
2314
  this._gizmos.add( gizmoX );
2300
2315
  this._gizmos.add( gizmoY );
2301
2316
  this._gizmos.add( gizmoZ );
@@ -12,13 +12,6 @@ class FirstPersonControls {
12
12
 
13
13
  constructor( object, domElement ) {
14
14
 
15
- if ( domElement === undefined ) {
16
-
17
- console.warn( 'THREE.FirstPersonControls: The second parameter "domElement" is now mandatory.' );
18
- domElement = document;
19
-
20
- }
21
-
22
15
  this.object = object;
23
16
  this.domElement = domElement;
24
17
 
@@ -49,8 +42,8 @@ class FirstPersonControls {
49
42
 
50
43
  this.autoSpeedFactor = 0.0;
51
44
 
52
- this.mouseX = 0;
53
- this.mouseY = 0;
45
+ this.pointerX = 0;
46
+ this.pointerY = 0;
54
47
 
55
48
  this.moveForward = false;
56
49
  this.moveBackward = false;
@@ -83,7 +76,7 @@ class FirstPersonControls {
83
76
 
84
77
  };
85
78
 
86
- this.onMouseDown = function ( event ) {
79
+ this.onPointerDown = function ( event ) {
87
80
 
88
81
  if ( this.domElement !== document ) {
89
82
 
@@ -106,7 +99,7 @@ class FirstPersonControls {
106
99
 
107
100
  };
108
101
 
109
- this.onMouseUp = function ( event ) {
102
+ this.onPointerUp = function ( event ) {
110
103
 
111
104
  if ( this.activeLook ) {
112
105
 
@@ -123,17 +116,17 @@ class FirstPersonControls {
123
116
 
124
117
  };
125
118
 
126
- this.onMouseMove = function ( event ) {
119
+ this.onPointerMove = function ( event ) {
127
120
 
128
121
  if ( this.domElement === document ) {
129
122
 
130
- this.mouseX = event.pageX - this.viewHalfX;
131
- this.mouseY = event.pageY - this.viewHalfY;
123
+ this.pointerX = event.pageX - this.viewHalfX;
124
+ this.pointerY = event.pageY - this.viewHalfY;
132
125
 
133
126
  } else {
134
127
 
135
- this.mouseX = event.pageX - this.domElement.offsetLeft - this.viewHalfX;
136
- this.mouseY = event.pageY - this.domElement.offsetTop - this.viewHalfY;
128
+ this.pointerX = event.pageX - this.domElement.offsetLeft - this.viewHalfX;
129
+ this.pointerY = event.pageY - this.domElement.offsetTop - this.viewHalfY;
137
130
 
138
131
  }
139
132
 
@@ -253,8 +246,8 @@ class FirstPersonControls {
253
246
 
254
247
  }
255
248
 
256
- lon -= this.mouseX * actualLookSpeed;
257
- if ( this.lookVertical ) lat -= this.mouseY * actualLookSpeed * verticalLookRatio;
249
+ lon -= this.pointerX * actualLookSpeed;
250
+ if ( this.lookVertical ) lat -= this.pointerY * actualLookSpeed * verticalLookRatio;
258
251
 
259
252
  lat = Math.max( - 85, Math.min( 85, lat ) );
260
253
 
@@ -280,25 +273,25 @@ class FirstPersonControls {
280
273
  this.dispose = function () {
281
274
 
282
275
  this.domElement.removeEventListener( 'contextmenu', contextmenu );
283
- this.domElement.removeEventListener( 'mousedown', _onMouseDown );
284
- this.domElement.removeEventListener( 'mousemove', _onMouseMove );
285
- this.domElement.removeEventListener( 'mouseup', _onMouseUp );
276
+ this.domElement.removeEventListener( 'pointerdown', _onPointerDown );
277
+ this.domElement.removeEventListener( 'pointermove', _onPointerMove );
278
+ this.domElement.removeEventListener( 'pointerup', _onPointerUp );
286
279
 
287
280
  window.removeEventListener( 'keydown', _onKeyDown );
288
281
  window.removeEventListener( 'keyup', _onKeyUp );
289
282
 
290
283
  };
291
284
 
292
- const _onMouseMove = this.onMouseMove.bind( this );
293
- const _onMouseDown = this.onMouseDown.bind( this );
294
- const _onMouseUp = this.onMouseUp.bind( this );
285
+ const _onPointerMove = this.onPointerMove.bind( this );
286
+ const _onPointerDown = this.onPointerDown.bind( this );
287
+ const _onPointerUp = this.onPointerUp.bind( this );
295
288
  const _onKeyDown = this.onKeyDown.bind( this );
296
289
  const _onKeyUp = this.onKeyUp.bind( this );
297
290
 
298
291
  this.domElement.addEventListener( 'contextmenu', contextmenu );
299
- this.domElement.addEventListener( 'mousemove', _onMouseMove );
300
- this.domElement.addEventListener( 'mousedown', _onMouseDown );
301
- this.domElement.addEventListener( 'mouseup', _onMouseUp );
292
+ this.domElement.addEventListener( 'pointerdown', _onPointerDown );
293
+ this.domElement.addEventListener( 'pointermove', _onPointerMove );
294
+ this.domElement.addEventListener( 'pointerup', _onPointerUp );
302
295
 
303
296
  window.addEventListener( 'keydown', _onKeyDown );
304
297
  window.addEventListener( 'keyup', _onKeyUp );
@@ -12,13 +12,6 @@ class FlyControls extends EventDispatcher {
12
12
 
13
13
  super();
14
14
 
15
- if ( domElement === undefined ) {
16
-
17
- console.warn( 'THREE.FlyControls: The second parameter "domElement" is now mandatory.' );
18
- domElement = document;
19
-
20
- }
21
-
22
15
  this.object = object;
23
16
  this.domElement = domElement;
24
17
 
@@ -43,7 +36,7 @@ class FlyControls extends EventDispatcher {
43
36
 
44
37
  this.tmpQuaternion = new Quaternion();
45
38
 
46
- this.mouseStatus = 0;
39
+ this.status = 0;
47
40
 
48
41
  this.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0 };
49
42
  this.moveVector = new Vector3( 0, 0, 0 );
@@ -119,11 +112,11 @@ class FlyControls extends EventDispatcher {
119
112
 
120
113
  };
121
114
 
122
- this.mousedown = function ( event ) {
115
+ this.pointerdown = function ( event ) {
123
116
 
124
117
  if ( this.dragToLook ) {
125
118
 
126
- this.mouseStatus ++;
119
+ this.status ++;
127
120
 
128
121
  } else {
129
122
 
@@ -140,9 +133,9 @@ class FlyControls extends EventDispatcher {
140
133
 
141
134
  };
142
135
 
143
- this.mousemove = function ( event ) {
136
+ this.pointermove = function ( event ) {
144
137
 
145
- if ( ! this.dragToLook || this.mouseStatus > 0 ) {
138
+ if ( ! this.dragToLook || this.status > 0 ) {
146
139
 
147
140
  const container = this.getContainerDimensions();
148
141
  const halfWidth = container.size[ 0 ] / 2;
@@ -157,11 +150,11 @@ class FlyControls extends EventDispatcher {
157
150
 
158
151
  };
159
152
 
160
- this.mouseup = function ( event ) {
153
+ this.pointerup = function ( event ) {
161
154
 
162
155
  if ( this.dragToLook ) {
163
156
 
164
- this.mouseStatus --;
157
+ this.status --;
165
158
 
166
159
  this.moveState.yawLeft = this.moveState.pitchDown = 0;
167
160
 
@@ -252,26 +245,25 @@ class FlyControls extends EventDispatcher {
252
245
  this.dispose = function () {
253
246
 
254
247
  this.domElement.removeEventListener( 'contextmenu', contextmenu );
255
- this.domElement.removeEventListener( 'mousedown', _mousedown );
256
- this.domElement.removeEventListener( 'mousemove', _mousemove );
257
- this.domElement.removeEventListener( 'mouseup', _mouseup );
248
+ this.domElement.removeEventListener( 'pointerdown', _pointerdown );
249
+ this.domElement.removeEventListener( 'pointermove', _pointermove );
250
+ this.domElement.removeEventListener( 'pointerup', _pointerup );
258
251
 
259
252
  window.removeEventListener( 'keydown', _keydown );
260
253
  window.removeEventListener( 'keyup', _keyup );
261
254
 
262
255
  };
263
256
 
264
- const _mousemove = this.mousemove.bind( this );
265
- const _mousedown = this.mousedown.bind( this );
266
- const _mouseup = this.mouseup.bind( this );
257
+ const _pointermove = this.pointermove.bind( this );
258
+ const _pointerdown = this.pointerdown.bind( this );
259
+ const _pointerup = this.pointerup.bind( this );
267
260
  const _keydown = this.keydown.bind( this );
268
261
  const _keyup = this.keyup.bind( this );
269
262
 
270
263
  this.domElement.addEventListener( 'contextmenu', contextmenu );
271
-
272
- this.domElement.addEventListener( 'mousemove', _mousemove );
273
- this.domElement.addEventListener( 'mousedown', _mousedown );
274
- this.domElement.addEventListener( 'mouseup', _mouseup );
264
+ this.domElement.addEventListener( 'pointerdown', _pointerdown );
265
+ this.domElement.addEventListener( 'pointermove', _pointermove );
266
+ this.domElement.addEventListener( 'pointerup', _pointerup );
275
267
 
276
268
  window.addEventListener( 'keydown', _keydown );
277
269
  window.addEventListener( 'keyup', _keyup );
@@ -25,9 +25,6 @@ class OrbitControls extends EventDispatcher {
25
25
 
26
26
  super();
27
27
 
28
- if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' );
29
- if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
30
-
31
28
  this.object = object;
32
29
  this.domElement = domElement;
33
30
  this.domElement.style.touchAction = 'none'; // disable touch scroll
@@ -604,22 +601,62 @@ class OrbitControls extends EventDispatcher {
604
601
  switch ( event.code ) {
605
602
 
606
603
  case scope.keys.UP:
607
- pan( 0, scope.keyPanSpeed );
604
+
605
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
606
+
607
+ rotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
608
+
609
+ } else {
610
+
611
+ pan( 0, scope.keyPanSpeed );
612
+
613
+ }
614
+
608
615
  needsUpdate = true;
609
616
  break;
610
617
 
611
618
  case scope.keys.BOTTOM:
612
- pan( 0, - scope.keyPanSpeed );
619
+
620
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
621
+
622
+ rotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
623
+
624
+ } else {
625
+
626
+ pan( 0, - scope.keyPanSpeed );
627
+
628
+ }
629
+
613
630
  needsUpdate = true;
614
631
  break;
615
632
 
616
633
  case scope.keys.LEFT:
617
- pan( scope.keyPanSpeed, 0 );
634
+
635
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
636
+
637
+ rotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
638
+
639
+ } else {
640
+
641
+ pan( scope.keyPanSpeed, 0 );
642
+
643
+ }
644
+
618
645
  needsUpdate = true;
619
646
  break;
620
647
 
621
648
  case scope.keys.RIGHT:
622
- pan( - scope.keyPanSpeed, 0 );
649
+
650
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
651
+
652
+ rotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
653
+
654
+ } else {
655
+
656
+ pan( - scope.keyPanSpeed, 0 );
657
+
658
+ }
659
+
623
660
  needsUpdate = true;
624
661
  break;
625
662
 
@@ -960,8 +997,6 @@ class OrbitControls extends EventDispatcher {
960
997
 
961
998
  function onMouseMove( event ) {
962
999
 
963
- if ( scope.enabled === false ) return;
964
-
965
1000
  switch ( state ) {
966
1001
 
967
1002
  case STATE.ROTATE:
@@ -19,13 +19,6 @@ class PointerLockControls extends EventDispatcher {
19
19
 
20
20
  super();
21
21
 
22
- if ( domElement === undefined ) {
23
-
24
- console.warn( 'THREE.PointerLockControls: The second parameter "domElement" is now mandatory.' );
25
- domElement = document.body;
26
-
27
- }
28
-
29
22
  this.domElement = domElement;
30
23
  this.isLocked = false;
31
24
 
@@ -16,9 +16,6 @@ class TrackballControls extends EventDispatcher {
16
16
 
17
17
  super();
18
18
 
19
- if ( domElement === undefined ) console.warn( 'THREE.TrackballControls: The second parameter "domElement" is now mandatory.' );
20
- if ( domElement === document ) console.error( 'THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
21
-
22
19
  const scope = this;
23
20
  const STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 };
24
21
 
@@ -703,8 +700,20 @@ class TrackballControls extends EventDispatcher {
703
700
 
704
701
  case 2:
705
702
  _state = STATE.TOUCH_ZOOM_PAN;
706
- _moveCurr.copy( getMouseOnCircle( event.pageX - _movePrev.x, event.pageY - _movePrev.y ) );
707
- _movePrev.copy( _moveCurr );
703
+
704
+ for ( let i = 0; i < _pointers.length; i ++ ) {
705
+
706
+ if ( _pointers[ i ].pointerId !== event.pointerId ) {
707
+
708
+ const position = _pointerPositions[ _pointers[ i ].pointerId ];
709
+ _moveCurr.copy( getMouseOnCircle( position.x, position.y ) );
710
+ _movePrev.copy( _moveCurr );
711
+ break;
712
+
713
+ }
714
+
715
+ }
716
+
708
717
  break;
709
718
 
710
719
  }
@@ -205,7 +205,15 @@ class TransformControls extends Object3D {
205
205
  this.camera.updateMatrixWorld();
206
206
  this.camera.matrixWorld.decompose( this.cameraPosition, this.cameraQuaternion, this._cameraScale );
207
207
 
208
- this.eye.copy( this.cameraPosition ).sub( this.worldPosition ).normalize();
208
+ if ( this.camera.isOrthographicCamera ) {
209
+
210
+ this.camera.getWorldDirection( this.eye ).negate();
211
+
212
+ } else {
213
+
214
+ this.eye.copy( this.cameraPosition ).sub( this.worldPosition ).normalize();
215
+
216
+ }
209
217
 
210
218
  super.updateMatrixWorld( this );
211
219
 
@@ -555,7 +563,7 @@ class TransformControls extends Object3D {
555
563
 
556
564
  }
557
565
 
558
- // Detatch from object
566
+ // Detach from object
559
567
  detach() {
560
568
 
561
569
  this.object = undefined;
@@ -635,12 +643,6 @@ class TransformControls extends Object3D {
635
643
 
636
644
  }
637
645
 
638
- update() {
639
-
640
- console.warn( 'THREE.TransformControls: update function has no more functionality and therefore has been deprecated.' );
641
-
642
- }
643
-
644
646
  }
645
647
 
646
648
  // mouse / touch event handlers
@@ -1308,12 +1310,12 @@ class TransformControlsGizmo extends Object3D {
1308
1310
 
1309
1311
  // Hide translate and scale axis facing the camera
1310
1312
 
1311
- const AXIS_HIDE_TRESHOLD = 0.99;
1312
- const PLANE_HIDE_TRESHOLD = 0.2;
1313
+ const AXIS_HIDE_THRESHOLD = 0.99;
1314
+ const PLANE_HIDE_THRESHOLD = 0.2;
1313
1315
 
1314
1316
  if ( handle.name === 'X' ) {
1315
1317
 
1316
- if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) {
1318
+ if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {
1317
1319
 
1318
1320
  handle.scale.set( 1e-10, 1e-10, 1e-10 );
1319
1321
  handle.visible = false;
@@ -1324,7 +1326,7 @@ class TransformControlsGizmo extends Object3D {
1324
1326
 
1325
1327
  if ( handle.name === 'Y' ) {
1326
1328
 
1327
- if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) {
1329
+ if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {
1328
1330
 
1329
1331
  handle.scale.set( 1e-10, 1e-10, 1e-10 );
1330
1332
  handle.visible = false;
@@ -1335,7 +1337,7 @@ class TransformControlsGizmo extends Object3D {
1335
1337
 
1336
1338
  if ( handle.name === 'Z' ) {
1337
1339
 
1338
- if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) {
1340
+ if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) {
1339
1341
 
1340
1342
  handle.scale.set( 1e-10, 1e-10, 1e-10 );
1341
1343
  handle.visible = false;
@@ -1346,7 +1348,7 @@ class TransformControlsGizmo extends Object3D {
1346
1348
 
1347
1349
  if ( handle.name === 'XY' ) {
1348
1350
 
1349
- if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) {
1351
+ if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {
1350
1352
 
1351
1353
  handle.scale.set( 1e-10, 1e-10, 1e-10 );
1352
1354
  handle.visible = false;
@@ -1357,7 +1359,7 @@ class TransformControlsGizmo extends Object3D {
1357
1359
 
1358
1360
  if ( handle.name === 'YZ' ) {
1359
1361
 
1360
- if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) {
1362
+ if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {
1361
1363
 
1362
1364
  handle.scale.set( 1e-10, 1e-10, 1e-10 );
1363
1365
  handle.visible = false;
@@ -1368,7 +1370,7 @@ class TransformControlsGizmo extends Object3D {
1368
1370
 
1369
1371
  if ( handle.name === 'XZ' ) {
1370
1372
 
1371
- if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) {
1373
+ if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) {
1372
1374
 
1373
1375
  handle.scale.set( 1e-10, 1e-10, 1e-10 );
1374
1376
  handle.visible = false;
@@ -343,6 +343,7 @@ export class CSM {
343
343
 
344
344
  for ( let i = 0; i < this.lights.length; i ++ ) {
345
345
 
346
+ this.parent.remove( this.lights[ i ].target );
346
347
  this.parent.remove( this.lights[ i ] );
347
348
 
348
349
  }
@@ -158,6 +158,36 @@ class CSMHelper extends Group {
158
158
 
159
159
  }
160
160
 
161
+ dispose() {
162
+
163
+ const frustumLines = this.frustumLines;
164
+ const cascadeLines = this.cascadeLines;
165
+ const cascadePlanes = this.cascadePlanes;
166
+ const shadowLines = this.shadowLines;
167
+
168
+ frustumLines.geometry.dispose();
169
+ frustumLines.material.dispose();
170
+
171
+ const cascades = this.csm.cascades;
172
+
173
+ for ( let i = 0; i < cascades; i ++ ) {
174
+
175
+ const cascadeLine = cascadeLines[ i ];
176
+ const cascadePlane = cascadePlanes[ i ];
177
+ const shadowLineGroup = shadowLines[ i ];
178
+ const shadowLine = shadowLineGroup.children[ 0 ];
179
+
180
+ cascadeLine.dispose(); // Box3Helper
181
+
182
+ cascadePlane.geometry.dispose();
183
+ cascadePlane.material.dispose();
184
+
185
+ shadowLine.dispose(); // Box3Helper
186
+
187
+ }
188
+
189
+ }
190
+
161
191
  }
162
192
 
163
193
  export { CSMHelper };