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
@@ -1,5 +1,6 @@
1
1
  ( function () {
2
2
 
3
+ // This set of controls performs orbiting, dollying (zooming), and panning.
3
4
  // Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
4
5
  //
5
6
  // Orbit - left mouse / touch: one-finger move
@@ -15,87 +16,94 @@
15
16
  const _endEvent = {
16
17
  type: 'end'
17
18
  };
18
-
19
19
  class OrbitControls extends THREE.EventDispatcher {
20
20
 
21
21
  constructor( object, domElement ) {
22
22
 
23
23
  super();
24
- if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' );
25
- if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
26
24
  this.object = object;
27
25
  this.domElement = domElement;
28
26
  this.domElement.style.touchAction = 'none'; // disable touch scroll
29
- // Set to false to disable this control
30
27
 
31
- this.enabled = true; // "target" sets the location of focus, where the object orbits around
28
+ // Set to false to disable this control
29
+ this.enabled = true;
32
30
 
33
- this.target = new THREE.Vector3(); // How far you can dolly in and out ( PerspectiveCamera only )
31
+ // "target" sets the location of focus, where the object orbits around
32
+ this.target = new THREE.Vector3();
34
33
 
34
+ // How far you can dolly in and out ( PerspectiveCamera only )
35
35
  this.minDistance = 0;
36
- this.maxDistance = Infinity; // How far you can zoom in and out ( OrthographicCamera only )
36
+ this.maxDistance = Infinity;
37
37
 
38
+ // How far you can zoom in and out ( OrthographicCamera only )
38
39
  this.minZoom = 0;
39
- this.maxZoom = Infinity; // How far you can orbit vertically, upper and lower limits.
40
- // Range is 0 to Math.PI radians.
40
+ this.maxZoom = Infinity;
41
41
 
42
+ // How far you can orbit vertically, upper and lower limits.
43
+ // Range is 0 to Math.PI radians.
42
44
  this.minPolarAngle = 0; // radians
43
-
44
45
  this.maxPolarAngle = Math.PI; // radians
46
+
45
47
  // How far you can orbit horizontally, upper and lower limits.
46
48
  // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
47
-
48
49
  this.minAzimuthAngle = - Infinity; // radians
49
-
50
50
  this.maxAzimuthAngle = Infinity; // radians
51
+
51
52
  // Set to true to enable damping (inertia)
52
53
  // If damping is enabled, you must call controls.update() in your animation loop
53
-
54
54
  this.enableDamping = false;
55
- this.dampingFactor = 0.05; // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
56
- // Set to false to disable zooming
55
+ this.dampingFactor = 0.05;
57
56
 
57
+ // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
58
+ // Set to false to disable zooming
58
59
  this.enableZoom = true;
59
- this.zoomSpeed = 1.0; // Set to false to disable rotating
60
+ this.zoomSpeed = 1.0;
60
61
 
62
+ // Set to false to disable rotating
61
63
  this.enableRotate = true;
62
- this.rotateSpeed = 1.0; // Set to false to disable panning
64
+ this.rotateSpeed = 1.0;
63
65
 
66
+ // Set to false to disable panning
64
67
  this.enablePan = true;
65
68
  this.panSpeed = 1.0;
66
69
  this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
67
-
68
70
  this.keyPanSpeed = 7.0; // pixels moved per arrow key push
71
+
69
72
  // Set to true to automatically rotate around the target
70
73
  // If auto-rotate is enabled, you must call controls.update() in your animation loop
71
-
72
74
  this.autoRotate = false;
73
75
  this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
74
- // The four arrow keys
75
76
 
77
+ // The four arrow keys
76
78
  this.keys = {
77
79
  LEFT: 'ArrowLeft',
78
80
  UP: 'ArrowUp',
79
81
  RIGHT: 'ArrowRight',
80
82
  BOTTOM: 'ArrowDown'
81
- }; // Mouse buttons
83
+ };
82
84
 
85
+ // Mouse buttons
83
86
  this.mouseButtons = {
84
87
  LEFT: THREE.MOUSE.ROTATE,
85
88
  MIDDLE: THREE.MOUSE.DOLLY,
86
89
  RIGHT: THREE.MOUSE.PAN
87
- }; // Touch fingers
90
+ };
88
91
 
92
+ // Touch fingers
89
93
  this.touches = {
90
94
  ONE: THREE.TOUCH.ROTATE,
91
95
  TWO: THREE.TOUCH.DOLLY_PAN
92
- }; // for reset
96
+ };
93
97
 
98
+ // for reset
94
99
  this.target0 = this.target.clone();
95
100
  this.position0 = this.object.position.clone();
96
- this.zoom0 = this.object.zoom; // the target DOM element for key events
101
+ this.zoom0 = this.object.zoom;
97
102
 
98
- this._domElementKeyEvents = null; //
103
+ // the target DOM element for key events
104
+ this._domElementKeyEvents = null;
105
+
106
+ //
99
107
  // public methods
100
108
  //
101
109
 
@@ -142,13 +150,14 @@
142
150
  scope.update();
143
151
  state = STATE.NONE;
144
152
 
145
- }; // this method is exposed, but perhaps it would be better if we can make it private...
146
-
153
+ };
147
154
 
