super-three 0.144.0 → 0.147.1

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 (450) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +737 -388
  3. package/build/three.js +737 -388
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +911 -409
  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 +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +125 -99
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +85 -170
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +141 -317
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +113 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +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 +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +40 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +228 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +287 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +409 -706
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/NRRDLoader.js +44 -84
  98. package/examples/js/loaders/OBJLoader.js +50 -65
  99. package/examples/js/loaders/PCDLoader.js +34 -29
  100. package/examples/js/loaders/PDBLoader.js +17 -13
  101. package/examples/js/loaders/PLYLoader.js +62 -48
  102. package/examples/js/loaders/PRWMLoader.js +11 -22
  103. package/examples/js/loaders/PVRLoader.js +7 -16
  104. package/examples/js/loaders/RGBELoader.js +36 -61
  105. package/examples/js/loaders/RGBMLoader.js +26 -87
  106. package/examples/js/loaders/STLLoader.js +20 -27
  107. package/examples/js/loaders/SVGLoader.js +361 -233
  108. package/examples/js/loaders/TDSLoader.js +81 -118
  109. package/examples/js/loaders/TGALoader.js +39 -41
  110. package/examples/js/loaders/TIFFLoader.js +0 -1
  111. package/examples/js/loaders/TTFLoader.js +0 -8
  112. package/examples/js/loaders/TiltLoader.js +14 -15
  113. package/examples/js/loaders/VOXLoader.js +8 -16
  114. package/examples/js/loaders/VRMLLoader.js +243 -340
  115. package/examples/js/loaders/VTKLoader.js +101 -118
  116. package/examples/js/loaders/XYZLoader.js +2 -4
  117. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  118. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  119. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  120. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  121. package/examples/js/math/Capsule.js +0 -17
  122. package/examples/js/math/ColorConverter.js +3 -3
  123. package/examples/js/math/ConvexHull.js +185 -141
  124. package/examples/js/math/ImprovedNoise.js +1 -1
  125. package/examples/js/math/Lut.js +8 -15
  126. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  127. package/examples/js/math/OBB.js +90 -49
  128. package/examples/js/math/Octree.js +2 -57
  129. package/examples/js/math/SimplexNoise.js +74 -88
  130. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  131. package/examples/js/misc/GPUComputationRenderer.js +26 -16
  132. package/examples/js/misc/Gyroscope.js +5 -9
  133. package/examples/js/misc/MD2Character.js +14 -23
  134. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  135. package/examples/js/misc/MorphAnimMesh.js +0 -6
  136. package/examples/js/misc/MorphBlendMesh.js +3 -30
  137. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  138. package/examples/js/misc/RollerCoaster.js +17 -24
  139. package/examples/js/misc/TubePainter.js +18 -12
  140. package/examples/js/misc/Volume.js +16 -45
  141. package/examples/js/misc/VolumeSlice.js +14 -24
  142. package/examples/js/modifiers/CurveModifier.js +19 -21
  143. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  144. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  145. package/examples/js/modifiers/TessellateModifier.js +2 -9
  146. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  147. package/examples/js/objects/Lensflare.js +47 -38
  148. package/examples/js/objects/LightningStorm.js +10 -13
  149. package/examples/js/objects/MarchingCubes.js +80 -59
  150. package/examples/js/objects/Reflector.js +22 -20
  151. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  152. package/examples/js/objects/Refractor.js +52 -30
  153. package/examples/js/objects/ShadowMesh.js +1 -2
  154. package/examples/js/objects/Sky.js +2 -7
  155. package/examples/js/objects/Water.js +23 -18
  156. package/examples/js/objects/Water2.js +20 -19
  157. package/examples/js/physics/AmmoPhysics.js +23 -20
  158. package/examples/js/physics/OimoPhysics.js +19 -17
  159. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  160. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  161. package/examples/js/postprocessing/BloomPass.js +38 -17
  162. package/examples/js/postprocessing/BokehPass.js +29 -12
  163. package/examples/js/postprocessing/ClearPass.js +1 -6
  164. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  165. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  166. package/examples/js/postprocessing/EffectComposer.js +25 -32
  167. package/examples/js/postprocessing/FilmPass.js +7 -5
  168. package/examples/js/postprocessing/GlitchPass.js +10 -11
  169. package/examples/js/postprocessing/HalftonePass.js +9 -9
  170. package/examples/js/postprocessing/LUTPass.js +2 -15
  171. package/examples/js/postprocessing/MaskPass.js +20 -17
  172. package/examples/js/postprocessing/OutlinePass.js +45 -36
  173. package/examples/js/postprocessing/Pass.js +11 -14
  174. package/examples/js/postprocessing/RenderPass.js +3 -7
  175. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -8
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +236 -170
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  254. package/examples/jsm/animation/MMDPhysics.js +25 -0
  255. package/examples/jsm/capabilities/WebGPU.js +3 -1
  256. package/examples/jsm/controls/FirstPersonControls.js +20 -20
  257. package/examples/jsm/controls/FlyControls.js +16 -17
  258. package/examples/jsm/controls/OrbitControls.js +44 -4
  259. package/examples/jsm/controls/TrackballControls.js +14 -2
  260. package/examples/jsm/controls/TransformControls.js +1 -1
  261. package/examples/jsm/csm/CSM.js +1 -0
  262. package/examples/jsm/csm/CSMHelper.js +30 -0
  263. package/examples/jsm/exporters/GLTFExporter.js +0 -79
  264. package/examples/jsm/exporters/USDZExporter.js +93 -1
  265. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  266. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  267. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  268. package/examples/jsm/helpers/ViewHelper.js +24 -0
  269. package/examples/jsm/interactive/HTMLMesh.js +5 -6
  270. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  271. package/examples/jsm/libs/flow.module.js +610 -160
  272. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  273. package/examples/jsm/lines/LineSegments2.js +4 -0
  274. package/examples/jsm/loaders/3DMLoader.js +1 -2
  275. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  276. package/examples/jsm/loaders/FBXLoader.js +18 -2
  277. package/examples/jsm/loaders/GLTFLoader.js +269 -428
  278. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  279. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  280. package/examples/jsm/loaders/LottieLoader.js +4 -2
  281. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  282. package/examples/jsm/loaders/PCDLoader.js +1 -1
  283. package/examples/jsm/loaders/PLYLoader.js +68 -16
  284. package/examples/jsm/loaders/SVGLoader.js +227 -14
  285. package/examples/jsm/loaders/USDZLoader.js +351 -111
  286. package/examples/jsm/loaders/VRMLLoader.js +13 -1
  287. package/examples/jsm/math/ConvexHull.js +4 -4
  288. package/examples/jsm/math/Octree.js +1 -1
  289. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  290. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  291. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
  292. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
  293. package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
  294. package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
  295. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  296. package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
  297. package/examples/jsm/nodes/Nodes.js +30 -3
  298. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  299. package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
  300. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  301. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  302. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  303. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  304. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  305. package/examples/jsm/nodes/core/AttributeNode.js +31 -8
  306. package/examples/jsm/nodes/core/Node.js +1 -1
  307. package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
  308. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  309. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  310. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  311. package/examples/jsm/nodes/core/constants.js +13 -13
  312. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  313. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
  314. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  315. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  316. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  317. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  318. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  319. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  320. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  321. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  322. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  323. package/examples/jsm/nodes/materials/Materials.js +9 -7
  324. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  325. package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
  326. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  327. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
  328. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
  329. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  330. package/examples/jsm/nodes/math/MathNode.js +5 -5
  331. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  332. package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
  333. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
  334. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
  335. package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
  336. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  337. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  338. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  339. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  340. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  341. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  342. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  343. package/examples/jsm/nodes/utils/TimerNode.js +21 -1
  344. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  345. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  346. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  347. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  348. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  349. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  350. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  351. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  352. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  353. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  354. package/examples/jsm/postprocessing/OutlinePass.js +21 -1
  355. package/examples/jsm/postprocessing/Pass.js +2 -0
  356. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  357. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  358. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  359. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  360. package/examples/jsm/postprocessing/SavePass.js +17 -1
  361. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  362. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  363. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  364. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  365. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
  366. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  367. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  368. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  369. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  370. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
  371. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  372. package/examples/jsm/shaders/VelocityShader.js +128 -0
  373. package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
  374. package/examples/jsm/utils/SceneUtils.js +129 -4
  375. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  376. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  377. package/package.json +13 -13
  378. package/src/Three.js +1 -0
  379. package/src/animation/PropertyBinding.js +7 -0
  380. package/src/audio/AudioContext.js +5 -5
  381. package/src/cameras/CubeCamera.js +14 -14
  382. package/src/constants.js +1 -1
  383. package/src/core/InstancedBufferGeometry.js +1 -7
  384. package/src/core/InterleavedBufferAttribute.js +4 -4
  385. package/src/extras/Earcut.js +67 -67
  386. package/src/geometries/PolyhedronGeometry.js +1 -1
  387. package/src/geometries/ShapeGeometry.js +1 -1
  388. package/src/helpers/ArrowHelper.js +9 -0
  389. package/src/helpers/Box3Helper.js +7 -0
  390. package/src/helpers/BoxHelper.js +7 -1
  391. package/src/helpers/DirectionalLightHelper.js +5 -1
  392. package/src/helpers/GridHelper.js +7 -0
  393. package/src/helpers/HemisphereLightHelper.js +4 -1
  394. package/src/helpers/PlaneHelper.js +9 -0
  395. package/src/helpers/PointLightHelper.js +2 -1
  396. package/src/helpers/PolarGridHelper.js +7 -0
  397. package/src/helpers/SkeletonHelper.js +7 -0
  398. package/src/helpers/SpotLightHelper.js +4 -2
  399. package/src/lights/LightShadow.js +1 -2
  400. package/src/lights/PointLight.js +2 -2
  401. package/src/lights/SpotLight.js +2 -2
  402. package/src/loaders/FileLoader.js +4 -1
  403. package/src/loaders/ObjectLoader.js +5 -1
  404. package/src/materials/Material.js +1 -1
  405. package/src/materials/MeshPhysicalMaterial.js +1 -1
  406. package/src/math/Color.js +5 -5
  407. package/src/math/Matrix3.js +53 -18
  408. package/src/math/Ray.js +2 -5
  409. package/src/math/Sphere.js +36 -21
  410. package/src/objects/InstancedMesh.js +7 -0
  411. package/src/objects/LOD.js +25 -6
  412. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  413. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  414. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  415. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  416. package/src/renderers/WebGLRenderTarget.js +1 -1
  417. package/src/renderers/WebGLRenderer.js +36 -62
  418. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  419. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  420. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  421. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  422. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  423. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  424. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  425. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  426. package/src/renderers/shaders/ShaderChunk.js +3 -0
  427. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  428. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  429. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  430. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  431. package/src/renderers/shaders/ShaderLib.js +20 -6
  432. package/src/renderers/shaders/UniformsLib.js +1 -1
  433. package/src/renderers/shaders/UniformsUtils.js +15 -0
  434. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  435. package/src/renderers/webgl/WebGLBackground.js +15 -7
  436. package/src/renderers/webgl/WebGLLights.js +0 -4
  437. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  438. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  439. package/src/renderers/webgl/WebGLState.js +78 -41
  440. package/src/renderers/webgl/WebGLTextures.js +94 -39
  441. package/src/renderers/webgl/WebGLUniforms.js +152 -24
  442. package/src/renderers/webgl/WebGLUtils.js +1 -1
  443. package/src/renderers/webxr/WebXRController.js +46 -13
  444. package/src/renderers/webxr/WebXRManager.js +71 -3
  445. package/src/scenes/Scene.js +8 -0
  446. package/src/textures/CompressedArrayTexture.js +18 -0
  447. package/src/textures/Texture.js +2 -1
  448. package/examples/js/libs/lottie_canvas.js +0 -12751
  449. package/examples/js/shaders/PixelShader.js +0 -51
  450. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -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,7 +16,6 @@
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 ) {
@@ -24,76 +24,86 @@
24
24
  this.object = object;
25
25
  this.domElement = domElement;
26
26
  this.domElement.style.touchAction = 'none'; // disable touch scroll
27
- // Set to false to disable this control
28
27
 
29
- 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;
30
30
 
31
- 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();
32
33
 
34
+ // How far you can dolly in and out ( PerspectiveCamera only )
33
35
  this.minDistance = 0;
34
- this.maxDistance = Infinity; // How far you can zoom in and out ( OrthographicCamera only )
36
+ this.maxDistance = Infinity;
35
37
 
38
+ // How far you can zoom in and out ( OrthographicCamera only )
36
39
  this.minZoom = 0;
37
- this.maxZoom = Infinity; // How far you can orbit vertically, upper and lower limits.
38
- // Range is 0 to Math.PI radians.
40
+ this.maxZoom = Infinity;
39
41
 
42
+ // How far you can orbit vertically, upper and lower limits.
43
+ // Range is 0 to Math.PI radians.
40
44
  this.minPolarAngle = 0; // radians
41
-
42
45
  this.maxPolarAngle = Math.PI; // radians
46
+
43
47
  // How far you can orbit horizontally, upper and lower limits.
44
48
  // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
45
-
46
49
  this.minAzimuthAngle = - Infinity; // radians
47
-
48
50
  this.maxAzimuthAngle = Infinity; // radians
51
+
49
52
  // Set to true to enable damping (inertia)
50
53
  // If damping is enabled, you must call controls.update() in your animation loop
51
-
52
54
  this.enableDamping = false;
53
- this.dampingFactor = 0.05; // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
54
- // Set to false to disable zooming
55
+ this.dampingFactor = 0.05;
55
56
 
57
+ // This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
58
+ // Set to false to disable zooming
56
59
  this.enableZoom = true;
57
- this.zoomSpeed = 1.0; // Set to false to disable rotating
60
+ this.zoomSpeed = 1.0;
58
61
 
62
+ // Set to false to disable rotating
59
63
  this.enableRotate = true;
60
- this.rotateSpeed = 1.0; // Set to false to disable panning
64
+ this.rotateSpeed = 1.0;
61
65
 
66
+ // Set to false to disable panning
62
67
  this.enablePan = true;
63
68
  this.panSpeed = 1.0;
64
69
  this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
65
-
66
70
  this.keyPanSpeed = 7.0; // pixels moved per arrow key push
71
+
67
72
  // Set to true to automatically rotate around the target
68
73
  // If auto-rotate is enabled, you must call controls.update() in your animation loop
69
-
70
74
  this.autoRotate = false;
71
75
  this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
72
- // The four arrow keys
73
76
 
77
+ // The four arrow keys
74
78
  this.keys = {
75
79
  LEFT: 'ArrowLeft',
76
80
  UP: 'ArrowUp',
77
81
  RIGHT: 'ArrowRight',
78
82
  BOTTOM: 'ArrowDown'
79
- }; // Mouse buttons
83
+ };
80
84
 
