@needle-tools/three 0.145.2 → 0.146.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 (394) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +3559 -6924
  3. package/build/three.js +3559 -6924
  4. package/build/three.min.js +1 -2
  5. package/build/three.module.js +732 -339
  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 +94 -28
  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/WebGLCubeUVMaps.js +1 -1
  381. package/src/renderers/webgl/WebGLLights.js +0 -4
  382. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  383. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  384. package/src/renderers/webgl/WebGLState.js +31 -1
  385. package/src/renderers/webgl/WebGLTextures.js +71 -18
  386. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  387. package/src/renderers/webgl/WebGLUtils.js +1 -1
  388. package/src/renderers/webxr/WebXRController.js +46 -13
  389. package/src/renderers/webxr/WebXRManager.js +85 -3
  390. package/src/scenes/Scene.js +8 -0
  391. package/src/textures/CompressedArrayTexture.js +18 -0
  392. package/examples/js/libs/lottie_canvas.js +0 -12751
  393. package/examples/js/shaders/PixelShader.js +0 -51
  394. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -1,19 +1,12 @@
1
1
  ( function () {
2
2
 
3
3
  const _plane = new THREE.Plane();
4
-
5
4
  const _raycaster = new THREE.Raycaster();
6
-
7
5
  const _pointer = new THREE.Vector2();
8
-
9
6
  const _offset = new THREE.Vector3();
10
-
11
7
  const _intersection = new THREE.Vector3();
12
-
13
8
  const _worldPosition = new THREE.Vector3();
14
-
15
9
  const _inverseMatrix = new THREE.Matrix4();
16
-
17
10
  class DragControls extends THREE.EventDispatcher {
18
11
 
19
12
  constructor( _objects, _camera, _domElement ) {
@@ -23,18 +16,16 @@
23
16
 
24
17
  let _selected = null,
25
18
  _hovered = null;
26
- const _intersections = []; //
19
+ const _intersections = [];
27
20
 
28
- const scope = this;
21
+ //
29
22
 
23
+ const scope = this;
30
24
  function activate() {
31
25
 
32
26
  _domElement.addEventListener( 'pointermove', onPointerMove );
33
-
34
27
  _domElement.addEventListener( 'pointerdown', onPointerDown );
35
-
36
28
  _domElement.addEventListener( 'pointerup', onPointerCancel );
37
-
38
29
  _domElement.addEventListener( 'pointerleave', onPointerCancel );
39
30
 
40
31
  }
@@ -42,13 +33,9 @@
42
33
  function deactivate() {
43
34
 
44
35
  _domElement.removeEventListener( 'pointermove', onPointerMove );
45
-
46
36
  _domElement.removeEventListener( 'pointerdown', onPointerDown );
47
-
48
37
  _domElement.removeEventListener( 'pointerup', onPointerCancel );
49
-
50
38
  _domElement.removeEventListener( 'pointerleave', onPointerCancel );
51
-
52
39
  _domElement.style.cursor = '';
53
40
 
54
41
  }
@@ -75,9 +62,7 @@
75
62
 
76
63
  if ( scope.enabled === false ) return;
77
64
  updatePointer( event );
78
-
79
65
  _raycaster.setFromCamera( _pointer, _camera );
80
-
81
66
  if ( _selected ) {
82
67
 
83
68
  if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
@@ -92,23 +77,19 @@
92
77
  } );
93
78
  return;
94
79
 
95
- } // hover support
80
+ }
96
81
 
82
+ // hover support
97
83
 
98
84
  if ( event.pointerType === 'mouse' || event.pointerType === 'pen' ) {
99
85
 
100
86
  _intersections.length = 0;
101
-
102
87
  _raycaster.setFromCamera( _pointer, _camera );
103
-
104
88
  _raycaster.intersectObjects( _objects, true, _intersections );
105
-
106
89
  if ( _intersections.length > 0 ) {
107
90
 
108
91
  const object = _intersections[ 0 ].object;
109
-
110
92
  _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) );
111
-
112
93
  if ( _hovered !== object && _hovered !== null ) {
113
94
 
114
95
  scope.dispatchEvent( {
@@ -155,21 +136,15 @@
155
136
  if ( scope.enabled === false ) return;
156
137
  updatePointer( event );
157
138
  _intersections.length = 0;
158
-
159
139
  _raycaster.setFromCamera( _pointer, _camera );
160
-
161
140
  _raycaster.intersectObjects( _objects, true, _intersections );
162
-
163
141
  if ( _intersections.length > 0 ) {
164
142
 
165
143
  _selected = scope.transformGroup === true ? _objects[ 0 ] : _intersections[ 0 ].object;
166
-
167
144
  _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
168
-
169
145
  if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
170
146
 
171
147
  _inverseMatrix.copy( _selected.parent.matrixWorld ).invert();
172
-
173
148
  _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
174
149
 
175
150
  }
@@ -187,7 +162,6 @@
187
162
  function onPointerCancel() {
188
163
 
189
164
  if ( scope.enabled === false ) return;
190
-
191
165
  if ( _selected ) {
192
166
 
193
167
  scope.dispatchEvent( {
@@ -205,13 +179,14 @@
205
179
  function updatePointer( event ) {
206
180
 
207
181
  const rect = _domElement.getBoundingClientRect();
208
-
209
182
  _pointer.x = ( event.clientX - rect.left ) / rect.width * 2 - 1;
210
183
  _pointer.y = - ( event.clientY - rect.top ) / rect.height * 2 + 1;
211
184
 
212
185
  }
213
186
 
214
- activate(); // API
187
+ activate();
188
+
189
+ // API
215
190
 
216
191
  this.enabled = true;
217
192
  this.transformGroup = false;
@@ -1,17 +1,16 @@
1
1
  ( function () {
2
2
 
3
3
  const _lookDirection = new THREE.Vector3();
4
-
5
4
  const _spherical = new THREE.Spherical();
6
-
7
5
  const _target = new THREE.Vector3();
8
-
9
6
  class FirstPersonControls {
10
7
 
11
8
  constructor( object, domElement ) {
12
9
 
13
10
  this.object = object;
14
- this.domElement = domElement; // API
11
+ this.domElement = domElement;
12
+
13
+ // API
15
14
 
16
15
  this.enabled = true;
17
16
  this.movementSpeed = 1.0;
@@ -26,20 +25,26 @@
26
25
  this.constrainVertical = false;
27
26
  this.verticalMin = 0;
28
27
  this.verticalMax = Math.PI;
29
- this.mouseDragOn = false; // internals
28
+ this.mouseDragOn = false;
29
+
30
+ // internals
30
31
 
31
32
  this.autoSpeedFactor = 0.0;
32
- this.mouseX = 0;
33
- this.mouseY = 0;
33
+ this.pointerX = 0;
34
+ this.pointerY = 0;
34
35
  this.moveForward = false;
35
36
  this.moveBackward = false;
36
37
  this.moveLeft = false;
37
38
  this.moveRight = false;
38
39
  this.viewHalfX = 0;
39
- this.viewHalfY = 0; // private variables
40
+ this.viewHalfY = 0;
41
+
42
+ // private variables
40
43
 
41
44
  let lat = 0;
42
- let lon = 0; //
45
+ let lon = 0;
46
+
47
+ //
43
48
 
44
49
  this.handleResize = function () {
45
50
 
@@ -57,7 +62,7 @@
57
62
 
58
63
  };
59
64
 
60
- this.onMouseDown = function ( event ) {
65
+ this.onPointerDown = function ( event ) {
61
66
 
62
67
  if ( this.domElement !== document ) {
63
68
 
@@ -72,7 +77,6 @@
72
77
  case 0:
73
78
  this.moveForward = true;
74
79
  break;
75
-
76
80
  case 2:
77
81
  this.moveBackward = true;
78
82
  break;
@@ -85,7 +89,7 @@
85
89
 
86
90
  };
87
91
 
88
- this.onMouseUp = function ( event ) {
92
+ this.onPointerUp = function ( event ) {
89
93
 
90
94
  if ( this.activeLook ) {
91
95
 
@@ -94,7 +98,6 @@
94
98
  case 0:
95
99
  this.moveForward = false;
96
100
  break;
97
-
98
101
  case 2:
99
102
  this.moveBackward = false;
100
103
  break;
@@ -107,17 +110,17 @@
107
110
 
108
111
  };
109
112
 
110
- this.onMouseMove = function ( event ) {
113
+ this.onPointerMove = function ( event ) {
111
114
 
112
115
  if ( this.domElement === document ) {
113
116
 
114
- this.mouseX = event.pageX - this.viewHalfX;
115
- this.mouseY = event.pageY - this.viewHalfY;
117
+ this.pointerX = event.pageX - this.viewHalfX;
118
+ this.pointerY = event.pageY - this.viewHalfY;
116
119
 
117
120
  } else {
118
121
 
119
- this.mouseX = event.pageX - this.domElement.offsetLeft - this.viewHalfX;
120
- this.mouseY = event.pageY - this.domElement.offsetTop - this.viewHalfY;
122
+ this.pointerX = event.pageX - this.domElement.offsetLeft - this.viewHalfX;
123
+ this.pointerY = event.pageY - this.domElement.offsetTop - this.viewHalfY;
121
124
 
122
125
  }
123
126
 
@@ -131,26 +134,21 @@
131
134
  case 'KeyW':
132
135
  this.moveForward = true;
133
136
  break;
134
-
135
137
  case 'ArrowLeft':
136
138
  case 'KeyA':
137
139
  this.moveLeft = true;
138
140
  break;
139
-
140
141
  case 'ArrowDown':
141
142
  case 'KeyS':
142
143
  this.moveBackward = true;
143
144
  break;
144
-
145
145
  case 'ArrowRight':
146
146
  case 'KeyD':
147
147
  this.moveRight = true;
148
148
  break;
149
-
150
149
  case 'KeyR':
151
150
  this.moveUp = true;
152
151
  break;
153
-
154
152
  case 'KeyF':
155
153
  this.moveDown = true;
156
154
  break;
@@ -167,26 +165,21 @@
167
165
  case 'KeyW':
168
166
  this.moveForward = false;
169
167
  break;
170
-
171
168
  case 'ArrowLeft':
172
169
  case 'KeyA':
173
170
  this.moveLeft = false;
174
171
  break;
175
-
176
172
  case 'ArrowDown':
177
173
  case 'KeyS':
178
174
  this.moveBackward = false;
179
175
  break;
180
-
181
176
  case 'ArrowRight':
182
177
  case 'KeyD':
183
178
  this.moveRight = false;
184
179
  break;
185
-
186
180
  case 'KeyR':
187
181
  this.moveUp = false;
188
182
  break;
189
-
190
183
  case 'KeyF':
191
184
  this.moveDown = false;
192
185
  break;
@@ -219,7 +212,6 @@
219
212
  return function update( delta ) {
220
213
 
221
214
  if ( this.enabled === false ) return;
222
-
223
215
  if ( this.heightSpeed ) {
224
216
 
225
217
  const y = THREE.MathUtils.clamp( this.object.position.y, this.heightMin, this.heightMax );
@@ -240,7 +232,6 @@
240
232
  if ( this.moveUp ) this.object.translateY( actualMoveSpeed );
241
233
  if ( this.moveDown ) this.object.translateY( - actualMoveSpeed );
242
234
  let actualLookSpeed = delta * this.lookSpeed;
243
-
244
235
  if ( ! this.activeLook ) {
245
236
 
246
237
  actualLookSpeed = 0;
@@ -248,19 +239,17 @@
248
239
  }
249
240
 
250
241
  let verticalLookRatio = 1;
251
-
252
242
  if ( this.constrainVertical ) {
253
243
 
254
244
  verticalLookRatio = Math.PI / ( this.verticalMax - this.verticalMin );
255
245
 
256
246
  }
257
247
 
258
- lon -= this.mouseX * actualLookSpeed;
259
- if ( this.lookVertical ) lat -= this.mouseY * actualLookSpeed * verticalLookRatio;
248
+ lon -= this.pointerX * actualLookSpeed;
249
+ if ( this.lookVertical ) lat -= this.pointerY * actualLookSpeed * verticalLookRatio;
260
250
  lat = Math.max( - 85, Math.min( 85, lat ) );
261
251
  let phi = THREE.MathUtils.degToRad( 90 - lat );
262
252
  const theta = THREE.MathUtils.degToRad( lon );
263
-
264
253
  if ( this.constrainVertical ) {
265
254
 
266
255
  phi = THREE.MathUtils.mapLinear( phi, 0, Math.PI, this.verticalMin, this.verticalMax );
@@ -274,43 +263,33 @@
274
263
  };
275
264
 
276
265
  }();
277
-
278
266
  this.dispose = function () {
279
267
 
280
268
  this.domElement.removeEventListener( 'contextmenu', contextmenu );
281
- this.domElement.removeEventListener( 'mousedown', _onMouseDown );
282
- this.domElement.removeEventListener( 'mousemove', _onMouseMove );
283
- this.domElement.removeEventListener( 'mouseup', _onMouseUp );
269
+ this.domElement.removeEventListener( 'pointerdown', _onPointerDown );
270
+ this.domElement.removeEventListener( 'pointermove', _onPointerMove );
271
+ this.domElement.removeEventListener( 'pointerup', _onPointerUp );
284
272
  window.removeEventListener( 'keydown', _onKeyDown );
285
273
  window.removeEventListener( 'keyup', _onKeyUp );
286
274
 
287
275
  };
288
276
 
289
- const _onMouseMove = this.onMouseMove.bind( this );
290
-
291
- const _onMouseDown = this.onMouseDown.bind( this );
292
-
293
- const _onMouseUp = this.onMouseUp.bind( this );
294
-
277
+ const _onPointerMove = this.onPointerMove.bind( this );
278
+ const _onPointerDown = this.onPointerDown.bind( this );
279
+ const _onPointerUp = this.onPointerUp.bind( this );
295
280
  const _onKeyDown = this.onKeyDown.bind( this );
296
-
297
281
  const _onKeyUp = this.onKeyUp.bind( this );
298
-
299
282
  this.domElement.addEventListener( 'contextmenu', contextmenu );
300
- this.domElement.addEventListener( 'mousemove', _onMouseMove );
301
- this.domElement.addEventListener( 'mousedown', _onMouseDown );
302
- this.domElement.addEventListener( 'mouseup', _onMouseUp );
283
+ this.domElement.addEventListener( 'pointerdown', _onPointerDown );
284
+ this.domElement.addEventListener( 'pointermove', _onPointerMove );
285
+ this.domElement.addEventListener( 'pointerup', _onPointerUp );
303
286
  window.addEventListener( 'keydown', _onKeyDown );
304
287
  window.addEventListener( 'keyup', _onKeyUp );
305
-
306
288
  function setOrientation( controls ) {
307
289
 
308
290
  const quaternion = controls.object.quaternion;
309
-
310
291
  _lookDirection.set( 0, 0, - 1 ).applyQuaternion( quaternion );
311
-
312
292
  _spherical.setFromVector3( _lookDirection );
313
-
314
293
  lat = 90 - THREE.MathUtils.radToDeg( _spherical.phi );
315
294
  lon = THREE.MathUtils.radToDeg( _spherical.theta );
316
295
 
@@ -322,7 +301,6 @@
322
301
  }
323
302
 
324
303
  }
325
-
326
304
  function contextmenu( event ) {
327
305
 
328
306
  event.preventDefault();
@@ -3,19 +3,23 @@
3
3
  const _changeEvent = {
4
4
  type: 'change'
5
5
  };
6
-
7
6
  class FlyControls extends THREE.EventDispatcher {
8
7
 
9
8
  constructor( object, domElement ) {
10
9
 
11
10
  super();
12
11
  this.object = object;
13
- this.domElement = domElement; // API
12
+ this.domElement = domElement;
13
+
14
+ // API
14
15
 
15
16
  this.movementSpeed = 1.0;
16
17
  this.rollSpeed = 0.005;
17
18
  this.dragToLook = false;
18
- this.autoForward = false; // disable default target object behavior
19
+ this.autoForward = false;
20
+
21
+ // disable default target object behavior
22
+
19
23
  // internals
20
24
 
21
25
  const scope = this;
@@ -23,7 +27,7 @@
23
27
  const lastQuaternion = new THREE.Quaternion();
24
28
  const lastPosition = new THREE.Vector3();
25
29
  this.tmpQuaternion = new THREE.Quaternion();
26
- this.mouseStatus = 0;
30
+ this.status = 0;
27
31
  this.moveState = {
28
32
  up: 0,
29
33
  down: 0,
@@ -40,7 +44,6 @@
40
44
  };
41
45
  this.moveVector = new THREE.Vector3( 0, 0, 0 );
42
46
  this.rotationVector = new THREE.Vector3( 0, 0, 0 );
43
-
44
47
  this.keydown = function ( event ) {
45
48
 
46
49
  if ( event.altKey ) {
@@ -55,51 +58,39 @@
55
58
  case 'ShiftRight':
56
59
  this.movementSpeedMultiplier = .1;
57
60
  break;
58
-
59
61
  case 'KeyW':
60
62
  this.moveState.forward = 1;
61
63
  break;
62
-
63
64
  case 'KeyS':
64
65
  this.moveState.back = 1;
65
66
  break;
66
-
67
67
  case 'KeyA':
68
68
  this.moveState.left = 1;
69
69
  break;
70
-
71
70
  case 'KeyD':
72
71
  this.moveState.right = 1;
73
72
  break;
74
-
75
73
  case 'KeyR':
76
74
  this.moveState.up = 1;
77
75
  break;
78
-
79
76
  case 'KeyF':
80
77
  this.moveState.down = 1;
81
78
  break;
82
-
83
79
  case 'ArrowUp':
84
80
  this.moveState.pitchUp = 1;
85
81
  break;
86
-
87
82
  case 'ArrowDown':
88
83
  this.moveState.pitchDown = 1;
89
84
  break;
90
-
91
85
  case 'ArrowLeft':
92
86
  this.moveState.yawLeft = 1;
93
87
  break;
94
-
95
88
  case 'ArrowRight':
96
89
  this.moveState.yawRight = 1;
97
90
  break;
98
-
99
91
  case 'KeyQ':
100
92
  this.moveState.rollLeft = 1;
101
93
  break;
102
-
103
94
  case 'KeyE':
104
95
  this.moveState.rollRight = 1;
105
96
  break;
@@ -119,51 +110,39 @@
119
110
  case 'ShiftRight':
120
111
  this.movementSpeedMultiplier = 1;
121
112
  break;
122
-
123
113
  case 'KeyW':
124
114
  this.moveState.forward = 0;
125
115
  break;
126
-
127
116
  case 'KeyS':
128
117
  this.moveState.back = 0;
129
118
  break;
130
-
131
119
  case 'KeyA':
132
120
  this.moveState.left = 0;
133
121
  break;
134
-
135
122
  case 'KeyD':
136
123
  this.moveState.right = 0;
137
124
  break;
138
-
139
125
  case 'KeyR':
140
126
  this.moveState.up = 0;
141
127
  break;
142
-
143
128
  case 'KeyF':
144
129
  this.moveState.down = 0;
145
130
  break;
146
-
147
131
  case 'ArrowUp':
148
132
  this.moveState.pitchUp = 0;
149
133
  break;
150
-
151
134
  case 'ArrowDown':
152
135
  this.moveState.pitchDown = 0;
153
136
  break;
154
-
155
137
  case 'ArrowLeft':
156
138
  this.moveState.yawLeft = 0;
157
139
  break;
158
-
159
140
  case 'ArrowRight':
160
141
  this.moveState.yawRight = 0;
161
142
  break;
162
-
163
143
  case 'KeyQ':
164
144
  this.moveState.rollLeft = 0;
165
145
  break;
166
-
167
146
  case 'KeyE':
168
147
  this.moveState.rollRight = 0;
169
148
  break;
@@ -175,11 +154,11 @@
175
154
 
176
155
  };
177
156
 
178
- this.mousedown = function ( event ) {
157
+ this.pointerdown = function ( event ) {
179
158
 
180
159
  if ( this.dragToLook ) {
181
160
 
182
- this.mouseStatus ++;
161
+ this.status ++;
183
162
 
184
163
  } else {
185
164
 
@@ -188,7 +167,6 @@
188
167
  case 0:
189
168
  this.moveState.forward = 1;
190
169
  break;
191
-
192
170
  case 2:
193
171
  this.moveState.back = 1;
194
172
  break;
@@ -201,9 +179,9 @@
201
179
 
202
180
  };
203
181
 
204
- this.mousemove = function ( event ) {
182
+ this.pointermove = function ( event ) {
205
183
 
206
- if ( ! this.dragToLook || this.mouseStatus > 0 ) {
184
+ if ( ! this.dragToLook || this.status > 0 ) {
207
185
 
208
186
  const container = this.getContainerDimensions();
209
187
  const halfWidth = container.size[ 0 ] / 2;
@@ -216,11 +194,11 @@
216
194
 
217
195
  };
218
196
 
219
- this.mouseup = function ( event ) {
197
+ this.pointerup = function ( event ) {
220
198
 
221
199
  if ( this.dragToLook ) {
222
200
 
223
- this.mouseStatus --;
201
+ this.status --;
224
202
  this.moveState.yawLeft = this.moveState.pitchDown = 0;
225
203
 
226
204
  } else {
@@ -230,7 +208,6 @@
230
208
  case 0:
231
209
  this.moveState.forward = 0;
232
210
  break;
233
-
234
211
  case 2:
235
212
  this.moveState.back = 0;
236
213
  break;
@@ -254,7 +231,6 @@
254
231
  scope.object.translateZ( scope.moveVector.z * moveMult );
255
232
  scope.tmpQuaternion.set( scope.rotationVector.x * rotMult, scope.rotationVector.y * rotMult, scope.rotationVector.z * rotMult, 1 ).normalize();
256
233
  scope.object.quaternion.multiply( scope.tmpQuaternion );
257
-
258
234
  if ( lastPosition.distanceToSquared( scope.object.position ) > EPS || 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {
259
235
 
260
236
  scope.dispatchEvent( _changeEvent );
@@ -270,7 +246,9 @@
270
246
  const forward = this.moveState.forward || this.autoForward && ! this.moveState.back ? 1 : 0;
271
247
  this.moveVector.x = - this.moveState.left + this.moveState.right;
272
248
  this.moveVector.y = - this.moveState.down + this.moveState.up;
273
- this.moveVector.z = - forward + this.moveState.back; //console.log( 'move:', [ this.moveVector.x, this.moveVector.y, this.moveVector.z ] );
249
+ this.moveVector.z = - forward + this.moveState.back;
250
+
251
+ //console.log( 'move:', [ this.moveVector.x, this.moveVector.y, this.moveVector.z ] );
274
252
 
275
253
  };
276
254
 
@@ -278,7 +256,9 @@
278
256
 
279
257
  this.rotationVector.x = - this.moveState.pitchDown + this.moveState.pitchUp;
280
258
  this.rotationVector.y = - this.moveState.yawRight + this.moveState.yawLeft;
281
- this.rotationVector.z = - this.moveState.rollRight + this.moveState.rollLeft; //console.log( 'rotate:', [ this.rotationVector.x, this.rotationVector.y, this.rotationVector.z ] );
259
+ this.rotationVector.z = - this.moveState.rollRight + this.moveState.rollLeft;
260
+
261
+ //console.log( 'rotate:', [ this.rotationVector.x, this.rotationVector.y, this.rotationVector.z ] );
282
262
 
283
263
  };
284
264
 
@@ -305,28 +285,23 @@
305
285
  this.dispose = function () {
306
286
 
307
287
  this.domElement.removeEventListener( 'contextmenu', contextmenu );
308
- this.domElement.removeEventListener( 'mousedown', _mousedown );
309
- this.domElement.removeEventListener( 'mousemove', _mousemove );
310
- this.domElement.removeEventListener( 'mouseup', _mouseup );
288
+ this.domElement.removeEventListener( 'pointerdown', _pointerdown );
289
+ this.domElement.removeEventListener( 'pointermove', _pointermove );
290
+ this.domElement.removeEventListener( 'pointerup', _pointerup );
311
291
  window.removeEventListener( 'keydown', _keydown );
312
292
  window.removeEventListener( 'keyup', _keyup );
313
293
 
314
294
  };
315
295
 
316
- const _mousemove = this.mousemove.bind( this );
317
-
318
- const _mousedown = this.mousedown.bind( this );
319
-
320
- const _mouseup = this.mouseup.bind( this );
321
-
296
+ const _pointermove = this.pointermove.bind( this );
297
+ const _pointerdown = this.pointerdown.bind( this );
298
+ const _pointerup = this.pointerup.bind( this );
322
299
  const _keydown = this.keydown.bind( this );
323
-
324
300
  const _keyup = this.keyup.bind( this );
325
-
326
301
  this.domElement.addEventListener( 'contextmenu', contextmenu );
327
- this.domElement.addEventListener( 'mousemove', _mousemove );
328
- this.domElement.addEventListener( 'mousedown', _mousedown );
329
- this.domElement.addEventListener( 'mouseup', _mouseup );
302
+ this.domElement.addEventListener( 'pointerdown', _pointerdown );
303
+ this.domElement.addEventListener( 'pointermove', _pointermove );
304
+ this.domElement.addEventListener( 'pointerup', _pointerup );
330
305
  window.addEventListener( 'keydown', _keydown );
331
306
  window.addEventListener( 'keyup', _keyup );
332
307
  this.updateMovementVector();
@@ -335,7 +310,6 @@
335
310
  }
336
311
 
337
312
  }
338
-
339
313
  function contextmenu( event ) {
340
314
 
341
315
  event.preventDefault();