155
+ // this method is exposed, but perhaps it would be better if we can make it private...
148
156
  this.update = function () {
149
157
 
150
- const offset = new THREE.Vector3(); // so camera.up is the orbit axis
158
+ const offset = new THREE.Vector3();
151
159
 
160
+ // so camera.up is the orbit axis
152
161
  const quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );
153
162
  const quatInverse = quat.clone().invert();
154
163
  const lastPosition = new THREE.Vector3();
@@ -157,12 +166,13 @@
157
166
  return function update() {
158
167
 
159
168
  const position = scope.object.position;
160
- offset.copy( position ).sub( scope.target ); // rotate offset to "y-axis-is-up" space
169
+ offset.copy( position ).sub( scope.target );
161
170
 
162
- offset.applyQuaternion( quat ); // angle from z-axis around y-axis
171
+ // rotate offset to "y-axis-is-up" space
172
+ offset.applyQuaternion( quat );
163
173
 
174
+ // angle from z-axis around y-axis
164
175
  spherical.setFromVector3( offset );
165
-
166
176
  if ( scope.autoRotate && state === STATE.NONE ) {
167
177
 
168
178
  rotateLeft( getAutoRotationAngle() );
@@ -179,17 +189,16 @@
179
189
  spherical.theta += sphericalDelta.theta;
180
190
  spherical.phi += sphericalDelta.phi;
181
191
 
182
- } // restrict theta to be between desired limits
192
+ }
183
193
 
194
+ // restrict theta to be between desired limits
184
195
 
185
196
  let min = scope.minAzimuthAngle;
186
197
  let max = scope.maxAzimuthAngle;
187
-
188
198
  if ( isFinite( min ) && isFinite( max ) ) {
189
199
 
190
200
  if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;
191
201
  if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;
192
-
193
202
  if ( min <= max ) {
194
203
 
195
204
  spherical.theta = Math.max( min, Math.min( max, spherical.theta ) );
@@ -200,14 +209,17 @@
200
209
 
201
210
  }
202
211
 
203
- } // restrict phi to be between desired limits
204
-
212
+ }
205
213
 
214
+ // restrict phi to be between desired limits
206
215
  spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );
207
216
  spherical.makeSafe();
208
- spherical.radius *= scale; // restrict radius to be between desired limits
217
+ spherical.radius *= scale;
218
+
219
+ // restrict radius to be between desired limits
220
+ spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );
209
221
 
210
- spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); // move target to panned location
222
+ // move target to panned location
211
223
 
212
224
  if ( scope.enableDamping === true ) {
213
225
 
@@ -219,12 +231,12 @@
219
231
 
220
232
  }