85
+ // Mouse buttons
81
86
  this.mouseButtons = {
82
87
  LEFT: THREE.MOUSE.ROTATE,
83
88
  MIDDLE: THREE.MOUSE.DOLLY,
84
89
  RIGHT: THREE.MOUSE.PAN
85
- }; // Touch fingers
90
+ };
86
91
 
92
+ // Touch fingers
87
93
  this.touches = {
88
94
  ONE: THREE.TOUCH.ROTATE,
89
95
  TWO: THREE.TOUCH.DOLLY_PAN
90
- }; // for reset
96
+ };
91
97
 
98
+ // for reset
92
99
  this.target0 = this.target.clone();
93
100
  this.position0 = this.object.position.clone();
94
- this.zoom0 = this.object.zoom; // the target DOM element for key events
101
+ this.zoom0 = this.object.zoom;
95
102
 
96
- this._domElementKeyEvents = null; //
103
+ // the target DOM element for key events
104
+ this._domElementKeyEvents = null;
105
+
106
+ //
97
107
  // public methods
98
108
  //
99
109
 
@@ -140,13 +150,14 @@
140
150
  scope.update();
141
151
  state = STATE.NONE;
142
152
 
143
- }; // this method is exposed, but perhaps it would be better if we can make it private...
144
-
153
+ };
145
154
 
