super-three 0.141.0 → 0.147.0

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 (646) hide show
  1. package/README.md +9 -9
  2. package/build/three.cjs +2441 -1569
  3. package/build/three.js +2441 -1569
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2847 -1576
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +71 -150
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +149 -403
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -61
  14. package/examples/js/controls/FlyControls.js +29 -63
  15. package/examples/js/controls/OrbitControls.js +125 -103
  16. package/examples/js/controls/PointerLockControls.js +5 -22
  17. package/examples/js/controls/TrackballControls.js +33 -88
  18. package/examples/js/controls/TransformControls.js +101 -182
  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 +6 -20
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +30 -54
  30. package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
  31. package/examples/js/effects/PeppersGhostEffect.js +14 -41
  32. package/examples/js/effects/StereoEffect.js +2 -6
  33. package/examples/js/environments/RoomEnvironment.js +32 -8
  34. package/examples/js/exporters/ColladaExporter.js +52 -78
  35. package/examples/js/exporters/DRACOExporter.js +22 -34
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +168 -345
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +40 -52
  40. package/examples/js/exporters/PLYExporter.js +50 -57
  41. package/examples/js/exporters/STLExporter.js +5 -14
  42. package/examples/js/exporters/USDZExporter.js +119 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +12 -7
  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 +23 -17
  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 +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +2 -8
  63. package/examples/js/libs/ktx-parse.umd.js +1 -0
  64. package/examples/js/libs/meshopt_decoder.js +98 -32
  65. package/examples/js/lights/LightProbeGenerator.js +32 -39
  66. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  67. package/examples/js/lines/LineGeometry.js +3 -5
  68. package/examples/js/lines/LineMaterial.js +4 -11
  69. package/examples/js/lines/LineSegments2.js +40 -89
  70. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  71. package/examples/js/lines/Wireframe.js +2 -7
  72. package/examples/js/lines/WireframeGeometry2.js +3 -1
  73. package/examples/js/loaders/3DMLoader.js +58 -155
  74. package/examples/js/loaders/3MFLoader.js +72 -106
  75. package/examples/js/loaders/AMFLoader.js +0 -25
  76. package/examples/js/loaders/BVHLoader.js +44 -43
  77. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  78. package/examples/js/loaders/ColladaLoader.js +229 -359
  79. package/examples/js/loaders/DDSLoader.js +24 -25
  80. package/examples/js/loaders/DRACOLoader.js +30 -90
  81. package/examples/js/loaders/EXRLoader.js +69 -177
  82. package/examples/js/loaders/FBXLoader.js +294 -441
  83. package/examples/js/loaders/FontLoader.js +9 -31
  84. package/examples/js/loaders/GCodeLoader.js +15 -16
  85. package/examples/js/loaders/GLTFLoader.js +458 -739
  86. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
  87. package/examples/js/loaders/KMZLoader.js +3 -7
  88. package/examples/js/loaders/KTXLoader.js +12 -30
  89. package/examples/js/loaders/LDrawLoader.js +309 -355
  90. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  91. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  92. package/examples/js/loaders/LWOLoader.js +59 -124
  93. package/examples/js/loaders/LogLuvLoader.js +27 -77
  94. package/examples/js/loaders/LottieLoader.js +4 -4
  95. package/examples/js/loaders/MD2Loader.js +26 -27
  96. package/examples/js/loaders/MDDLoader.js +6 -10
  97. package/examples/js/loaders/MMDLoader.js +180 -189
  98. package/examples/js/loaders/MTLLoader.js +18 -47
  99. package/examples/js/loaders/NRRDLoader.js +44 -84
  100. package/examples/js/loaders/OBJLoader.js +56 -77
  101. package/examples/js/loaders/PCDLoader.js +92 -42
  102. package/examples/js/loaders/PDBLoader.js +17 -13
  103. package/examples/js/loaders/PLYLoader.js +65 -51
  104. package/examples/js/loaders/PRWMLoader.js +11 -22
  105. package/examples/js/loaders/PVRLoader.js +7 -16
  106. package/examples/js/loaders/RGBELoader.js +36 -61
  107. package/examples/js/loaders/RGBMLoader.js +26 -87
  108. package/examples/js/loaders/STLLoader.js +20 -27
  109. package/examples/js/loaders/SVGLoader.js +365 -236
  110. package/examples/js/loaders/TDSLoader.js +81 -118
  111. package/examples/js/loaders/TGALoader.js +39 -41
  112. package/examples/js/loaders/TIFFLoader.js +30 -0
  113. package/examples/js/loaders/TTFLoader.js +0 -8
  114. package/examples/js/loaders/TiltLoader.js +14 -15
  115. package/examples/js/loaders/VOXLoader.js +8 -16
  116. package/examples/js/loaders/VRMLLoader.js +266 -354
  117. package/examples/js/loaders/VTKLoader.js +102 -119
  118. package/examples/js/loaders/XYZLoader.js +2 -4
  119. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  120. package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
  121. package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
  122. package/examples/js/materials/MeshGouraudMaterial.js +387 -0
  123. package/examples/js/math/Capsule.js +0 -17
  124. package/examples/js/math/ColorConverter.js +3 -53
  125. package/examples/js/math/ConvexHull.js +185 -141
  126. package/examples/js/math/ImprovedNoise.js +1 -1
  127. package/examples/js/math/Lut.js +8 -15
  128. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  129. package/examples/js/math/OBB.js +90 -49
  130. package/examples/js/math/Octree.js +2 -57
  131. package/examples/js/math/SimplexNoise.js +74 -88
  132. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  133. package/examples/js/misc/GPUComputationRenderer.js +47 -14
  134. package/examples/js/misc/Gyroscope.js +5 -9
  135. package/examples/js/misc/MD2Character.js +14 -23
  136. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  137. package/examples/js/misc/MorphAnimMesh.js +0 -6
  138. package/examples/js/misc/MorphBlendMesh.js +3 -30
  139. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  140. package/examples/js/misc/RollerCoaster.js +17 -24
  141. package/examples/js/misc/TubePainter.js +18 -12
  142. package/examples/js/misc/Volume.js +173 -194
  143. package/examples/js/misc/VolumeSlice.js +91 -99
  144. package/examples/js/modifiers/CurveModifier.js +19 -21
  145. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  146. package/examples/js/modifiers/SimplifyModifier.js +57 -60
  147. package/examples/js/modifiers/TessellateModifier.js +2 -9
  148. package/examples/js/objects/GroundProjectedEnv.js +181 -0
  149. package/examples/js/objects/Lensflare.js +47 -38
  150. package/examples/js/objects/LightningStorm.js +10 -13
  151. package/examples/js/objects/MarchingCubes.js +80 -59
  152. package/examples/js/objects/Reflector.js +31 -22
  153. package/examples/js/objects/ReflectorForSSRPass.js +20 -25
  154. package/examples/js/objects/Refractor.js +61 -33
  155. package/examples/js/objects/ShadowMesh.js +6 -3
  156. package/examples/js/objects/Sky.js +2 -7
  157. package/examples/js/objects/Water.js +23 -18
  158. package/examples/js/objects/Water2.js +20 -19
  159. package/examples/js/physics/AmmoPhysics.js +23 -20
  160. package/examples/js/physics/OimoPhysics.js +19 -17
  161. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  162. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  163. package/examples/js/postprocessing/BloomPass.js +38 -17
  164. package/examples/js/postprocessing/BokehPass.js +29 -12
  165. package/examples/js/postprocessing/ClearPass.js +1 -6
  166. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  167. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  168. package/examples/js/postprocessing/EffectComposer.js +25 -32
  169. package/examples/js/postprocessing/FilmPass.js +7 -5
  170. package/examples/js/postprocessing/GlitchPass.js +10 -11
  171. package/examples/js/postprocessing/HalftonePass.js +9 -9
  172. package/examples/js/postprocessing/LUTPass.js +2 -15
  173. package/examples/js/postprocessing/MaskPass.js +20 -17
  174. package/examples/js/postprocessing/OutlinePass.js +49 -38
  175. package/examples/js/postprocessing/Pass.js +11 -14
  176. package/examples/js/postprocessing/RenderPass.js +3 -7
  177. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  178. package/examples/js/postprocessing/SAOPass.js +40 -32
  179. package/examples/js/postprocessing/SMAAPass.js +34 -17
  180. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  181. package/examples/js/postprocessing/SSAOPass.js +56 -42
  182. package/examples/js/postprocessing/SSRPass.js +78 -61
  183. package/examples/js/postprocessing/SavePass.js +14 -6
  184. package/examples/js/postprocessing/ShaderPass.js +9 -8
  185. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  186. package/examples/js/postprocessing/TexturePass.js +7 -4
  187. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  188. package/examples/js/renderers/CSS2DRenderer.js +4 -23
  189. package/examples/js/renderers/CSS3DRenderer.js +5 -26
  190. package/examples/js/renderers/Projector.js +31 -108
  191. package/examples/js/renderers/SVGRenderer.js +4 -50
  192. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  193. package/examples/js/shaders/AfterimageShader.js +3 -6
  194. package/examples/js/shaders/BasicShader.js +3 -6
  195. package/examples/js/shaders/BleachBypassShader.js +3 -6
  196. package/examples/js/shaders/BlendShader.js +3 -6
  197. package/examples/js/shaders/BokehShader.js +3 -6
  198. package/examples/js/shaders/BokehShader2.js +4 -13
  199. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  200. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  201. package/examples/js/shaders/ColorifyShader.js +2 -6
  202. package/examples/js/shaders/ConvolutionShader.js +5 -10
  203. package/examples/js/shaders/CopyShader.js +3 -6
  204. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  205. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  206. package/examples/js/shaders/DigitalGlitch.js +3 -6
  207. package/examples/js/shaders/DotScreenShader.js +2 -6
  208. package/examples/js/shaders/FXAAShader.js +1 -3
  209. package/examples/js/shaders/FilmShader.js +3 -6
  210. package/examples/js/shaders/FocusShader.js +3 -6
  211. package/examples/js/shaders/FreiChenShader.js +2 -6
  212. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  213. package/examples/js/shaders/GodRaysShader.js +11 -24
  214. package/examples/js/shaders/HalftoneShader.js +3 -6
  215. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  216. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  217. package/examples/js/shaders/HueSaturationShader.js +3 -6
  218. package/examples/js/shaders/KaleidoShader.js +3 -6
  219. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  220. package/examples/js/shaders/LuminosityShader.js +4 -7
  221. package/examples/js/shaders/MMDToonShader.js +2 -4
  222. package/examples/js/shaders/MirrorShader.js +3 -6
  223. package/examples/js/shaders/NormalMapShader.js +2 -6
  224. package/examples/js/shaders/RGBShiftShader.js +3 -6
  225. package/examples/js/shaders/SAOShader.js +2 -6
  226. package/examples/js/shaders/SMAAShader.js +6 -18
  227. package/examples/js/shaders/SSAOShader.js +2 -6
  228. package/examples/js/shaders/SSRShader.js +6 -18
  229. package/examples/js/shaders/SepiaShader.js +3 -6
  230. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  231. package/examples/js/shaders/TechnicolorShader.js +3 -6
  232. package/examples/js/shaders/ToneMapShader.js +4 -7
  233. package/examples/js/shaders/ToonShader.js +8 -24
  234. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  235. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  236. package/examples/js/shaders/VelocityShader.js +126 -0
  237. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  238. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  239. package/examples/js/shaders/VignetteShader.js +3 -6
  240. package/examples/js/shaders/VolumeShader.js +2 -6
  241. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  242. package/examples/js/textures/FlakesTexture.js +0 -1
  243. package/examples/js/utils/BufferGeometryUtils.js +237 -171
  244. package/examples/js/utils/CameraUtils.js +5 -20
  245. package/examples/js/utils/GPUStatsPanel.js +3 -12
  246. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  247. package/examples/js/utils/GeometryUtils.js +15 -36
  248. package/examples/js/utils/LDrawUtils.js +8 -11
  249. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  250. package/examples/js/utils/SceneUtils.js +109 -14
  251. package/examples/js/utils/ShadowMapViewer.js +17 -14
  252. package/examples/js/utils/SkeletonUtils.js +13 -27
  253. package/examples/js/utils/UVsDebug.js +20 -12
  254. package/examples/js/utils/WorkerPool.js +1 -11
  255. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  256. package/examples/jsm/animation/MMDPhysics.js +28 -22
  257. package/examples/jsm/capabilities/WebGPU.js +3 -1
  258. package/examples/jsm/controls/ArcballControls.js +17 -2
  259. package/examples/jsm/controls/FirstPersonControls.js +20 -27
  260. package/examples/jsm/controls/FlyControls.js +16 -24
  261. package/examples/jsm/controls/OrbitControls.js +44 -9
  262. package/examples/jsm/controls/PointerLockControls.js +0 -7
  263. package/examples/jsm/controls/TrackballControls.js +14 -5
  264. package/examples/jsm/controls/TransformControls.js +18 -16
  265. package/examples/jsm/csm/CSM.js +1 -0
  266. package/examples/jsm/csm/CSMHelper.js +30 -0
  267. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  268. package/examples/jsm/effects/OutlineEffect.js +4 -25
  269. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  270. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  271. package/examples/jsm/effects/StereoEffect.js +2 -2
  272. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  273. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  274. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  275. package/examples/jsm/exporters/GLTFExporter.js +29 -110
  276. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  277. package/examples/jsm/exporters/OBJExporter.js +0 -18
  278. package/examples/jsm/exporters/PLYExporter.js +14 -22
  279. package/examples/jsm/exporters/STLExporter.js +1 -9
  280. package/examples/jsm/exporters/USDZExporter.js +107 -4
  281. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  282. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  283. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  284. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  285. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  286. package/examples/jsm/helpers/ViewHelper.js +24 -0
  287. package/examples/jsm/interactive/HTMLMesh.js +14 -15
  288. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  289. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  290. package/examples/jsm/libs/flow.module.js +610 -160
  291. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  292. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  293. package/examples/jsm/libs/utif.module.js +1579 -0
  294. package/examples/jsm/libs/zstddec.module.js +1 -0
  295. package/examples/jsm/lines/LineSegments2.js +4 -0
  296. package/examples/jsm/loaders/3DMLoader.js +1 -2
  297. package/examples/jsm/loaders/ColladaLoader.js +29 -0
  298. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  299. package/examples/jsm/loaders/EXRLoader.js +3 -13
  300. package/examples/jsm/loaders/FBXLoader.js +26 -3
  301. package/examples/jsm/loaders/FontLoader.js +3 -16
  302. package/examples/jsm/loaders/GLTFLoader.js +321 -464
  303. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  304. package/examples/jsm/loaders/KTX2Loader.js +254 -53
  305. package/examples/jsm/loaders/LDrawLoader.js +149 -87
  306. package/examples/jsm/loaders/LottieLoader.js +4 -2
  307. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  308. package/examples/jsm/loaders/OBJLoader.js +6 -14
  309. package/examples/jsm/loaders/PCDLoader.js +60 -14
  310. package/examples/jsm/loaders/PLYLoader.js +71 -19
  311. package/examples/jsm/loaders/RGBELoader.js +1 -1
  312. package/examples/jsm/loaders/SVGLoader.js +231 -17
  313. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  314. package/examples/jsm/loaders/USDZLoader.js +633 -0
  315. package/examples/jsm/loaders/VRMLLoader.js +36 -26
  316. package/examples/jsm/loaders/VTKLoader.js +1 -1
  317. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  318. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  319. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  320. package/examples/jsm/math/ColorConverter.js +1 -49
  321. package/examples/jsm/math/ConvexHull.js +4 -4
  322. package/examples/jsm/math/Octree.js +1 -1
  323. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  324. package/examples/jsm/misc/Volume.js +169 -171
  325. package/examples/jsm/misc/VolumeSlice.js +78 -80
  326. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  327. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  328. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  329. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  330. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  331. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  332. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  333. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  334. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  335. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  336. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  337. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  338. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  339. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  340. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  341. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  342. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
  343. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  344. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
  345. package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
  346. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  347. package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
  348. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  349. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  350. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  351. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  352. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  353. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  354. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  355. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  356. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  357. package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
  358. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  359. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  360. package/examples/jsm/nodes/Nodes.js +70 -13
  361. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  362. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  363. package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
  364. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  365. package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
  366. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  367. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  368. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  369. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  370. package/examples/jsm/nodes/core/AttributeNode.js +32 -9
  371. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  372. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  373. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  374. package/examples/jsm/nodes/core/Node.js +15 -13
  375. package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
  376. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  377. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  378. package/examples/jsm/nodes/core/NodeVarying.js +17 -0
  379. package/examples/jsm/nodes/core/VaryingNode.js +56 -0
  380. package/examples/jsm/nodes/core/constants.js +13 -13
  381. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  382. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
  383. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  384. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  385. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  386. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  387. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  388. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  389. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  390. package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
  391. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  392. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  393. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  394. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  395. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
  396. package/examples/jsm/nodes/materials/Materials.js +21 -31
  397. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  398. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  399. package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
  400. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  401. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  402. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  403. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
  404. package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
  405. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  406. package/examples/jsm/nodes/math/MathNode.js +7 -17
  407. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  408. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  409. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  410. package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
  411. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
  412. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
  413. package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
  414. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  415. package/examples/jsm/nodes/utils/JoinNode.js +15 -9
  416. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  417. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
  418. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  419. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  420. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  421. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  422. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  423. package/examples/jsm/nodes/utils/TimerNode.js +23 -3
  424. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  425. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  426. package/examples/jsm/objects/Reflector.js +12 -5
  427. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  428. package/examples/jsm/objects/Refractor.js +12 -6
  429. package/examples/jsm/objects/ShadowMesh.js +8 -2
  430. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  431. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  432. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  433. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  434. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  435. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  436. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  437. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  438. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  439. package/examples/jsm/postprocessing/OutlinePass.js +25 -3
  440. package/examples/jsm/postprocessing/Pass.js +2 -0
  441. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  442. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  443. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  444. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  445. package/examples/jsm/postprocessing/SavePass.js +17 -1
  446. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  447. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  448. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  449. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  450. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  451. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  452. package/examples/jsm/renderers/Projector.js +2 -24
  453. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  454. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
  455. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  456. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  457. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  458. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +68 -3
  459. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  460. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  461. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  462. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  463. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  464. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  465. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
  466. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  467. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  468. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  469. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
  470. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  471. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  472. package/examples/jsm/shaders/MMDToonShader.js +2 -4
  473. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  474. package/examples/jsm/shaders/VelocityShader.js +128 -0
  475. package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
  476. package/examples/jsm/utils/GeometryUtils.js +17 -25
  477. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  478. package/examples/jsm/utils/SceneUtils.js +117 -12
  479. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  480. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  481. package/examples/jsm/webxr/VRButton.js +1 -7
  482. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  483. package/package.json +22 -18
  484. package/src/Three.Legacy.js +262 -36
  485. package/src/Three.js +4 -2
  486. package/src/animation/AnimationAction.js +6 -5
  487. package/src/animation/AnimationClip.js +1 -1
  488. package/src/animation/AnimationMixer.js +1 -1
  489. package/src/animation/AnimationUtils.js +204 -199
  490. package/src/animation/KeyframeTrack.js +1 -1
  491. package/src/animation/PropertyBinding.js +31 -5
  492. package/src/audio/AudioContext.js +5 -5
  493. package/src/cameras/CubeCamera.js +14 -21
  494. package/src/constants.js +2 -4
  495. package/src/core/BufferAttribute.js +81 -111
  496. package/src/core/BufferGeometry.js +3 -41
  497. package/src/core/InstancedBufferAttribute.js +0 -10
  498. package/src/core/InstancedBufferGeometry.js +1 -7
  499. package/src/core/InterleavedBuffer.js +1 -1
  500. package/src/core/InterleavedBufferAttribute.js +57 -8
  501. package/src/core/Object3D.js +22 -5
  502. package/src/core/Uniform.js +0 -7
  503. package/src/core/UniformsGroup.js +92 -0
  504. package/src/extras/DataUtils.js +104 -88
  505. package/src/extras/Earcut.js +67 -67
  506. package/src/extras/core/Path.js +1 -0
  507. package/src/extras/core/ShapePath.js +1 -4
  508. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  509. package/src/geometries/BoxGeometry.js +1 -1
  510. package/src/geometries/CapsuleGeometry.js +1 -1
  511. package/src/geometries/CircleGeometry.js +1 -1
  512. package/src/geometries/ConeGeometry.js +1 -1
  513. package/src/geometries/CylinderGeometry.js +2 -1
  514. package/src/geometries/DodecahedronGeometry.js +1 -1
  515. package/src/geometries/EdgesGeometry.js +5 -4
  516. package/src/geometries/ExtrudeGeometry.js +2 -11
  517. package/src/geometries/IcosahedronGeometry.js +1 -1
  518. package/src/geometries/LatheGeometry.js +2 -2
  519. package/src/geometries/OctahedronGeometry.js +1 -1
  520. package/src/geometries/PlaneGeometry.js +2 -1
  521. package/src/geometries/PolyhedronGeometry.js +2 -2
  522. package/src/geometries/RingGeometry.js +1 -1
  523. package/src/geometries/ShapeGeometry.js +3 -2
  524. package/src/geometries/SphereGeometry.js +2 -1
  525. package/src/geometries/TetrahedronGeometry.js +1 -1
  526. package/src/geometries/TorusGeometry.js +2 -1
  527. package/src/geometries/TorusKnotGeometry.js +2 -1
  528. package/src/geometries/TubeGeometry.js +2 -1
  529. package/src/geometries/WireframeGeometry.js +1 -0
  530. package/src/helpers/ArrowHelper.js +9 -0
  531. package/src/helpers/Box3Helper.js +7 -0
  532. package/src/helpers/BoxHelper.js +7 -1
  533. package/src/helpers/CameraHelper.js +97 -38
  534. package/src/helpers/DirectionalLightHelper.js +6 -1
  535. package/src/helpers/GridHelper.js +7 -0
  536. package/src/helpers/HemisphereLightHelper.js +5 -1
  537. package/src/helpers/PlaneHelper.js +15 -9
  538. package/src/helpers/PointLightHelper.js +2 -1
  539. package/src/helpers/PolarGridHelper.js +25 -14
  540. package/src/helpers/SkeletonHelper.js +7 -0
  541. package/src/helpers/SpotLightHelper.js +5 -2
  542. package/src/lights/LightShadow.js +1 -2
  543. package/src/lights/PointLight.js +2 -2
  544. package/src/lights/SpotLight.js +4 -2
  545. package/src/loaders/FileLoader.js +16 -2
  546. package/src/loaders/LoadingManager.js +1 -1
  547. package/src/loaders/MaterialLoader.js +49 -7
  548. package/src/loaders/ObjectLoader.js +9 -42
  549. package/src/materials/Material.js +2 -34
  550. package/src/materials/Materials.js +0 -27
  551. package/src/materials/MeshLambertMaterial.js +28 -1
  552. package/src/materials/MeshPhysicalMaterial.js +1 -1
  553. package/src/materials/ShaderMaterial.js +3 -7
  554. package/src/math/Color.js +8 -18
  555. package/src/math/MathUtils.js +1 -7
  556. package/src/math/Matrix3.js +54 -25
  557. package/src/math/Matrix4.js +3 -27
  558. package/src/math/Quaternion.js +1 -21
  559. package/src/math/Ray.js +2 -5
  560. package/src/math/Sphere.js +36 -21
  561. package/src/math/Vector2.js +4 -24
  562. package/src/math/Vector3.js +7 -46
  563. package/src/math/Vector4.js +4 -24
  564. package/src/objects/InstancedMesh.js +7 -0
  565. package/src/objects/LOD.js +25 -6
  566. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  567. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  568. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  569. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  570. package/src/renderers/WebGLRenderTarget.js +1 -1
  571. package/src/renderers/WebGLRenderer.js +119 -69
  572. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  573. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  574. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  575. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  576. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  577. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  578. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  579. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  580. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  581. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
  582. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  583. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  584. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  585. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  586. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  587. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  588. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  589. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  590. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  591. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  592. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  593. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  594. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  595. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  597. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  598. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  599. package/src/renderers/shaders/ShaderChunk.js +7 -2
  600. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  601. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  602. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  603. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  604. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  605. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  606. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  607. package/src/renderers/shaders/ShaderLib.js +50 -36
  608. package/src/renderers/shaders/UniformsLib.js +13 -12
  609. package/src/renderers/shaders/UniformsUtils.js +29 -0
  610. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  611. package/src/renderers/webgl/WebGLBackground.js +17 -9
  612. package/src/renderers/webgl/WebGLLights.js +37 -17
  613. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  614. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  615. package/src/renderers/webgl/WebGLProgram.js +6 -11
  616. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  617. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  618. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  619. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  620. package/src/renderers/webgl/WebGLShadowMap.js +13 -16
  621. package/src/renderers/webgl/WebGLState.js +125 -41
  622. package/src/renderers/webgl/WebGLTextures.js +94 -39
  623. package/src/renderers/webgl/WebGLUniforms.js +156 -28
  624. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  625. package/src/renderers/webgl/WebGLUtils.js +3 -1
  626. package/src/renderers/webvr/WebVRManager.js +42 -9
  627. package/src/renderers/webvr/WebVRUtils.js +1 -1
  628. package/src/renderers/webxr/WebXRController.js +91 -50
  629. package/src/renderers/webxr/WebXRManager.js +127 -34
  630. package/src/scenes/Scene.js +24 -3
  631. package/src/textures/CompressedArrayTexture.js +18 -0
  632. package/src/textures/Source.js +1 -1
  633. package/src/textures/Texture.js +2 -1
  634. package/src/utils.js +1 -1
  635. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  636. package/examples/js/libs/lottie_canvas.js +0 -12751
  637. package/examples/js/loaders/KTX2Loader.js +0 -558
  638. package/examples/js/shaders/PixelShader.js +0 -51
  639. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  640. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  641. package/examples/jsm/nodes/core/NodeVary.js +0 -14
  642. package/examples/jsm/nodes/core/VaryNode.js +0 -54
  643. package/examples/jsm/package.json +0 -3
  644. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  645. package/examples/jsm/shaders/PixelShader.js +0 -44
  646. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -16,96 +16,94 @@ import {
16
16
  * @param {string} [axis='z'] For now only 'x', 'y' or 'z' but later it will change to a normal vector
17
17
  * @see Volume
18
18
  */
19
- function VolumeSlice( volume, index, axis ) {
19
+ class VolumeSlice {
20
20
 
21
- const slice = this;
22
- /**
23
- * @member {Volume} volume The associated volume
24
- */
25
- this.volume = volume;
26
- /**
27
- * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
28
- */
29
- index = index || 0;
30
- Object.defineProperty( this, 'index', {
31
- get: function () {
32
-
33
- return index;
34
-
35
- },
36
- set: function ( value ) {
37
-
38
- index = value;
39
- slice.geometryNeedsUpdate = true;
40
- return index;
41
-
42
- }
43
- } );
44
- /**
45
- * @member {String} axis The normal axis
46
- */
47
- this.axis = axis || 'z';
48
-
49
- /**
50
- * @member {HTMLCanvasElement} canvas The final canvas used for the texture
51
- */
52
- /**
53
- * @member {CanvasRenderingContext2D} ctx Context of the canvas
54
- */
55
- this.canvas = document.createElement( 'canvas' );
56
- /**
57
- * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
58
- */
59
- /**
60
- * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
61
- */
62
- this.canvasBuffer = document.createElement( 'canvas' );
63
- this.updateGeometry();
21
+ constructor( volume, index, axis ) {
64
22
 
23
+ const slice = this;
24
+ /**
25
+ * @member {Volume} volume The associated volume
26
+ */
27
+ this.volume = volume;
28
+ /**
29
+ * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
30
+ */
31
+ index = index || 0;
32
+ Object.defineProperty( this, 'index', {
33
+ get: function () {
65
34
 
66
- const canvasMap = new Texture( this.canvas );
67
- canvasMap.minFilter = LinearFilter;
68
- canvasMap.wrapS = canvasMap.wrapT = ClampToEdgeWrapping;
69
- const material = new MeshBasicMaterial( { map: canvasMap, side: DoubleSide, transparent: true } );
70
- /**
71
- * @member {Mesh} mesh The mesh ready to get used in the scene
72
- */
73
- this.mesh = new Mesh( this.geometry, material );
74
- this.mesh.matrixAutoUpdate = false;
75
- /**
76
- * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
77
- */
78
- this.geometryNeedsUpdate = true;
79
- this.repaint();
35
+ return index;
80
36
 
81
- /**
82
- * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
83
- */
37
+ },
38
+ set: function ( value ) {
84
39
 
85
- /**
86
- * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
87
- */
40
+ index = value;
41
+ slice.geometryNeedsUpdate = true;
42
+ return index;
88
43
 
89
- /**
90
- * @member {Function} sliceAccess Function that allow the slice to access right data
91
- * @see Volume.extractPerpendicularPlane
92
- * @param {Number} i The first coordinate
93
- * @param {Number} j The second coordinate
94
- * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
95
- */
96
-
97
-
98
- }
44
+ }
45
+ } );
46
+ /**
47
+ * @member {String} axis The normal axis
48
+ */
49
+ this.axis = axis || 'z';
50
+
51
+ /**
52
+ * @member {HTMLCanvasElement} canvas The final canvas used for the texture
53
+ */
54
+ /**
55
+ * @member {CanvasRenderingContext2D} ctx Context of the canvas
56
+ */
57
+ this.canvas = document.createElement( 'canvas' );
58
+ /**
59
+ * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
60
+ */
61
+ /**
62
+ * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
63
+ */
64
+ this.canvasBuffer = document.createElement( 'canvas' );
65
+ this.updateGeometry();
66
+
67
+
68
+ const canvasMap = new Texture( this.canvas );
69
+ canvasMap.minFilter = LinearFilter;
70
+ canvasMap.wrapS = canvasMap.wrapT = ClampToEdgeWrapping;
71
+ const material = new MeshBasicMaterial( { map: canvasMap, side: DoubleSide, transparent: true } );
72
+ /**
73
+ * @member {Mesh} mesh The mesh ready to get used in the scene
74
+ */
75
+ this.mesh = new Mesh( this.geometry, material );
76
+ this.mesh.matrixAutoUpdate = false;
77
+ /**
78
+ * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
79
+ */
80
+ this.geometryNeedsUpdate = true;
81
+ this.repaint();
82
+
83
+ /**
84
+ * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
85
+ */
86
+
87
+ /**
88
+ * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
89
+ */
90
+
91
+ /**
92
+ * @member {Function} sliceAccess Function that allow the slice to access right data
93
+ * @see Volume.extractPerpendicularPlane
94
+ * @param {Number} i The first coordinate
95
+ * @param {Number} j The second coordinate
96
+ * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
97
+ */
99
98
 
100
- VolumeSlice.prototype = {
101
99
 
102
- constructor: VolumeSlice,
100
+ }
103
101
 
104
102
  /**
105
103
  * @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
106
104
  * @memberof VolumeSlice
107
105
  */
108
- repaint: function () {
106
+ repaint() {
109
107
 
110
108
  if ( this.geometryNeedsUpdate ) {
111
109
 
@@ -185,14 +183,14 @@ VolumeSlice.prototype = {
185
183
 
186
184
  this.mesh.material.map.needsUpdate = true;
187
185
 
188
- },
186
+ }
189
187
 
190
188
  /**
191
189
  * @member {Function} Refresh the geometry according to axis and index
192
190
  * @see Volume.extractPerpendicularPlane
193
191
  * @memberof VolumeSlice
194
192
  */
195
- updateGeometry: function () {
193
+ updateGeometry() {
196
194
 
197
195
  const extracted = this.volume.extractPerpendicularPlane( this.axis, this.index );
198
196
  this.sliceAccess = extracted.sliceAccess;
@@ -224,6 +222,6 @@ VolumeSlice.prototype = {
224
222
 
225
223
  }
226
224
 
227
- };
225
+ }
228
226
 
229
227
  export { VolumeSlice };
@@ -342,7 +342,7 @@ function collapse( vertices, faces, u, v ) { // u and v are pointers to vertices
342
342
  // delete triangles on edge uv:
343
343
  for ( let i = u.faces.length - 1; i >= 0; i -- ) {
344
344
 
345
- if ( u.faces[ i ].hasVertex( v ) ) {
345
+ if ( u.faces[ i ] && u.faces[ i ].hasVertex( v ) ) {
346
346
 
347
347
  removeFace( u.faces[ i ], faces );
348
348
 
@@ -45,6 +45,7 @@ export const NodeList = [
45
45
  {
46
46
  name: 'Slider',
47
47
  icon: 'adjustments-horizontal',
48
+ tags: 'number',
48
49
  nodeClass: SliderEditor
49
50
  },
50
51
  {
@@ -117,6 +118,7 @@ export const NodeList = [
117
118
  {
118
119
  name: 'Blend',
119
120
  icon: 'layers-subtract',
121
+ tags: 'mix',
120
122
  nodeClass: BlendEditor
121
123
  },
122
124
  {
@@ -133,6 +135,7 @@ export const NodeList = [
133
135
  {
134
136
  name: 'Operator',
135
137
  icon: 'math-symbols',
138
+ tags: 'addition, subtration, multiplication, division',
136
139
  nodeClass: OperatorEditor
137
140
  },
138
141
  {
@@ -161,12 +164,14 @@ export const NodeList = [
161
164
  name: 'Trigonometry',
162
165
  icon: 'wave-sine',
163
166
  tip: 'Sin / Cos / Tan / ...',
167
+ tags: 'sin, cos, tan, asin, acos, atan, sine, cosine, tangent, arcsine, arccosine, arctangent',
164
168
  nodeClass: TrigonometryEditor
165
169
  },
166
170
  {
167
171
  name: 'Angle',
168
172
  icon: 'angle',
169
173
  tip: 'Degress / Radians',
174
+ tags: 'degress, radians',
170
175
  nodeClass: AngleEditor
171
176
  },
172
177
  {
@@ -303,6 +308,13 @@ export class NodeEditor extends EventDispatcher {
303
308
  this.canvas = canvas;
304
309
  this.domElement = domElement;
305
310
 
311
+ this._preview = false;
312
+
313
+ this.search = null;
314
+
315
+ this.menu = null;
316
+ this.previewMenu = null;
317
+
306
318
  this.nodesContext = null;
307
319
  this.examplesContext = null;
308
320
 
@@ -315,21 +327,26 @@ export class NodeEditor extends EventDispatcher {
315
327
 
316
328
  }
317
329
 
330
+ setSize( width, height ) {
331
+
332
+ this.canvas.setSize( width, height );
333
+
334
+ return this;
335
+
336
+ }
337
+
318
338
  centralizeNode( node ) {
319
339
 
320
340
  const canvas = this.canvas;
321
- const canvasRect = canvas.rect;
322
-
323
341
  const nodeRect = node.dom.getBoundingClientRect();
324
342
 
325
- const defaultOffsetX = nodeRect.width;
326
- const defaultOffsetY = nodeRect.height;
327
-
328
343
  node.setPosition(
329
- ( canvas.relativeX + ( canvasRect.width / 2 ) ) - defaultOffsetX,
330
- ( canvas.relativeY + ( canvasRect.height / 2 ) ) - defaultOffsetY
344
+ ( ( canvas.width / 2 ) - canvas.scrollLeft ) - nodeRect.width,
345
+ ( ( canvas.height / 2 ) - canvas.scrollTop ) - nodeRect.height
331
346
  );
332
347
 
348
+ return this;
349
+
333
350
  }
334
351
 
335
352
  add( node ) {
@@ -359,9 +376,47 @@ export class NodeEditor extends EventDispatcher {
359
376
 
360
377
  }
361
378
 
379
+ set preview( value ) {
380
+
381
+ if ( this._preview === value ) return;
382
+
383
+ if ( value ) {
384
+
385
+ this.menu.dom.remove();
386
+ this.canvas.dom.remove();
387
+ this.search.dom.remove();
388
+
389
+ this.domElement.append( this.previewMenu.dom );
390
+
391
+ } else {
392
+
393
+ this.canvas.focusSelected = false;
394
+
395
+ this.domElement.append( this.menu.dom );
396
+ this.domElement.append( this.canvas.dom );
397
+ this.domElement.append( this.search.dom );
398
+
399
+ this.previewMenu.dom.remove();
400
+
401
+ }
402
+
403
+ this._preview = value;
404
+
405
+ }
406
+
407
+ get preview() {
408
+
409
+ return this._preview;
410
+
411
+ }
412
+
362
413
  newProject() {
363
414
 
364
- this.canvas.clear();
415
+ const canvas = this.canvas;
416
+ canvas.clear();
417
+ canvas.scrollLeft = 0;
418
+ canvas.scrollTop = 0;
419
+ canvas.zoom = 1;
365
420
 
366
421
  this.dispatchEvent( { type: 'new' } );
367
422
 
@@ -426,13 +481,23 @@ export class NodeEditor extends EventDispatcher {
426
481
  _initMenu() {
427
482
 
428
483
  const menu = new CircleMenu();
484
+ const previewMenu = new CircleMenu();
485
+
486
+ menu.setAlign( 'top left' );
487
+ previewMenu.setAlign( 'top left' );
429
488
 
489
+ const previewButton = new ButtonInput().setIcon( 'ti ti-3d-cube-sphere' ).setToolTip( 'Preview' );
430
490
  const menuButton = new ButtonInput().setIcon( 'ti ti-apps' ).setToolTip( 'Add' );
431
491
  const examplesButton = new ButtonInput().setIcon( 'ti ti-file-symlink' ).setToolTip( 'Examples' );
432
492
  const newButton = new ButtonInput().setIcon( 'ti ti-file' ).setToolTip( 'New' );
433
493
  const openButton = new ButtonInput().setIcon( 'ti ti-upload' ).setToolTip( 'Open' );
434
494
  const saveButton = new ButtonInput().setIcon( 'ti ti-download' ).setToolTip( 'Save' );
435
495
 
496
+ const editorButton = new ButtonInput().setIcon( 'ti ti-subtask' ).setToolTip( 'Editor' );
497
+
498
+ previewButton.onClick( () => this.preview = true );
499
+ editorButton.onClick( () => this.preview = false );
500
+
436
501
  menuButton.onClick( () => this.nodesContext.open() );
437
502
  examplesButton.onClick( () => this.examplesContext.open() );
438
503
 
@@ -486,15 +551,19 @@ export class NodeEditor extends EventDispatcher {
486
551
 
487
552
  } );
488
553
 
489
- menu.add( examplesButton )
490
- .add( menuButton )
554
+ menu.add( previewButton )
491
555
  .add( newButton )
556
+ .add( examplesButton )
492
557
  .add( openButton )
493
- .add( saveButton );
558
+ .add( saveButton )
559
+ .add( menuButton );
560
+
561
+ previewMenu.add( editorButton );
494
562
 
495
563
  this.domElement.append( menu.dom );
496
564
 
497
565
  this.menu = menu;
566
+ this.previewMenu = previewMenu;
498
567
 
499
568
  }
500
569
 
@@ -541,7 +610,6 @@ export class NodeEditor extends EventDispatcher {
541
610
  addExample( basicContext, 'Animate UV' );
542
611
  addExample( basicContext, 'Fake top light' );
543
612
  addExample( basicContext, 'Oscillator color' );
544
- addExample( basicContext, 'Matcap' );
545
613
 
546
614
  addExample( advancedContext, 'Rim' );
547
615
 
@@ -571,11 +639,18 @@ export class NodeEditor extends EventDispatcher {
571
639
  this.add( node );
572
640
 
573
641
  this.centralizeNode( node );
642
+ this.canvas.select( node );
574
643
 
575
644
  } );
576
645
 
577
646
  search.add( button );
578
647
 
648
+ if ( item.tags !== undefined ) {
649
+
650
+ search.setTag( button, item.tags );
651
+
652
+ }
653
+
579
654
  }
580
655
 
581
656
  if ( item.children ) {
@@ -652,6 +727,7 @@ export class NodeEditor extends EventDispatcher {
652
727
  this.add( node );
653
728
 
654
729
  this.centralizeNode( node );
730
+ this.canvas.select( node );
655
731
 
656
732
  } );
657
733
 
@@ -675,6 +751,8 @@ export class NodeEditor extends EventDispatcher {
675
751
 
676
752
  } );
677
753
 
754
+ this.search = search;
755
+
678
756
  this.domElement.append( search.dom );
679
757
 
680
758
  }
@@ -698,6 +776,7 @@ export class NodeEditor extends EventDispatcher {
698
776
  } else {
699
777
 
700
778
  this.centralizeNode( node );
779
+ this.canvas.select( node );
701
780
 
702
781
  }
703
782
 
@@ -1,5 +1,5 @@
1
1
  import { BaseNode } from '../core/BaseNode.js';
2
- import { MatcapUVNode } from 'three-nodes/Nodes.js';
2
+ import { MatcapUVNode } from 'three/nodes';
3
3
 
4
4
  export class MatcapUVEditor extends BaseNode {
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { NormalNode } from 'three-nodes/Nodes.js';
3
+ import { NormalNode } from 'three/nodes';
4
4
 
5
5
  export class NormalEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { PositionNode } from 'three-nodes/Nodes.js';
3
+ import { PositionNode } from 'three/nodes';
4
4
 
5
5
  export class PositionEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { UVNode } from 'three-nodes/Nodes.js';
3
+ import { UVNode } from 'three/nodes';
4
4
 
5
5
  export class UVEditor extends BaseNode {
6
6
 
@@ -34,6 +34,12 @@ export class BaseNode extends ObjectNode {
34
34
 
35
35
  }
36
36
 
37
+ getColor() {
38
+
39
+ return ( this.getColorValueFromValue( this.value ) || '#777777' ) + 'BB';
40
+
41
+ }
42
+
37
43
  serialize( data ) {
38
44
 
39
45
  super.serialize( data );
@@ -64,15 +70,16 @@ export class BaseNode extends ObjectNode {
64
70
 
65
71
  if ( value.isMaterial === true ) {
66
72
 
67
- return 'forestgreen';
73
+ //return 'forestgreen';
74
+ return '#228b22';
68
75
 
69
76
  } else if ( value.isObject3D === true ) {
70
77
 
71
- return 'orange';
78
+ return '#ffa500';
72
79
 
73
80
  } else if ( value.isDataFile === true ) {
74
81
 
75
- return 'aqua';
82
+ return '#00ffff';
76
83
 
77
84
  }
78
85
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { MathNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const NULL_VALUE = new UniformNode( 0 );
6
6
  const ONE_VALUE = new UniformNode( 1 );
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { NormalMapNode, ConstNode } from 'three-nodes/Nodes.js';
3
+ import { NormalMapNode, ConstNode } from 'three/nodes';
4
4
  import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from 'three';
5
5
 
6
6
  const nullValue = new ConstNode( 0 );
@@ -1,7 +1,7 @@
1
1
  import { ColorInput, StringInput, NumberInput, LabelElement, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Color } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class ColorEditor extends BaseNode {
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { NumberInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { UniformNode } from 'three-nodes/Nodes.js';
3
+ import { UniformNode } from 'three/nodes';
4
4
 
5
5
  export class FloatEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { ButtonInput, SliderInput, NumberInput, LabelElement, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { UniformNode } from 'three-nodes/Nodes.js';
3
+ import { UniformNode } from 'three/nodes';
4
4
 
5
5
  export class SliderEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement, ToggleInput, SelectInput } from '../../libs/flow.module.js';
2
2
  import { BaseNode, onNodeValidElement } from '../core/BaseNode.js';
3
- import { TextureNode, UVNode } from 'three-nodes/Nodes.js';
3
+ import { TextureNode, UVNode } from 'three/nodes';
4
4
  import { Texture, TextureLoader, RepeatWrapping, ClampToEdgeWrapping, MirroredRepeatWrapping } from 'three';
5
5
 
6
6
  const fileTexture = new WeakMap();
@@ -1,7 +1,7 @@
1
1
  import { NumberInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector2 } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class Vector2Editor extends BaseNode {
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { NumberInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector3 } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class Vector3Editor extends BaseNode {
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { NumberInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector4 } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class Vector4Editor extends BaseNode {
7
7
 
@@ -1,7 +1,6 @@
1
1
  import { ColorInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MeshBasicNodeMaterial } from 'three-nodes/Nodes.js';
4
- import { MathUtils } from 'three';
3
+ import { MeshBasicNodeMaterial } from 'three/nodes';
5
4
 
6
5
  export class BasicMaterialEditor extends BaseNode {
7
6
 
@@ -65,23 +64,21 @@ export class BasicMaterialEditor extends BaseNode {
65
64
 
66
65
  this.updateTransparent();
67
66
 
68
- // TODO: Fix on NodeMaterial System
69
- material.customProgramCacheKey = () => {
70
-
71
- return MathUtils.generateUUID();
72
-
73
- };
74
-
75
67
  }
76
68
 
77
69
  updateTransparent() {
78
70
 
79
71
  const { material, opacity } = this;
80
72
 
81
- material.transparent = opacity.getLinkedObject() || material.opacity < 1 ? true : false;
73
+ const transparent = opacity.getLinkedObject() || material.opacity < 1 ? true : false;
74
+ const needsUpdate = transparent !== material.transparent;
75
+
76
+ material.transparent = transparent;
82
77
 
83
78
  opacity.setIcon( material.transparent ? 'ti ti-layers-intersect' : 'ti ti-layers-subtract' );
84
79
 
80
+ if ( needsUpdate === true ) material.dispose();
81
+
85
82
  }
86
83
 
87
84
  }
@@ -1,6 +1,6 @@
1
1
  import { ColorInput, ToggleInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { PointsNodeMaterial } from 'three-nodes/Nodes.js';
3
+ import { PointsNodeMaterial } from 'three/nodes';
4
4
  import * as THREE from 'three';
5
5
 
6
6
  export class PointsMaterialEditor extends BaseNode {
@@ -1,7 +1,6 @@
1
1
  import { ColorInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MeshStandardNodeMaterial } from 'three-nodes/Nodes.js';
4
- import * as THREE from 'three';
3
+ import { MeshStandardNodeMaterial } from 'three/nodes';
5
4
 
6
5
  export class StandardMaterialEditor extends BaseNode {
7
6
 
@@ -99,23 +98,21 @@ export class StandardMaterialEditor extends BaseNode {
99
98
 
100
99
  this.updateTransparent();
101
100
 
102
- // TODO: Fix on NodeMaterial System
103
- material.customProgramCacheKey = () => {
104
-
105
- return THREE.MathUtils.generateUUID();
106
-
107
- };
108
-
109
101
  }
110
102
 
111
103
  updateTransparent() {
112
104
 
113
105
  const { material, opacity } = this;
114
106
 
115
- material.transparent = opacity.getLinkedObject() || material.opacity < 1 ? true : false;
107
+ const transparent = opacity.getLinkedObject() || material.opacity < 1 ? true : false;
108
+ const needsUpdate = transparent !== material.transparent;
109
+
110
+ material.transparent = transparent;
116
111
 
117
112
  opacity.setIcon( material.transparent ? 'ti ti-layers-intersect' : 'ti ti-layers-subtract' );
118
113
 
114
+ if ( needsUpdate === true ) material.dispose();
115
+
119
116
  }
120
117
 
121
118
  }