@needle-tools/three 0.145.4 → 0.146.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +75 -19
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -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;
102
+
103
+ // the target DOM element for key events
104
+ this._domElementKeyEvents = null;
95
105
 
96
- this._domElementKeyEvents = null; //
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,24 +546,20 @@
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
552
  pan( 0, scope.keyPanSpeed );
539
553
  needsUpdate = true;
540
554
  break;
541
-
542
555
  case scope.keys.BOTTOM:
543
556
  pan( 0, - scope.keyPanSpeed );
544
557
  needsUpdate = true;
545
558
  break;
546
-
547
559
  case scope.keys.LEFT:
548
560
  pan( scope.keyPanSpeed, 0 );
549
561
  needsUpdate = true;
550
562
  break;
551
-
552
563
  case scope.keys.RIGHT:
553
564
  pan( - scope.keyPanSpeed, 0 );
554
565
  needsUpdate = true;
@@ -691,26 +702,26 @@
691
702
  if ( scope.enableZoom ) handleTouchMoveDolly( event );
692
703
  if ( scope.enableRotate ) handleTouchMoveRotate( event );
693
704
 
694
- } //
705
+ }
706
+
707
+ //
695
708
  // event handlers - FSM: listen for events and reset state
696
709
  //
697
710
 
698
-
699
711
  function onPointerDown( event ) {
700
712
 
701
713
  if ( scope.enabled === false ) return;
702
-
703
714
  if ( pointers.length === 0 ) {
704
715
 
705
716
  scope.domElement.setPointerCapture( event.pointerId );
706
717
  scope.domElement.addEventListener( 'pointermove', onPointerMove );
707
718
  scope.domElement.addEventListener( 'pointerup', onPointerUp );
708
719
 
709
- } //
720
+ }
710
721
 
722
+ //
711
723
 
712
724
  addPointer( event );
