@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,11 +1,8 @@
1
1
  ( function () {
2
2
 
3
3
  const _v1 = new THREE.Vector3();
4
-
5
4
  const _v2 = new THREE.Vector3();
6
-
7
5
  const _normalMatrix = new THREE.Matrix3();
8
-
9
6
  class VertexNormalsHelper extends THREE.LineSegments {
10
7
 
11
8
  constructor( object, size = 1, color = 0xff0000 ) {
@@ -20,38 +17,37 @@
20
17
  } ) );
21
18
  this.object = object;
22
19
  this.size = size;
23
- this.type = 'VertexNormalsHelper'; //
20
+ this.type = 'VertexNormalsHelper';
21
+
22
+ //
24
23
 
25
24
  this.matrixAutoUpdate = false;
26
25
  this.update();
27
26
 
28
27
  }
29
-
30
28
  update() {
31
29
 
32
30
  this.object.updateMatrixWorld( true );
33
-
34
31
  _normalMatrix.getNormalMatrix( this.object.matrixWorld );
35
-
36
32
  const matrixWorld = this.object.matrixWorld;
37
- const position = this.geometry.attributes.position; //
33
+ const position = this.geometry.attributes.position;
38
34
 
39
- const objGeometry = this.object.geometry;
35
+ //
40
36
 
37
+ const objGeometry = this.object.geometry;
41
38
  if ( objGeometry ) {
42
39
 
43
40
  const objPos = objGeometry.attributes.position;
44
41
  const objNorm = objGeometry.attributes.normal;
45
- let idx = 0; // for simplicity, ignore index and drawcalls, and render every normal
42
+ let idx = 0;
43
+
44
+ // for simplicity, ignore index and drawcalls, and render every normal
46
45
 
47
46
  for ( let j = 0, jl = objPos.count; j < jl; j ++ ) {
48
47
 
49
48
  _v1.fromBufferAttribute( objPos, j ).applyMatrix4( matrixWorld );
50
-
51
49
  _v2.fromBufferAttribute( objNorm, j );
52
-
53
50
  _v2.applyMatrix3( _normalMatrix ).normalize().multiplyScalar( this.size ).add( _v1 );
54
-
55
51
  position.setXYZ( idx, _v1.x, _v1.y, _v1.z );
56
52
  idx = idx + 1;
57
53
  position.setXYZ( idx, _v2.x, _v2.y, _v2.z );
@@ -64,6 +60,12 @@
64
60
  position.needsUpdate = true;
65
61
 
66
62
  }
63
+ dispose() {
64
+
65
+ this.geometry.dispose();
66
+ this.material.dispose();
67
+
68
+ }
67
69
 
68
70
  }
69
71
 
@@ -1,9 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  const _v1 = new THREE.Vector3();
4
-
5
4
  const _v2 = new THREE.Vector3();
6
-
7
5
  class VertexTangentsHelper extends THREE.LineSegments {
8
6
 
9
7
  constructor( object, size = 1, color = 0x00ffff ) {
@@ -18,32 +16,34 @@
18
16
  } ) );
19
17
  this.object = object;
20
18
  this.size = size;
21
- this.type = 'VertexTangentsHelper'; //
19
+ this.type = 'VertexTangentsHelper';
20
+
21
+ //
22
22
 
23
23
  this.matrixAutoUpdate = false;
24
24
  this.update();
25
25
 
26
26
  }
27
-
28
27
  update() {
29
28
 
30
29
  this.object.updateMatrixWorld( true );
31
30
  const matrixWorld = this.object.matrixWorld;
32
- const position = this.geometry.attributes.position; //
31
+ const position = this.geometry.attributes.position;
32
+
33
+ //
33
34
 
34
35
  const objGeometry = this.object.geometry;
35
36
  const objPos = objGeometry.attributes.position;
36
37
  const objTan = objGeometry.attributes.tangent;
37
- let idx = 0; // for simplicity, ignore index and drawcalls, and render every tangent
38
+ let idx = 0;
39
+
40
+ // for simplicity, ignore index and drawcalls, and render every tangent
38
41
 
39
42
  for ( let j = 0, jl = objPos.count; j < jl; j ++ ) {
40
43
 
41
44
  _v1.fromBufferAttribute( objPos, j ).applyMatrix4( matrixWorld );
42
-
43
45
  _v2.fromBufferAttribute( objTan, j );
44
-
45
46
  _v2.transformDirection( matrixWorld ).multiplyScalar( this.size ).add( _v1 );
46
-
47
47
  position.setXYZ( idx, _v1.x, _v1.y, _v1.z );
48
48
  idx = idx + 1;
49
49
  position.setXYZ( idx, _v2.x, _v2.y, _v2.z );
@@ -54,6 +54,12 @@
54
54
  position.needsUpdate = true;
55
55
 
56
56
  }
57
+ dispose() {
58
+
59
+ this.geometry.dispose();
60
+ this.material.dispose();
61
+
62
+ }
57
63
 
58
64
  }