155
+ // this method is exposed, but perhaps it would be better if we can make it private...
146
156
  this.update = function () {
147
157
 
148
- const offset = new THREE.Vector3(); // so camera.up is the orbit axis
158
+ const offset = new THREE.Vector3();
149
159
 
160
+ // so camera.up is the orbit axis
150
161
  const quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );
151
162
  const quatInverse = quat.clone().invert();
152
163
  const lastPosition = new THREE.Vector3();
@@ -155,12 +166,13 @@
155
166
  return function update() {
156
167
 
157
168
  const position = scope.object.position;
158
- offset.copy( position ).sub( scope.target ); // rotate offset to "y-axis-is-up" space
169
+ offset.copy( position ).sub( scope.target );
159
170
 
160
- offset.applyQuaternion( quat ); // angle from z-axis around y-axis
171
+ // rotate offset to "y-axis-is-up" space
172
+ offset.applyQuaternion( quat );
161
173
 
174
+ // angle from z-axis around y-axis
162
175
  spherical.setFromVector3( offset );
163
-
164
176
  if ( scope.autoRotate && state === STATE.NONE ) {
165
177
 
166
178
  rotateLeft( getAutoRotationAngle() );
@@ -177,17 +189,16 @@
177
189
  spherical.theta += sphericalDelta.theta;
178
190
  spherical.phi += sphericalDelta.phi;
179
191
 
180
- } // restrict theta to be between desired limits
192
+ }
181
193
 