221
233
 
222
- offset.setFromSpherical( spherical ); // rotate offset back to "camera-up-vector-is-up" space
234
+ offset.setFromSpherical( spherical );
223
235
 
236
+ // rotate offset back to "camera-up-vector-is-up" space
224
237
  offset.applyQuaternion( quatInverse );
225
238
  position.copy( scope.target ).add( offset );
226
239
  scope.object.lookAt( scope.target );
227
-
228
240
  if ( scope.enableDamping === true ) {
229
241
 
230
242
  sphericalDelta.theta *= 1 - scope.dampingFactor;
@@ -238,7 +250,9 @@
238
250
 
239
251
  }
240
252
 
241
- scale = 1; // update condition is:
253
+ scale = 1;
254
+
255
+ // update condition is:
242
256
  // min(camera displacement, camera rotation in radians)^2 > EPS
243
257
  // using small-angle approximation cos(x/2) = 1 - x^2 / 8
244
258
 
@@ -257,7 +271,6 @@
257
271
  };
258
272
 
259
273
  }();
260
-
261
274
  this.dispose = function () {
262
275
 
263
276
  scope.domElement.removeEventListener( 'contextmenu', onContextMenu );
@@ -266,18 +279,20 @@
266
279
  scope.domElement.removeEventListener( 'wheel', onMouseWheel );
267
280
  scope.domElement.removeEventListener( 'pointermove', onPointerMove );
268
281
  scope.domElement.removeEventListener( 'pointerup', onPointerUp );
269
-
270
282
  if ( scope._domElementKeyEvents !== null ) {
271
283
 
272
284
  scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );
273
285
 
274
- } //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
286
+ }
275
287
 
276
- }; //
288
+ //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
289
+
290
+ };
291
+
292
+ //
277
293
  // internals
278
294
  //
279
295
 
280
-
281
296
  const scope = this;
282
297
  const STATE = {
283
298
  NONE: - 1,
@@ -290,8 +305,9 @@
290
305
  TOUCH_DOLLY_ROTATE: 6
291
306
  };
292
307
  let state = STATE.NONE;
293
- const EPS = 0.000001; // current position in spherical coordinates
308
+ const EPS = 0.000001;
294
309
 
310
+ // current position in spherical coordinates
295
311
  const spherical = new THREE.Spherical();
296
312
  const sphericalDelta = new THREE.Spherical();
297
313
  let scale = 1;
@@ -308,7 +324,6 @@
308
324
  const dollyDelta = new THREE.Vector2();
309
325
  const pointers = [];
310
326
  const pointerPositions = {};
311
-
312
327
  function getAutoRotationAngle() {
313
328
 
314
329
  return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
@@ -339,14 +354,12 @@
339
354
  return function panLeft( distance, objectMatrix ) {
340
355
 
341
356
  v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix
342
-
343
357
  v.multiplyScalar( - distance );
344
358
  panOffset.add( v );
345
359
 
346
360
  };
347
361
 
348
362
  }();
349
-
350
363
  const panUp = function () {
351
364
 
352
365
  const v = new THREE.Vector3();
@@ -368,25 +381,26 @@
368
381
 
369
382
  };
370
383
 
371
- }(); // deltaX and deltaY are in pixels; right and down are positive
372
-
384
+ }();
373
385
 
386
+ // deltaX and deltaY are in pixels; right and down are positive
374
387
  const pan = function () {
375
388
 
376
389
  const offset = new THREE.Vector3();
377
390
  return function pan( deltaX, deltaY ) {
378
391
 
379
392
  const element = scope.domElement;
380
-
381
393
  if ( scope.object.isPerspectiveCamera ) {
382
394
 
383
395
  // perspective
384
396
  const position = scope.object.position;
385
397
  offset.copy( position ).sub( scope.target );
386
- let targetDistance = offset.length(); // half of the fov is center to top of screen
398
+ let targetDistance = offset.length();
387
399
 
388
- targetDistance *= Math.tan( scope.object.fov / 2 * Math.PI / 180.0 ); // we use only clientHeight here so aspect ratio does not distort speed
400
+ // half of the fov is center to top of screen
401
+ targetDistance *= Math.tan( scope.object.fov / 2 * Math.PI / 180.0 );
389
402
 
403
+ // we use only clientHeight here so aspect ratio does not distort speed
390
404
  panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );
391
405
  panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );
392
406
 
@@ -407,7 +421,6 @@
407
421
  };
