@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
@@ -9,13 +9,12 @@
9
9
  this.type = 'LineGeometry';
10
10
 
11
11
  }
12
-
13
12
  setPositions( array ) {
14
13
 
15
14
  // converts [ x1, y1, z1, x2, y2, z2, ... ] to pairs format
15
+
16
16
  const length = array.length - 3;
17
17
  const points = new Float32Array( 2 * length );
18
-
19
18
  for ( let i = 0; i < length; i += 3 ) {
20
19
 
21
20
  points[ 2 * i ] = array[ i ];
@@ -31,13 +30,12 @@
31
30
  return this;
32
31
 
33
32
  }
34
-
35
33
  setColors( array ) {
36
34
 
37
35
  // converts [ r1, g1, b1, r2, g2, b2, ... ] to pairs format
36
+
38
37
  const length = array.length - 3;
39
38
  const colors = new Float32Array( 2 * length );
40
-
41
39
  for ( let i = 0; i < length; i += 3 ) {
42
40
 
43
41
  colors[ 2 * i ] = array[ i ];
@@ -53,11 +51,11 @@
53
51
  return this;
54
52
 
55
53
  }
56
-
57
54
  fromLine( line ) {
58
55
 
59
56
  const geometry = line.geometry;
60
57
  this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
58
+
61
59
  // set colors, maybe
62
60
 
63
61
  return this;
@@ -34,13 +34,11 @@
34
34
  gapSize: {
35
35
  value: 1
36
36
  } // todo FIX - maybe change to totalSize
37
-
38
37
  };
38
+
39
39
  THREE.ShaderLib[ 'line' ] = {
40
40
  uniforms: THREE.UniformsUtils.merge( [ THREE.UniformsLib.common, THREE.UniformsLib.fog, THREE.UniformsLib.line ] ),
41
- vertexShader:
42
- /* glsl */
43
- `
41
+ vertexShader: /* glsl */`
44
42
  #include <common>
45
43
  #include <color_pars_vertex>
46
44
  #include <fog_pars_vertex>
@@ -269,9 +267,7 @@
269
267
 
270
268
  }
271
269
  `,
272
- fragmentShader:
273
- /* glsl */
274
- `
270
+ fragmentShader: /* glsl */`
275
271
  uniform vec3 diffuse;
276
272
  uniform float opacity;
277
273
  uniform float linewidth;
@@ -432,7 +428,6 @@
432
428
  }
433
429
  `
434
430
  };
435
-
436
431
  class LineMaterial extends THREE.ShaderMaterial {
437
432
 
438
433
  constructor( parameters ) {
@@ -443,8 +438,8 @@
443
438
  vertexShader: THREE.ShaderLib[ 'line' ].vertexShader,
444
439
  fragmentShader: THREE.ShaderLib[ 'line' ].fragmentShader,
445
440
  clipping: true // required for clipping support
446
-
447
441
  } );
442
+
448
443
  this.isLineMaterial = true;
449
444
  Object.defineProperties( this, {
450
445
  color: {
@@ -501,7 +496,6 @@
501
496
  return Boolean( 'USE_DASH' in this.defines );
502
497
 
503
498
  },
504
-
505
499
  set( value ) {
506
500
 
507
501
  if ( Boolean( value ) !== Boolean( 'USE_DASH' in this.defines ) ) {
@@ -521,7 +515,6 @@
521
515
  }
522
516
 
523
517
  }
524
-
525
518
  },
526
519
  dashScale: {
527
520
  enumerable: true,
@@ -1,49 +1,32 @@
1
1
  ( function () {
2
2
 
3
3
  const _start = new THREE.Vector3();
4
-
5
4
  const _end = new THREE.Vector3();
6
-
7
5
  const _start4 = new THREE.Vector4();
8
-
9
6
  const _end4 = new THREE.Vector4();
10
-
11
7
  const _ssOrigin = new THREE.Vector4();
12
-
13
8
  const _ssOrigin3 = new THREE.Vector3();
14
-
15
9
  const _mvMatrix = new THREE.Matrix4();
16
-
17
10
  const _line = new THREE.Line3();
18
-
19
11
  const _closestPoint = new THREE.Vector3();
20
-
21
12
  const _box = new THREE.Box3();
22
-
23
13
  const _sphere = new THREE.Sphere();
24
-
25
14
  const _clipToWorldVector = new THREE.Vector4();
15
+ let _ray, _instanceStart, _instanceEnd, _lineWidth;
26
16
 
27
- let _ray, _instanceStart, _instanceEnd, _lineWidth; // Returns the margin required to expand by in world space given the distance from the camera,
17
+ // Returns the margin required to expand by in world space given the distance from the camera,
28
18
  // line width, resolution, and camera projection
29
-
30
-
31
19
  function getWorldSpaceHalfWidth( camera, distance, resolution ) {
32
20
 
33
21
  // transform into clip space, adjust the x and y values by the pixel width offset, then
34
22
  // transform back into world space to get world offset. Note clip space is [-1, 1] so full
35
23
  // width does not need to be halved.
36
24
  _clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix );
37
-
38
25
  _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
39
-
40
26
  _clipToWorldVector.x = _lineWidth / resolution.width;
41
27
  _clipToWorldVector.y = _lineWidth / resolution.height;
42
-
43
28
  _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse );
44
-
45
29
  _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
46
-
47
30
  return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) );
48
31
 
49
32
  }
@@ -53,16 +36,11 @@
53
36
  for ( let i = 0, l = _instanceStart.count; i < l; i ++ ) {
54
37
 
55
38
  _line.start.fromBufferAttribute( _instanceStart, i );
56
-
57
39
  _line.end.fromBufferAttribute( _instanceEnd, i );
58
-
59
40
  const pointOnLine = new THREE.Vector3();
60
41
  const point = new THREE.Vector3();
61
-
62
42
  _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
63
-
64
43
  const isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5;
65
-
66
44
  if ( isInside ) {
67
45
 
68
46
  intersects.push( {
@@ -91,119 +69,98 @@
91
69
  const geometry = lineSegments.geometry;
92
70
  const instanceStart = geometry.attributes.instanceStart;
93
71
  const instanceEnd = geometry.attributes.instanceEnd;
94
- const near = - camera.near; //
72
+ const near = - camera.near;
73
+
74
+ //
75
+
95
76
  // pick a point 1 unit out along the ray to avoid the ray origin
96
77
  // sitting at the camera origin which will cause "w" to be 0 when
97
78
  // applying the projection matrix.
79
+ _ray.at( 1, _ssOrigin );
98
80
 
99
- _ray.at( 1, _ssOrigin ); // ndc space [ - 1.0, 1.0 ]
100
-
101
-
81
+ // ndc space [ - 1.0, 1.0 ]
102
82
  _ssOrigin.w = 1;
103
-
104
83
  _ssOrigin.applyMatrix4( camera.matrixWorldInverse );
105
-
106
84
  _ssOrigin.applyMatrix4( projectionMatrix );
85
+ _ssOrigin.multiplyScalar( 1 / _ssOrigin.w );
107
86
 
108
- _ssOrigin.multiplyScalar( 1 / _ssOrigin.w ); // screen space
109
-
110
-
87
+ // screen space
111
88
  _ssOrigin.x *= resolution.x / 2;
112
89
  _ssOrigin.y *= resolution.y / 2;
113
90
  _ssOrigin.z = 0;
114
-
115
91
  _ssOrigin3.copy( _ssOrigin );
116
-
117
92
  _mvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld );
118
-
119
93
  for ( let i = 0, l = instanceStart.count; i < l; i ++ ) {
120
94
 
121
95
  _start4.fromBufferAttribute( instanceStart, i );
122
-
123
96
  _end4.fromBufferAttribute( instanceEnd, i );
124
-
125
97
  _start4.w = 1;
126
- _end4.w = 1; // camera space
98
+ _end4.w = 1;
127
99
 
100
+ // camera space
128
101
  _start4.applyMatrix4( _mvMatrix );
102
+ _end4.applyMatrix4( _mvMatrix );
129
103
 
130
- _end4.applyMatrix4( _mvMatrix ); // skip the segment if it's entirely behind the camera
131
-
132
-
104
+ // skip the segment if it's entirely behind the camera
133
105
  const isBehindCameraNear = _start4.z > near && _end4.z > near;
134
-
135
106
  if ( isBehindCameraNear ) {
136
107
 
137
108
  continue;
138
109
 
139
- } // trim the segment if it extends behind camera near
140
-
110
+ }
141
111
 
112
+ // trim the segment if it extends behind camera near
142
113
  if ( _start4.z > near ) {
143
114
 
144
115
  const deltaDist = _start4.z - _end4.z;
145
116
  const t = ( _start4.z - near ) / deltaDist;
146
-
147
117
  _start4.lerp( _end4, t );
148
118
 
149
119
  } else if ( _end4.z > near ) {
150
120
 
151
121
  const deltaDist = _end4.z - _start4.z;
152
122
  const t = ( _end4.z - near ) / deltaDist;
153
-
154
123
  _end4.lerp( _start4, t );
155
124
 
156
- } // clip space
157
-
125
+ }
158
126
 
127
+ // clip space
159
128
  _start4.applyMatrix4( projectionMatrix );
129
+ _end4.applyMatrix4( projectionMatrix );
160
130
 
161
- _end4.applyMatrix4( projectionMatrix ); // ndc space [ - 1.0, 1.0 ]
162
-
163
-
131
+ // ndc space [ - 1.0, 1.0 ]
164
132
  _start4.multiplyScalar( 1 / _start4.w );
133
+ _end4.multiplyScalar( 1 / _end4.w );
165
134
 
166
- _end4.multiplyScalar( 1 / _end4.w ); // screen space
167
-
168
-
135
+ // screen space
169
136
  _start4.x *= resolution.x / 2;
170
137
  _start4.y *= resolution.y / 2;
171
138
  _end4.x *= resolution.x / 2;
172
- _end4.y *= resolution.y / 2; // create 2d segment
139
+ _end4.y *= resolution.y / 2;
173
140
 
141
+ // create 2d segment
174
142
  _line.start.copy( _start4 );
175
-
176
143
  _line.start.z = 0;
177
-
178
144
  _line.end.copy( _end4 );
145
+ _line.end.z = 0;
179
146
 
180
- _line.end.z = 0; // get closest point on ray to segment
181
-
147
+ // get closest point on ray to segment
182
148
  const param = _line.closestPointToPointParameter( _ssOrigin3, true );
149
+ _line.at( param, _closestPoint );
183
150
 
184
- _line.at( param, _closestPoint ); // check if the intersection point is within clip space
185
-
186
-
151
+ // check if the intersection point is within clip space
187
152
  const zPos = THREE.MathUtils.lerp( _start4.z, _end4.z, param );
188
153
  const isInClipSpace = zPos >= - 1 && zPos <= 1;
189
-
190
154
  const isInside = _ssOrigin3.distanceTo( _closestPoint ) < _lineWidth * 0.5;
191
-
192
155
  if ( isInClipSpace && isInside ) {
193
156
 
194
157
  _line.start.fromBufferAttribute( instanceStart, i );
195
-
196
158
  _line.end.fromBufferAttribute( instanceEnd, i );
197
-
198
159
  _line.start.applyMatrix4( matrixWorld );
199
-
200
160
  _line.end.applyMatrix4( matrixWorld );
201
-
202
161
  const pointOnLine = new THREE.Vector3();
203
162
  const point = new THREE.Vector3();
204
-
205
163
  _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
206
-
207
164
  intersects.push( {
208
165
  point: point,
209
166
  pointOnLine: pointOnLine,
@@ -231,8 +188,9 @@
231
188
  this.isLineSegments2 = true;
232
189
  this.type = 'LineSegments2';
233
190
 
234
- } // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
191
+ }
235
192
 
193
+ // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
236
194
 
237
195
  computeLineDistances() {
238
196
 
@@ -240,13 +198,10 @@
240
198
  const instanceStart = geometry.attributes.instanceStart;
241
199
  const instanceEnd = geometry.attributes.instanceEnd;
242
200
  const lineDistances = new Float32Array( 2 * instanceStart.count );
243
-
244
201
  for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
245
202
 
246
203
  _start.fromBufferAttribute( instanceStart, i );
247
-
248
204
  _end.fromBufferAttribute( instanceEnd, i );
249
-
250
205
  lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
251
206
  lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
252
207
 
@@ -255,18 +210,15 @@
255
210
  const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
256
211
 
257
212
  geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
258
-
259
213
  geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
260
214
 
261
215
  return this;
262
216
 
263
217
  }
264
-
265
218
  raycast( raycaster, intersects ) {
266
219
 
267
220
  const worldUnits = this.material.worldUnits;
268
221
  const camera = raycaster.camera;
269
-
270
222
  if ( camera === null && ! worldUnits ) {
271
223
 
272
224
  console.error( 'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.' );
@@ -280,19 +232,19 @@
280
232
  const material = this.material;
281
233
  _lineWidth = material.linewidth + threshold;
282
234
  _instanceStart = geometry.attributes.instanceStart;
283
- _instanceEnd = geometry.attributes.instanceEnd; // check if we intersect the sphere bounds
235
+ _instanceEnd = geometry.attributes.instanceEnd;
284
236
 
237
+ // check if we intersect the sphere bounds
285
238
  if ( geometry.boundingSphere === null ) {
286
239
 
287
240
  geometry.computeBoundingSphere();
288
241
 
289
242
  }
290
243
 
291
- _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld ); // increase the sphere bounds by the worst case line screen space width
292
-
244
+ _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
293
245
 
246
+ // increase the sphere bounds by the worst case line screen space width
294
247
  let sphereMargin;
295
-
296
248
  if ( worldUnits ) {
297
249
 
298
250
  sphereMargin = _lineWidth * 0.5;
@@ -305,25 +257,23 @@
305
257
  }
306
258
 
307
259
  _sphere.radius += sphereMargin;
308
-
309
260
  if ( _ray.intersectsSphere( _sphere ) === false ) {
310
261
 
311
262
  return;
312
263
 
313
- } // check if we intersect the box bounds
314
-
264
+ }
315
265
 
266
+ // check if we intersect the box bounds
316
267
  if ( geometry.boundingBox === null ) {
317
268
 
318
269
  geometry.computeBoundingBox();
319
270
 
320
271
  }
321
272
 
322
- _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld ); // increase the box bounds by the worst case line width
323
-
273
+ _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
324
274
 
275
+ // increase the box bounds by the worst case line width
325
276
  let boxMargin;
326
-
327
277
  if ( worldUnits ) {
328
278
 
329
279
  boxMargin = _lineWidth * 0.5;
@@ -336,7 +286,6 @@
336
286
  }
337
287
 
338
288
  _box.expandByScalar( boxMargin );
339
-
340
289
  if ( _ray.intersectsBox( _box ) === false ) {
341
290
 
342
291
  return;
@@ -1,9 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  const _box = new THREE.Box3();
4
-
5
4
  const _vector = new THREE.Vector3();
6
-
7
5
  class LineSegmentsGeometry extends THREE.InstancedBufferGeometry {
8
6
 
9
7
  constructor() {
@@ -19,12 +17,10 @@
19
17
  this.setAttribute( 'uv', new THREE.Float32BufferAttribute( uvs, 2 ) );
20
18
 
21
19
  }
22
-
23
20
  applyMatrix4( matrix ) {
24
21
 
25
22
  const start = this.attributes.instanceStart;
26
23
  const end = this.attributes.instanceEnd;
27
-
28
24
  if ( start !== undefined ) {
29
25
 
30
26
  start.applyMatrix4( matrix );
@@ -48,11 +44,9 @@
48
44
  return this;
49
45
 
50
46
  }
51
-
52
47
  setPositions( array ) {
53
48
 
54
49
  let lineSegments;
55
-
56
50
  if ( array instanceof Float32Array ) {
57
51
 
58
52
  lineSegments = array;
@@ -66,8 +60,8 @@
66
60
  const instanceBuffer = new THREE.InstancedInterleavedBuffer( lineSegments, 6, 1 ); // xyz, xyz
67
61
 
68
62
  this.setAttribute( 'instanceStart', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz
69
-
70
63
  this.setAttribute( 'instanceEnd', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz
64
+
71
65
  //
72
66
 
73
67
  this.computeBoundingBox();
@@ -75,11 +69,9 @@
75
69
  return this;
76
70
 
77
71
  }
78
-
79
72
  setColors( array ) {
80
73
 
81
74
  let colors;
82
-
83
75
  if ( array instanceof Float32Array ) {
84
76
 
85
77
  colors = array;
@@ -93,45 +85,42 @@
93
85
  const instanceColorBuffer = new THREE.InstancedInterleavedBuffer( colors, 6, 1 ); // rgb, rgb
94
86
 
95
87
  this.setAttribute( 'instanceColorStart', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 0 ) ); // rgb
96
-
97
88
  this.setAttribute( 'instanceColorEnd', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 3 ) ); // rgb
98
89
 
99
90
  return this;
100
91
 
101
92
  }
102
-
103
93
  fromWireframeGeometry( geometry ) {
104
94
 
105
95
  this.setPositions( geometry.attributes.position.array );
106
96
  return this;
107
97
 
108
98
  }
109
-
110
99
  fromEdgesGeometry( geometry ) {
111
100
 
112
101
  this.setPositions( geometry.attributes.position.array );
113
102
  return this;
114
103
 
115
104
  }
116
-
117
105
  fromMesh( mesh ) {
118
106
 
119
- this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) ); // set colors, maybe
107
+ this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) );
108
+
109
+ // set colors, maybe
120
110
 
121
111
  return this;
122
112
 
123
113
  }
124
-
125
114
  fromLineSegments( lineSegments ) {
126
115
 
127
116
  const geometry = lineSegments.geometry;
128
117
  this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
118
+
129
119
  // set colors, maybe
130
120
 
131
121
  return this;
132
122
 
133
123
  }
134
-
135
124
  computeBoundingBox() {
136
125
 
137
126
  if ( this.boundingBox === null ) {
@@ -142,19 +131,15 @@
142
131
 
143
132
  const start = this.attributes.instanceStart;
144
133
  const end = this.attributes.instanceEnd;
145
-
146
134
  if ( start !== undefined && end !== undefined ) {
147
135
 
148
136
  this.boundingBox.setFromBufferAttribute( start );
149
-
150
137
  _box.setFromBufferAttribute( end );
151
-
152
138
  this.boundingBox.union( _box );
153
139
 
154
140
  }
155
141
 
156
142
  }
157
-
158
143
  computeBoundingSphere() {
159
144
 
160
145
  if ( this.boundingSphere === null ) {
@@ -171,27 +156,21 @@
171
156
 
172
157
  const start = this.attributes.instanceStart;
173
158
  const end = this.attributes.instanceEnd;
174
-
175
159
  if ( start !== undefined && end !== undefined ) {
176
160
 
177
161
  const center = this.boundingSphere.center;
178
162
  this.boundingBox.getCenter( center );
179
163
  let maxRadiusSq = 0;
180
-
181
164
  for ( let i = 0, il = start.count; i < il; i ++ ) {
182
165
 
183
166
  _vector.fromBufferAttribute( start, i );
184
-
185
167
  maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );
186
-
187
168
  _vector.fromBufferAttribute( end, i );
188
-
189
169
  maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );
190
170
 
191
171
  }
192
172
 
193
173
  this.boundingSphere.radius = Math.sqrt( maxRadiusSq );
194
-
195
174
  if ( isNaN( this.boundingSphere.radius ) ) {
196
175
 
197
176
  console.error( 'THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this );
@@ -201,10 +180,10 @@
201
180
  }
202
181
 
203
182
  }
183
+ toJSON() {
204
184
 
205
- toJSON() { // todo
185
+ // todo
206
186
  }
207
-
208
187
  applyMatrix( matrix ) {
209
188
 
210
189
  console.warn( 'THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().' );
@@ -1,9 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  const _start = new THREE.Vector3();
4
-
5
4
  const _end = new THREE.Vector3();
6
-
7
5
  class Wireframe extends THREE.Mesh {
8
6
 
9
7
  constructor( geometry = new THREE.LineSegmentsGeometry(), material = new THREE.LineMaterial( {
@@ -14,8 +12,9 @@
14
12
  this.isWireframe = true;
15
13
  this.type = 'Wireframe';
16
14
 
17
- } // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
15
+ }
18
16
 
17
+ // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
19
18
 
20
19
  computeLineDistances() {
21
20
 
@@ -23,13 +22,10 @@
23
22
  const instanceStart = geometry.attributes.instanceStart;
24
23
  const instanceEnd = geometry.attributes.instanceEnd;
25
24
  const lineDistances = new Float32Array( 2 * instanceStart.count );
26
-
27
25
  for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
28
26
 
29
27
  _start.fromBufferAttribute( instanceStart, i );
30
-
31
28
  _end.fromBufferAttribute( instanceEnd, i );
32
-
33
29
  lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
34
30
  lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
35
31
 
@@ -38,7 +34,6 @@
38
34
  const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
39
35
 
40
36
  geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
41
-
42
37
  geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
43
38
 
44
39
  return this;
@@ -7,7 +7,9 @@
7
7
  super();
8
8
  this.isWireframeGeometry2 = true;
9
9
  this.type = 'WireframeGeometry2';
10
- this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) ); // set colors, maybe
10
+ this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) );
11
+
12
+ // set colors, maybe
11
13
 
12
14
  }
13
15