@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
@@ -7,15 +7,16 @@
7
7
  super( manager );
8
8
 
9
9
  }
10
-
11
10
  parse( buffer ) {
12
11
 
13
12
  // reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js
13
+
14
14
  function tgaCheckHeader( header ) {
15
15
 
16
16
  switch ( header.image_type ) {
17
17
 
18
18
  // check indexed type
19
+
19
20
  case TGA_TYPE_INDEXED:
20
21
  case TGA_TYPE_RLE_INDEXED:
21
22
  if ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {
@@ -25,6 +26,7 @@
25
26
  }
26
27
 
27
28
  break;
29
+
28
30
  // check colormap type
29
31
 
30
32
  case TGA_TYPE_RGB:
@@ -38,24 +40,28 @@
38
40
  }
39
41
 
40
42
  break;
43
+
41
44
  // What the need of a file without data ?
42
45
 
43
46
  case TGA_TYPE_NO_DATA:
44
47
  console.error( 'THREE.TGALoader: No data.' );
48
+
45
49
  // Invalid type ?
46
50
 
47
51
  default:
48
52
  console.error( 'THREE.TGALoader: Invalid type "%s".', header.image_type );
49
53
 
50
- } // check image width and height
54
+ }
51
55
 
56
+ // check image width and height
52
57
 
53
58
  if ( header.width <= 0 || header.height <= 0 ) {
54
59
 
55
60
  console.error( 'THREE.TGALoader: Invalid image size.' );
56
61
 
57
- } // check image pixel size
62
+ }
58
63
 
64
+ // check image pixel size
59
65
 
60
66
  if ( header.pixel_size !== 8 && header.pixel_size !== 16 && header.pixel_size !== 24 && header.pixel_size !== 32 ) {
61
67
 
@@ -63,21 +69,25 @@
63
69
 
64
70
  }
65
71
 
66
- } // parse tga image buffer
72
+ }
67
73
 
74
+ // parse tga image buffer
68
75
 
69
76
  function tgaParse( use_rle, use_pal, header, offset, data ) {
70
77
 
71
78
  let pixel_data, palettes;
72
79
  const pixel_size = header.pixel_size >> 3;
73
- const pixel_total = header.width * header.height * pixel_size; // read palettes
80
+ const pixel_total = header.width * header.height * pixel_size;
81
+
82
+ // read palettes
74
83
 
75
84
  if ( use_pal ) {
76
85
 
77
86
  palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );
78
87
 
79
- } // read RLE
88
+ }
80
89
 
90
+ // read RLE
81
91
 