408
422
 
409
423
  }();
410
-
411
424
  function dollyOut( dollyScale ) {
412
425
 
413
426
  if ( scope.object.isPerspectiveCamera ) {
@@ -448,11 +461,12 @@
448
461
 
449
462
  }
450
463
 
451
- } //
464
+ }
465
+
466
+ //
452
467
  // event callbacks - update the object state
453
468
  //
454
469
 
455
-
456
470
  function handleMouseDownRotate( event ) {
457
471
 
458
472
  rotateStart.set( event.clientX, event.clientY );
@@ -488,7 +502,6 @@
488
502
 
489
503
  dollyEnd.set( event.clientX, event.clientY );
490
504
  dollyDelta.subVectors( dollyEnd, dollyStart );
491
-
492
505
  if ( dollyDelta.y > 0 ) {
493
506
 
494
507
  dollyOut( getZoomScale() );
@@ -533,26 +546,58 @@
533
546
  function handleKeyDown( event ) {
534
547
 
535
548
  let needsUpdate = false;
536
-
537
549
  switch ( event.code ) {
538
550
 
539
551
  case scope.keys.UP:
540
- pan( 0, scope.keyPanSpeed );
552
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
553
+
554
+ rotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
555
+
556
+ } else {
557
+
558
+ pan( 0, scope.keyPanSpeed );
559
+
560
+ }
561
+
541
562
  needsUpdate = true;
542
563
  break;
543
-
544
564
  case scope.keys.BOTTOM:
545
- pan( 0, - scope.keyPanSpeed );
565
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
566
+
567
+ rotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
568
+
569
+ } else {
570
+
571
+ pan( 0, - scope.keyPanSpeed );
572
+
573
+ }
574
+
546
575
  needsUpdate = true;
547
576
  break;
548
-
549
577
  case scope.keys.LEFT:
550
- pan( scope.keyPanSpeed, 0 );
578
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
579
+
580
+ rotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
581
+
582
+ } else {
583
+
584
+ pan( scope.keyPanSpeed, 0 );
585
+
586
+ }
587
+
551
588
  needsUpdate = true;
552
589
  break;
553
-
554
590
  case scope.keys.RIGHT:
555
- pan( - scope.keyPanSpeed, 0 );
591
+ if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
592
+
593
+ rotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
594
+
595
+ } else {
596
+
597
+ pan( - scope.keyPanSpeed, 0 );
598
+
599
+ }
600
+
556
601
  needsUpdate = true;
557
602
  break;
558
603
 
@@ -693,26 +738,26 @@
693
738
  if ( scope.enableZoom ) handleTouchMoveDolly( event );
694
739
  if ( scope.enableRotate ) handleTouchMoveRotate( event );
695
740
 
696
- } //
741
+ }
742
+
743
+ //
697
744
  // event handlers - FSM: listen for events and reset state
698
745
  //
699
746
 
700
-
701
747
  function onPointerDown( event ) {
702
748
 
703
749
  if ( scope.enabled === false ) return;
704
-
705
750
  if ( pointers.length === 0 ) {
706
751
 
707
752
  scope.domElement.setPointerCapture( event.pointerId );
708
753
  scope.domElement.addEventListener( 'pointermove', onPointerMove );
709
754
  scope.domElement.addEventListener( 'pointerup', onPointerUp );
710
755
 
711
- } //
756
+ }
712
757
 