59
65
 
@@ -1,7 +1,6 @@
1
1
  ( function () {
2
2
 
3
3
  const vpTemp = new THREE.Vector4();
4
-
5
4
  class ViewHelper extends THREE.Object3D {
6
5
 
7
6
  constructor( editorCamera, dom ) {
@@ -71,7 +70,6 @@
71
70
  this.updateMatrixWorld();
72
71
  point.set( 0, 0, 1 );
73
72
  point.applyQuaternion( editorCamera.quaternion );
74
-
75
73
  if ( point.x >= 0 ) {
76
74
 
77
75
  posXAxisHelper.material.opacity = 1;
@@ -106,8 +104,9 @@
106
104
  posZAxisHelper.material.opacity = 0.5;
107
105
  negZAxisHelper.material.opacity = 1;
108
106
 
109
- } //
107
+ }
110
108
 
109
+ //
111
110
 
112
111
  const x = dom.offsetWidth - dim;
113
112
  renderer.clearDepth();
@@ -123,7 +122,6 @@
123
122
  const q1 = new THREE.Quaternion();
124
123
  const q2 = new THREE.Quaternion();
125
124
  let radius = 0;
126
-
127
125
  this.handleClick = function ( event ) {
128
126
 
129
127
  if ( this.animating === true ) return false;
@@ -134,7 +132,6 @@
134
132
  mouse.y = - ( ( event.clientY - offsetY ) / ( rect.bottom - offsetY ) ) * 2 + 1;
135
133
  raycaster.setFromCamera( mouse, camera );
136
134
  const intersects = raycaster.intersectObjects( interactiveObjects );
137
-
138
135
  if ( intersects.length > 0 ) {
139
136
 
140
137
  const intersection = intersects[ 0 ];
@@ -154,13 +151,16 @@
154
151
  this.update = function ( delta ) {
155
152
 
156
153
  const step = delta * turnRate;
157
- const focusPoint = this.controls.center; // animate position by doing a slerp and then scaling the position on the unit sphere
154
+ const focusPoint = this.controls.center;
155
+
156
+ // animate position by doing a slerp and then scaling the position on the unit sphere
158
157
 
159
158
  q1.rotateTowards( q2, step );
160
- editorCamera.position.set( 0, 0, 1 ).applyQuaternion( q1 ).multiplyScalar( radius ).add( focusPoint ); // animate orientation
159
+ editorCamera.position.set( 0, 0, 1 ).applyQuaternion( q1 ).multiplyScalar( radius ).add( focusPoint );
161
160
 
162
- editorCamera.quaternion.rotateTowards( targetQuaternion, step );
161
+ // animate orientation
163
162
 
163
+ editorCamera.quaternion.rotateTowards( targetQuaternion, step );
164
164
  if ( q1.angleTo( q2 ) === 0 ) {
165
165
 
166
166
  this.animating = false;
@@ -169,6 +169,27 @@
169
169
 
170
170
  };
171
171
 
172
+ this.dispose = function () {
173
+
174
+ geometry.dispose();
175
+ xAxis.material.dispose();
176
+ yAxis.material.dispose();
177
+ zAxis.material.dispose();
178
+ posXAxisHelper.material.map.dispose();
179
+ posYAxisHelper.material.map.dispose();
180
+ posZAxisHelper.material.map.dispose();
181
+ negXAxisHelper.material.map.dispose();
182
+ negYAxisHelper.material.map.dispose();
183
+ negZAxisHelper.material.map.dispose();
184
+ posXAxisHelper.material.dispose();
185
+ posYAxisHelper.material.dispose();
186
+ posZAxisHelper.material.dispose();
187
+ negXAxisHelper.material.dispose();
188
+ negYAxisHelper.material.dispose();
189
+ negZAxisHelper.material.dispose();
190
+
191
+ };
192
+
172
193
  function prepareAnimationData( object, focusPoint ) {
173
194
 
174
195
  switch ( object.userData.type ) {
@@ -177,37 +198,32 @@
177
198
  targetPosition.set( 1, 0, 0 );
178
199
  targetQuaternion.setFromEuler( new THREE.Euler( 0, Math.PI * 0.5, 0 ) );
179
200
  break;
180
-
181
201
  case 'posY':
182
202
  targetPosition.set( 0, 1, 0 );
183
203
  targetQuaternion.setFromEuler( new THREE.Euler( - Math.PI * 0.5, 0, 0 ) );
184
204
  break;
185
-
186
205
  case 'posZ':
187
206
  targetPosition.set( 0, 0, 1 );
188
207
  targetQuaternion.setFromEuler( new THREE.Euler() );
189
208
  break;
190
-
191
209
  case 'negX':
192
210
  targetPosition.set( - 1, 0, 0 );
193
211
  targetQuaternion.setFromEuler( new THREE.Euler( 0, - Math.PI * 0.5, 0 ) );
194
212
  break;
195
-
196
213
  case 'negY':
197
214
  targetPosition.set( 0, - 1, 0 );
198
215
  targetQuaternion.setFromEuler( new THREE.Euler( Math.PI * 0.5, 0, 0 ) );
199
216
  break;
200
-
201
217
  case 'negZ':
202
218
  targetPosition.set( 0, 0, - 1 );
203
219
  targetQuaternion.setFromEuler( new THREE.Euler( 0, Math.PI, 0 ) );
204
220
  break;
205
-
206
221
  default:
207
222
  console.error( 'ViewHelper: Invalid axis.' );
208
223
 
209
- } //
224
+ }
210
225
 
226
+ //
211
227
 
212
228
  radius = editorCamera.position.distanceTo( focusPoint );
213
229
  targetPosition.multiplyScalar( radius ).add( focusPoint );
@@ -239,7 +255,6 @@
239
255
  context.closePath();
240
256
  context.fillStyle = color.getStyle();
241
257
  context.fill();
242
-
243
258
  if ( text !== null ) {
244
259
 
245
260
  context.font = '24px Arial';
@@ -12,7 +12,6 @@
12
12
  transparent: true
13
13
  } );
14
14
  super( geometry, material );
15
-
16
15
  function onEvent( event ) {
17
16
 
18
17
  material.map.dispatchDOMEvent( event );
@@ -23,12 +22,12 @@
23
22
  this.addEventListener( 'mousemove', onEvent );
24
23
  this.addEventListener( 'mouseup', onEvent );
25
24
  this.addEventListener( 'click', onEvent );
26
-
27
25
  this.dispose = function () {
28
26
 
29
27
  geometry.dispose();
30
28
  material.dispose();
31
29
  material.map.dispose();
30
+ canvases.delete( dom );
32
31
  this.removeEventListener( 'mousedown', onEvent );
33
32
  this.removeEventListener( 'mousemove', onEvent );
34
33
  this.removeEventListener( 'mouseup', onEvent );
@@ -39,7 +38,6 @@
39
38
  }
40
39
 
41
40
  }
42
-
43
41
  class HTMLTexture extends THREE.CanvasTexture {
44
42
 
45
43
  constructor( dom ) {
@@ -49,8 +47,9 @@
49
47
  this.anisotropy = 16;
50
48
  this.encoding = THREE.sRGBEncoding;
51
49
  this.minFilter = THREE.LinearFilter;
52
- this.magFilter = THREE.LinearFilter; // Create an observer on the DOM, and run html2canvas update in the next loop
50
+ this.magFilter = THREE.LinearFilter;
53
51
 
52
+ // Create an observer on the DOM, and run html2canvas update in the next loop
54
53
  const observer = new MutationObserver( () => {
55
54
 
56
55
  if ( ! this.scheduleUpdate ) {
@@ -71,7 +70,6 @@
71
70
  this.observer = observer;
72
71
 
73
72
  }
74
-
75
73
  dispatchDOMEvent( event ) {
76
74
 
77
75
  if ( event.data ) {
@@ -81,7 +79,6 @@
81
79
  }
82
80
 
83
81
  }
84
-
85
82
  update() {
86
83
 
87
84
  this.image = html2canvas( this.dom );
@@ -89,7 +86,6 @@
89
86
  this.scheduleUpdate = null;
90
87
 
91
88
  }
92
-
93
89
  dispose() {
94
90
 
95
91
  if ( this.observer ) {
@@ -103,21 +99,19 @@
103
99
 
104
100
  }
105
101
 
106
- } //
102
+ }
107
103
 
104
+ //
108
105
 
109
106
  const canvases = new WeakMap();
110
-
111
107
  function html2canvas( element ) {
112
108
 
113
109
  const range = document.createRange();
114
110
  const color = new THREE.Color();
115
-
116
111
  function Clipper( context ) {
117
112
 
118
113
  const clips = [];
119
114
  let isClipping = false;
120
-
121
115
  function doClip() {
122
116
 
123
117
  if ( isClipping ) {
@@ -132,7 +126,6 @@
132
126
  minY = - Infinity;
133
127
  let maxX = Infinity,
134
128
  maxY = Infinity;
135
-
136
129
  for ( let i = 0; i < clips.length; i ++ ) {
137
130
 
138
131
  const clip = clips[ i ];
@@ -206,7 +199,6 @@
206
199
  const borderWidth = style[ which + 'Width' ];
207
200
  const borderStyle = style[ which + 'Style' ];
208
201
  const borderColor = style[ which + 'Color' ];
209
-
210
202
  if ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {
211
203
 
212
204
  context.strokeStyle = borderColor;
@@ -226,10 +218,10 @@
226
218
  y = 0,
227
219
  width = 0,
228
220
  height = 0;
229
-
230
221
  if ( element.nodeType === Node.TEXT_NODE ) {
231
222
 
232
223
  // text
224
+
233
225
  range.selectNode( element );
234
226
  const rect = range.getBoundingClientRect();
235
227
  x = rect.left - offset.left - 0.5;
@@ -260,23 +252,24 @@
260
252
  y = rect.top - offset.top - 0.5;
261
253
  width = rect.width;
262
254
  height = rect.height;
263
- style = window.getComputedStyle( element ); // Get the border of the element used for fill and border
255
+ style = window.getComputedStyle( element );
256
+
257
+ // Get the border of the element used for fill and border
264
258
 
265
259
  buildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );
266
260
  const backgroundColor = style.backgroundColor;
267
-
268
261
  if ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {
269
262
 
270
263
  context.fillStyle = backgroundColor;
271
264
  context.fill();
272
265
 
273
- } // If all the borders match then stroke the round rectangle
266
+ }
274
267
 
268
+ // If all the borders match then stroke the round rectangle
275
269
 
276
270
  const borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];
277
271
  let match = true;
278
272
  let prevBorder = null;
279
-
280
273
  for ( const border of borders ) {
281
274
 
282
275
  if ( prevBorder !== null ) {
@@ -293,8 +286,8 @@
293
286
  if ( match === true ) {
294
287
 
295
288
  // They all match so stroke the rectangle from before allows for border-radius
296
- const width = parseFloat( style.borderTopWidth );
297
289
 
290
+ const width = parseFloat( style.borderTopWidth );
298
291
  if ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {
299
292
 
300
293
  context.strokeStyle = style.borderTopColor;
@@ -306,6 +299,7 @@
306
299
  } else {
307
300
 
308
301
  // Otherwise draw individual borders
302
+
309
303
  drawBorder( style, 'borderTop', x, y, width, 0 );
310
304
  drawBorder( style, 'borderLeft', x, y, 0, height );
311
305
  drawBorder( style, 'borderBottom', x, y + height, width, 0 );
@@ -320,7 +314,6 @@
320
314
  color.set( accentColor );
321
315
  const luminance = Math.sqrt( 0.299 * color.r ** 2 + 0.587 * color.g ** 2 + 0.114 * color.b ** 2 );
322
316
  const accentTextColor = luminance < 0.5 ? 'white' : '#111111';
323
-
324
317
  if ( element.type === 'radio' ) {
325
318
 
326
319
  buildRectPath( x, y, width, height, height );
@@ -329,7 +322,6 @@
329
322
  context.lineWidth = 1;
330
323
  context.fill();
331
324
  context.stroke();
332
-
333
325
  if ( element.checked ) {
334
326
 
335
327
  buildRectPath( x + 2, y + 2, width - 4, height - 4, height );
@@ -351,7 +343,6 @@
351
343
  context.lineWidth = 1;
352
344
  context.stroke();
353
345
  context.fill();
354
-
355
346
  if ( element.checked ) {
356
347
 
357
348
  const currentTextAlign = context.textAlign;
@@ -404,13 +395,13 @@
404
395
  }
405
396
 
406
397
  }
398
+
407
399
  /*
408
400
  // debug
409
401
  context.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );
410
402
  context.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );
411
403
  */
412
404
 
413
-
414
405
  const isClipping = style.overflow === 'auto' || style.overflow === 'hidden';
415
406
  if ( isClipping ) clipper.add( {
416
407
  x: x,
@@ -418,7 +409,6 @@
418
409
  width: width,
419
410
  height: height
420
411
  } );
421
-
422
412
  for ( let i = 0; i < element.childNodes.length; i ++ ) {
423
413
 
424
414
  drawElement( element.childNodes[ i ], style );
@@ -431,7 +421,6 @@
431
421
 
432
422
  const offset = element.getBoundingClientRect();
433
423
  let canvas = canvases.get( element );
434
-
435
424
  if ( canvas === undefined ) {
436
425
 
437
426
  canvas = document.createElement( 'canvas' );
@@ -441,12 +430,15 @@
441
430
 
442
431
  }
443
432
 
444
- const context = canvas.getContext( '2d'
445
- /*, { alpha: false }*/
446
- );
447
- const clipper = new Clipper( context ); // console.time( 'drawElement' );
433
+ const context = canvas.getContext( '2d' /*, { alpha: false }*/ );
434
+
435
+ const clipper = new Clipper( context );
436
+
437
+ // console.time( 'drawElement' );
448
438
 
449
- drawElement( element ); // console.timeEnd( 'drawElement' );
439
+ drawElement( element );
440
+
441
+ // console.timeEnd( 'drawElement' );
450
442
 
451
443
  return canvas;
452
444
 
@@ -463,17 +455,14 @@
463
455
  const rect = element.getBoundingClientRect();
464
456
  x = x * rect.width + rect.left;
465
457
  y = y * rect.height + rect.top;
466
-
467
458
  function traverse( element ) {
468
459
 
469
460
  if ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {
470
461
 
471
462
  const rect = element.getBoundingClientRect();
472
-
473
463
  if ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {
474
464
 
475
465
  element.dispatchEvent( new MouseEvent( event, mouseEventInit ) );
476
-
477
466
  if ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {
478
467
 
479
468
  const [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );
@@ -1,12 +1,10 @@
1
1
  ( function () {
2
2
 
3
3
  const _pointer = new THREE.Vector2();
4
-
5
4
  const _event = {
6
5
  type: '',
7
6
  data: _pointer
8
7
  };
9
-
10
8
  class InteractiveGroup extends THREE.Group {
11
9
 
12
10
  constructor( renderer, camera ) {
@@ -14,10 +12,11 @@
14
12
  super();
15
13
  const scope = this;
16
14
  const raycaster = new THREE.Raycaster();
17
- const tempMatrix = new THREE.Matrix4(); // Pointer Events
15
+ const tempMatrix = new THREE.Matrix4();
18
16
 
19
- const element = renderer.domElement;
17
+ // Pointer Events
20
18
 
19
+ const element = renderer.domElement;
21
20
  function onPointerEvent( event ) {
22
21
 
23
22
  event.stopPropagation();
@@ -26,16 +25,13 @@
26
25
  _pointer.y = - ( event.clientY - rect.top ) / rect.height * 2 + 1;
27
26
  raycaster.setFromCamera( _pointer, camera );
28
27
  const intersects = raycaster.intersectObjects( scope.children, false );
29
-
30
28
  if ( intersects.length > 0 ) {
31
29
 
32
30
  const intersection = intersects[ 0 ];
33
31
  const object = intersection.object;
34
32
  const uv = intersection.uv;
35
33
  _event.type = event.type;
36
-
37
34
  _event.data.set( uv.x, 1 - uv.y );
38
-
39
35
  object.dispatchEvent( _event );
40
36
 
41
37
  }
@@ -48,7 +44,9 @@
48
44
  element.addEventListener( 'mousedown', onPointerEvent );
49
45
  element.addEventListener( 'mouseup', onPointerEvent );
50
46
  element.addEventListener( 'mousemove', onPointerEvent );
51
- element.addEventListener( 'click', onPointerEvent ); // WebXR Controller Events
47
+ element.addEventListener( 'click', onPointerEvent );
48
+
49
+ // WebXR Controller Events
52
50
  // TODO: Dispatch pointerevents too
53
51
 
54
52
  const events = {
@@ -57,7 +55,6 @@
57
55
  'selectstart': 'mousedown',
58
56
  'selectend': 'mouseup'
59
57
  };
60
-
61
58
  function onXRControllerEvent( event ) {
62
59
 
63
60
  const controller = event.target;
@@ -65,16 +62,13 @@
65
62
  raycaster.ray.origin.setFromMatrixPosition( controller.matrixWorld );
66
63
  raycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );
67
64
  const intersections = raycaster.intersectObjects( scope.children, false );
68
-
69
65
  if ( intersections.length > 0 ) {
70
66
 
71
67
  const intersection = intersections[ 0 ];
72
68
  const object = intersection.object;
73
69
  const uv = intersection.uv;
74
70
  _event.type = events[ event.type ];
75
-
76
71
  _event.data.set( uv.x, 1 - uv.y );
77
-
78
72
  object.dispatchEvent( _event );
79
73
 
80
74
  }