194
+ // restrict theta to be between desired limits
182
195
 
183
196
  let min = scope.minAzimuthAngle;
184
197
  let max = scope.maxAzimuthAngle;
185
-
186
198
  if ( isFinite( min ) && isFinite( max ) ) {
187
199
 
188
200
  if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;
189
201
  if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;
190
-
191
202
  if ( min <= max ) {
192
203
 
193
204
  spherical.theta = Math.max( min, Math.min( max, spherical.theta ) );
@@ -198,14 +209,17 @@
198
209
 
199
210
  }
200
211
 
201
- } // restrict phi to be between desired limits
202
-
212
+ }
203
213
 
214
+ // restrict phi to be between desired limits
204
215
  spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );
205
216
  spherical.makeSafe();
206
- 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 ) );
207
221
 
208
- spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); // move target to panned location
222
+ // move target to panned location
209
223
 
210
224
  if ( scope.enableDamping === true ) {
211
225
 
@@ -217,12 +231,12 @@
217
231
 
218
232
  }
219
233
 
220
- offset.setFromSpherical( spherical ); // rotate offset back to "camera-up-vector-is-up" space
234
+ offset.setFromSpherical( spherical );
221
235
 
236
+ // rotate offset back to "camera-up-vector-is-up" space
222
237
  offset.applyQuaternion( quatInverse );