758
+ //
713
759
 
714
760
  addPointer( event );
715
-
716
761
  if ( event.pointerType === 'touch' ) {
717
762
 
718
763
  onTouchStart( event );
@@ -728,7 +773,6 @@
728
773
  function onPointerMove( event ) {
729
774
 
730
775
  if ( scope.enabled === false ) return;
731
-
732
776
  if ( event.pointerType === 'touch' ) {
733
777
 
734
778
  onTouchMove( event );
@@ -744,7 +788,6 @@
744
788
  function onPointerUp( event ) {
745
789
 
746
790
  removePointer( event );
747
-
748
791
  if ( pointers.length === 0 ) {
749
792
 
750
793
  scope.domElement.releasePointerCapture( event.pointerId );
@@ -767,21 +810,17 @@
767
810
  function onMouseDown( event ) {
768
811
 
769
812
  let mouseAction;
770
-
771
813
  switch ( event.button ) {
772
814
 
773
815
  case 0:
774
816
  mouseAction = scope.mouseButtons.LEFT;
775
817
  break;
776
-
777
818
  case 1:
778
819
  mouseAction = scope.mouseButtons.MIDDLE;
779
820
  break;
780
-
781
821
  case 2:
782
822
  mouseAction = scope.mouseButtons.RIGHT;
783
823
  break;
784
-
785
824
  default:
786
825
  mouseAction = - 1;
787
826
 
@@ -794,7 +833,6 @@
794
833
  handleMouseDownDolly( event );
795
834
  state = STATE.DOLLY;
796
835
  break;
797
-
798
836
  case THREE.MOUSE.ROTATE:
799
837
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
800
838
 
@@ -811,7 +849,6 @@
811
849
  }
812
850
 
813
851
  break;
814
-
815
852
  case THREE.MOUSE.PAN:
816
853
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
817
854
 
@@ -828,7 +865,6 @@
828
865
  }
829
866
 
830
867
  break;
831
-
832
868
  default:
833
869
  state = STATE.NONE;
834
870
 
@@ -844,20 +880,16 @@
844
880
 
845
881
  function onMouseMove( event ) {
846
882
 
847
- if ( scope.enabled === false ) return;
848
-
849
883
  switch ( state ) {
850
884
 
851
885
  case STATE.ROTATE:
852
886
  if ( scope.enableRotate === false ) return;
853
887
  handleMouseMoveRotate( event );
854
888
  break;
855
-
856
889
  case STATE.DOLLY:
857
890
  if ( scope.enableZoom === false ) return;
858
891
  handleMouseMoveDolly( event );
859
892
  break;
860
-
861
893
  case STATE.PAN:
862
894
  if ( scope.enablePan === false ) return;
863
895
  handleMouseMovePan( event );
@@ -887,7 +919,6 @@
887
919
  function onTouchStart( event ) {
888
920
 
889
921
  trackPointer( event );
890
-
891
922
  switch ( pointers.length ) {
892
923
 
893
924
  case 1:
@@ -898,20 +929,17 @@
898
929
  handleTouchStartRotate();
899
930
  state = STATE.TOUCH_ROTATE;
900
931
  break;
901
-
902
932
  case THREE.TOUCH.PAN:
903
933
  if ( scope.enablePan === false ) return;
904
934
  handleTouchStartPan();
905
935
  state = STATE.TOUCH_PAN;
906
936
  break;
907
-
908
937
  default:
909
938
  state = STATE.NONE;
910
939
 
911
940
  }
912
941
 
913
942
  break;
914
-
915
943
  case 2:
916
944
  switch ( scope.touches.TWO ) {
917
945
 
@@ -920,20 +948,17 @@
920
948
  handleTouchStartDollyPan();
921
949
  state = STATE.TOUCH_DOLLY_PAN;
922
950
  break;
923
-
924
951
  case THREE.TOUCH.DOLLY_ROTATE:
925
952
  if ( scope.enableZoom === false && scope.enableRotate === false ) return;
926
953
  handleTouchStartDollyRotate();
927
954
  state = STATE.TOUCH_DOLLY_ROTATE;
928
955
  break;
929
-
930
956
  default:
931
957
  state = STATE.NONE;
932
958
 
933
959
  }
934
960
 
935
961
  break;
936
-
937
962
  default:
938
963
  state = STATE.NONE;
939
964
 
@@ -950,7 +975,6 @@
950
975
  function onTouchMove( event ) {
951
976
 
952
977
  trackPointer( event );
953
-
954
978
  switch ( state ) {
955
979
 
956
980
  case STATE.TOUCH_ROTATE:
@@ -958,25 +982,21 @@
958
982
  handleTouchMoveRotate( event );
959
983
  scope.update();
960
984
  break;
961
-
962
985
  case STATE.TOUCH_PAN:
963
986
  if ( scope.enablePan === false ) return;
964
987
  handleTouchMovePan( event );
965
988
  scope.update();
966
989
  break;
967
-
968
990
  case STATE.TOUCH_DOLLY_PAN:
969
991
  if ( scope.enableZoom === false && scope.enablePan === false ) return;
970
992
  handleTouchMoveDollyPan( event );
971
993
  scope.update();
972
994
  break;
973
-
974
995
  case STATE.TOUCH_DOLLY_ROTATE:
975
996
  if ( scope.enableZoom === false && scope.enableRotate === false ) return;
976
997
  handleTouchMoveDollyRotate( event );
977
998
  scope.update();
978
999
  break;
979
-
980
1000
  default:
981
1001
  state = STATE.NONE;
982
1002
 
@@ -1000,7 +1020,6 @@
1000
1020
  function removePointer( event ) {
1001
1021
 
1002
1022
  delete pointerPositions[ event.pointerId ];
1003
-
1004
1023
  for ( let i = 0; i < pointers.length; i ++ ) {
1005
1024
 
1006
1025
  if ( pointers[ i ].pointerId == event.pointerId ) {
@@ -1017,7 +1036,6 @@
1017
1036
  function trackPointer( event ) {
1018
1037
 
1019
1038
  let position = pointerPositions[ event.pointerId ];
1020
-
1021
1039
  if ( position === undefined ) {
1022
1040
 
1023
1041
  position = new THREE.Vector2();
@@ -1034,21 +1052,26 @@
1034
1052
  const pointer = event.pointerId === pointers[ 0 ].pointerId ? pointers[ 1 ] : pointers[ 0 ];
1035
1053
  return pointerPositions[ pointer.pointerId ];
1036
1054
 
1037
- } //
1055
+ }
1038
1056
 
1057
+ //
1039
1058
 
1040
1059
  scope.domElement.addEventListener( 'contextmenu', onContextMenu );
1041
1060
  scope.domElement.addEventListener( 'pointerdown', onPointerDown );
1042
1061
  scope.domElement.addEventListener( 'pointercancel', onPointerCancel );
1043
1062
  scope.domElement.addEventListener( 'wheel', onMouseWheel, {
1044
1063
  passive: false
1045
- } ); // force an update at start
1064
+ } );
1065
+
1066
+ // force an update at start
1046
1067
 
1047
1068
  this.update();
1048
1069
 
1049
1070
  }
1050
1071
 
1051
- } // This set of controls performs orbiting, dollying (zooming), and panning.
1072
+ }
1073
+
1074
+ // This set of controls performs orbiting, dollying (zooming), and panning.
1052
1075
  // Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
1053
1076
  // This is very similar to OrbitControls, another set of touch behavior
1054
1077
  //
@@ -1056,7 +1079,6 @@
1056
1079
  // Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
1057
1080
  // Pan - left mouse, or arrow keys / touch: one-finger move
1058
1081
 
1059
-
1060
1082
  class MapControls extends OrbitControls {
1061
1083
 
1062
1084
  constructor( object, domElement ) {