713
-
714
725
  if ( event.pointerType === 'touch' ) {
715
726
 
716
727
  onTouchStart( event );
@@ -726,7 +737,6 @@
726
737
  function onPointerMove( event ) {
727
738
 
728
739
  if ( scope.enabled === false ) return;
729
-
730
740
  if ( event.pointerType === 'touch' ) {
731
741
 
732
742
  onTouchMove( event );
@@ -742,7 +752,6 @@
742
752
  function onPointerUp( event ) {
743
753
 
744
754
  removePointer( event );
745
-
746
755
  if ( pointers.length === 0 ) {
747
756
 
748
757
  scope.domElement.releasePointerCapture( event.pointerId );
@@ -765,21 +774,17 @@
765
774
  function onMouseDown( event ) {
766
775
 
767
776
  let mouseAction;
768
-
769
777
  switch ( event.button ) {
770
778
 
771
779
  case 0:
772
780
  mouseAction = scope.mouseButtons.LEFT;
773
781
  break;
774
-
775
782
  case 1:
776
783
  mouseAction = scope.mouseButtons.MIDDLE;
777
784
  break;
778
-
779
785
  case 2:
780
786
  mouseAction = scope.mouseButtons.RIGHT;
781
787
  break;
782
-
783
788
  default:
784
789
  mouseAction = - 1;
785
790
 
@@ -792,7 +797,6 @@
792
797
  handleMouseDownDolly( event );
793
798
  state = STATE.DOLLY;
794
799
  break;
795
-
796
800
  case THREE.MOUSE.ROTATE:
797
801
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
798
802
 
@@ -809,7 +813,6 @@
809
813
  }
810
814
 
811
815
  break;
812
-
813
816
  case THREE.MOUSE.PAN:
814
817
  if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
815
818
 
@@ -826,7 +829,6 @@
826
829
  }
827
830
 
828
831
  break;
829
-
830
832
  default:
831
833
  state = STATE.NONE;
832
834
 
@@ -848,12 +850,10 @@
848
850
  if ( scope.enableRotate === false ) return;
849
851
  handleMouseMoveRotate( event );
850
852
  break;
851
-
852
853
  case STATE.DOLLY:
853
854
  if ( scope.enableZoom === false ) return;
854
855
  handleMouseMoveDolly( event );
855
856
  break;
856
-
857
857
  case STATE.PAN:
858
858
  if ( scope.enablePan === false ) return;
859
859
  handleMouseMovePan( event );
@@ -883,7 +883,6 @@
883
883
  function onTouchStart( event ) {
884
884
 
885
885
  trackPointer( event );
886
-
887
886
  switch ( pointers.length ) {
888
887
 
889
888
  case 1:
@@ -894,20 +893,17 @@
894
893
  handleTouchStartRotate();
895
894
  state = STATE.TOUCH_ROTATE;
896
895
  break;
897
-
898
896
  case THREE.TOUCH.PAN:
899
897
  if ( scope.enablePan === false ) return;
900
898
  handleTouchStartPan();
901
899
  state = STATE.TOUCH_PAN;
902
900
  break;
903
-
904
901
  default:
905
902
  state = STATE.NONE;
906
903
 
907
904
  }
908
905
 
909
906
  break;
910
-
911
907
  case 2:
912
908
  switch ( scope.touches.TWO ) {
913
909
 
@@ -916,20 +912,17 @@
916
912
  handleTouchStartDollyPan();
917
913
  state = STATE.TOUCH_DOLLY_PAN;
918
914
  break;
919
-
920
915
  case THREE.TOUCH.DOLLY_ROTATE:
921
916
  if ( scope.enableZoom === false && scope.enableRotate === false ) return;
922
917
  handleTouchStartDollyRotate();
923
918
  state = STATE.TOUCH_DOLLY_ROTATE;
924
919
  break;
925
-
926
920
  default:
927
921
  state = STATE.NONE;
928
922
 
929
923
  }
930
924
 
931
925
  break;
932
-
933
926
  default:
934
927
  state = STATE.NONE;
935
928
 
@@ -946,7 +939,6 @@
946
939
  function onTouchMove( event ) {
947
940
 
948
941
  trackPointer( event );
949
-
950
942
  switch ( state ) {
951
943
 
952
944
  case STATE.TOUCH_ROTATE:
@@ -954,25 +946,21 @@
954
946
  handleTouchMoveRotate( event );
955
947
  scope.update();
956
948
  break;
957
-
958
949
  case STATE.TOUCH_PAN:
959
950
  if ( scope.enablePan === false ) return;
960
951
  handleTouchMovePan( event );
961
952
  scope.update();
962
953
  break;
963
-
964
954
  case STATE.TOUCH_DOLLY_PAN:
965
955
  if ( scope.enableZoom === false && scope.enablePan === false ) return;
966
956
  handleTouchMoveDollyPan( event );
967
957
  scope.update();
968
958
  break;
969
-
970
959
  case STATE.TOUCH_DOLLY_ROTATE:
971
960
  if ( scope.enableZoom === false && scope.enableRotate === false ) return;
972
961
  handleTouchMoveDollyRotate( event );
973
962
  scope.update();
974
963
  break;
975
-
976
964
  default:
977
965
  state = STATE.NONE;
978
966
 
@@ -996,7 +984,6 @@
996
984
  function removePointer( event ) {
997
985
 
998
986
  delete pointerPositions[ event.pointerId ];
999
-
1000
987
  for ( let i = 0; i < pointers.length; i ++ ) {
1001
988
 
1002
989
  if ( pointers[ i ].pointerId == event.pointerId ) {
@@ -1013,7 +1000,6 @@
1013
1000
  function trackPointer( event ) {
1014
1001
 
1015
1002
  let position = pointerPositions[ event.pointerId ];
1016
-
1017
1003
  if ( position === undefined ) {
1018
1004
 
1019
1005
  position = new THREE.Vector2();
@@ -1030,21 +1016,26 @@
1030
1016
  const pointer = event.pointerId === pointers[ 0 ].pointerId ? pointers[ 1 ] : pointers[ 0 ];
1031
1017
  return pointerPositions[ pointer.pointerId ];
1032
1018
 
1033
- } //
1019
+ }
1034
1020
 
1021
+ //
1035
1022
 
1036
1023
  scope.domElement.addEventListener( 'contextmenu', onContextMenu );
1037
1024
  scope.domElement.addEventListener( 'pointerdown', onPointerDown );
1038
1025
  scope.domElement.addEventListener( 'pointercancel', onPointerCancel );
1039
1026
  scope.domElement.addEventListener( 'wheel', onMouseWheel, {
1040
1027
  passive: false
1041
- } ); // force an update at start
1028
+ } );
1029
+
1030
+ // force an update at start
1042
1031
 
1043
1032
  this.update();
1044
1033
 
1045
1034
  }
1046
1035
 
1047
- } // This set of controls performs orbiting, dollying (zooming), and panning.
1036
+ }
1037
+
1038
+ // This set of controls performs orbiting, dollying (zooming), and panning.
1048
1039
  // Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
1049
1040
  // This is very similar to OrbitControls, another set of touch behavior
1050
1041
  //
@@ -1052,7 +1043,6 @@
1052
1043
  // Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
1053
1044
  // Pan - left mouse, or arrow keys / touch: one-finger move
1054
1045
 
1055
-
1056
1046
  class MapControls extends OrbitControls {
1057
1047
 
1058
1048
  constructor( object, domElement ) {
@@ -1,9 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  const _euler = new THREE.Euler( 0, 0, 0, 'YXZ' );
4
-
5
4
  const _vector = new THREE.Vector3();
6
-
7
5
  const _changeEvent = {
8
6
  type: 'change'
9
7
  };
@@ -13,33 +11,28 @@
13
11
  const _unlockEvent = {
14
12
  type: 'unlock'
15
13
  };
16
-
17
14
  const _PI_2 = Math.PI / 2;
18
-
19
15
  class PointerLockControls extends THREE.EventDispatcher {
20
16
 
21
17
  constructor( camera, domElement ) {
22
18
 
23
19
  super();
24
20
  this.domElement = domElement;
25
- this.isLocked = false; // Set to constrain the pitch of the camera
26
- // Range is 0 to Math.PI radians
21
+ this.isLocked = false;
27
22
 
23
+ // Set to constrain the pitch of the camera
24
+ // Range is 0 to Math.PI radians
28
25
  this.minPolarAngle = 0; // radians
29
-
30
26
  this.maxPolarAngle = Math.PI; // radians
31
27
 
32
28
  this.pointerSpeed = 1.0;
33
29
  const scope = this;
34
-
35
30
  function onMouseMove( event ) {
36
31
 
37
32
  if ( scope.isLocked === false ) return;
38
33
  const movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
39
34
  const movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
40
-
41
35
  _euler.setFromQuaternion( camera.quaternion );
42
-
43
36
  _euler.y -= movementX * 0.002 * scope.pointerSpeed;
44
37
  _euler.x -= movementY * 0.002 * scope.pointerSpeed;
45
38
  _euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) );
@@ -95,6 +88,7 @@
95
88
  this.getObject = function () {
96
89
 
97
90
  // retaining this method for backward compatibility
91
+
98
92
  return camera;
99
93
 
100
94
  };
@@ -109,15 +103,13 @@
109
103
  };
110
104
 
111
105
  }();
112
-
113
106
  this.moveForward = function ( distance ) {
114
107
 
115
108
  // move forward parallel to the xz-plane
116
109
  // assumes camera.up is y-up
117
- _vector.setFromMatrixColumn( camera.matrix, 0 );
118
110
 
111
+ _vector.setFromMatrixColumn( camera.matrix, 0 );
119
112
  _vector.crossVectors( camera.up, _vector );
120
-
121
113
  camera.position.addScaledVector( _vector, distance );
122
114
 
123
115
  };
@@ -125,7 +117,6 @@
125
117
  this.moveRight = function ( distance ) {
126
118
 
127
119
  _vector.setFromMatrixColumn( camera.matrix, 0 );
128
-
129
120
  camera.position.addScaledVector( _vector, distance );
130
121
 
131
122
  };