223
238
  position.copy( scope.target ).add( offset );
224
239
  scope.object.lookAt( scope.target );
225
-
226
240
  if ( scope.enableDamping === true ) {
227
241
 
228
242
  sphericalDelta.theta *= 1 - scope.dampingFactor;
@@ -236,7 +250,9 @@
236
250
 
237
251
  }
238
252
 
239
- scale = 1; // update condition is:
253
+ scale = 1;
254
+
255
+ // update condition is:
240
256
  // min(camera displacement, camera rotation in radians)^2 > EPS
241
257
  // using small-angle approximation cos(x/2) = 1 - x^2 / 8
242
258
 
@@ -255,7 +271,6 @@
255
271
  };
256
272
 
257
273
  }();
258
-
259
274
  this.dispose = function () {
260
275
 
261
276
  scope.domElement.removeEventListener( 'contextmenu', onContextMenu );
@@ -264,18 +279,20 @@
264
279
  scope.domElement.removeEventListener( 'wheel', onMouseWheel );
265
280
  scope.domElement.removeEventListener( 'pointermove', onPointerMove );
266
281
  scope.domElement.removeEventListener( 'pointerup', onPointerUp );
267
-
268
282
  if ( scope._domElementKeyEvents !== null ) {
269
283
 
270
284
  scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );
271
285
 
272
- } //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
286
+ }
287
+
288
+ //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
289
+
290
+ };
273
291
 
274
- }; //
292
+ //
275
293
  // internals