82
92
  if ( use_rle ) {
83
93
 
@@ -85,21 +95,24 @@
85
95
  let c, count, i;
86
96
  let shift = 0;
87
97
  const pixels = new Uint8Array( pixel_size );
88
-
89
98
  while ( shift < pixel_total ) {
90
99
 
91
100
  c = data[ offset ++ ];
92
- count = ( c & 0x7f ) + 1; // RLE pixels
101
+ count = ( c & 0x7f ) + 1;
102
+
103
+ // RLE pixels
93
104
 
94
105
  if ( c & 0x80 ) {
95
106
 
96
107
  // bind pixel tmp array
108
+
97
109
  for ( i = 0; i < pixel_size; ++ i ) {
98
110
 
99
111
  pixels[ i ] = data[ offset ++ ];
100
112
 
101
- } // copy pixel array
113
+ }
102
114
 
115
+ // copy pixel array
103
116
 
104
117
  for ( i = 0; i < count; ++ i ) {
105
118
 
@@ -112,8 +125,8 @@
112
125
  } else {
113
126
 
114
127
  // raw pixels
115
- count *= pixel_size;
116
128
 
129
+ count *= pixel_size;
117
130
  for ( i = 0; i < count; ++ i ) {
118
131
 
119
132
  pixel_data[ shift + i ] = data[ offset ++ ];
@@ -129,6 +142,7 @@
129
142
  } else {
130
143
 
131
144
  // raw pixels
145
+
132
146
  pixel_data = data.subarray( offset, offset += use_pal ? header.width * header.height : pixel_total );
133
147
 
134
148
  }
@@ -148,7 +162,6 @@
148
162
  x,
149
163
  y;
150
164
  const width = header.width;
151
-
152
165
  for ( y = y_start; y !== y_end; y += y_step ) {
153
166
 
154
167
  for ( x = x_start; x !== x_end; x += x_step, i ++ ) {
@@ -174,7 +187,6 @@
174
187
  x,
175
188
  y;
176
189
  const width = header.width;
177
-
178
190
  for ( y = y_start; y !== y_end; y += y_step ) {
179
191
 
180
192
  for ( x = x_start; x !== x_end; x += x_step, i += 2 ) {
@@ -199,7 +211,6 @@
199
211
  x,
200
212
  y;
201
213
  const width = header.width;
202
-
203
214
  for ( y = y_start; y !== y_end; y += y_step ) {
204
215
 
205
216
  for ( x = x_start; x !== x_end; x += x_step, i += 3 ) {
@@ -223,7 +234,6 @@
223
234
  x,
224
235
  y;
225
236
  const width = header.width;
226
-
227
237
  for ( y = y_start; y !== y_end; y += y_step ) {
228
238
 
229
239
  for ( x = x_start; x !== x_end; x += x_step, i += 4 ) {
@@ -248,7 +258,6 @@
248
258
  x,
249
259
  y;
250
260
  const width = header.width;
251
-
252
261
  for ( y = y_start; y !== y_end; y += y_step ) {
253
262
 
254
263
  for ( x = x_start; x !== x_end; x += x_step, i ++ ) {
@@ -273,7 +282,6 @@
273
282
  x,
274
283
  y;
275
284
  const width = header.width;
276
-
277
285
  for ( y = y_start; y !== y_end; y += y_step ) {
278
286
 
279
287
  for ( x = x_start; x !== x_end; x += x_step, i += 2 ) {
@@ -294,7 +302,6 @@
294
302
  function getTgaRGBA( data, width, height, image, palette ) {
295
303
 
296
304
  let x_start, y_start, x_step, y_step, x_end, y_end;
297
-
298
305
  switch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {
299
306
 
300
307
  default:
@@ -306,7 +313,6 @@
306
313
  y_step = 1;
307
314
  y_end = height;
308
315
  break;
309
-
310
316
  case TGA_ORIGIN_BL:
311
317
  x_start = 0;
312
318
  x_step = 1;
@@ -315,7 +321,6 @@
315
321
  y_step = - 1;
316
322
  y_end = - 1;
317
323
  break;
318
-
319
324
  case TGA_ORIGIN_UR:
320
325
  x_start = width - 1;
321
326
  x_step = - 1;
@@ -324,7 +329,6 @@
324
329
  y_step = 1;
325
330
  y_end = height;
326
331
  break;
327
-
328
332
  case TGA_ORIGIN_BR:
329
333
  x_start = width - 1;
330
334
  x_step = - 1;
@@ -343,11 +347,9 @@
343
347
  case 8:
344
348
  tgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
345
349
  break;
346
-
347
350
  case 16:
348
351
  tgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
349
352
  break;
350
-
351
353
  default:
352
354
  console.error( 'THREE.TGALoader: Format not supported.' );
353
355
  break;
@@ -361,34 +363,31 @@
361
363
  case 8:
362
364
  tgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );
363
365
  break;
364
-
365
366
  case 16:
366
367
  tgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
367
368
  break;
368
-
369
369
  case 24:
370
370
  tgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
371
371
  break;
372
-
373
372
  case 32:
374
373
  tgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
375
374
  break;
376
-
377
375
  default:
378
376
  console.error( 'THREE.TGALoader: Format not supported.' );
379
377
  break;
380
378
 
381
379
  }
382
380
 
383
- } // Load image data according to specific method
381
+ }
382
+
383
+ // Load image data according to specific method
384
384
  // let func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';
385
385
  // func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );
386
-
387
-
388
386
  return data;
389
387
 
390
- } // TGA constants
388
+ }
391
389
 
390
+ // TGA constants
392
391
 
393
392
  const TGA_TYPE_NO_DATA = 0,
394
393
  TGA_TYPE_INDEXED = 1,
@@ -418,52 +417,51 @@
418
417
  height: content[ offset ++ ] | content[ offset ++ ] << 8,
419
418
  pixel_size: content[ offset ++ ],
420
419
  flags: content[ offset ++ ]
421
- }; // check tga if it is valid format
420
+ };
422
421
 
423
- tgaCheckHeader( header );
422
+ // check tga if it is valid format
424
423
 
424
+ tgaCheckHeader( header );
425
425
  if ( header.id_length + offset > buffer.length ) {
426
426
 
427
427
  console.error( 'THREE.TGALoader: No data.' );
428
428
 
429
- } // skip the needn't data
429
+ }
430
+
431
+ // skip the needn't data
430
432
 
433
+ offset += header.id_length;
431
434
 
432
- offset += header.id_length; // get targa information about RLE compression and palette
435
+ // get targa information about RLE compression and palette
433
436
 
434
437
  let use_rle = false,
435
438
  use_pal = false,
436
439
  use_grey = false;
437
-
438
440
  switch ( header.image_type ) {
439
441
 
440
442
  case TGA_TYPE_RLE_INDEXED:
441
443
  use_rle = true;
442
444
  use_pal = true;
443
445
  break;
444
-
445
446
  case TGA_TYPE_INDEXED:
446
447
  use_pal = true;
447
448
  break;
448
-
449
449
  case TGA_TYPE_RLE_RGB:
450
450
  use_rle = true;
451
451
  break;
452
-
453
452
  case TGA_TYPE_RGB:
454
453
  break;
455
-
456
454
  case TGA_TYPE_RLE_GREY:
457
455
  use_rle = true;
458
456
  use_grey = true;
459
457
  break;
460
-
461
458
  case TGA_TYPE_GREY:
462
459
  use_grey = true;
463
460
  break;
464
461
 
465
- } //
462
+ }
466
463
 
464
+ //
467
465
 
468
466
  const imageData = new Uint8Array( header.width * header.height * 4 );
469
467
  const result = tgaParse( use_rle, use_pal, header, offset, content );
@@ -7,7 +7,6 @@
7
7
  super( manager );
8
8
 
9
9
  }
10
-
11
10
  parse( buffer ) {
12
11
 
13
12
  const ifds = UTIF.decode( buffer );
@@ -14,7 +14,6 @@
14
14
  this.reversed = false;
15
15
 
16
16
  }
17
-
18
17
  load( url, onLoad, onProgress, onError ) {
19
18
 
20
19
  const scope = this;
@@ -48,7 +47,6 @@
48
47
  }, onProgress, onError );
49
48
 
50
49
  }
51
-
52
50
  parse( arraybuffer ) {
53
51
 
54
52
  function convert( font, reversed ) {
@@ -58,12 +56,10 @@
58
56
  const scale = 100000 / ( ( font.unitsPerEm || 2048 ) * 72 );
59
57
  const glyphIndexMap = font.encoding.cmap.glyphIndexMap;
60
58
  const unicodes = Object.keys( glyphIndexMap );
61
-
62
59
  for ( let i = 0; i < unicodes.length; i ++ ) {
63
60
 
64
61
  const unicode = unicodes[ i ];
65
62
  const glyph = font.glyphs.glyphs[ glyphIndexMap[ unicode ] ];
66
-
67
63
  if ( unicode !== undefined ) {
68
64
 
69
65
  const token = {
@@ -72,7 +68,6 @@
72
68
  x_max: round( glyph.xMax * scale ),
73
69
  o: ''
74
70
  };
75
-
76
71
  if ( reversed ) {
77
72
 
78
73
  glyph.path.commands = reverseCommands( glyph.path.commands );
@@ -88,7 +83,6 @@
88
83
  }
89
84
 
90
85
  token.o += command.type.toLowerCase() + ' ';
91
-
92
86
  if ( command.x !== undefined && command.y !== undefined ) {
93
87
 
94
88
  token.o += round( command.x * scale ) + ' ' + round( command.y * scale ) + ' ';
@@ -160,14 +154,12 @@
160
154
  y: p[ p.length - 1 ].y
161
155
  };
162
156
  reversed.push( result );
163
-
164
157
  for ( let i = p.length - 1; i > 0; i -- ) {
165
158
 
166
159
  const command = p[ i ];
167
160
  const result = {
168
161
  type: command.type
169
162
  };
170
-
171
163
  if ( command.x2 !== undefined && command.y2 !== undefined ) {
172
164
 
173
165
  result.x1 = command.x2;
@@ -34,12 +34,13 @@
34
34
  }, onProgress, onError );
35
35
 
36
36
  }
37
-
38
37
  parse( buffer ) {
39
38
 
40
- const group = new THREE.Group(); // https://docs.google.com/document/d/11ZsHozYn9FnWG7y3s3WAyKIACfbfwb4PbaS8cZ_xjvo/edit#
39
+ const group = new THREE.Group();
40
+ // https://docs.google.com/document/d/11ZsHozYn9FnWG7y3s3WAyKIACfbfwb4PbaS8cZ_xjvo/edit#
41
41
 
42
42
  const zip = fflate.unzipSync( new Uint8Array( buffer.slice( 16 ) ) );
43
+
43
44
  /*
44
45
  const thumbnail = zip[ 'thumbnail.png' ].buffer;
45
46
  const img = document.createElement( 'img' );
@@ -48,6 +49,7 @@
48
49
  */
49
50
 
50
51
  const metadata = JSON.parse( fflate.strFromU8( zip[ 'metadata.json' ] ) );
52
+
51
53
  /*
52
54
  const blob = new Blob( [ zip[ 'data.sketch' ].buffer ], { type: 'application/octet-stream' } );
53
55
  window.open( URL.createObjectURL( blob ) );
@@ -57,7 +59,6 @@
57
59
  const num_strokes = data.getInt32( 16, true );
58
60
  const brushes = {};
59
61
  let offset = 20;
60
-
61
62
  for ( let i = 0; i < num_strokes; i ++ ) {
62
63
 
63
64
  const brush_index = data.getInt32( offset, true );
@@ -67,26 +68,28 @@
67
68
  const controlpoint_mask = data.getUint32( offset + 28, true );
68
69
  let offset_stroke_mask = 0;
69
70
  let offset_controlpoint_mask = 0;
70
-
71
71
  for ( let j = 0; j < 4; j ++ ) {
72
72
 
73
73
  // TOFIX: I don't understand these masks yet
74
+
74
75
  const byte = 1 << j;
75
76
  if ( ( stroke_mask & byte ) > 0 ) offset_stroke_mask += 4;
76
77
  if ( ( controlpoint_mask & byte ) > 0 ) offset_controlpoint_mask += 4;
77
78
 
78
- } // console.log( { brush_index, brush_color, brush_size, stroke_mask, controlpoint_mask } );
79
- // console.log( offset_stroke_mask, offset_controlpoint_mask );
79
+ }
80
80
 
81
+ // console.log( { brush_index, brush_color, brush_size, stroke_mask, controlpoint_mask } );
82
+ // console.log( offset_stroke_mask, offset_controlpoint_mask );
81
83
 
82
84
  offset = offset + 28 + offset_stroke_mask + 4; // TOFIX: This is wrong
83
85
 
84
- const num_control_points = data.getInt32( offset, true ); // console.log( { num_control_points } );
86
+ const num_control_points = data.getInt32( offset, true );
87
+
88
+ // console.log( { num_control_points } );
85
89
 
86
90
  const positions = new Float32Array( num_control_points * 3 );
87
91
  const quaternions = new Float32Array( num_control_points * 4 );
88
92
  offset = offset + 4;
89
-
90
93
  for ( let j = 0, k = 0; j < positions.length; j += 3, k += 4 ) {
91
94
 
92
95
  positions[ j + 0 ] = data.getFloat32( offset + 0, true );
@@ -123,7 +126,6 @@
123
126
  }
124
127
 
125
128
  }
126
-
127
129
  class StrokeGeometry extends THREE.BufferGeometry {
128
130
 
129
131
  constructor( strokes ) {
@@ -139,7 +141,9 @@
139
141
  const vector1 = new THREE.Vector3();
140
142
  const vector2 = new THREE.Vector3();
141
143
  const vector3 = new THREE.Vector3();
142
- const vector4 = new THREE.Vector3(); // size = size / 2;
144
+ const vector4 = new THREE.Vector3();
145
+
146
+ // size = size / 2;
143
147
 
144
148
  for ( const k in strokes ) {
145
149
 
@@ -150,7 +154,6 @@
150
154
  const color = stroke[ 3 ];
151
155
  prevPosition.fromArray( positions, 0 );
152
156
  prevQuaternion.fromArray( quaternions, 0 );
153
-
154
157
  for ( let i = 3, j = 4, l = positions.length; i < l; i += 3, j += 4 ) {
155
158
 
156
159
  position.fromArray( positions, i );
@@ -201,7 +204,6 @@
201
204
  }
202
205
 
203
206
  }
204
-
205
207
  const BRUSH_LIST_ARRAY = {
206
208
  '89d104cd-d012-426b-b5b3-bbaee63ac43c': 'Bubbles',
207
209
  '700f3aa8-9a7c-2384-8b8a-ea028905dd8c': 'CelVinyl',
@@ -335,7 +337,6 @@
335
337
  }
336
338
  };
337
339
  let shaders = null;
338
-
339
340
  function getShaders() {
340
341
 
341
342
  if ( shaders === null ) {
@@ -439,12 +440,10 @@
439
440
  function getMaterial( GUID ) {
440
441
 
441
442
  const name = BRUSH_LIST_ARRAY[ GUID ];
442
-
443
443
  switch ( name ) {
444
444
 
445
445
  case 'Light':
446
446
  return new THREE.RawShaderMaterial( getShaders().Light );
447
-
448
447
  default:
449
448
  return new THREE.MeshBasicMaterial( {
450
449
  vertexColors: true,
@@ -34,13 +34,11 @@
34
34
  }, onProgress, onError );
35
35
 
36
36
  }
37
-
38
37
  parse( buffer ) {
39
38
 
40
39
  const data = new DataView( buffer );
41
40
  const id = data.getUint32( 0, true );
42
41
  const version = data.getUint32( 4, true );
43
-
44
42
  if ( id !== 542658390 || version !== 150 ) {
45
43
 
46
44
  console.error( 'Not a valid VOX file' );
@@ -52,11 +50,9 @@
52
50
  let i = 8;
53
51
  let chunk;
54
52
  const chunks = [];
55
-
56
53
  while ( i < data.byteLength ) {
57
54
 
58
55
  let id = '';
59
-
60
56
  for ( let j = 0; j < 4; j ++ ) {
61
57
 
62
58
  id += String.fromCharCode( data.getUint8( i ++ ) );
@@ -96,7 +92,6 @@
96
92
  } else if ( id === 'RGBA' ) {
97
93
 
98
94
  const palette = [ 0 ];
99
-
100
95
  for ( let j = 0; j < 256; j ++ ) {
101
96
 
102
97
  palette[ j + 1 ] = data.getUint32( i, true );
@@ -109,6 +104,7 @@
109
104
  } else {
110
105
 
111
106
  // console.log( id, chunkSize, childChunks );
107
+
112
108
  i += chunkSize;
113
109
 
114
110
  }
@@ -120,14 +116,15 @@
120
116
  }
121
117
 
122
118
  }
123
-
124
119
  class VOXMesh extends THREE.Mesh {
125
120
 
126
121
  constructor( chunk ) {
127
122
 
128
123
  const data = chunk.data;
129
124
  const size = chunk.size;
130
- const palette = chunk.palette; //
125
+ const palette = chunk.palette;
126
+
127
+ //
131
128
 
132
129
  const vertices = [];
133
130
  const colors = [];
@@ -137,13 +134,11 @@
137
134
  const ny = [ 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0 ];
138
135
  const nz = [ 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0 ];
139
136
  const pz = [ 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1 ];
140
-
141
137
  function add( tile, x, y, z, r, g, b ) {
142
138
 
143
139
  x -= size.x / 2;
144
140
  y -= size.z / 2;
145
141
  z += size.y / 2;
146
-
147
142
  for ( let i = 0; i < 18; i += 3 ) {
148
143
 
149
144
  vertices.push( tile[ i + 0 ] + x, tile[ i + 1 ] + y, tile[ i + 2 ] + z );
@@ -151,13 +146,13 @@
151
146
 
152
147
  }
153
148
 
154
- } // Store data in a volume for sampling
149
+ }
155
150
 
151
+ // Store data in a volume for sampling
156
152
 
157
153
  const offsety = size.x;
158
154
  const offsetz = size.x * size.y;
159
155
  const array = new Uint8Array( size.x * size.y * size.z );
160
-
161
156
  for ( let j = 0; j < data.length; j += 4 ) {
162
157
 
163
158
  const x = data[ j + 0 ];
@@ -166,11 +161,11 @@
166
161
  const index = x + y * offsety + z * offsetz;
167
162
  array[ index ] = 255;
168
163
 
169
- } // Construct geometry
164
+ }
170
165
 
166
+ // Construct geometry
171
167
 
172
168
  let hasColors = false;
173
-
174
169
  for ( let j = 0; j < data.length; j += 4 ) {
175
170
 
176
171
  const x = data[ j + 0 ];
@@ -196,7 +191,6 @@
196
191
  geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
197
192
  geometry.computeVertexNormals();
198
193
  const material = new THREE.MeshStandardMaterial();
199
-
200
194
  if ( hasColors ) {
201
195
 
202
196
  geometry.setAttribute( 'color', new THREE.Float32BufferAttribute( colors, 3 ) );
@@ -209,7 +203,6 @@
209
203
  }
210
204
 
211
205
  }
212
-
213
206
  class VOXData3DTexture extends THREE.Data3DTexture {
214
207
 
215
208
  constructor( chunk ) {
@@ -219,7 +212,6 @@
219
212
  const offsety = size.x;
220
213
  const offsetz = size.x * size.y;
221
214
  const array = new Uint8Array( size.x * size.y * size.z );
222
-
223
215
  for ( let j = 0; j < data.length; j += 4 ) {
224
216
 
225
217
  const x = data[ j + 0 ];