276
294
  //
277
295
 
278
-
279
296
  const scope = this;
280
297
  const STATE = {
281
298
  NONE: - 1,
@@ -288,8 +305,9 @@
288
305
  TOUCH_DOLLY_ROTATE: 6
289
306
  };
290
307
  let state = STATE.NONE;
291
- const EPS = 0.000001; // current position in spherical coordinates
308
+ const EPS = 0.000001;
292
309
 
310
+ // current position in spherical coordinates
293
311
  const spherical = new THREE.Spherical();
294
312
  const sphericalDelta = new THREE.Spherical();
295
313
  let scale = 1;
@@ -306,7 +324,6 @@
306
324
  const dollyDelta = new THREE.Vector2();
307
325
  const pointers = [];
308
326
  const pointerPositions = {};
309
-
310
327
  function getAutoRotationAngle() {
311
328
 
312
329
  return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
@@ -337,14 +354,12 @@
337
354
  return function panLeft( distance, objectMatrix ) {
338
355
 
339
356
  v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix
340
-
341
357
  v.multiplyScalar( - distance );
342
358
  panOffset.add( v );
343
359
 
344
360
  };
345
361
 
346
362
  }();
347
-
348
363
  const panUp = function () {
349
364
 
350
365
  const v = new THREE.Vector3();
@@ -366,25 +381,26 @@
366
381
 
367
382
  };
368
383
 
369
- }(); // deltaX and deltaY are in pixels; right and down are positive
370
-
384
+ }();
371
385
 
386
+ // deltaX and deltaY are in pixels; right and down are positive
372
387
  const pan = function () {
373
388
 
374
389
  const offset = new THREE.Vector3();
375
390
  return function pan( deltaX, deltaY ) {
376
391
 
377
392
  const element = scope.domElement;
378
-
379
393
  if ( scope.object.isPerspectiveCamera ) {
380
394
 
381
395
  // perspective
382
396
  const position = scope.object.position;
383
397
  offset.copy( position ).sub( scope.target );
384
- let targetDistance = offset.length(); // half of the fov is center to top of screen
398
+ let targetDistance = offset.length();
385
399
 
386
- 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 );
387
402
 
403
+ // we use only clientHeight here so aspect ratio does not distort speed
388
404
  panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );
389
405
  panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );
390
406
 
@@ -405,7 +421,6 @@
405
421
  };
406
422
 
407
423
  }();
408
-
409
424
  function dollyOut( dollyScale ) {
410
425
 
411
426
  if ( scope.object.isPerspectiveCamera ) {
@@ -446,11 +461,12 @@
446
461
 
447
462
  }
448
463
 
449
- } //
464
+ }
465
+
466
+ //
450
467
  // event callbacks - update the object state
451
468
  //
452
469
 
453
-
454
470
  function handleMouseDownRotate( event ) {
455
471
 
456
472
  rotateStart.set( event.clientX, event.clientY );
@@ -486,7 +502,6 @@
486
502
 
487
503
  dollyEnd.set( event.clientX, event.clientY );
488
504
  dollyDelta.subVectors( dollyEnd, dollyStart );
489
-
490
505
  if ( dollyDelta.y > 0 ) {
491
506
 
492
507
  dollyOut( getZoomScale() );
@@ -531,26 +546,58 @@
531
546
  function handleKeyDown( event ) {
532
547
 
533
548
  let needsUpdate = false;
534
-
535
549
  switch ( event.code ) {
536
550
 
537
551
  case scope.keys.UP:
538
- 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
+
539
562
  needsUpdate = true;
540
563
  break;
541
-
542
564
  case scope.keys.BOTTOM:
543
- 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
+
544
575
  needsUpdate = true;
545
576
  break;
546
-
547
577
  case scope.keys.LEFT:
548
- 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
+
549
588
  needsUpdate = true;
550
589
  break;
551
-
552
590
  case scope.keys.RIGHT:
553
- 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
+
554
601
  needsUpdate = true;
555
602
  break;
556
603
 
@@ -691,26 +738,26 @@
691
738
  if ( scope.enableZoom ) handleTouchMoveDolly( event );
692
739
  if ( scope.enableRotate ) handleTouchMoveRotate( event );
693
740
 
694
- } //
741
+ }
742
+
743
+ //
695
744
  // event handlers - FSM: listen for events and reset state
696
745
  //
697
746
 
698
-
699
747
  function onPointerDown( event ) {
700
748
 
701
749
  if ( scope.enabled === false ) return;
702
-
703
750
  if ( pointers.length === 0 ) {
704
751
 
705
752
  scope.domElement.setPointerCapture( event.pointerId );
706
753
  scope.domElement.addEventListener( 'pointermove', onPointerMove );
707
754
  scope.domElement.addEventListener( 'pointerup', onPointerUp );
708
755
 
709
- } //
756
+ }
710
757
 
758
+ //
711
759
 
712
760
  addPointer( event );
713
-
714
761
  if ( event.pointerType === 'touch' ) {
715
762
 
716
763
  onTouchStart( event );
@@ -726,7 +773,6 @@
726
773
  function onPointerMove( event ) {
727
774
 
728
775
  if ( scope.enabled === false ) return;
729
-
730
776
  if ( event.pointerType === 'touch' ) {
731
777
 
732
778
  onTouchMove( event );
@@ -742,7 +788,6 @@
742
788
  function onPointerUp( event ) {
743
789
 
744
790
  removePointer( event );
745
-
746
791
  if ( pointers.length === 0 ) {
747
792
 
748
793
  scope.domElement.releasePointerCapture( event.pointerId );
@@ -765,21 +810,17 @@
765
810
  function onMouseDown( event ) {
766
811
 
767
812
  let mouseAction;
768
-
769
813
  switch ( event.button ) {
770
814
 
771
815
  case 0:
772
816
  mouseAction = scope.mouseButtons.LEFT;
773
817
  break;
774
-
775
818
  case 1:
776
819
  mouseAction = scope.mouseButtons.MIDDLE;
777
820
  break;
778
-
779
821
  case 2:
780
822
  mouseAction = scope.mouseButtons.RIGHT;
781
823
  break;
782
-
783
824
  default:
784
825
  mouseAction = - 1;
785
826
 
@@ -792,7 +833,6 @@
792
833
  handleMouseDownDolly( event );
793
834
  state = STATE.DOLLY;
794
835
  break;
795
-
796
836
  case THREE.MOUSE.ROTATE:
797
837
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
798
838
 
@@ -809,7 +849,6 @@
809
849
  }
810
850
 
811
851
  break;
812
-
813
852
  case THREE.MOUSE.PAN:
814
853
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
815
854
 
@@ -826,7 +865,6 @@
826
865
  }
827
866
 
828
867
  break;
829
-
830
868
  default:
831
869
  state = STATE.NONE;
832
870
 
@@ -848,12 +886,10 @@
848
886
  if ( scope.enableRotate === false ) return;
849
887
  handleMouseMoveRotate( event );
850
888
  break;
851
-
852
889
  case STATE.DOLLY:
853
890
  if ( scope.enableZoom === false ) return;
854
891
  handleMouseMoveDolly( event );
855
892
  break;
856
-
857
893
  case STATE.PAN:
858
894
  if ( scope.enablePan === false ) return;
859
895
  handleMouseMovePan( event );
@@ -883,7 +919,6 @@
883
919
  function onTouchStart( event ) {
884
920
 
885
921
  trackPointer( event );
886
-
887
922
  switch ( pointers.length ) {
888
923
 
889
924
  case 1:
@@ -894,20 +929,17 @@
894
929
  handleTouchStartRotate();
895
930
  state = STATE.TOUCH_ROTATE;
896
931
  break;
897
-
898
932
  case THREE.TOUCH.PAN:
899
933
  if ( scope.enablePan === false ) return;
900
934
  handleTouchStartPan();
901
935
  state = STATE.TOUCH_PAN;
902
936
  break;
903
-
904
937
  default:
905
938
  state = STATE.NONE;
906
939
 
907
940
  }
908
941
 
909
942
  break;
910
-
911
943
  case 2:
912
944
  switch ( scope.touches.TWO ) {
913
945
 
@@ -916,20 +948,17 @@
916
948
  handleTouchStartDollyPan();
917
949
  state = STATE.TOUCH_DOLLY_PAN;
918
950
  break;
919
-
920
951
  case THREE.TOUCH.DOLLY_ROTATE:
921
952
  if ( scope.enableZoom === false && scope.enableRotate === false ) return;
922
953
  handleTouchStartDollyRotate();
923
954
  state = STATE.TOUCH_DOLLY_ROTATE;
924
955
  break;
925
-
926
956
  default:
927
957
  state = STATE.NONE;
928
958
 
929
959
  }
930
960
 
931
961
  break;
932
-
933
962
  default:
934
963
  state = STATE.NONE;
935
964
 
@@ -946,7 +975,6 @@
946
975
  function onTouchMove( event ) {
947
976
 
948
977
  trackPointer( event );
949
-
950
978
  switch ( state ) {
951
979
 
952
980
  case STATE.TOUCH_ROTATE:
@@ -954,25 +982,21 @@
954
982
  handleTouchMoveRotate( event );
955
983
  scope.update();
956
984
  break;
957
-
958
985
  case STATE.TOUCH_PAN:
959
986
  if ( scope.enablePan === false ) return;
960
987
  handleTouchMovePan( event );
961
988
  scope.update();
962
989
  break;
963
-
964
990
  case STATE.TOUCH_DOLLY_PAN:
965
991
  if ( scope.enableZoom === false && scope.enablePan === false ) return;
966
992
  handleTouchMoveDollyPan( event );
967
993
  scope.update();
968
994
  break;
969
-
970
995
  case STATE.TOUCH_DOLLY_ROTATE:
971
996
  if ( scope.enableZoom === false && scope.enableRotate === false ) return;
972
997
  handleTouchMoveDollyRotate( event );
973
998
  scope.update();
974
999
  break;
975
-
976
1000
  default:
977
1001
  state = STATE.NONE;
978
1002
 
@@ -996,7 +1020,6 @@
996
1020
  function removePointer( event ) {
997
1021
 
998
1022
  delete pointerPositions[ event.pointerId ];
999
-
1000
1023
  for ( let i = 0; i < pointers.length; i ++ ) {
1001
1024
 
1002
1025
  if ( pointers[ i ].pointerId == event.pointerId ) {
@@ -1013,7 +1036,6 @@
1013
1036
  function trackPointer( event ) {
1014
1037
 
1015
1038
  let position = pointerPositions[ event.pointerId ];
1016
-
1017
1039
  if ( position === undefined ) {
1018
1040
 
1019
1041
  position = new THREE.Vector2();
@@ -1030,21 +1052,26 @@
1030
1052
  const pointer = event.pointerId === pointers[ 0 ].pointerId ? pointers[ 1 ] : pointers[ 0 ];
1031
1053
  return pointerPositions[ pointer.pointerId ];
1032
1054
 
1033
- } //
1055
+ }
1034
1056
 
1057
+ //
1035
1058
 
1036
1059
  scope.domElement.addEventListener( 'contextmenu', onContextMenu );
1037
1060
  scope.domElement.addEventListener( 'pointerdown', onPointerDown );
1038
1061
  scope.domElement.addEventListener( 'pointercancel', onPointerCancel );
1039
1062
  scope.domElement.addEventListener( 'wheel', onMouseWheel, {
1040
1063
  passive: false
1041
- } ); // force an update at start
1064
+ } );
1065
+
1066
+ // force an update at start
1042
1067
 
1043
1068
  this.update();
1044
1069
 
1045
1070
  }
1046
1071
 
1047
- } // This set of controls performs orbiting, dollying (zooming), and panning.
1072
+ }
1073
+
1074
+ // This set of controls performs orbiting, dollying (zooming), and panning.
1048
1075
  // Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
1049
1076
  // This is very similar to OrbitControls, another set of touch behavior
1050
1077
  //
@@ -1052,7 +1079,6 @@
1052
1079
  // Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
1053
1080
  // Pan - left mouse, or arrow keys / touch: one-finger move
1054
1081
 
1055
-
1056
1082
  class MapControls extends OrbitControls {
1057
1083
 
1058
1084
  constructor( object, domElement ) {