three-stdlib 2.15.0 → 2.15.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 (1222) hide show
  1. package/animation/AnimationClipCreator.js +32 -52
  2. package/animation/AnimationClipCreator.mjs +57 -0
  3. package/animation/CCDIKSolver.js +66 -161
  4. package/animation/CCDIKSolver.mjs +234 -0
  5. package/animation/MMDAnimationHelper.js +150 -341
  6. package/animation/MMDAnimationHelper.mjs +514 -0
  7. package/animation/MMDPhysics.js +154 -361
  8. package/animation/MMDPhysics.mjs +769 -0
  9. package/cameras/CinematicCamera.js +67 -77
  10. package/cameras/CinematicCamera.mjs +129 -0
  11. package/controls/ArcballControls.js +544 -1449
  12. package/controls/ArcballControls.mjs +1737 -0
  13. package/controls/DeviceOrientationControls.js +52 -97
  14. package/controls/DeviceOrientationControls.mjs +74 -0
  15. package/controls/DragControls.js +85 -187
  16. package/controls/DragControls.mjs +172 -0
  17. package/controls/FirstPersonControls.js +123 -193
  18. package/controls/FirstPersonControls.mjs +220 -0
  19. package/controls/FlyControls.js +82 -152
  20. package/controls/FlyControls.mjs +239 -0
  21. package/controls/OrbitControls.js +232 -481
  22. package/controls/OrbitControls.mjs +731 -0
  23. package/controls/PointerLockControls.js +63 -99
  24. package/controls/PointerLockControls.mjs +88 -0
  25. package/controls/TrackballControls.js +211 -383
  26. package/controls/TrackballControls.mjs +481 -0
  27. package/controls/TransformControls.js +575 -782
  28. package/controls/TransformControls.mjs +1068 -0
  29. package/controls/experimental/CameraControls.js +329 -609
  30. package/controls/experimental/CameraControls.mjs +673 -0
  31. package/csm/CSM.js +47 -108
  32. package/csm/CSM.mjs +244 -0
  33. package/csm/CSMFrustum.js +14 -29
  34. package/csm/CSMFrustum.mjs +75 -0
  35. package/csm/CSMHelper.js +20 -34
  36. package/csm/CSMHelper.mjs +114 -0
  37. package/csm/CSMShader.js +7 -11
  38. package/csm/CSMShader.mjs +251 -0
  39. package/curves/CurveExtras.js +73 -115
  40. package/curves/CurveExtras.mjs +224 -0
  41. package/curves/NURBSCurve.js +15 -43
  42. package/curves/NURBSCurve.mjs +35 -0
  43. package/curves/NURBSSurface.js +11 -27
  44. package/curves/NURBSSurface.mjs +28 -0
  45. package/curves/NURBSUtils.js +54 -203
  46. package/curves/NURBSUtils.mjs +226 -0
  47. package/deprecated/Geometry.js +191 -486
  48. package/deprecated/Geometry.mjs +966 -0
  49. package/effects/AnaglyphEffect.js +95 -60
  50. package/effects/AnaglyphEffect.mjs +120 -0
  51. package/effects/AsciiEffect.js +80 -110
  52. package/effects/AsciiEffect.mjs +173 -0
  53. package/effects/OutlineEffect.js +121 -204
  54. package/effects/OutlineEffect.mjs +295 -0
  55. package/effects/ParallaxBarrierEffect.js +39 -38
  56. package/effects/ParallaxBarrierEffect.mjs +64 -0
  57. package/effects/PeppersGhostEffect.js +19 -68
  58. package/effects/PeppersGhostEffect.mjs +85 -0
  59. package/effects/StereoEffect.js +12 -16
  60. package/effects/StereoEffect.mjs +32 -0
  61. package/environments/RoomEnvironment.js +52 -47
  62. package/environments/RoomEnvironment.mjs +78 -0
  63. package/exporters/ColladaExporter.js +115 -241
  64. package/exporters/ColladaExporter.mjs +299 -0
  65. package/exporters/DRACOExporter.js +67 -121
  66. package/exporters/DRACOExporter.mjs +132 -0
  67. package/exporters/GLTFExporter.js +463 -1014
  68. package/exporters/GLTFExporter.mjs +1381 -0
  69. package/exporters/MMDExporter.js +44 -102
  70. package/exporters/MMDExporter.mjs +102 -0
  71. package/exporters/OBJExporter.js +78 -140
  72. package/exporters/OBJExporter.mjs +166 -0
  73. package/exporters/PLYExporter.js +93 -154
  74. package/exporters/PLYExporter.mjs +278 -0
  75. package/exporters/STLExporter.js +30 -81
  76. package/exporters/STLExporter.mjs +129 -0
  77. package/exporters/USDZExporter.js +84 -144
  78. package/exporters/USDZExporter.mjs +328 -0
  79. package/geometries/BoxLineGeometry.js +7 -14
  80. package/geometries/BoxLineGeometry.mjs +45 -0
  81. package/geometries/ConvexGeometry.js +15 -24
  82. package/geometries/ConvexGeometry.mjs +29 -0
  83. package/geometries/DecalGeometry.js +108 -162
  84. package/geometries/DecalGeometry.mjs +184 -0
  85. package/geometries/LightningStrike.js +101 -294
  86. package/geometries/LightningStrike.mjs +547 -0
  87. package/geometries/ParametricGeometries.js +26 -76
  88. package/geometries/ParametricGeometries.mjs +129 -0
  89. package/geometries/ParametricGeometry.js +24 -48
  90. package/geometries/ParametricGeometry.mjs +63 -0
  91. package/geometries/RoundedBoxGeometry.js +33 -64
  92. package/geometries/RoundedBoxGeometry.mjs +91 -0
  93. package/geometries/TeapotGeometry.js +1434 -174
  94. package/geometries/TeapotGeometry.mjs +1557 -0
  95. package/geometries/TextGeometry.js +9 -17
  96. package/geometries/TextGeometry.mjs +23 -0
  97. package/helpers/LightProbeHelper.js +53 -21
  98. package/helpers/LightProbeHelper.mjs +72 -0
  99. package/helpers/PositionalAudioHelper.js +23 -30
  100. package/helpers/PositionalAudioHelper.mjs +68 -0
  101. package/helpers/RectAreaLightHelper.js +17 -33
  102. package/helpers/RectAreaLightHelper.mjs +44 -0
  103. package/helpers/VertexNormalsHelper.js +20 -41
  104. package/helpers/VertexNormalsHelper.mjs +54 -0
  105. package/helpers/VertexTangentsHelper.js +18 -36
  106. package/helpers/VertexTangentsHelper.mjs +45 -0
  107. package/index.d.ts +54 -0
  108. package/index.js +968 -333
  109. package/index.mjs +968 -0
  110. package/interactive/SelectionBox.js +31 -46
  111. package/interactive/SelectionBox.mjs +137 -0
  112. package/interactive/SelectionHelper.js +16 -21
  113. package/interactive/SelectionHelper.mjs +54 -0
  114. package/libs/MeshoptDecoder.js +147 -58
  115. package/libs/MeshoptDecoder.mjs +210 -0
  116. package/libs/MotionControllers.js +66 -208
  117. package/libs/MotionControllers.mjs +261 -0
  118. package/lights/LightProbeGenerator.js +40 -96
  119. package/lights/LightProbeGenerator.mjs +145 -0
  120. package/lights/RectAreaLightUniformsLib.js +32842 -9
  121. package/lights/RectAreaLightUniformsLib.mjs +32842 -0
  122. package/lines/Line2.js +9 -12
  123. package/lines/Line2.mjs +13 -0
  124. package/lines/LineGeometry.js +7 -19
  125. package/lines/LineGeometry.mjs +44 -0
  126. package/lines/LineMaterial.js +51 -89
  127. package/lines/LineMaterial.mjs +539 -0
  128. package/lines/LineSegments2.js +56 -165
  129. package/lines/LineSegments2.mjs +202 -0
  130. package/lines/LineSegmentsGeometry.js +29 -71
  131. package/lines/LineSegmentsGeometry.mjs +124 -0
  132. package/lines/Wireframe.js +15 -29
  133. package/lines/Wireframe.mjs +31 -0
  134. package/lines/WireframeGeometry2.js +8 -9
  135. package/lines/WireframeGeometry2.mjs +13 -0
  136. package/loaders/3DMLoader.js +234 -469
  137. package/loaders/3DMLoader.mjs +802 -0
  138. package/loaders/3MFLoader.js +340 -555
  139. package/loaders/3MFLoader.mjs +837 -0
  140. package/loaders/AMFLoader.js +114 -219
  141. package/loaders/AMFLoader.mjs +284 -0
  142. package/loaders/AssimpLoader.js +328 -725
  143. package/loaders/AssimpLoader.mjs +1396 -0
  144. package/loaders/BVHLoader.js +94 -200
  145. package/loaders/BVHLoader.mjs +207 -0
  146. package/loaders/BasisTextureLoader.js +229 -357
  147. package/loaders/BasisTextureLoader.mjs +474 -0
  148. package/loaders/ColladaLoader.js +932 -1522
  149. package/loaders/ColladaLoader.mjs +2403 -0
  150. package/loaders/DDSLoader.js +42 -108
  151. package/loaders/DDSLoader.mjs +148 -0
  152. package/loaders/DRACOLoader.js +103 -210
  153. package/loaders/DRACOLoader.mjs +340 -0
  154. package/loaders/EXRLoader.js +461 -809
  155. package/loaders/EXRLoader.mjs +1351 -0
  156. package/loaders/FBXLoader.js +842 -1397
  157. package/loaders/FBXLoader.mjs +2362 -0
  158. package/loaders/FontLoader.js +33 -66
  159. package/loaders/FontLoader.mjs +111 -0
  160. package/loaders/GCodeLoader.js +63 -111
  161. package/loaders/GCodeLoader.mjs +141 -0
  162. package/loaders/GLTFLoader.js +771 -1484
  163. package/loaders/GLTFLoader.mjs +2316 -0
  164. package/loaders/HDRCubeTextureLoader.js +45 -50
  165. package/loaders/HDRCubeTextureLoader.mjs +77 -0
  166. package/loaders/KMZLoader.js +42 -55
  167. package/loaders/KMZLoader.mjs +75 -0
  168. package/loaders/KTX2Loader.js +229 -362
  169. package/loaders/KTX2Loader.mjs +427 -0
  170. package/loaders/KTXLoader.js +37 -99
  171. package/loaders/KTXLoader.mjs +87 -0
  172. package/loaders/LDrawLoader.js +313 -746
  173. package/loaders/LDrawLoader.mjs +1409 -0
  174. package/loaders/LUT3dlLoader.js +50 -62
  175. package/loaders/LUT3dlLoader.mjs +100 -0
  176. package/loaders/LUTCubeLoader.js +45 -56
  177. package/loaders/LUTCubeLoader.mjs +104 -0
  178. package/loaders/LWOLoader.js +227 -339
  179. package/loaders/LWOLoader.mjs +625 -0
  180. package/loaders/LottieLoader.js +36 -38
  181. package/loaders/LottieLoader.mjs +47 -0
  182. package/loaders/MD2Loader.js +248 -91
  183. package/loaders/MD2Loader.mjs +359 -0
  184. package/loaders/MDDLoader.js +25 -45
  185. package/loaders/MDDLoader.mjs +58 -0
  186. package/loaders/MMDLoader.js +359 -795
  187. package/loaders/MMDLoader.mjs +998 -0
  188. package/loaders/MTLLoader.js +91 -201
  189. package/loaders/MTLLoader.mjs +280 -0
  190. package/loaders/NRRDLoader.js +182 -263
  191. package/loaders/NRRDLoader.mjs +401 -0
  192. package/loaders/NodeMaterialLoader.js +121 -14
  193. package/loaders/NodeMaterialLoader.mjs +146 -0
  194. package/loaders/OBJLoader.js +161 -283
  195. package/loaders/OBJLoader.mjs +487 -0
  196. package/loaders/PCDLoader.js +145 -164
  197. package/loaders/PCDLoader.mjs +248 -0
  198. package/loaders/PDBLoader.js +45 -63
  199. package/loaders/PDBLoader.mjs +246 -0
  200. package/loaders/PLYLoader.js +106 -203
  201. package/loaders/PLYLoader.mjs +317 -0
  202. package/loaders/PRWMLoader.js +73 -110
  203. package/loaders/PRWMLoader.mjs +160 -0
  204. package/loaders/PVRLoader.js +32 -93
  205. package/loaders/PVRLoader.mjs +131 -0
  206. package/loaders/RGBELoader.js +96 -233
  207. package/loaders/RGBELoader.mjs +244 -0
  208. package/loaders/RGBMLoader.js +344 -514
  209. package/loaders/RGBMLoader.mjs +998 -0
  210. package/loaders/STLLoader.js +59 -165
  211. package/loaders/STLLoader.mjs +190 -0
  212. package/loaders/SVGLoader.js +481 -851
  213. package/loaders/SVGLoader.mjs +1709 -0
  214. package/loaders/TDSLoader.js +137 -527
  215. package/loaders/TDSLoader.mjs +480 -0
  216. package/loaders/TGALoader.js +94 -205
  217. package/loaders/TGALoader.mjs +285 -0
  218. package/loaders/TTFLoader.js +58 -79
  219. package/loaders/TTFLoader.mjs +131 -0
  220. package/loaders/TiltLoader.js +129 -167
  221. package/loaders/TiltLoader.mjs +373 -0
  222. package/loaders/VOXLoader.js +320 -84
  223. package/loaders/VOXLoader.mjs +431 -0
  224. package/loaders/VRMLLoader.js +786 -1268
  225. package/loaders/VRMLLoader.mjs +2093 -0
  226. package/loaders/VRMLoader.js +23 -31
  227. package/loaders/VRMLoader.mjs +38 -0
  228. package/loaders/VTKLoader.js +219 -407
  229. package/loaders/VTKLoader.mjs +646 -0
  230. package/loaders/XLoader.js +1083 -1259
  231. package/loaders/XLoader.mjs +1258 -0
  232. package/loaders/XYZLoader.js +28 -34
  233. package/loaders/XYZLoader.mjs +60 -0
  234. package/loaders/lwo/IFFParser.js +238 -492
  235. package/loaders/lwo/IFFParser.mjs +697 -0
  236. package/loaders/lwo/LWO2Parser.js +176 -279
  237. package/loaders/lwo/LWO2Parser.mjs +327 -0
  238. package/loaders/lwo/LWO3Parser.js +160 -247
  239. package/loaders/lwo/LWO3Parser.mjs +298 -0
  240. package/math/Capsule.js +56 -43
  241. package/math/Capsule.mjs +100 -0
  242. package/math/ColorConverter.js +18 -32
  243. package/math/ColorConverter.mjs +51 -0
  244. package/math/ConvexHull.js +515 -739
  245. package/math/ConvexHull.mjs +574 -0
  246. package/math/ImprovedNoise.js +282 -32
  247. package/math/ImprovedNoise.mjs +302 -0
  248. package/math/Lut.js +51 -35
  249. package/math/Lut.mjs +135 -0
  250. package/math/MeshSurfaceSampler.js +25 -68
  251. package/math/MeshSurfaceSampler.mjs +107 -0
  252. package/math/OBB.js +91 -152
  253. package/math/OBB.mjs +235 -0
  254. package/math/Octree.js +76 -139
  255. package/math/Octree.mjs +278 -0
  256. package/math/SimplexNoise.js +217 -238
  257. package/math/SimplexNoise.mjs +425 -0
  258. package/misc/ConvexObjectBreaker.js +79 -185
  259. package/misc/ConvexObjectBreaker.mjs +292 -0
  260. package/misc/GPUComputationRenderer.js +69 -194
  261. package/misc/GPUComputationRenderer.mjs +171 -0
  262. package/misc/Gyroscope.js +16 -22
  263. package/misc/Gyroscope.mjs +35 -0
  264. package/misc/MD2Character.js +52 -74
  265. package/misc/MD2Character.mjs +162 -0
  266. package/misc/MD2CharacterComplex.js +112 -163
  267. package/misc/MD2CharacterComplex.mjs +328 -0
  268. package/misc/MorphAnimMesh.js +20 -28
  269. package/misc/MorphAnimMesh.mjs +40 -0
  270. package/misc/MorphBlendMesh.js +45 -69
  271. package/misc/MorphBlendMesh.mjs +179 -0
  272. package/misc/ProgressiveLightmap.js +70 -187
  273. package/misc/ProgressiveLightmap.mjs +166 -0
  274. package/misc/RollerCoaster.js +106 -135
  275. package/misc/RollerCoaster.mjs +346 -0
  276. package/misc/TubePainter.js +74 -92
  277. package/misc/TubePainter.mjs +123 -0
  278. package/misc/Volume.js +108 -270
  279. package/misc/Volume.mjs +244 -0
  280. package/misc/VolumeSlice.js +34 -122
  281. package/misc/VolumeSlice.mjs +106 -0
  282. package/misc/WebGL.js +37 -34
  283. package/misc/WebGL.mjs +74 -0
  284. package/modifiers/CurveModifier.js +46 -151
  285. package/modifiers/CurveModifier.mjs +182 -0
  286. package/modifiers/EdgeSplitModifier.js +46 -90
  287. package/modifiers/EdgeSplitModifier.mjs +162 -0
  288. package/modifiers/SimplifyModifier.js +77 -202
  289. package/modifiers/SimplifyModifier.mjs +282 -0
  290. package/modifiers/TessellateModifier.js +65 -90
  291. package/modifiers/TessellateModifier.mjs +206 -0
  292. package/nodes/Nodes.js +274 -140
  293. package/nodes/Nodes.mjs +400 -0
  294. package/nodes/ShaderNode.js +296 -196
  295. package/nodes/ShaderNode.mjs +408 -0
  296. package/nodes/accessors/BufferNode.js +4 -8
  297. package/nodes/accessors/BufferNode.mjs +15 -0
  298. package/nodes/accessors/CameraNode.js +20 -25
  299. package/nodes/accessors/CameraNode.mjs +44 -0
  300. package/nodes/accessors/CubeTextureNode.js +14 -26
  301. package/nodes/accessors/CubeTextureNode.mjs +42 -0
  302. package/nodes/accessors/MaterialNode.js +43 -53
  303. package/nodes/accessors/MaterialNode.mjs +71 -0
  304. package/nodes/accessors/MaterialReferenceNode.js +3 -6
  305. package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
  306. package/nodes/accessors/ModelNode.js +3 -5
  307. package/nodes/accessors/ModelNode.mjs +9 -0
  308. package/nodes/accessors/ModelViewProjectionNode.js +14 -13
  309. package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
  310. package/nodes/accessors/NormalNode.js +40 -39
  311. package/nodes/accessors/NormalNode.mjs +62 -0
  312. package/nodes/accessors/Object3DNode.js +40 -50
  313. package/nodes/accessors/Object3DNode.mjs +76 -0
  314. package/nodes/accessors/PointUVNode.js +5 -9
  315. package/nodes/accessors/PointUVNode.mjs +13 -0
  316. package/nodes/accessors/PositionNode.js +42 -41
  317. package/nodes/accessors/PositionNode.mjs +65 -0
  318. package/nodes/accessors/ReferenceNode.js +10 -17
  319. package/nodes/accessors/ReferenceNode.mjs +37 -0
  320. package/nodes/accessors/ReflectNode.js +23 -26
  321. package/nodes/accessors/ReflectNode.mjs +43 -0
  322. package/nodes/accessors/SkinningNode.js +46 -48
  323. package/nodes/accessors/SkinningNode.mjs +58 -0
  324. package/nodes/accessors/TextureNode.js +14 -29
  325. package/nodes/accessors/TextureNode.mjs +54 -0
  326. package/nodes/accessors/UVNode.js +5 -11
  327. package/nodes/accessors/UVNode.mjs +23 -0
  328. package/nodes/core/ArrayUniformNode.js +3 -7
  329. package/nodes/core/ArrayUniformNode.mjs +14 -0
  330. package/nodes/core/AttributeNode.js +5 -12
  331. package/nodes/core/AttributeNode.mjs +30 -0
  332. package/nodes/core/BypassNode.js +5 -12
  333. package/nodes/core/BypassNode.mjs +22 -0
  334. package/nodes/core/CodeNode.js +4 -12
  335. package/nodes/core/CodeNode.mjs +28 -0
  336. package/nodes/core/ConstNode.js +3 -7
  337. package/nodes/core/ConstNode.mjs +14 -0
  338. package/nodes/core/ContextNode.js +3 -8
  339. package/nodes/core/ContextNode.mjs +22 -0
  340. package/nodes/core/ExpressionNode.js +5 -9
  341. package/nodes/core/ExpressionNode.mjs +19 -0
  342. package/nodes/core/FunctionCallNode.js +6 -15
  343. package/nodes/core/FunctionCallNode.mjs +37 -0
  344. package/nodes/core/FunctionNode.js +10 -25
  345. package/nodes/core/FunctionNode.mjs +56 -0
  346. package/nodes/core/InputNode.js +12 -23
  347. package/nodes/core/InputNode.mjs +38 -0
  348. package/nodes/core/Node.js +35 -75
  349. package/nodes/core/Node.mjs +139 -0
  350. package/nodes/core/NodeAttribute.js +2 -4
  351. package/nodes/core/NodeAttribute.mjs +10 -0
  352. package/nodes/core/NodeBuilder.js +110 -224
  353. package/nodes/core/NodeBuilder.mjs +395 -0
  354. package/nodes/core/NodeCode.js +4 -7
  355. package/nodes/core/NodeCode.mjs +11 -0
  356. package/nodes/core/NodeFrame.js +9 -12
  357. package/nodes/core/NodeFrame.mjs +35 -0
  358. package/nodes/core/NodeFunctionInput.js +3 -5
  359. package/nodes/core/NodeFunctionInput.mjs +13 -0
  360. package/nodes/core/NodeKeywords.js +5 -16
  361. package/nodes/core/NodeKeywords.mjs +44 -0
  362. package/nodes/core/NodeUniform.js +3 -7
  363. package/nodes/core/NodeUniform.mjs +18 -0
  364. package/nodes/core/NodeUtils.js +39 -43
  365. package/nodes/core/NodeUtils.mjs +57 -0
  366. package/nodes/core/NodeVar.js +2 -4
  367. package/nodes/core/NodeVar.mjs +10 -0
  368. package/nodes/core/NodeVary.js +2 -4
  369. package/nodes/core/NodeVary.mjs +10 -0
  370. package/nodes/core/PropertyNode.js +4 -10
  371. package/nodes/core/PropertyNode.mjs +21 -0
  372. package/nodes/core/TempNode.js +5 -11
  373. package/nodes/core/TempNode.mjs +25 -0
  374. package/nodes/core/UniformNode.js +4 -10
  375. package/nodes/core/UniformNode.mjs +23 -0
  376. package/nodes/core/VarNode.js +3 -11
  377. package/nodes/core/VarNode.mjs +31 -0
  378. package/nodes/core/VaryNode.js +6 -15
  379. package/nodes/core/VaryNode.mjs +30 -0
  380. package/nodes/core/constants.js +20 -7
  381. package/nodes/core/constants.mjs +24 -0
  382. package/nodes/display/ColorSpaceNode.js +34 -38
  383. package/nodes/display/ColorSpaceNode.mjs +63 -0
  384. package/nodes/display/NormalMapNode.js +35 -53
  385. package/nodes/display/NormalMapNode.mjs +54 -0
  386. package/nodes/fog/FogNode.js +5 -9
  387. package/nodes/fog/FogNode.mjs +15 -0
  388. package/nodes/fog/FogRangeNode.js +5 -9
  389. package/nodes/fog/FogRangeNode.mjs +17 -0
  390. package/nodes/functions/BSDFs.js +61 -118
  391. package/nodes/functions/BSDFs.mjs +64 -0
  392. package/nodes/lights/LightContextNode.js +14 -23
  393. package/nodes/lights/LightContextNode.mjs +35 -0
  394. package/nodes/lights/LightNode.js +27 -31
  395. package/nodes/lights/LightNode.mjs +58 -0
  396. package/nodes/lights/LightsNode.js +9 -28
  397. package/nodes/lights/LightsNode.mjs +59 -0
  398. package/nodes/loaders/NodeLoader.js +27 -42
  399. package/nodes/loaders/NodeLoader.mjs +66 -0
  400. package/nodes/loaders/NodeMaterialLoader.js +4 -10
  401. package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
  402. package/nodes/loaders/NodeObjectLoader.js +9 -19
  403. package/nodes/loaders/NodeObjectLoader.mjs +40 -0
  404. package/nodes/materials/LineBasicNodeMaterial.js +5 -10
  405. package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
  406. package/nodes/materials/Materials.js +14 -17
  407. package/nodes/materials/Materials.mjs +28 -0
  408. package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
  409. package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
  410. package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
  411. package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
  412. package/nodes/materials/NodeMaterial.js +20 -36
  413. package/nodes/materials/NodeMaterial.mjs +64 -0
  414. package/nodes/materials/PointsNodeMaterial.js +5 -10
  415. package/nodes/materials/PointsNodeMaterial.mjs +30 -0
  416. package/nodes/math/CondNode.js +11 -23
  417. package/nodes/math/CondNode.mjs +38 -0
  418. package/nodes/math/MathNode.js +98 -142
  419. package/nodes/math/MathNode.mjs +163 -0
  420. package/nodes/math/OperatorNode.js +24 -46
  421. package/nodes/math/OperatorNode.mjs +103 -0
  422. package/nodes/procedural/CheckerNode.js +13 -19
  423. package/nodes/procedural/CheckerNode.mjs +21 -0
  424. package/nodes/utils/ArrayElementNode.js +4 -8
  425. package/nodes/utils/ArrayElementNode.mjs +19 -0
  426. package/nodes/utils/ConvertNode.js +3 -8
  427. package/nodes/utils/ConvertNode.mjs +25 -0
  428. package/nodes/utils/JoinNode.js +7 -11
  429. package/nodes/utils/JoinNode.mjs +26 -0
  430. package/nodes/utils/MatcapUVNode.js +8 -11
  431. package/nodes/utils/MatcapUVNode.mjs +16 -0
  432. package/nodes/utils/OscNode.js +27 -33
  433. package/nodes/utils/OscNode.mjs +50 -0
  434. package/nodes/utils/SplitNode.js +6 -20
  435. package/nodes/utils/SplitNode.mjs +45 -0
  436. package/nodes/utils/SpriteSheetUVNode.js +23 -23
  437. package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
  438. package/nodes/utils/TimerNode.js +20 -24
  439. package/nodes/utils/TimerNode.mjs +44 -0
  440. package/objects/GroundProjectedEnv.js +22 -37
  441. package/objects/GroundProjectedEnv.mjs +130 -0
  442. package/objects/Lensflare.js +86 -156
  443. package/objects/Lensflare.mjs +262 -0
  444. package/objects/LightningStorm.js +38 -102
  445. package/objects/LightningStorm.mjs +110 -0
  446. package/objects/MarchingCubes.js +150 -303
  447. package/objects/MarchingCubes.mjs +457 -0
  448. package/objects/Reflector.js +50 -72
  449. package/objects/Reflector.mjs +166 -0
  450. package/objects/ReflectorForSSRPass.js +80 -131
  451. package/objects/ReflectorForSSRPass.mjs +247 -0
  452. package/objects/ReflectorRTT.js +6 -7
  453. package/objects/ReflectorRTT.mjs +10 -0
  454. package/objects/Refractor.js +64 -106
  455. package/objects/Refractor.mjs +178 -0
  456. package/objects/ShadowMesh.js +8 -17
  457. package/objects/ShadowMesh.mjs +41 -0
  458. package/objects/Sky.js +119 -80
  459. package/objects/Sky.mjs +124 -0
  460. package/objects/Water.js +83 -127
  461. package/objects/Water.mjs +235 -0
  462. package/objects/Water2.js +72 -108
  463. package/objects/Water2.mjs +252 -0
  464. package/offscreen/jank.js +10 -14
  465. package/offscreen/jank.mjs +27 -0
  466. package/offscreen/offscreen.js +4 -5
  467. package/offscreen/offscreen.mjs +5 -0
  468. package/offscreen/scene.js +45 -48
  469. package/offscreen/scene.mjs +52 -0
  470. package/package.json +3 -3
  471. package/physics/AmmoPhysics.js +30 -71
  472. package/physics/AmmoPhysics.mjs +165 -0
  473. package/postprocessing/AdaptiveToneMappingPass.js +97 -123
  474. package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
  475. package/postprocessing/AfterimagePass.js +28 -49
  476. package/postprocessing/AfterimagePass.mjs +55 -0
  477. package/postprocessing/BloomPass.js +43 -69
  478. package/postprocessing/BloomPass.mjs +90 -0
  479. package/postprocessing/BokehPass.js +39 -69
  480. package/postprocessing/BokehPass.mjs +76 -0
  481. package/postprocessing/ClearPass.js +10 -25
  482. package/postprocessing/ClearPass.mjs +27 -0
  483. package/postprocessing/CubeTexturePass.js +28 -27
  484. package/postprocessing/CubeTexturePass.mjs +49 -0
  485. package/postprocessing/DotScreenPass.js +24 -32
  486. package/postprocessing/DotScreenPass.mjs +40 -0
  487. package/postprocessing/EffectComposer.js +39 -86
  488. package/postprocessing/EffectComposer.mjs +139 -0
  489. package/postprocessing/FilmPass.js +25 -30
  490. package/postprocessing/FilmPass.mjs +42 -0
  491. package/postprocessing/GlitchPass.js +38 -61
  492. package/postprocessing/GlitchPass.mjs +75 -0
  493. package/postprocessing/HalftonePass.js +19 -39
  494. package/postprocessing/HalftonePass.mjs +44 -0
  495. package/postprocessing/LUTPass.js +13 -38
  496. package/postprocessing/LUTPass.mjs +136 -0
  497. package/postprocessing/MaskPass.js +19 -38
  498. package/postprocessing/MaskPass.mjs +60 -0
  499. package/postprocessing/OutlinePass.js +135 -277
  500. package/postprocessing/OutlinePass.mjs +438 -0
  501. package/postprocessing/Pass.js +20 -44
  502. package/postprocessing/Pass.mjs +37 -0
  503. package/postprocessing/RenderPass.js +13 -36
  504. package/postprocessing/RenderPass.mjs +48 -0
  505. package/postprocessing/RenderPixelatedPass.js +44 -58
  506. package/postprocessing/RenderPixelatedPass.mjs +199 -0
  507. package/postprocessing/SAOPass.js +154 -189
  508. package/postprocessing/SAOPass.mjs +282 -0
  509. package/postprocessing/SMAAPass.js +64 -84
  510. package/postprocessing/SMAAPass.mjs +112 -0
  511. package/postprocessing/SSAARenderPass.js +121 -69
  512. package/postprocessing/SSAARenderPass.mjs +170 -0
  513. package/postprocessing/SSAOPass.js +123 -172
  514. package/postprocessing/SSAOPass.mjs +265 -0
  515. package/postprocessing/SSRPass.js +211 -280
  516. package/postprocessing/SSRPass.mjs +432 -0
  517. package/postprocessing/SavePass.js +20 -25
  518. package/postprocessing/SavePass.mjs +37 -0
  519. package/postprocessing/ShaderPass.js +14 -30
  520. package/postprocessing/ShaderPass.mjs +39 -0
  521. package/postprocessing/TAARenderPass.js +42 -61
  522. package/postprocessing/TAARenderPass.mjs +88 -0
  523. package/postprocessing/TexturePass.js +21 -22
  524. package/postprocessing/TexturePass.mjs +39 -0
  525. package/postprocessing/UnrealBloomPass.js +105 -213
  526. package/postprocessing/UnrealBloomPass.mjs +220 -0
  527. package/renderers/CSS2DRenderer.js +44 -56
  528. package/renderers/CSS2DRenderer.mjs +112 -0
  529. package/renderers/CSS3DRenderer.js +53 -86
  530. package/renderers/CSS3DRenderer.mjs +133 -0
  531. package/renderers/Projector.js +107 -274
  532. package/renderers/Projector.mjs +511 -0
  533. package/renderers/SVGRenderer.js +72 -182
  534. package/renderers/SVGRenderer.mjs +306 -0
  535. package/renderers/nodes/accessors/CameraNode.js +29 -40
  536. package/renderers/nodes/accessors/CameraNode.mjs +63 -0
  537. package/renderers/nodes/accessors/ModelNode.js +28 -37
  538. package/renderers/nodes/accessors/ModelNode.mjs +61 -0
  539. package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
  540. package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
  541. package/renderers/nodes/accessors/NormalNode.js +35 -45
  542. package/renderers/nodes/accessors/NormalNode.mjs +61 -0
  543. package/renderers/nodes/accessors/PositionNode.js +18 -19
  544. package/renderers/nodes/accessors/PositionNode.mjs +30 -0
  545. package/renderers/nodes/accessors/UVNode.js +5 -10
  546. package/renderers/nodes/accessors/UVNode.mjs +13 -0
  547. package/renderers/nodes/core/AttributeNode.js +5 -14
  548. package/renderers/nodes/core/AttributeNode.mjs +35 -0
  549. package/renderers/nodes/core/InputNode.js +4 -14
  550. package/renderers/nodes/core/InputNode.mjs +31 -0
  551. package/renderers/nodes/core/Node.js +7 -17
  552. package/renderers/nodes/core/Node.mjs +34 -0
  553. package/renderers/nodes/core/NodeAttribute.js +3 -6
  554. package/renderers/nodes/core/NodeAttribute.mjs +10 -0
  555. package/renderers/nodes/core/NodeBuilder.js +87 -154
  556. package/renderers/nodes/core/NodeBuilder.mjs +243 -0
  557. package/renderers/nodes/core/NodeFrame.js +9 -12
  558. package/renderers/nodes/core/NodeFrame.mjs +35 -0
  559. package/renderers/nodes/core/NodeSlot.js +2 -3
  560. package/renderers/nodes/core/NodeSlot.mjs +10 -0
  561. package/renderers/nodes/core/NodeUniform.js +4 -9
  562. package/renderers/nodes/core/NodeUniform.mjs +18 -0
  563. package/renderers/nodes/core/NodeVary.js +4 -7
  564. package/renderers/nodes/core/NodeVary.mjs +11 -0
  565. package/renderers/nodes/core/VaryNode.js +6 -12
  566. package/renderers/nodes/core/VaryNode.mjs +22 -0
  567. package/renderers/nodes/core/constants.js +16 -13
  568. package/renderers/nodes/core/constants.mjs +22 -0
  569. package/renderers/nodes/inputs/ColorNode.js +5 -11
  570. package/renderers/nodes/inputs/ColorNode.mjs +11 -0
  571. package/renderers/nodes/inputs/FloatNode.js +5 -11
  572. package/renderers/nodes/inputs/FloatNode.mjs +11 -0
  573. package/renderers/nodes/inputs/Matrix3Node.js +7 -13
  574. package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
  575. package/renderers/nodes/inputs/Matrix4Node.js +7 -13
  576. package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
  577. package/renderers/nodes/inputs/TextureNode.js +7 -15
  578. package/renderers/nodes/inputs/TextureNode.mjs +20 -0
  579. package/renderers/nodes/inputs/Vector2Node.js +5 -11
  580. package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
  581. package/renderers/nodes/inputs/Vector3Node.js +7 -13
  582. package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
  583. package/renderers/nodes/inputs/Vector4Node.js +7 -13
  584. package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
  585. package/renderers/nodes/math/MathNode.js +20 -30
  586. package/renderers/nodes/math/MathNode.mjs +55 -0
  587. package/renderers/nodes/math/OperatorNode.js +4 -20
  588. package/renderers/nodes/math/OperatorNode.mjs +42 -0
  589. package/renderers/nodes/utils/SwitchNode.js +4 -9
  590. package/renderers/nodes/utils/SwitchNode.mjs +20 -0
  591. package/renderers/nodes/utils/TimerNode.js +5 -10
  592. package/renderers/nodes/utils/TimerNode.mjs +14 -0
  593. package/renderers/webgpu/WebGPU.js +14 -16
  594. package/renderers/webgpu/WebGPU.mjs +24 -0
  595. package/renderers/webgpu/WebGPUAttributes.js +16 -23
  596. package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
  597. package/renderers/webgpu/WebGPUBackground.js +13 -30
  598. package/renderers/webgpu/WebGPUBackground.mjs +61 -0
  599. package/renderers/webgpu/WebGPUBinding.js +4 -7
  600. package/renderers/webgpu/WebGPUBinding.mjs +14 -0
  601. package/renderers/webgpu/WebGPUBindings.js +21 -57
  602. package/renderers/webgpu/WebGPUBindings.mjs +155 -0
  603. package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
  604. package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
  605. package/renderers/webgpu/WebGPUGeometries.js +5 -15
  606. package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
  607. package/renderers/webgpu/WebGPUInfo.js +3 -8
  608. package/renderers/webgpu/WebGPUInfo.mjs +46 -0
  609. package/renderers/webgpu/WebGPUObjects.js +5 -10
  610. package/renderers/webgpu/WebGPUObjects.mjs +25 -0
  611. package/renderers/webgpu/WebGPUProperties.js +5 -11
  612. package/renderers/webgpu/WebGPUProperties.mjs +22 -0
  613. package/renderers/webgpu/WebGPURenderLists.js +20 -36
  614. package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
  615. package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
  616. package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
  617. package/renderers/webgpu/WebGPURenderer.js +124 -262
  618. package/renderers/webgpu/WebGPURenderer.mjs +574 -0
  619. package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
  620. package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
  621. package/renderers/webgpu/WebGPUSampler.js +7 -12
  622. package/renderers/webgpu/WebGPUSampler.mjs +15 -0
  623. package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
  624. package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
  625. package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
  626. package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
  627. package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
  628. package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
  629. package/renderers/webgpu/WebGPUTextures.js +186 -333
  630. package/renderers/webgpu/WebGPUTextures.mjs +484 -0
  631. package/renderers/webgpu/WebGPUUniform.js +25 -51
  632. package/renderers/webgpu/WebGPUUniform.mjs +81 -0
  633. package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
  634. package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
  635. package/renderers/webgpu/constants.js +190 -181
  636. package/renderers/webgpu/constants.mjs +230 -0
  637. package/renderers/webgpu/nodes/ShaderLib.js +2 -2
  638. package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
  639. package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
  640. package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
  641. package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
  642. package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
  643. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
  644. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
  645. package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
  646. package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
  647. package/shaders/ACESFilmicToneMappingShader.js +44 -24
  648. package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
  649. package/shaders/AfterimageShader.js +28 -18
  650. package/shaders/AfterimageShader.mjs +32 -0
  651. package/shaders/BasicShader.js +9 -7
  652. package/shaders/BasicShader.mjs +12 -0
  653. package/shaders/BleachBypassShader.js +31 -15
  654. package/shaders/BleachBypassShader.mjs +35 -0
  655. package/shaders/BlendShader.js +26 -19
  656. package/shaders/BlendShader.mjs +30 -0
  657. package/shaders/BokehShader.js +98 -36
  658. package/shaders/BokehShader.mjs +106 -0
  659. package/shaders/BokehShader2.js +261 -90
  660. package/shaders/BokehShader2.mjs +269 -0
  661. package/shaders/BrightnessContrastShader.js +28 -19
  662. package/shaders/BrightnessContrastShader.mjs +32 -0
  663. package/shaders/ColorCorrectionShader.js +26 -22
  664. package/shaders/ColorCorrectionShader.mjs +30 -0
  665. package/shaders/ColorifyShader.js +24 -16
  666. package/shaders/ColorifyShader.mjs +28 -0
  667. package/shaders/ConvolutionShader.js +40 -36
  668. package/shaders/ConvolutionShader.mjs +55 -0
  669. package/shaders/CopyShader.js +21 -13
  670. package/shaders/CopyShader.mjs +25 -0
  671. package/shaders/DOFMipMapShader.js +28 -21
  672. package/shaders/DOFMipMapShader.mjs +32 -0
  673. package/shaders/DepthLimitedBlurShader.js +85 -40
  674. package/shaders/DepthLimitedBlurShader.mjs +114 -0
  675. package/shaders/DigitalGlitch.js +74 -46
  676. package/shaders/DigitalGlitch.mjs +78 -0
  677. package/shaders/DotScreenShader.js +35 -27
  678. package/shaders/DotScreenShader.mjs +39 -0
  679. package/shaders/FXAAShader.js +1094 -19
  680. package/shaders/FXAAShader.mjs +1098 -0
  681. package/shaders/FilmShader.js +38 -52
  682. package/shaders/FilmShader.mjs +42 -0
  683. package/shaders/FocusShader.js +51 -24
  684. package/shaders/FocusShader.mjs +55 -0
  685. package/shaders/FreiChenShader.js +57 -24
  686. package/shaders/FreiChenShader.mjs +61 -0
  687. package/shaders/FresnelShader.js +43 -22
  688. package/shaders/FresnelShader.mjs +47 -0
  689. package/shaders/GammaCorrectionShader.js +19 -11
  690. package/shaders/GammaCorrectionShader.mjs +23 -0
  691. package/shaders/GodRaysShader.js +103 -94
  692. package/shaders/GodRaysShader.mjs +146 -0
  693. package/shaders/HalftoneShader.js +208 -65
  694. package/shaders/HalftoneShader.mjs +212 -0
  695. package/shaders/HorizontalBlurShader.js +7 -23
  696. package/shaders/HorizontalBlurShader.mjs +43 -0
  697. package/shaders/HorizontalTiltShiftShader.js +33 -21
  698. package/shaders/HorizontalTiltShiftShader.mjs +37 -0
  699. package/shaders/HueSaturationShader.js +37 -21
  700. package/shaders/HueSaturationShader.mjs +41 -0
  701. package/shaders/KaleidoShader.js +30 -22
  702. package/shaders/KaleidoShader.mjs +34 -0
  703. package/shaders/LuminosityHighPassShader.js +33 -27
  704. package/shaders/LuminosityHighPassShader.mjs +37 -0
  705. package/shaders/LuminosityShader.js +21 -11
  706. package/shaders/LuminosityShader.mjs +25 -0
  707. package/shaders/MirrorShader.js +31 -16
  708. package/shaders/MirrorShader.mjs +35 -0
  709. package/shaders/NormalMapShader.js +27 -23
  710. package/shaders/NormalMapShader.mjs +31 -0
  711. package/shaders/ParallaxShader.js +107 -48
  712. package/shaders/ParallaxShader.mjs +113 -0
  713. package/shaders/PixelShader.js +24 -16
  714. package/shaders/PixelShader.mjs +28 -0
  715. package/shaders/RGBShiftShader.js +26 -22
  716. package/shaders/RGBShiftShader.mjs +30 -0
  717. package/shaders/SAOShader.js +132 -48
  718. package/shaders/SAOShader.mjs +144 -0
  719. package/shaders/SMAAShader.js +256 -135
  720. package/shaders/SMAAShader.mjs +272 -0
  721. package/shaders/SSAOShader.js +153 -81
  722. package/shaders/SSAOShader.mjs +172 -0
  723. package/shaders/SSRShader.js +32 -87
  724. package/shaders/SSRShader.mjs +324 -0
  725. package/shaders/SepiaShader.js +25 -15
  726. package/shaders/SepiaShader.mjs +29 -0
  727. package/shaders/SobelOperatorShader.js +40 -29
  728. package/shaders/SobelOperatorShader.mjs +44 -0
  729. package/shaders/SubsurfaceScatteringShader.js +53 -39
  730. package/shaders/SubsurfaceScatteringShader.mjs +59 -0
  731. package/shaders/TechnicolorShader.js +20 -13
  732. package/shaders/TechnicolorShader.mjs +24 -0
  733. package/shaders/ToneMapShader.js +44 -28
  734. package/shaders/ToneMapShader.mjs +48 -0
  735. package/shaders/ToonShader.js +172 -96
  736. package/shaders/ToonShader.mjs +188 -0
  737. package/shaders/TriangleBlurShader.js +32 -23
  738. package/shaders/TriangleBlurShader.mjs +36 -0
  739. package/shaders/UnpackDepthRGBAShader.js +22 -14
  740. package/shaders/UnpackDepthRGBAShader.mjs +26 -0
  741. package/shaders/VerticalBlurShader.js +7 -23
  742. package/shaders/VerticalBlurShader.mjs +44 -0
  743. package/shaders/VerticalTiltShiftShader.js +33 -21
  744. package/shaders/VerticalTiltShiftShader.mjs +37 -0
  745. package/shaders/VignetteShader.js +24 -28
  746. package/shaders/VignetteShader.mjs +28 -0
  747. package/shaders/VolumeShader.js +174 -77
  748. package/shaders/VolumeShader.mjs +178 -0
  749. package/shaders/WaterRefractionShader.js +38 -6
  750. package/shaders/WaterRefractionShader.mjs +57 -0
  751. package/shaders/types.js +1 -1
  752. package/{custom.d.js → shaders/types.mjs} +0 -0
  753. package/textures/FlakesTexture.js +8 -10
  754. package/textures/FlakesTexture.mjs +30 -0
  755. package/types/helpers.js +3 -2
  756. package/types/helpers.mjs +4 -0
  757. package/utils/BufferGeometryUtils.js +251 -325
  758. package/utils/BufferGeometryUtils.mjs +570 -0
  759. package/utils/GeometryCompressionUtils.js +241 -239
  760. package/utils/GeometryCompressionUtils.mjs +547 -0
  761. package/utils/GeometryUtils.js +41 -94
  762. package/utils/GeometryUtils.mjs +108 -0
  763. package/utils/RoughnessMipmapper.js +38 -82
  764. package/utils/RoughnessMipmapper.mjs +213 -0
  765. package/utils/SceneUtils.js +15 -20
  766. package/utils/SceneUtils.mjs +36 -0
  767. package/utils/ShadowMapViewer.js +49 -95
  768. package/utils/ShadowMapViewer.mjs +114 -0
  769. package/utils/SkeletonUtils.js +74 -165
  770. package/utils/SkeletonUtils.mjs +292 -0
  771. package/utils/UVsDebug.js +32 -62
  772. package/utils/UVsDebug.mjs +85 -0
  773. package/utils/WorkerPool.js +13 -33
  774. package/utils/WorkerPool.mjs +62 -0
  775. package/webxr/ARButton.js +72 -98
  776. package/webxr/ARButton.mjs +119 -0
  777. package/webxr/OculusHandModel.js +18 -37
  778. package/webxr/OculusHandModel.mjs +71 -0
  779. package/webxr/OculusHandPointerModel.js +58 -80
  780. package/webxr/OculusHandPointerModel.mjs +207 -0
  781. package/webxr/Text2D.js +37 -19
  782. package/webxr/Text2D.mjs +31 -0
  783. package/webxr/VRButton.js +59 -90
  784. package/webxr/VRButton.mjs +105 -0
  785. package/webxr/XRControllerModelFactory.js +58 -116
  786. package/webxr/XRControllerModelFactory.mjs +146 -0
  787. package/webxr/XREstimatedLight.js +39 -66
  788. package/webxr/XREstimatedLight.mjs +126 -0
  789. package/webxr/XRHandMeshModel.js +40 -29
  790. package/webxr/XRHandMeshModel.mjs +73 -0
  791. package/webxr/XRHandModelFactory.js +28 -31
  792. package/webxr/XRHandModelFactory.mjs +61 -0
  793. package/webxr/XRHandPrimitiveModel.js +41 -27
  794. package/webxr/XRHandPrimitiveModel.mjs +68 -0
  795. package/BufferGeometryUtils-1a7a235c.js +0 -655
  796. package/BufferGeometryUtils-971dfde3.js +0 -1
  797. package/Nodes-4f766d71.js +0 -471
  798. package/Nodes-9aa16d74.js +0 -1
  799. package/animation/AnimationClipCreator.cjs.js +0 -1
  800. package/animation/CCDIKSolver.cjs.js +0 -1
  801. package/animation/MMDAnimationHelper.cjs.js +0 -1
  802. package/animation/MMDPhysics.cjs.js +0 -1
  803. package/cameras/CinematicCamera.cjs.js +0 -1
  804. package/controls/ArcballControls.cjs.js +0 -1
  805. package/controls/DeviceOrientationControls.cjs.js +0 -1
  806. package/controls/DragControls.cjs.js +0 -1
  807. package/controls/FirstPersonControls.cjs.js +0 -1
  808. package/controls/FlyControls.cjs.js +0 -1
  809. package/controls/OrbitControls.cjs.js +0 -1
  810. package/controls/PointerLockControls.cjs.js +0 -1
  811. package/controls/TrackballControls.cjs.js +0 -1
  812. package/controls/TransformControls.cjs.js +0 -1
  813. package/controls/experimental/CameraControls.cjs.js +0 -1
  814. package/csm/CSM.cjs.js +0 -1
  815. package/csm/CSMFrustum.cjs.js +0 -1
  816. package/csm/CSMHelper.cjs.js +0 -1
  817. package/csm/CSMShader.cjs.js +0 -1
  818. package/curves/CurveExtras.cjs.js +0 -1
  819. package/curves/NURBSCurve.cjs.js +0 -1
  820. package/curves/NURBSSurface.cjs.js +0 -1
  821. package/curves/NURBSUtils.cjs.js +0 -1
  822. package/custom.d.cjs.js +0 -1
  823. package/deprecated/Geometry.cjs.js +0 -1
  824. package/effects/AnaglyphEffect.cjs.js +0 -1
  825. package/effects/AsciiEffect.cjs.js +0 -1
  826. package/effects/OutlineEffect.cjs.js +0 -1
  827. package/effects/ParallaxBarrierEffect.cjs.js +0 -1
  828. package/effects/PeppersGhostEffect.cjs.js +0 -1
  829. package/effects/StereoEffect.cjs.js +0 -1
  830. package/environments/RoomEnvironment.cjs.js +0 -1
  831. package/exporters/ColladaExporter.cjs.js +0 -1
  832. package/exporters/DRACOExporter.cjs.js +0 -1
  833. package/exporters/GLTFExporter.cjs.js +0 -1
  834. package/exporters/MMDExporter.cjs.js +0 -1
  835. package/exporters/OBJExporter.cjs.js +0 -1
  836. package/exporters/PLYExporter.cjs.js +0 -1
  837. package/exporters/STLExporter.cjs.js +0 -1
  838. package/exporters/USDZExporter.cjs.js +0 -1
  839. package/geometries/BoxLineGeometry.cjs.js +0 -1
  840. package/geometries/ConvexGeometry.cjs.js +0 -1
  841. package/geometries/DecalGeometry.cjs.js +0 -1
  842. package/geometries/LightningStrike.cjs.js +0 -1
  843. package/geometries/ParametricGeometries.cjs.js +0 -1
  844. package/geometries/ParametricGeometry.cjs.js +0 -1
  845. package/geometries/RoundedBoxGeometry.cjs.js +0 -1
  846. package/geometries/TeapotGeometry.cjs.js +0 -1
  847. package/geometries/TextGeometry.cjs.js +0 -1
  848. package/helpers/LightProbeHelper.cjs.js +0 -1
  849. package/helpers/PositionalAudioHelper.cjs.js +0 -1
  850. package/helpers/RectAreaLightHelper.cjs.js +0 -1
  851. package/helpers/VertexNormalsHelper.cjs.js +0 -1
  852. package/helpers/VertexTangentsHelper.cjs.js +0 -1
  853. package/index.cjs.js +0 -1
  854. package/interactive/InteractiveGroup.cjs.js +0 -1
  855. package/interactive/InteractiveGroup.d.ts +0 -5
  856. package/interactive/InteractiveGroup.js +0 -87
  857. package/interactive/SelectionBox.cjs.js +0 -1
  858. package/interactive/SelectionHelper.cjs.js +0 -1
  859. package/libs/MeshoptDecoder.cjs.js +0 -1
  860. package/libs/MotionControllers.cjs.js +0 -1
  861. package/lights/LightProbeGenerator.cjs.js +0 -1
  862. package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
  863. package/lines/Line2.cjs.js +0 -1
  864. package/lines/LineGeometry.cjs.js +0 -1
  865. package/lines/LineMaterial.cjs.js +0 -1
  866. package/lines/LineSegments2.cjs.js +0 -1
  867. package/lines/LineSegmentsGeometry.cjs.js +0 -1
  868. package/lines/Wireframe.cjs.js +0 -1
  869. package/lines/WireframeGeometry2.cjs.js +0 -1
  870. package/loaders/3DMLoader.cjs.js +0 -1
  871. package/loaders/3MFLoader.cjs.js +0 -1
  872. package/loaders/AMFLoader.cjs.js +0 -1
  873. package/loaders/AssimpLoader.cjs.js +0 -1
  874. package/loaders/BVHLoader.cjs.js +0 -1
  875. package/loaders/BasisTextureLoader.cjs.js +0 -1
  876. package/loaders/ColladaLoader.cjs.js +0 -1
  877. package/loaders/DDSLoader.cjs.js +0 -1
  878. package/loaders/DRACOLoader.cjs.js +0 -1
  879. package/loaders/EXRLoader.cjs.js +0 -1
  880. package/loaders/FBXLoader.cjs.js +0 -1
  881. package/loaders/FontLoader.cjs.js +0 -1
  882. package/loaders/GCodeLoader.cjs.js +0 -1
  883. package/loaders/GLTFLoader.cjs.js +0 -1
  884. package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
  885. package/loaders/KMZLoader.cjs.js +0 -1
  886. package/loaders/KTX2Loader.cjs.js +0 -1
  887. package/loaders/KTXLoader.cjs.js +0 -1
  888. package/loaders/LDrawLoader.cjs.js +0 -1
  889. package/loaders/LUT3dlLoader.cjs.js +0 -1
  890. package/loaders/LUTCubeLoader.cjs.js +0 -1
  891. package/loaders/LWOLoader.cjs.js +0 -1
  892. package/loaders/LottieLoader.cjs.js +0 -1
  893. package/loaders/MD2Loader.cjs.js +0 -1
  894. package/loaders/MDDLoader.cjs.js +0 -1
  895. package/loaders/MMDLoader.cjs.js +0 -1
  896. package/loaders/MTLLoader.cjs.js +0 -1
  897. package/loaders/NRRDLoader.cjs.js +0 -1
  898. package/loaders/NodeMaterialLoader.cjs.js +0 -1
  899. package/loaders/OBJLoader.cjs.js +0 -1
  900. package/loaders/PCDLoader.cjs.js +0 -1
  901. package/loaders/PDBLoader.cjs.js +0 -1
  902. package/loaders/PLYLoader.cjs.js +0 -1
  903. package/loaders/PRWMLoader.cjs.js +0 -1
  904. package/loaders/PVRLoader.cjs.js +0 -1
  905. package/loaders/RGBELoader.cjs.js +0 -1
  906. package/loaders/RGBMLoader.cjs.js +0 -1
  907. package/loaders/STLLoader.cjs.js +0 -1
  908. package/loaders/SVGLoader.cjs.js +0 -1
  909. package/loaders/TDSLoader.cjs.js +0 -1
  910. package/loaders/TGALoader.cjs.js +0 -1
  911. package/loaders/TTFLoader.cjs.js +0 -1
  912. package/loaders/TiltLoader.cjs.js +0 -1
  913. package/loaders/VOXLoader.cjs.js +0 -1
  914. package/loaders/VRMLLoader.cjs.js +0 -1
  915. package/loaders/VRMLoader.cjs.js +0 -1
  916. package/loaders/VTKLoader.cjs.js +0 -1
  917. package/loaders/XLoader.cjs.js +0 -1
  918. package/loaders/XYZLoader.cjs.js +0 -1
  919. package/loaders/lwo/IFFParser.cjs.js +0 -1
  920. package/loaders/lwo/LWO2Parser.cjs.js +0 -1
  921. package/loaders/lwo/LWO3Parser.cjs.js +0 -1
  922. package/math/Capsule.cjs.js +0 -1
  923. package/math/ColorConverter.cjs.js +0 -1
  924. package/math/ConvexHull.cjs.js +0 -1
  925. package/math/ImprovedNoise.cjs.js +0 -1
  926. package/math/Lut.cjs.js +0 -1
  927. package/math/MeshSurfaceSampler.cjs.js +0 -1
  928. package/math/OBB.cjs.js +0 -1
  929. package/math/Octree.cjs.js +0 -1
  930. package/math/SimplexNoise.cjs.js +0 -1
  931. package/misc/ConvexObjectBreaker.cjs.js +0 -1
  932. package/misc/GPUComputationRenderer.cjs.js +0 -1
  933. package/misc/Gyroscope.cjs.js +0 -1
  934. package/misc/MD2Character.cjs.js +0 -1
  935. package/misc/MD2CharacterComplex.cjs.js +0 -1
  936. package/misc/MorphAnimMesh.cjs.js +0 -1
  937. package/misc/MorphBlendMesh.cjs.js +0 -1
  938. package/misc/ProgressiveLightmap.cjs.js +0 -1
  939. package/misc/RollerCoaster.cjs.js +0 -1
  940. package/misc/TubePainter.cjs.js +0 -1
  941. package/misc/Volume.cjs.js +0 -1
  942. package/misc/VolumeSlice.cjs.js +0 -1
  943. package/misc/WebGL.cjs.js +0 -1
  944. package/modifiers/CurveModifier.cjs.js +0 -1
  945. package/modifiers/EdgeSplitModifier.cjs.js +0 -1
  946. package/modifiers/SimplifyModifier.cjs.js +0 -1
  947. package/modifiers/TessellateModifier.cjs.js +0 -1
  948. package/nodes/Nodes.cjs.js +0 -1
  949. package/nodes/ShaderNode.cjs.js +0 -1
  950. package/nodes/accessors/BufferNode.cjs.js +0 -1
  951. package/nodes/accessors/CameraNode.cjs.js +0 -1
  952. package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
  953. package/nodes/accessors/MaterialNode.cjs.js +0 -1
  954. package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
  955. package/nodes/accessors/ModelNode.cjs.js +0 -1
  956. package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  957. package/nodes/accessors/NormalNode.cjs.js +0 -1
  958. package/nodes/accessors/Object3DNode.cjs.js +0 -1
  959. package/nodes/accessors/PointUVNode.cjs.js +0 -1
  960. package/nodes/accessors/PositionNode.cjs.js +0 -1
  961. package/nodes/accessors/ReferenceNode.cjs.js +0 -1
  962. package/nodes/accessors/ReflectNode.cjs.js +0 -1
  963. package/nodes/accessors/SkinningNode.cjs.js +0 -1
  964. package/nodes/accessors/TextureNode.cjs.js +0 -1
  965. package/nodes/accessors/UVNode.cjs.js +0 -1
  966. package/nodes/core/ArrayUniformNode.cjs.js +0 -1
  967. package/nodes/core/AttributeNode.cjs.js +0 -1
  968. package/nodes/core/BypassNode.cjs.js +0 -1
  969. package/nodes/core/CodeNode.cjs.js +0 -1
  970. package/nodes/core/ConstNode.cjs.js +0 -1
  971. package/nodes/core/ContextNode.cjs.js +0 -1
  972. package/nodes/core/ExpressionNode.cjs.js +0 -1
  973. package/nodes/core/FunctionCallNode.cjs.js +0 -1
  974. package/nodes/core/FunctionNode.cjs.js +0 -1
  975. package/nodes/core/InputNode.cjs.js +0 -1
  976. package/nodes/core/Node.cjs.js +0 -1
  977. package/nodes/core/NodeAttribute.cjs.js +0 -1
  978. package/nodes/core/NodeBuilder.cjs.js +0 -1
  979. package/nodes/core/NodeCode.cjs.js +0 -1
  980. package/nodes/core/NodeFrame.cjs.js +0 -1
  981. package/nodes/core/NodeFunction.cjs.js +0 -1
  982. package/nodes/core/NodeFunction.js +0 -17
  983. package/nodes/core/NodeFunctionInput.cjs.js +0 -1
  984. package/nodes/core/NodeKeywords.cjs.js +0 -1
  985. package/nodes/core/NodeParser.cjs.js +0 -1
  986. package/nodes/core/NodeParser.js +0 -8
  987. package/nodes/core/NodeUniform.cjs.js +0 -1
  988. package/nodes/core/NodeUtils.cjs.js +0 -1
  989. package/nodes/core/NodeVar.cjs.js +0 -1
  990. package/nodes/core/NodeVary.cjs.js +0 -1
  991. package/nodes/core/PropertyNode.cjs.js +0 -1
  992. package/nodes/core/TempNode.cjs.js +0 -1
  993. package/nodes/core/UniformNode.cjs.js +0 -1
  994. package/nodes/core/VarNode.cjs.js +0 -1
  995. package/nodes/core/VaryNode.cjs.js +0 -1
  996. package/nodes/core/constants.cjs.js +0 -1
  997. package/nodes/display/ColorSpaceNode.cjs.js +0 -1
  998. package/nodes/display/NormalMapNode.cjs.js +0 -1
  999. package/nodes/fog/FogNode.cjs.js +0 -1
  1000. package/nodes/fog/FogRangeNode.cjs.js +0 -1
  1001. package/nodes/functions/BSDFs.cjs.js +0 -1
  1002. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
  1003. package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
  1004. package/nodes/lights/LightContextNode.cjs.js +0 -1
  1005. package/nodes/lights/LightNode.cjs.js +0 -1
  1006. package/nodes/lights/LightsNode.cjs.js +0 -1
  1007. package/nodes/loaders/NodeLoader.cjs.js +0 -1
  1008. package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
  1009. package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
  1010. package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
  1011. package/nodes/materials/Materials.cjs.js +0 -1
  1012. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
  1013. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
  1014. package/nodes/materials/NodeMaterial.cjs.js +0 -1
  1015. package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
  1016. package/nodes/math/CondNode.cjs.js +0 -1
  1017. package/nodes/math/MathNode.cjs.js +0 -1
  1018. package/nodes/math/OperatorNode.cjs.js +0 -1
  1019. package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
  1020. package/nodes/parsers/GLSLNodeFunction.js +0 -101
  1021. package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
  1022. package/nodes/parsers/GLSLNodeParser.js +0 -13
  1023. package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
  1024. package/nodes/parsers/WGSLNodeFunction.js +0 -71
  1025. package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
  1026. package/nodes/parsers/WGSLNodeParser.js +0 -13
  1027. package/nodes/procedural/CheckerNode.cjs.js +0 -1
  1028. package/nodes/utils/ArrayElementNode.cjs.js +0 -1
  1029. package/nodes/utils/ConvertNode.cjs.js +0 -1
  1030. package/nodes/utils/JoinNode.cjs.js +0 -1
  1031. package/nodes/utils/MatcapUVNode.cjs.js +0 -1
  1032. package/nodes/utils/OscNode.cjs.js +0 -1
  1033. package/nodes/utils/SplitNode.cjs.js +0 -1
  1034. package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
  1035. package/nodes/utils/TimerNode.cjs.js +0 -1
  1036. package/objects/GroundProjectedEnv.cjs.js +0 -1
  1037. package/objects/Lensflare.cjs.js +0 -1
  1038. package/objects/LightningStorm.cjs.js +0 -1
  1039. package/objects/MarchingCubes.cjs.js +0 -1
  1040. package/objects/Reflector.cjs.js +0 -1
  1041. package/objects/ReflectorForSSRPass.cjs.js +0 -1
  1042. package/objects/ReflectorRTT.cjs.js +0 -1
  1043. package/objects/Refractor.cjs.js +0 -1
  1044. package/objects/ShadowMesh.cjs.js +0 -1
  1045. package/objects/Sky.cjs.js +0 -1
  1046. package/objects/Water.cjs.js +0 -1
  1047. package/objects/Water2.cjs.js +0 -1
  1048. package/offscreen/jank.cjs.js +0 -1
  1049. package/offscreen/offscreen.cjs.js +0 -1
  1050. package/offscreen/scene.cjs.js +0 -1
  1051. package/physics/AmmoPhysics.cjs.js +0 -1
  1052. package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
  1053. package/postprocessing/AfterimagePass.cjs.js +0 -1
  1054. package/postprocessing/BloomPass.cjs.js +0 -1
  1055. package/postprocessing/BokehPass.cjs.js +0 -1
  1056. package/postprocessing/ClearPass.cjs.js +0 -1
  1057. package/postprocessing/CubeTexturePass.cjs.js +0 -1
  1058. package/postprocessing/DotScreenPass.cjs.js +0 -1
  1059. package/postprocessing/EffectComposer.cjs.js +0 -1
  1060. package/postprocessing/FilmPass.cjs.js +0 -1
  1061. package/postprocessing/GlitchPass.cjs.js +0 -1
  1062. package/postprocessing/HalftonePass.cjs.js +0 -1
  1063. package/postprocessing/LUTPass.cjs.js +0 -1
  1064. package/postprocessing/MaskPass.cjs.js +0 -1
  1065. package/postprocessing/OutlinePass.cjs.js +0 -1
  1066. package/postprocessing/Pass.cjs.js +0 -1
  1067. package/postprocessing/RenderPass.cjs.js +0 -1
  1068. package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
  1069. package/postprocessing/SAOPass.cjs.js +0 -1
  1070. package/postprocessing/SMAAPass.cjs.js +0 -1
  1071. package/postprocessing/SSAARenderPass.cjs.js +0 -1
  1072. package/postprocessing/SSAOPass.cjs.js +0 -1
  1073. package/postprocessing/SSRPass.cjs.js +0 -1
  1074. package/postprocessing/SavePass.cjs.js +0 -1
  1075. package/postprocessing/ShaderPass.cjs.js +0 -1
  1076. package/postprocessing/TAARenderPass.cjs.js +0 -1
  1077. package/postprocessing/TexturePass.cjs.js +0 -1
  1078. package/postprocessing/UnrealBloomPass.cjs.js +0 -1
  1079. package/renderers/CSS2DRenderer.cjs.js +0 -1
  1080. package/renderers/CSS3DRenderer.cjs.js +0 -1
  1081. package/renderers/Projector.cjs.js +0 -1
  1082. package/renderers/SVGRenderer.cjs.js +0 -1
  1083. package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
  1084. package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
  1085. package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  1086. package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
  1087. package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
  1088. package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
  1089. package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
  1090. package/renderers/nodes/core/InputNode.cjs.js +0 -1
  1091. package/renderers/nodes/core/Node.cjs.js +0 -1
  1092. package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
  1093. package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
  1094. package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
  1095. package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
  1096. package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
  1097. package/renderers/nodes/core/NodeVary.cjs.js +0 -1
  1098. package/renderers/nodes/core/VaryNode.cjs.js +0 -1
  1099. package/renderers/nodes/core/constants.cjs.js +0 -1
  1100. package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
  1101. package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
  1102. package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
  1103. package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
  1104. package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
  1105. package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
  1106. package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
  1107. package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
  1108. package/renderers/nodes/math/MathNode.cjs.js +0 -1
  1109. package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
  1110. package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
  1111. package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
  1112. package/renderers/webgpu/WebGPU.cjs.js +0 -1
  1113. package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
  1114. package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
  1115. package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
  1116. package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
  1117. package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
  1118. package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
  1119. package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
  1120. package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
  1121. package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
  1122. package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
  1123. package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
  1124. package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
  1125. package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
  1126. package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
  1127. package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
  1128. package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
  1129. package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
  1130. package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
  1131. package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
  1132. package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
  1133. package/renderers/webgpu/constants.cjs.js +0 -1
  1134. package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
  1135. package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
  1136. package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
  1137. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
  1138. package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
  1139. package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
  1140. package/shaders/AfterimageShader.cjs.js +0 -1
  1141. package/shaders/BasicShader.cjs.js +0 -1
  1142. package/shaders/BleachBypassShader.cjs.js +0 -1
  1143. package/shaders/BlendShader.cjs.js +0 -1
  1144. package/shaders/BokehShader.cjs.js +0 -1
  1145. package/shaders/BokehShader2.cjs.js +0 -1
  1146. package/shaders/BrightnessContrastShader.cjs.js +0 -1
  1147. package/shaders/ColorCorrectionShader.cjs.js +0 -1
  1148. package/shaders/ColorifyShader.cjs.js +0 -1
  1149. package/shaders/ConvolutionShader.cjs.js +0 -1
  1150. package/shaders/CopyShader.cjs.js +0 -1
  1151. package/shaders/DOFMipMapShader.cjs.js +0 -1
  1152. package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
  1153. package/shaders/DigitalGlitch.cjs.js +0 -1
  1154. package/shaders/DotScreenShader.cjs.js +0 -1
  1155. package/shaders/FXAAShader.cjs.js +0 -1
  1156. package/shaders/FilmShader.cjs.js +0 -1
  1157. package/shaders/FocusShader.cjs.js +0 -1
  1158. package/shaders/FreiChenShader.cjs.js +0 -1
  1159. package/shaders/FresnelShader.cjs.js +0 -1
  1160. package/shaders/GammaCorrectionShader.cjs.js +0 -1
  1161. package/shaders/GodRaysShader.cjs.js +0 -1
  1162. package/shaders/HalftoneShader.cjs.js +0 -1
  1163. package/shaders/HorizontalBlurShader.cjs.js +0 -1
  1164. package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
  1165. package/shaders/HueSaturationShader.cjs.js +0 -1
  1166. package/shaders/KaleidoShader.cjs.js +0 -1
  1167. package/shaders/LuminosityHighPassShader.cjs.js +0 -1
  1168. package/shaders/LuminosityShader.cjs.js +0 -1
  1169. package/shaders/MirrorShader.cjs.js +0 -1
  1170. package/shaders/NormalMapShader.cjs.js +0 -1
  1171. package/shaders/ParallaxShader.cjs.js +0 -1
  1172. package/shaders/PixelShader.cjs.js +0 -1
  1173. package/shaders/RGBShiftShader.cjs.js +0 -1
  1174. package/shaders/SAOShader.cjs.js +0 -1
  1175. package/shaders/SMAAShader.cjs.js +0 -1
  1176. package/shaders/SSAOShader.cjs.js +0 -1
  1177. package/shaders/SSRShader.cjs.js +0 -1
  1178. package/shaders/SepiaShader.cjs.js +0 -1
  1179. package/shaders/SobelOperatorShader.cjs.js +0 -1
  1180. package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
  1181. package/shaders/TechnicolorShader.cjs.js +0 -1
  1182. package/shaders/ToneMapShader.cjs.js +0 -1
  1183. package/shaders/ToonShader.cjs.js +0 -1
  1184. package/shaders/TriangleBlurShader.cjs.js +0 -1
  1185. package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
  1186. package/shaders/VerticalBlurShader.cjs.js +0 -1
  1187. package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
  1188. package/shaders/VignetteShader.cjs.js +0 -1
  1189. package/shaders/VolumeShader.cjs.js +0 -1
  1190. package/shaders/WaterRefractionShader.cjs.js +0 -1
  1191. package/shaders/index.cjs.js +0 -1
  1192. package/shaders/index.d.ts +0 -54
  1193. package/shaders/index.js +0 -53
  1194. package/shaders/types.cjs.js +0 -1
  1195. package/textures/FlakesTexture.cjs.js +0 -1
  1196. package/types/helpers.cjs.js +0 -1
  1197. package/types/shared.cjs.js +0 -1
  1198. package/types/shared.js +0 -1
  1199. package/types/utils.cjs.js +0 -1
  1200. package/types/utils.js +0 -1
  1201. package/utils/BufferGeometryUtils.cjs.js +0 -1
  1202. package/utils/GeometryCompressionUtils.cjs.js +0 -1
  1203. package/utils/GeometryUtils.cjs.js +0 -1
  1204. package/utils/LDrawUtils.cjs.js +0 -1
  1205. package/utils/LDrawUtils.d.ts +0 -5
  1206. package/utils/LDrawUtils.js +0 -144
  1207. package/utils/RoughnessMipmapper.cjs.js +0 -1
  1208. package/utils/SceneUtils.cjs.js +0 -1
  1209. package/utils/ShadowMapViewer.cjs.js +0 -1
  1210. package/utils/SkeletonUtils.cjs.js +0 -1
  1211. package/utils/UVsDebug.cjs.js +0 -1
  1212. package/utils/WorkerPool.cjs.js +0 -1
  1213. package/webxr/ARButton.cjs.js +0 -1
  1214. package/webxr/OculusHandModel.cjs.js +0 -1
  1215. package/webxr/OculusHandPointerModel.cjs.js +0 -1
  1216. package/webxr/Text2D.cjs.js +0 -1
  1217. package/webxr/VRButton.cjs.js +0 -1
  1218. package/webxr/XRControllerModelFactory.cjs.js +0 -1
  1219. package/webxr/XREstimatedLight.cjs.js +0 -1
  1220. package/webxr/XRHandMeshModel.cjs.js +0 -1
  1221. package/webxr/XRHandModelFactory.cjs.js +0 -1
  1222. package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
@@ -1,93 +1,64 @@
1
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import { PropertyBinding, InterpolateLinear, Vector3, RGBAFormat, ShaderMaterial, MeshStandardMaterial, MeshBasicMaterial, MeshPhysicalMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshToonMaterial, MeshLambertMaterial, DoubleSide, LineSegments, LineLoop, Line, Points, MeshDepthMaterial, InterleavedBufferAttribute, BufferAttribute, Object3D, Material, OrthographicCamera, PerspectiveCamera, MathUtils, InterpolateDiscrete, SkinnedMesh, Matrix4, Mesh, Camera, Scene, DirectionalLight, PointLight, SpotLight, NearestFilter, NearestMipmapNearestFilter, NearestMipmapLinearFilter, LinearFilter, LinearMipmapNearestFilter, LinearMipmapLinearFilter, ClampToEdgeWrapping, RepeatWrapping, MirroredRepeatWrapping } from 'three';
3
-
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const THREE = require("three");
4
4
  class GLTFExporter {
5
5
  constructor() {
6
- _defineProperty(this, "pluginCallbacks", void 0);
7
-
8
6
  this.pluginCallbacks = [];
9
- this.register(function (writer) {
7
+ this.register(function(writer) {
10
8
  return new GLTFLightExtension(writer);
11
9
  });
12
- this.register(function (writer) {
10
+ this.register(function(writer) {
13
11
  return new GLTFMaterialsUnlitExtension(writer);
14
12
  });
15
- this.register(function (writer) {
13
+ this.register(function(writer) {
16
14
  return new GLTFMaterialsPBRSpecularGlossiness(writer);
17
15
  });
18
- this.register(function (writer) {
16
+ this.register(function(writer) {
19
17
  return new GLTFMaterialsTransmissionExtension(writer);
20
18
  });
21
- this.register(function (writer) {
19
+ this.register(function(writer) {
22
20
  return new GLTFMaterialsVolumeExtension(writer);
23
21
  });
24
22
  }
25
-
26
23
  register(callback) {
27
24
  if (this.pluginCallbacks.indexOf(callback) === -1) {
28
25
  this.pluginCallbacks.push(callback);
29
26
  }
30
-
31
27
  return this;
32
28
  }
33
-
34
29
  unregister(callback) {
35
30
  if (this.pluginCallbacks.indexOf(callback) !== -1) {
36
31
  this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);
37
32
  }
38
-
39
33
  return this;
40
34
  }
41
-
42
35
  parse(input, onDone, options) {
43
36
  const writer = new GLTFWriter();
44
37
  const plugins = [];
45
-
46
38
  for (let i = 0, il = this.pluginCallbacks.length; i < il; i++) {
47
39
  plugins.push(this.pluginCallbacks[i](writer));
48
40
  }
49
-
50
41
  writer.setPlugins(plugins);
51
42
  writer.write(input, onDone, options);
52
43
  }
53
- /**
54
- * Static utility functions
55
- */
56
-
57
-
58
- } //------------------------------------------------------------------------------
59
- // Constants
60
- //------------------------------------------------------------------------------
61
-
62
-
63
- _defineProperty(GLTFExporter, "Utils", {
64
- insertKeyframe: function (track, time) {
65
- const tolerance = 0.001; // 1ms
66
-
67
- const valueSize = track.getValueSize(); // @ts-expect-error
68
-
69
- const times = new track.TimeBufferType(track.times.length + 1); // @ts-expect-error
70
-
44
+ }
45
+ GLTFExporter.Utils = {
46
+ insertKeyframe: function(track, time) {
47
+ const tolerance = 1e-3;
48
+ const valueSize = track.getValueSize();
49
+ const times = new track.TimeBufferType(track.times.length + 1);
71
50
  const values = new track.ValueBufferType(track.values.length + valueSize);
72
- /**
73
- * NOTE: createInterpolant does not exist in the type, but it does exist as a property of the class
74
- * https://github.com/mrdoob/three.js/blob/77480d339d737b7505b335101ffd3cf29a30738d/src/animation/KeyframeTrack.js#L117
75
- */
76
- // @ts-expect-error
77
-
78
51
  const interpolant = track.createInterpolant(new track.ValueBufferType(valueSize));
79
52
  let index;
80
-
81
53
  if (track.times.length === 0) {
82
54
  times[0] = time;
83
-
84
55
  for (let i = 0; i < valueSize; i++) {
85
56
  values[i] = 0;
86
57
  }
87
-
88
58
  index = 0;
89
59
  } else if (time < track.times[0]) {
90
- if (Math.abs(track.times[0] - time) < tolerance) return 0;
60
+ if (Math.abs(track.times[0] - time) < tolerance)
61
+ return 0;
91
62
  times[0] = time;
92
63
  times.set(track.times, 1);
93
64
  values.set(interpolant.evaluate(time), 0);
@@ -97,7 +68,6 @@ _defineProperty(GLTFExporter, "Utils", {
97
68
  if (Math.abs(track.times[track.times.length - 1] - time) < tolerance) {
98
69
  return track.times.length - 1;
99
70
  }
100
-
101
71
  times[times.length - 1] = time;
102
72
  times.set(track.times, 0);
103
73
  values.set(track.values, 0);
@@ -105,8 +75,8 @@ _defineProperty(GLTFExporter, "Utils", {
105
75
  index = times.length - 1;
106
76
  } else {
107
77
  for (let i = 0; i < track.times.length; i++) {
108
- if (Math.abs(track.times[i] - time) < tolerance) return i;
109
-
78
+ if (Math.abs(track.times[i] - time) < tolerance)
79
+ return i;
110
80
  if (track.times[i] < time && track.times[i + 1] > time) {
111
81
  times.set(track.times.slice(0, i + 1), 0);
112
82
  times[i + 1] = time;
@@ -119,264 +89,183 @@ _defineProperty(GLTFExporter, "Utils", {
119
89
  }
120
90
  }
121
91
  }
122
-
123
92
  track.times = times;
124
93
  track.values = values;
125
94
  return index;
126
95
  },
127
- mergeMorphTargetTracks: function (clip, root) {
96
+ mergeMorphTargetTracks: function(clip, root) {
128
97
  const tracks = [];
129
98
  const mergedTracks = {};
130
99
  const sourceTracks = clip.tracks;
131
-
132
100
  for (let i = 0; i < sourceTracks.length; ++i) {
133
101
  let sourceTrack = sourceTracks[i];
134
- const sourceTrackBinding = PropertyBinding.parseTrackName(sourceTrack.name);
135
- const sourceTrackNode = PropertyBinding.findNode(root, sourceTrackBinding.nodeName);
136
-
137
- if (sourceTrackBinding.propertyName !== 'morphTargetInfluences' || sourceTrackBinding.propertyIndex === undefined) {
138
- // Tracks that don't affect morph targets, or that affect all morph targets together, can be left as-is.
102
+ const sourceTrackBinding = THREE.PropertyBinding.parseTrackName(sourceTrack.name);
103
+ const sourceTrackNode = THREE.PropertyBinding.findNode(root, sourceTrackBinding.nodeName);
104
+ if (sourceTrackBinding.propertyName !== "morphTargetInfluences" || sourceTrackBinding.propertyIndex === void 0) {
139
105
  tracks.push(sourceTrack);
140
106
  continue;
141
107
  }
142
-
143
- if ( // @ts-expect-error
144
- sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodDiscrete && // @ts-expect-error
145
- sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodLinear) {
146
- // @ts-expect-error
108
+ if (sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodDiscrete && sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodLinear) {
147
109
  if (sourceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {
148
- // This should never happen, because glTF morph target animations
149
- // affect all targets already.
150
- throw new Error('THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.');
110
+ throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");
151
111
  }
152
-
153
- console.warn('THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead.');
112
+ console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead.");
154
113
  sourceTrack = sourceTrack.clone();
155
- sourceTrack.setInterpolation(InterpolateLinear);
114
+ sourceTrack.setInterpolation(THREE.InterpolateLinear);
156
115
  }
157
-
158
116
  const targetCount = sourceTrackNode.morphTargetInfluences.length;
159
117
  const targetIndex = sourceTrackNode.morphTargetDictionary[sourceTrackBinding.propertyIndex];
160
-
161
- if (targetIndex === undefined) {
162
- throw new Error('THREE.GLTFExporter: Morph target name not found: ' + sourceTrackBinding.propertyIndex);
118
+ if (targetIndex === void 0) {
119
+ throw new Error("THREE.GLTFExporter: Morph target name not found: " + sourceTrackBinding.propertyIndex);
163
120
  }
164
-
165
- let mergedTrack; // If this is the first time we've seen this object, create a new
166
- // track to store merged keyframe data for each morph target.
167
-
168
- if (mergedTracks[sourceTrackNode.uuid] === undefined) {
169
- mergedTrack = sourceTrack.clone(); // @ts-expect-error
170
-
121
+ let mergedTrack;
122
+ if (mergedTracks[sourceTrackNode.uuid] === void 0) {
123
+ mergedTrack = sourceTrack.clone();
171
124
  const values = new mergedTrack.ValueBufferType(targetCount * mergedTrack.times.length);
172
-
173
125
  for (let j = 0; j < mergedTrack.times.length; j++) {
174
126
  values[j * targetCount + targetIndex] = mergedTrack.values[j];
175
- } // We need to take into consideration the intended target node
176
- // of our original un-merged morphTarget animation.
177
-
178
-
179
- mergedTrack.name = (sourceTrackBinding.nodeName || '') + '.morphTargetInfluences';
127
+ }
128
+ mergedTrack.name = (sourceTrackBinding.nodeName || "") + ".morphTargetInfluences";
180
129
  mergedTrack.values = values;
181
130
  mergedTracks[sourceTrackNode.uuid] = mergedTrack;
182
131
  tracks.push(mergedTrack);
183
132
  continue;
184
- } // @ts-expect-error
185
-
186
-
133
+ }
187
134
  const sourceInterpolant = sourceTrack.createInterpolant(new sourceTrack.ValueBufferType(1));
188
- mergedTrack = mergedTracks[sourceTrackNode.uuid]; // For every existing keyframe of the merged track, write a (possibly
189
- // interpolated) value from the source track.
190
-
135
+ mergedTrack = mergedTracks[sourceTrackNode.uuid];
191
136
  for (let j = 0; j < mergedTrack.times.length; j++) {
192
137
  mergedTrack.values[j * targetCount + targetIndex] = sourceInterpolant.evaluate(mergedTrack.times[j]);
193
- } // For every existing keyframe of the source track, write a (possibly
194
- // new) keyframe to the merged track. Values from the previous loop may
195
- // be written again, but keyframes are de-duplicated.
196
-
197
-
138
+ }
198
139
  for (let j = 0; j < sourceTrack.times.length; j++) {
199
140
  const keyframeIndex = this.insertKeyframe(mergedTrack, sourceTrack.times[j]);
200
141
  mergedTrack.values[keyframeIndex * targetCount + targetIndex] = sourceTrack.values[j];
201
142
  }
202
143
  }
203
-
204
144
  clip.tracks = tracks;
205
145
  return clip;
206
146
  }
207
- });
208
-
147
+ };
209
148
  const WEBGL_CONSTANTS = {
210
- POINTS: 0x0000,
211
- LINES: 0x0001,
212
- LINE_LOOP: 0x0002,
213
- LINE_STRIP: 0x0003,
214
- TRIANGLES: 0x0004,
215
- TRIANGLE_STRIP: 0x0005,
216
- TRIANGLE_FAN: 0x0006,
217
- UNSIGNED_BYTE: 0x1401,
218
- UNSIGNED_SHORT: 0x1403,
219
- FLOAT: 0x1406,
220
- UNSIGNED_INT: 0x1405,
221
- ARRAY_BUFFER: 0x8892,
222
- ELEMENT_ARRAY_BUFFER: 0x8893,
223
- NEAREST: 0x2600,
224
- LINEAR: 0x2601,
225
- NEAREST_MIPMAP_NEAREST: 0x2700,
226
- LINEAR_MIPMAP_NEAREST: 0x2701,
227
- NEAREST_MIPMAP_LINEAR: 0x2702,
228
- LINEAR_MIPMAP_LINEAR: 0x2703,
149
+ POINTS: 0,
150
+ LINES: 1,
151
+ LINE_LOOP: 2,
152
+ LINE_STRIP: 3,
153
+ TRIANGLES: 4,
154
+ TRIANGLE_STRIP: 5,
155
+ TRIANGLE_FAN: 6,
156
+ UNSIGNED_BYTE: 5121,
157
+ UNSIGNED_SHORT: 5123,
158
+ FLOAT: 5126,
159
+ UNSIGNED_INT: 5125,
160
+ ARRAY_BUFFER: 34962,
161
+ ELEMENT_ARRAY_BUFFER: 34963,
162
+ NEAREST: 9728,
163
+ LINEAR: 9729,
164
+ NEAREST_MIPMAP_NEAREST: 9984,
165
+ LINEAR_MIPMAP_NEAREST: 9985,
166
+ NEAREST_MIPMAP_LINEAR: 9986,
167
+ LINEAR_MIPMAP_LINEAR: 9987,
229
168
  CLAMP_TO_EDGE: 33071,
230
169
  MIRRORED_REPEAT: 33648,
231
170
  REPEAT: 10497
232
171
  };
233
172
  const THREE_TO_WEBGL = {};
234
- THREE_TO_WEBGL[NearestFilter] = WEBGL_CONSTANTS.NEAREST;
235
- THREE_TO_WEBGL[NearestMipmapNearestFilter] = WEBGL_CONSTANTS.NEAREST_MIPMAP_NEAREST;
236
- THREE_TO_WEBGL[NearestMipmapLinearFilter] = WEBGL_CONSTANTS.NEAREST_MIPMAP_LINEAR;
237
- THREE_TO_WEBGL[LinearFilter] = WEBGL_CONSTANTS.LINEAR;
238
- THREE_TO_WEBGL[LinearMipmapNearestFilter] = WEBGL_CONSTANTS.LINEAR_MIPMAP_NEAREST;
239
- THREE_TO_WEBGL[LinearMipmapLinearFilter] = WEBGL_CONSTANTS.LINEAR_MIPMAP_LINEAR;
240
- THREE_TO_WEBGL[ClampToEdgeWrapping] = WEBGL_CONSTANTS.CLAMP_TO_EDGE;
241
- THREE_TO_WEBGL[RepeatWrapping] = WEBGL_CONSTANTS.REPEAT;
242
- THREE_TO_WEBGL[MirroredRepeatWrapping] = WEBGL_CONSTANTS.MIRRORED_REPEAT;
173
+ THREE_TO_WEBGL[THREE.NearestFilter] = WEBGL_CONSTANTS.NEAREST;
174
+ THREE_TO_WEBGL[THREE.NearestMipmapNearestFilter] = WEBGL_CONSTANTS.NEAREST_MIPMAP_NEAREST;
175
+ THREE_TO_WEBGL[THREE.NearestMipmapLinearFilter] = WEBGL_CONSTANTS.NEAREST_MIPMAP_LINEAR;
176
+ THREE_TO_WEBGL[THREE.LinearFilter] = WEBGL_CONSTANTS.LINEAR;
177
+ THREE_TO_WEBGL[THREE.LinearMipmapNearestFilter] = WEBGL_CONSTANTS.LINEAR_MIPMAP_NEAREST;
178
+ THREE_TO_WEBGL[THREE.LinearMipmapLinearFilter] = WEBGL_CONSTANTS.LINEAR_MIPMAP_LINEAR;
179
+ THREE_TO_WEBGL[THREE.ClampToEdgeWrapping] = WEBGL_CONSTANTS.CLAMP_TO_EDGE;
180
+ THREE_TO_WEBGL[THREE.RepeatWrapping] = WEBGL_CONSTANTS.REPEAT;
181
+ THREE_TO_WEBGL[THREE.MirroredRepeatWrapping] = WEBGL_CONSTANTS.MIRRORED_REPEAT;
243
182
  const PATH_PROPERTIES = {
244
- scale: 'scale',
245
- position: 'translation',
246
- quaternion: 'rotation',
247
- morphTargetInfluences: 'weights'
248
- }; // GLB constants
249
- // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
250
-
183
+ scale: "scale",
184
+ position: "translation",
185
+ quaternion: "rotation",
186
+ morphTargetInfluences: "weights"
187
+ };
251
188
  const GLB_HEADER_BYTES = 12;
252
- const GLB_HEADER_MAGIC = 0x46546c67;
189
+ const GLB_HEADER_MAGIC = 1179937895;
253
190
  const GLB_VERSION = 2;
254
191
  const GLB_CHUNK_PREFIX_BYTES = 8;
255
- const GLB_CHUNK_TYPE_JSON = 0x4e4f534a;
256
- const GLB_CHUNK_TYPE_BIN = 0x004e4942;
257
- /**
258
- * Writer
259
- */
260
-
192
+ const GLB_CHUNK_TYPE_JSON = 1313821514;
193
+ const GLB_CHUNK_TYPE_BIN = 5130562;
261
194
  class GLTFWriter {
262
195
  constructor() {
263
- _defineProperty(this, "plugins", void 0);
264
-
265
- _defineProperty(this, "options", void 0);
266
-
267
- _defineProperty(this, "pending", void 0);
268
-
269
- _defineProperty(this, "buffers", void 0);
270
-
271
- _defineProperty(this, "byteOffset", void 0);
272
-
273
- _defineProperty(this, "nodeMap", void 0);
274
-
275
- _defineProperty(this, "skins", void 0);
276
-
277
- _defineProperty(this, "extensionsUsed", void 0);
278
-
279
- _defineProperty(this, "uids", void 0);
280
-
281
- _defineProperty(this, "uid", void 0);
282
-
283
- _defineProperty(this, "json", void 0);
284
-
285
- _defineProperty(this, "cache", void 0);
286
-
287
- _defineProperty(this, "cachedCanvas", void 0);
288
-
289
196
  this.plugins = [];
290
197
  this.options = {};
291
198
  this.pending = [];
292
199
  this.buffers = [];
293
200
  this.byteOffset = 0;
294
- this.nodeMap = new Map();
201
+ this.nodeMap = /* @__PURE__ */ new Map();
295
202
  this.skins = [];
296
203
  this.extensionsUsed = {};
297
- this.uids = new Map();
204
+ this.uids = /* @__PURE__ */ new Map();
298
205
  this.uid = 0;
299
206
  this.json = {
300
207
  asset: {
301
- version: '2.0',
302
- generator: 'THREE.GLTFExporter'
208
+ version: "2.0",
209
+ generator: "THREE.GLTFExporter"
303
210
  }
304
211
  };
305
212
  this.cache = {
306
- meshes: new Map(),
307
- attributes: new Map(),
308
- attributesNormalized: new Map(),
309
- materials: new Map(),
310
- textures: new Map(),
311
- images: new Map()
213
+ meshes: /* @__PURE__ */ new Map(),
214
+ attributes: /* @__PURE__ */ new Map(),
215
+ attributesNormalized: /* @__PURE__ */ new Map(),
216
+ materials: /* @__PURE__ */ new Map(),
217
+ textures: /* @__PURE__ */ new Map(),
218
+ images: /* @__PURE__ */ new Map()
312
219
  };
313
220
  this.cachedCanvas = null;
314
221
  }
315
-
316
222
  setPlugins(plugins) {
317
223
  this.plugins = plugins;
318
224
  }
319
- /**
320
- * Parse scenes and generate GLTF output
321
- * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes
322
- * @param {Function} onDone Callback on completed
323
- * @param {Object} options options
324
- */
325
-
326
-
327
225
  write(input, onDone, options) {
328
- this.options = Object.assign({}, {
329
- // default options
330
- binary: false,
331
- trs: false,
332
- onlyVisible: true,
333
- truncateDrawRange: true,
334
- embedImages: true,
335
- maxTextureSize: Infinity,
336
- animations: [],
337
- includeCustomExtensions: false
338
- }, options);
339
-
340
- if (this.options.animations !== undefined && this.options.animations.length > 0) {
341
- // Only TRS properties, and not matrices, may be targeted by animation.
226
+ this.options = Object.assign(
227
+ {},
228
+ {
229
+ binary: false,
230
+ trs: false,
231
+ onlyVisible: true,
232
+ truncateDrawRange: true,
233
+ embedImages: true,
234
+ maxTextureSize: Infinity,
235
+ animations: [],
236
+ includeCustomExtensions: false
237
+ },
238
+ options
239
+ );
240
+ if (this.options.animations !== void 0 && this.options.animations.length > 0) {
342
241
  this.options.trs = true;
343
242
  }
344
-
345
243
  this.processInput(input);
346
244
  const writer = this;
347
245
  Promise.all(this.pending).then(() => {
348
246
  const buffers = writer.buffers;
349
247
  const json = writer.json;
350
- const options = writer.options;
351
- const extensionsUsed = writer.extensionsUsed; // Merge buffers.
352
-
353
- const blob = new Blob(buffers, {
354
- type: 'application/octet-stream'
355
- }); // Declare extensions.
356
-
248
+ const options2 = writer.options;
249
+ const extensionsUsed = writer.extensionsUsed;
250
+ const blob = new Blob(buffers, { type: "application/octet-stream" });
357
251
  const extensionsUsedList = Object.keys(extensionsUsed);
358
- if (extensionsUsedList.length > 0) json.extensionsUsed = extensionsUsedList; // Update bytelength of the single buffer.
359
-
360
- if (json.buffers && json.buffers.length > 0) json.buffers[0].byteLength = blob.size;
361
-
362
- if (options.binary) {
363
- // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
252
+ if (extensionsUsedList.length > 0)
253
+ json.extensionsUsed = extensionsUsedList;
254
+ if (json.buffers && json.buffers.length > 0)
255
+ json.buffers[0].byteLength = blob.size;
256
+ if (options2.binary) {
364
257
  const reader = new window.FileReader();
365
258
  reader.readAsArrayBuffer(blob);
366
-
367
259
  reader.onloadend = () => {
368
- if (reader.result !== null && typeof reader.result !== 'string') {
369
- // Binary chunk.
260
+ if (reader.result !== null && typeof reader.result !== "string") {
370
261
  const binaryChunk = this.getPaddedArrayBuffer(reader.result);
371
262
  const binaryChunkPrefix = new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));
372
263
  binaryChunkPrefix.setUint32(0, binaryChunk.byteLength, true);
373
- binaryChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_BIN, true); // JSON chunk.
374
-
375
- const jsonChunk = this.getPaddedArrayBuffer(this.stringToArrayBuffer(JSON.stringify(json)), 0x20);
264
+ binaryChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_BIN, true);
265
+ const jsonChunk = this.getPaddedArrayBuffer(this.stringToArrayBuffer(JSON.stringify(json)), 32);
376
266
  const jsonChunkPrefix = new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));
377
267
  jsonChunkPrefix.setUint32(0, jsonChunk.byteLength, true);
378
- jsonChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_JSON, true); // GLB header.
379
-
268
+ jsonChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_JSON, true);
380
269
  const header = new ArrayBuffer(GLB_HEADER_BYTES);
381
270
  const headerView = new DataView(header);
382
271
  headerView.setUint32(0, GLB_HEADER_MAGIC, true);
@@ -384,13 +273,12 @@ class GLTFWriter {
384
273
  const totalByteLength = GLB_HEADER_BYTES + jsonChunkPrefix.byteLength + jsonChunk.byteLength + binaryChunkPrefix.byteLength + binaryChunk.byteLength;
385
274
  headerView.setUint32(8, totalByteLength, true);
386
275
  const glbBlob = new Blob([header, jsonChunkPrefix, jsonChunk, binaryChunkPrefix, binaryChunk], {
387
- type: 'application/octet-stream'
276
+ type: "application/octet-stream"
388
277
  });
389
278
  const glbReader = new window.FileReader();
390
279
  glbReader.readAsArrayBuffer(glbBlob);
391
-
392
- glbReader.onloadend = function () {
393
- if (glbReader.result !== null && typeof glbReader.result !== 'string') {
280
+ glbReader.onloadend = function() {
281
+ if (glbReader.result !== null && typeof glbReader.result !== "string") {
394
282
  onDone(glbReader.result);
395
283
  }
396
284
  };
@@ -400,11 +288,9 @@ class GLTFWriter {
400
288
  if (json.buffers && json.buffers.length > 0) {
401
289
  const reader = new window.FileReader();
402
290
  reader.readAsDataURL(blob);
403
-
404
- reader.onloadend = function () {
291
+ reader.onloadend = function() {
405
292
  const base64data = reader.result;
406
-
407
- if (json.buffers !== undefined && base64data !== null) {
293
+ if (json.buffers !== void 0 && base64data !== null) {
408
294
  json.buffers[0].uri = base64data;
409
295
  onDone(json);
410
296
  }
@@ -415,171 +301,100 @@ class GLTFWriter {
415
301
  }
416
302
  });
417
303
  }
418
- /**
419
- * Serializes a userData.
420
- *
421
- * @param {THREE.Object3D|THREE.Material} object
422
- * @param {Object} objectDef
423
- */
424
-
425
-
426
304
  serializeUserData(object, objectDef) {
427
- if (Object.keys(object.userData).length === 0) return;
305
+ if (Object.keys(object.userData).length === 0)
306
+ return;
428
307
  const options = this.options;
429
308
  const extensionsUsed = this.extensionsUsed;
430
-
431
309
  try {
432
310
  const json = JSON.parse(JSON.stringify(object.userData));
433
-
434
311
  if (options.includeCustomExtensions && json.gltfExtensions) {
435
- if (objectDef.extensions === undefined) objectDef.extensions = {};
436
-
312
+ if (objectDef.extensions === void 0)
313
+ objectDef.extensions = {};
437
314
  for (const extensionName in json.gltfExtensions) {
438
315
  objectDef.extensions[extensionName] = json.gltfExtensions[extensionName];
439
316
  extensionsUsed[extensionName] = true;
440
317
  }
441
-
442
318
  delete json.gltfExtensions;
443
319
  }
444
-
445
- if (Object.keys(json).length > 0) objectDef.extras = json;
320
+ if (Object.keys(json).length > 0)
321
+ objectDef.extras = json;
446
322
  } catch (error) {
447
323
  if (error instanceof Error) {
448
- console.warn("THREE.GLTFExporter: userData of '" + object.name + "' " + "won't be serialized because of JSON.stringify error - " + error.message);
324
+ console.warn(
325
+ "THREE.GLTFExporter: userData of '" + object.name + "' won't be serialized because of JSON.stringify error - " + error.message
326
+ );
449
327
  }
450
328
  }
451
329
  }
452
- /**
453
- * Assign and return a temporal unique id for an object
454
- * especially which doesn't have .uuid
455
- * @param {Object} object
456
- * @return {Integer}
457
- */
458
-
459
-
460
330
  getUID(object) {
461
- if (!this.uids.has(object)) this.uids.set(object, this.uid++);
331
+ if (!this.uids.has(object))
332
+ this.uids.set(object, this.uid++);
462
333
  return this.uids.get(object);
463
334
  }
464
- /**
465
- * Checks if normal attribute values are normalized.
466
- *
467
- * @param {BufferAttribute} normal
468
- * @returns {Boolean}
469
- */
470
-
471
-
472
335
  isNormalizedNormalAttribute(normal) {
473
336
  const cache = this.cache;
474
- if (cache.attributesNormalized.has(normal)) return false;
475
- const v = new Vector3();
476
-
337
+ if (cache.attributesNormalized.has(normal))
338
+ return false;
339
+ const v = new THREE.Vector3();
477
340
  for (let i = 0, il = normal.count; i < il; i++) {
478
- // 0.0005 is from glTF-validator
479
- if (Math.abs(v.fromBufferAttribute(normal, i).length() - 1.0) > 0.0005) return false;
341
+ if (Math.abs(v.fromBufferAttribute(normal, i).length() - 1) > 5e-4)
342
+ return false;
480
343
  }
481
-
482
344
  return true;
483
345
  }
484
- /**
485
- * Creates normalized normal buffer attribute.
486
- *
487
- * @param {BufferAttribute} normal
488
- * @returns {BufferAttribute}
489
- *
490
- */
491
-
492
-
493
346
  createNormalizedNormalAttribute(normal) {
494
347
  const cache = this.cache;
495
- if (cache.attributesNormalized.has(normal)) return cache.attributesNormalized.get(normal);
348
+ if (cache.attributesNormalized.has(normal))
349
+ return cache.attributesNormalized.get(normal);
496
350
  const attribute = normal.clone();
497
- const v = new Vector3();
498
-
351
+ const v = new THREE.Vector3();
499
352
  for (let i = 0, il = attribute.count; i < il; i++) {
500
353
  v.fromBufferAttribute(attribute, i);
501
-
502
354
  if (v.x === 0 && v.y === 0 && v.z === 0) {
503
- // if values can't be normalized set (1, 0, 0)
504
- v.setX(1.0);
355
+ v.setX(1);
505
356
  } else {
506
357
  v.normalize();
507
358
  }
508
-
509
359
  attribute.setXYZ(i, v.x, v.y, v.z);
510
360
  }
511
-
512
361
  cache.attributesNormalized.set(normal, attribute);
513
362
  return attribute;
514
363
  }
515
- /**
516
- * Applies a texture transform, if present, to the map definition. Requires
517
- * the KHR_texture_transform extension.
518
- *
519
- * @param {Object} mapDef
520
- * @param {THREE.Texture} texture
521
- */
522
-
523
-
524
364
  applyTextureTransform(mapDef, texture) {
525
365
  let didTransform = false;
526
366
  const transformDef = {};
527
-
528
367
  if (texture.offset.x !== 0 || texture.offset.y !== 0) {
529
368
  transformDef.offset = texture.offset.toArray();
530
369
  didTransform = true;
531
370
  }
532
-
533
371
  if (texture.rotation !== 0) {
534
372
  transformDef.rotation = texture.rotation;
535
373
  didTransform = true;
536
374
  }
537
-
538
375
  if (texture.repeat.x !== 1 || texture.repeat.y !== 1) {
539
376
  transformDef.scale = texture.repeat.toArray();
540
377
  didTransform = true;
541
378
  }
542
-
543
379
  if (didTransform) {
544
380
  mapDef.extensions = mapDef.extensions || {};
545
- mapDef.extensions['KHR_texture_transform'] = transformDef;
546
- this.extensionsUsed['KHR_texture_transform'] = true;
381
+ mapDef.extensions["KHR_texture_transform"] = transformDef;
382
+ this.extensionsUsed["KHR_texture_transform"] = true;
547
383
  }
548
384
  }
549
- /**
550
- * Process a buffer to append to the default one.
551
- * @param {ArrayBuffer} buffer
552
- * @return {Integer}
553
- */
554
-
555
-
556
385
  processBuffer(buffer) {
557
386
  const json = this.json;
558
387
  const buffers = this.buffers;
559
- if (!json.buffers) json.buffers = [{
560
- byteLength: 0
561
- }]; // All buffers are merged before export.
562
-
388
+ if (!json.buffers)
389
+ json.buffers = [{ byteLength: 0 }];
563
390
  buffers.push(buffer);
564
391
  return 0;
565
392
  }
566
- /**
567
- * Process and generate a BufferView
568
- * @param {BufferAttribute} attribute
569
- * @param {number} componentType
570
- * @param {number} start
571
- * @param {number} count
572
- * @param {number} target (Optional) Target usage of the BufferView
573
- * @return {Object}
574
- */
575
-
576
-
577
393
  processBufferView(attribute, componentType, start, count, target) {
578
394
  const json = this.json;
579
- if (!json.bufferViews) json.bufferViews = []; // Create a new dataview and dump the attribute's array into it
580
-
395
+ if (!json.bufferViews)
396
+ json.bufferViews = [];
581
397
  let componentSize;
582
-
583
398
  if (componentType === WEBGL_CONSTANTS.UNSIGNED_BYTE) {
584
399
  componentSize = 1;
585
400
  } else if (componentType === WEBGL_CONSTANTS.UNSIGNED_SHORT) {
@@ -587,23 +402,25 @@ class GLTFWriter {
587
402
  } else {
588
403
  componentSize = 4;
589
404
  }
590
-
591
405
  const byteLength = this.getPaddedBufferSize(count * attribute.itemSize * componentSize);
592
406
  const dataView = new DataView(new ArrayBuffer(byteLength));
593
407
  let offset = 0;
594
-
595
408
  for (let i = start; i < start + count; i++) {
596
409
  for (let a = 0; a < attribute.itemSize; a++) {
597
410
  let value;
598
-
599
411
  if (attribute.itemSize > 4) {
600
- // no support for interleaved data for itemSize > 4
601
412
  value = attribute.array[i * attribute.itemSize + a];
602
413
  } else {
603
- if (a === 0) value = attribute.getX(i);else if (a === 1) value = attribute.getY(i);else if (a === 2) value = attribute.getZ(i);else if (a === 3) value = attribute.getW(i);
414
+ if (a === 0)
415
+ value = attribute.getX(i);
416
+ else if (a === 1)
417
+ value = attribute.getY(i);
418
+ else if (a === 2)
419
+ value = attribute.getZ(i);
420
+ else if (a === 3)
421
+ value = attribute.getW(i);
604
422
  }
605
-
606
- if (value !== undefined) {
423
+ if (value !== void 0) {
607
424
  if (componentType === WEBGL_CONSTANTS.FLOAT) {
608
425
  dataView.setFloat32(offset, value, true);
609
426
  } else if (componentType === WEBGL_CONSTANTS.UNSIGNED_INT) {
@@ -614,49 +431,37 @@ class GLTFWriter {
614
431
  dataView.setUint8(offset, value);
615
432
  }
616
433
  }
617
-
618
434
  offset += componentSize;
619
435
  }
620
436
  }
621
-
622
437
  const bufferViewDef = {
623
438
  buffer: this.processBuffer(dataView.buffer),
624
439
  byteOffset: this.byteOffset,
625
- byteLength: byteLength
440
+ byteLength
626
441
  };
627
- if (target !== undefined) bufferViewDef.target = target;
628
-
442
+ if (target !== void 0)
443
+ bufferViewDef.target = target;
629
444
  if (target === WEBGL_CONSTANTS.ARRAY_BUFFER) {
630
- // Only define byteStride for vertex attributes.
631
445
  bufferViewDef.byteStride = attribute.itemSize * componentSize;
632
446
  }
633
-
634
447
  this.byteOffset += byteLength;
635
- json.bufferViews.push(bufferViewDef); // @TODO Merge bufferViews where possible.
636
-
448
+ json.bufferViews.push(bufferViewDef);
637
449
  const output = {
638
450
  id: json.bufferViews.length - 1,
639
451
  byteLength: 0
640
452
  };
641
453
  return output;
642
454
  }
643
- /**
644
- * Process and generate a BufferView from an image Blob.
645
- * @param {Blob} blob
646
- * @return {Promise<Integer>}
647
- */
648
-
649
-
650
455
  processBufferViewImage(blob) {
651
456
  const writer = this;
652
457
  const json = writer.json;
653
- if (!json.bufferViews) json.bufferViews = [];
654
- return new Promise(resolve => {
458
+ if (!json.bufferViews)
459
+ json.bufferViews = [];
460
+ return new Promise((resolve) => {
655
461
  const reader = new window.FileReader();
656
462
  reader.readAsArrayBuffer(blob);
657
-
658
463
  reader.onloadend = () => {
659
- if (reader.result !== null && typeof reader.result !== 'string' && json.bufferViews !== undefined) {
464
+ if (reader.result !== null && typeof reader.result !== "string" && json.bufferViews !== void 0) {
660
465
  const buffer = this.getPaddedArrayBuffer(reader.result);
661
466
  const bufferViewDef = {
662
467
  buffer: writer.processBuffer(buffer),
@@ -669,28 +474,17 @@ class GLTFWriter {
669
474
  };
670
475
  });
671
476
  }
672
- /**
673
- * Process attribute to generate an accessor
674
- * @param {BufferAttribute} attribute Attribute to process
675
- * @param {THREE.BufferGeometry} geometry (Optional) Geometry used for truncated draw range
676
- * @param {Integer} start (Optional)
677
- * @param {Integer} count (Optional)
678
- * @return {Integer|null} Index of the processed accessor on the "accessors" array
679
- */
680
-
681
-
682
477
  processAccessor(attribute, geometry, start, count) {
683
478
  const options = this.options;
684
479
  const json = this.json;
685
480
  const types = {
686
- 1: 'SCALAR',
687
- 2: 'VEC2',
688
- 3: 'VEC3',
689
- 4: 'VEC4',
690
- 16: 'MAT4'
481
+ 1: "SCALAR",
482
+ 2: "VEC2",
483
+ 3: "VEC3",
484
+ 4: "VEC4",
485
+ 16: "MAT4"
691
486
  };
692
- let componentType; // Detect the component type of the attribute array (float, uint or ushort)
693
-
487
+ let componentType;
694
488
  if (attribute.array.constructor === Float32Array) {
695
489
  componentType = WEBGL_CONSTANTS.FLOAT;
696
490
  } else if (attribute.array.constructor === Uint32Array) {
@@ -700,95 +494,80 @@ class GLTFWriter {
700
494
  } else if (attribute.array.constructor === Uint8Array) {
701
495
  componentType = WEBGL_CONSTANTS.UNSIGNED_BYTE;
702
496
  } else {
703
- throw new Error('THREE.GLTFExporter: Unsupported bufferAttribute component type.');
497
+ throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");
704
498
  }
705
-
706
- if (start === undefined) start = 0;
707
- if (count === undefined) count = attribute.count; // @TODO Indexed buffer geometry with drawRange not supported yet
708
-
709
- if (options.truncateDrawRange && geometry !== undefined && geometry.index === null) {
499
+ if (start === void 0)
500
+ start = 0;
501
+ if (count === void 0)
502
+ count = attribute.count;
503
+ if (options.truncateDrawRange && geometry !== void 0 && geometry.index === null) {
710
504
  const end = start + count;
711
505
  const end2 = geometry.drawRange.count === Infinity ? attribute.count : geometry.drawRange.start + geometry.drawRange.count;
712
506
  start = Math.max(start, geometry.drawRange.start);
713
507
  count = Math.min(end, end2) - start;
714
- if (count < 0) count = 0;
715
- } // Skip creating an accessor if the attribute doesn't have data to export
716
-
717
-
718
- if (count === 0) return null;
508
+ if (count < 0)
509
+ count = 0;
510
+ }
511
+ if (count === 0)
512
+ return null;
719
513
  const minMax = this.getMinMax(attribute, start, count);
720
- let bufferViewTarget; // If geometry isn't provided, don't infer the target usage of the bufferView. For
721
- // animation samplers, target must not be set.
722
-
723
- if (geometry !== undefined) {
514
+ let bufferViewTarget;
515
+ if (geometry !== void 0) {
724
516
  bufferViewTarget = attribute === geometry.index ? WEBGL_CONSTANTS.ELEMENT_ARRAY_BUFFER : WEBGL_CONSTANTS.ARRAY_BUFFER;
725
517
  }
726
-
727
- if (bufferViewTarget !== undefined) {
518
+ if (bufferViewTarget !== void 0) {
728
519
  const bufferView = this.processBufferView(attribute, componentType, start, count, bufferViewTarget);
729
520
  const accessorDef = {
730
521
  bufferView: bufferView.id,
731
522
  byteOffset: bufferView.byteOffset,
732
- componentType: componentType,
733
- count: count,
523
+ componentType,
524
+ count,
734
525
  max: minMax.max,
735
526
  min: minMax.min,
736
527
  type: types[attribute.itemSize]
737
528
  };
738
- if (attribute.normalized) accessorDef.normalized = true;
739
- if (!json.accessors) json.accessors = [];
529
+ if (attribute.normalized)
530
+ accessorDef.normalized = true;
531
+ if (!json.accessors)
532
+ json.accessors = [];
740
533
  return json.accessors.push(accessorDef) - 1;
741
534
  }
742
535
  }
743
- /**
744
- * Process image
745
- * @param {Image} image to process
746
- * @param {Integer} format of the image (RGBAFormat)
747
- * @param {Boolean} flipY before writing out the image
748
- * @return {Integer} Index of the processed texture in the "images" array
749
- */
750
-
751
-
752
536
  processImage(image, format, flipY) {
753
537
  const writer = this;
754
538
  const cache = writer.cache;
755
539
  const json = writer.json;
756
540
  const options = writer.options;
757
541
  const pending = writer.pending;
758
- if (!cache.images.has(image)) cache.images.set(image, {});
542
+ if (!cache.images.has(image))
543
+ cache.images.set(image, {});
759
544
  const cachedImages = cache.images.get(image);
760
- const mimeType = format === RGBAFormat ? 'image/png' : 'image/jpeg';
761
- const key = mimeType + ':flipY/' + flipY.toString();
762
- if (cachedImages !== undefined && cachedImages[key] !== undefined) return cachedImages[key];
763
- if (!json.images) json.images = [];
764
- const imageDef = {
765
- mimeType: mimeType
766
- };
767
-
768
- if (options.embedImages && options.maxTextureSize !== undefined) {
769
- const canvas = this.cachedCanvas = this.cachedCanvas || document.createElement('canvas');
545
+ const mimeType = format === THREE.RGBAFormat ? "image/png" : "image/jpeg";
546
+ const key = mimeType + ":flipY/" + flipY.toString();
547
+ if (cachedImages !== void 0 && cachedImages[key] !== void 0)
548
+ return cachedImages[key];
549
+ if (!json.images)
550
+ json.images = [];
551
+ const imageDef = { mimeType };
552
+ if (options.embedImages && options.maxTextureSize !== void 0) {
553
+ const canvas = this.cachedCanvas = this.cachedCanvas || document.createElement("canvas");
770
554
  canvas.width = Math.min(image.width, options.maxTextureSize);
771
555
  canvas.height = Math.min(image.height, options.maxTextureSize);
772
- const ctx = canvas.getContext('2d');
773
-
556
+ const ctx = canvas.getContext("2d");
774
557
  if (flipY) {
775
- ctx === null || ctx === void 0 ? void 0 : ctx.translate(0, canvas.height);
776
- ctx === null || ctx === void 0 ? void 0 : ctx.scale(1, -1);
558
+ ctx == null ? void 0 : ctx.translate(0, canvas.height);
559
+ ctx == null ? void 0 : ctx.scale(1, -1);
777
560
  }
778
-
779
- if (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {
780
- ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
561
+ if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== "undefined" && image instanceof OffscreenCanvas || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap) {
562
+ ctx == null ? void 0 : ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
781
563
  } else {
782
- if (format !== RGBAFormat) {
783
- console.error('GLTFExporter: Only RGBA format is supported.');
564
+ if (format !== THREE.RGBAFormat) {
565
+ console.error("GLTFExporter: Only RGBA format is supported.");
784
566
  }
785
-
786
567
  if (image.width > options.maxTextureSize || image.height > options.maxTextureSize) {
787
- console.warn('GLTFExporter: Image size is bigger than maxTextureSize', image);
568
+ console.warn("GLTFExporter: Image size is bigger than maxTextureSize", image);
788
569
  }
789
-
790
570
  const data = new Uint8ClampedArray(image.height * image.width * 4);
791
-
792
571
  if (image instanceof ImageData) {
793
572
  for (let i = 0; i < data.length; i += 4) {
794
573
  data[i + 0] = image.data[i + 0];
@@ -797,43 +576,36 @@ class GLTFWriter {
797
576
  data[i + 3] = image.data[i + 3];
798
577
  }
799
578
  }
800
-
801
- ctx === null || ctx === void 0 ? void 0 : ctx.putImageData(new ImageData(data, image.width, image.height), 0, 0);
579
+ ctx == null ? void 0 : ctx.putImageData(new ImageData(data, image.width, image.height), 0, 0);
802
580
  }
803
-
804
581
  if (options.binary) {
805
- pending.push(new Promise(function (resolve) {
806
- canvas.toBlob(function (blob) {
807
- if (blob !== null) {
808
- writer.processBufferViewImage(blob).then(function (bufferViewIndex) {
809
- imageDef.bufferView = bufferViewIndex; // @ts-expect-error
810
-
811
- resolve();
812
- });
813
- }
814
- }, mimeType);
815
- }));
582
+ pending.push(
583
+ new Promise(function(resolve) {
584
+ canvas.toBlob(function(blob) {
585
+ if (blob !== null) {
586
+ writer.processBufferViewImage(blob).then(function(bufferViewIndex) {
587
+ imageDef.bufferView = bufferViewIndex;
588
+ resolve();
589
+ });
590
+ }
591
+ }, mimeType);
592
+ })
593
+ );
816
594
  } else {
817
595
  imageDef.uri = canvas.toDataURL(mimeType);
818
596
  }
819
597
  } else if (image instanceof Image) {
820
598
  imageDef.uri = image.src;
821
599
  }
822
-
823
600
  const index = json.images.push(imageDef) - 1;
824
- if (cachedImages !== undefined) cachedImages[key] = index;
601
+ if (cachedImages !== void 0)
602
+ cachedImages[key] = index;
825
603
  return index;
826
604
  }
827
- /**
828
- * Process sampler
829
- * @param {Texture} map Texture to process
830
- * @return {Integer} Index of the processed texture in the "samplers" array
831
- */
832
-
833
-
834
605
  processSampler(map) {
835
606
  const json = this.json;
836
- if (!json.samplers) json.samplers = [];
607
+ if (!json.samplers)
608
+ json.samplers = [];
837
609
  const samplerDef = {
838
610
  magFilter: THREE_TO_WEBGL[map.magFilter],
839
611
  minFilter: THREE_TO_WEBGL[map.minFilter],
@@ -842,189 +614,129 @@ class GLTFWriter {
842
614
  };
843
615
  return json.samplers.push(samplerDef) - 1;
844
616
  }
845
- /**
846
- * Process texture
847
- * @param {Texture} map Map to process
848
- * @return {Integer} Index of the processed texture in the "textures" array
849
- */
850
-
851
-
852
617
  processTexture(map) {
853
618
  const cache = this.cache;
854
619
  const json = this.json;
855
- if (cache.textures.has(map)) return cache.textures.get(map);
856
- if (!json.textures) json.textures = [];
620
+ if (cache.textures.has(map))
621
+ return cache.textures.get(map);
622
+ if (!json.textures)
623
+ json.textures = [];
857
624
  const textureDef = {
858
625
  sampler: this.processSampler(map),
859
626
  source: this.processImage(map.image, map.format, map.flipY)
860
627
  };
861
- if (map.name) textureDef.name = map.name;
862
-
863
- this._invokeAll(function (ext) {
628
+ if (map.name)
629
+ textureDef.name = map.name;
630
+ this._invokeAll(function(ext) {
864
631
  ext.writeTexture && ext.writeTexture(map, textureDef);
865
632
  });
866
-
867
633
  const index = json.textures.push(textureDef) - 1;
868
634
  cache.textures.set(map, index);
869
635
  return index;
870
636
  }
871
- /**
872
- * Process material
873
- * @param {THREE.Material} material Material to process
874
- * @return {Integer|null} Index of the processed material in the "materials" array
875
- */
876
-
877
-
878
637
  processMaterial(material) {
879
638
  const cache = this.cache;
880
639
  const json = this.json;
881
- if (cache.materials.has(material)) return cache.materials.get(material);
882
-
883
- if (material instanceof ShaderMaterial && material.isShaderMaterial) {
884
- console.warn('GLTFExporter: THREE.ShaderMaterial not supported.');
640
+ if (cache.materials.has(material))
641
+ return cache.materials.get(material);
642
+ if (material instanceof THREE.ShaderMaterial && material.isShaderMaterial) {
643
+ console.warn("GLTFExporter: THREE.ShaderMaterial not supported.");
885
644
  return null;
886
645
  }
887
-
888
- if (!json.materials) json.materials = []; // @QUESTION Should we avoid including any attribute that has the default value?
889
-
890
- const materialDef = {
891
- pbrMetallicRoughness: {}
892
- };
893
-
894
- if (!(material instanceof MeshStandardMaterial && material.isMeshStandardMaterial && material instanceof MeshBasicMaterial && // @ts-expect-error
895
- material.isMeshBasicMaterial)) {
896
- console.warn('GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.');
897
- }
898
-
899
- if (material instanceof MeshStandardMaterial || material instanceof MeshPhysicalMaterial) {
900
- // pbrMetallicRoughness.baseColorFactor
646
+ if (!json.materials)
647
+ json.materials = [];
648
+ const materialDef = { pbrMetallicRoughness: {} };
649
+ if (!(material instanceof THREE.MeshStandardMaterial && material.isMeshStandardMaterial && material instanceof THREE.MeshBasicMaterial && material.isMeshBasicMaterial)) {
650
+ console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");
651
+ }
652
+ if (material instanceof THREE.MeshStandardMaterial || material instanceof THREE.MeshPhysicalMaterial) {
901
653
  const color = material.color.toArray().concat([material.opacity]);
902
-
903
654
  if (!this.equalArray(color, [1, 1, 1, 1])) {
904
655
  materialDef.pbrMetallicRoughness.baseColorFactor = color;
905
656
  }
906
657
  }
907
-
908
- if (material instanceof MeshStandardMaterial && material.isMeshStandardMaterial) {
658
+ if (material instanceof THREE.MeshStandardMaterial && material.isMeshStandardMaterial) {
909
659
  materialDef.pbrMetallicRoughness.metallicFactor = material.metalness;
910
660
  materialDef.pbrMetallicRoughness.roughnessFactor = material.roughness;
911
661
  } else {
912
662
  materialDef.pbrMetallicRoughness.metallicFactor = 0.5;
913
663
  materialDef.pbrMetallicRoughness.roughnessFactor = 0.5;
914
- } // pbrMetallicRoughness.metallicRoughnessTexture
915
-
916
-
917
- if (material instanceof MeshStandardMaterial && material.metalnessMap || material instanceof MeshStandardMaterial && material.roughnessMap) {
664
+ }
665
+ if (material instanceof THREE.MeshStandardMaterial && material.metalnessMap || material instanceof THREE.MeshStandardMaterial && material.roughnessMap) {
918
666
  if (material.metalnessMap === material.roughnessMap && material.metalnessMap !== null) {
919
- const metalRoughMapDef = {
920
- index: this.processTexture(material.metalnessMap)
921
- };
667
+ const metalRoughMapDef = { index: this.processTexture(material.metalnessMap) };
922
668
  this.applyTextureTransform(metalRoughMapDef, material.metalnessMap);
923
669
  materialDef.pbrMetallicRoughness.metallicRoughnessTexture = metalRoughMapDef;
924
670
  } else {
925
- console.warn('THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.');
671
+ console.warn(
672
+ "THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture."
673
+ );
926
674
  }
927
- } // pbrMetallicRoughness.baseColorTexture or pbrSpecularGlossiness diffuseTexture
928
-
929
-
930
- if ((material instanceof MeshStandardMaterial || material instanceof MeshPhysicalMaterial) && material.map) {
931
- const baseColorMapDef = {
932
- index: this.processTexture(material.map)
933
- };
675
+ }
676
+ if ((material instanceof THREE.MeshStandardMaterial || material instanceof THREE.MeshPhysicalMaterial) && material.map) {
677
+ const baseColorMapDef = { index: this.processTexture(material.map) };
934
678
  this.applyTextureTransform(baseColorMapDef, material.map);
935
679
  materialDef.pbrMetallicRoughness.baseColorTexture = baseColorMapDef;
936
680
  }
937
-
938
- if ((material instanceof MeshStandardMaterial || material instanceof MeshPhysicalMaterial) && material.emissive) {
939
- // note: emissive components are limited to stay within the 0 - 1 range to accommodate glTF spec. see #21849 and #22000.
681
+ if ((material instanceof THREE.MeshStandardMaterial || material instanceof THREE.MeshPhysicalMaterial) && material.emissive) {
940
682
  const emissive = material.emissive.clone().multiplyScalar(material.emissiveIntensity);
941
683
  const maxEmissiveComponent = Math.max(emissive.r, emissive.g, emissive.b);
942
-
943
684
  if (maxEmissiveComponent > 1) {
944
685
  emissive.multiplyScalar(1 / maxEmissiveComponent);
945
- console.warn('THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited');
686
+ console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited");
946
687
  }
947
-
948
688
  if (maxEmissiveComponent > 0) {
949
689
  materialDef.emissiveFactor = emissive.toArray();
950
- } // emissiveTexture
951
-
952
-
690
+ }
953
691
  if (material.emissiveMap) {
954
- const emissiveMapDef = {
955
- index: this.processTexture(material.emissiveMap)
956
- };
692
+ const emissiveMapDef = { index: this.processTexture(material.emissiveMap) };
957
693
  this.applyTextureTransform(emissiveMapDef, material.emissiveMap);
958
694
  materialDef.emissiveTexture = emissiveMapDef;
959
695
  }
960
- } // normalTexture
961
-
962
-
963
- if ((material instanceof MeshMatcapMaterial || material instanceof MeshNormalMaterial || material instanceof MeshPhongMaterial || material instanceof MeshStandardMaterial || material instanceof MeshToonMaterial) && material.normalMap) {
964
- const normalMapDef = {
965
- index: this.processTexture(material.normalMap)
966
- };
967
-
696
+ }
697
+ if ((material instanceof THREE.MeshMatcapMaterial || material instanceof THREE.MeshNormalMaterial || material instanceof THREE.MeshPhongMaterial || material instanceof THREE.MeshStandardMaterial || material instanceof THREE.MeshToonMaterial) && material.normalMap) {
698
+ const normalMapDef = { index: this.processTexture(material.normalMap) };
968
699
  if (material.normalScale && material.normalScale.x !== 1) {
969
- // glTF normal scale is univariate. Ignore `y`, which may be flipped.
970
- // Context: https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995
971
700
  normalMapDef.scale = material.normalScale.x;
972
701
  }
973
-
974
702
  this.applyTextureTransform(normalMapDef, material.normalMap);
975
703
  materialDef.normalTexture = normalMapDef;
976
- } // occlusionTexture
977
-
978
-
979
- if ((material instanceof MeshBasicMaterial || material instanceof MeshLambertMaterial || material instanceof MeshPhongMaterial || material instanceof MeshStandardMaterial || material instanceof MeshToonMaterial) && material.aoMap) {
704
+ }
705
+ if ((material instanceof THREE.MeshBasicMaterial || material instanceof THREE.MeshLambertMaterial || material instanceof THREE.MeshPhongMaterial || material instanceof THREE.MeshStandardMaterial || material instanceof THREE.MeshToonMaterial) && material.aoMap) {
980
706
  const occlusionMapDef = {
981
707
  index: this.processTexture(material.aoMap),
982
708
  texCoord: 1
983
709
  };
984
-
985
- if (material.aoMapIntensity !== 1.0) {
710
+ if (material.aoMapIntensity !== 1) {
986
711
  occlusionMapDef.strength = material.aoMapIntensity;
987
712
  }
988
-
989
713
  this.applyTextureTransform(occlusionMapDef, material.aoMap);
990
714
  materialDef.occlusionTexture = occlusionMapDef;
991
- } // alphaMode
992
-
993
-
715
+ }
994
716
  if (material.transparent) {
995
- materialDef.alphaMode = 'BLEND';
717
+ materialDef.alphaMode = "BLEND";
996
718
  } else {
997
- if (material.alphaTest > 0.0) {
998
- materialDef.alphaMode = 'MASK';
719
+ if (material.alphaTest > 0) {
720
+ materialDef.alphaMode = "MASK";
999
721
  materialDef.alphaCutoff = material.alphaTest;
1000
722
  }
1001
- } // doubleSided
1002
-
1003
-
1004
- if (material.side === DoubleSide) materialDef.doubleSided = true;
1005
- if (material.name !== '') materialDef.name = material.name;
723
+ }
724
+ if (material.side === THREE.DoubleSide)
725
+ materialDef.doubleSided = true;
726
+ if (material.name !== "")
727
+ materialDef.name = material.name;
1006
728
  this.serializeUserData(material, materialDef);
1007
-
1008
- this._invokeAll(function (ext) {
729
+ this._invokeAll(function(ext) {
1009
730
  ext.writeMaterial && ext.writeMaterial(material, materialDef);
1010
731
  });
1011
-
1012
732
  const index = json.materials.push(materialDef) - 1;
1013
733
  cache.materials.set(material, index);
1014
734
  return index;
1015
735
  }
1016
- /**
1017
- * Process mesh
1018
- * @param {THREE.Mesh} mesh Mesh to process
1019
- * @return {Integer|null} Index of the processed mesh in the "meshes" array
1020
- */
1021
-
1022
-
1023
736
  processMesh(mesh) {
1024
737
  const cache = this.cache;
1025
738
  const json = this.json;
1026
739
  const meshCacheKeyParts = [mesh.geometry.uuid];
1027
-
1028
740
  if (Array.isArray(mesh.material)) {
1029
741
  for (let i = 0, l = mesh.material.length; i < l; i++) {
1030
742
  meshCacheKeyParts.push(mesh.material[i].uuid);
@@ -1032,325 +744,245 @@ class GLTFWriter {
1032
744
  } else {
1033
745
  meshCacheKeyParts.push(mesh.material.uuid);
1034
746
  }
1035
-
1036
- const meshCacheKey = meshCacheKeyParts.join(':');
1037
- if (cache.meshes.has(meshCacheKey)) return cache.meshes.get(meshCacheKey);
747
+ const meshCacheKey = meshCacheKeyParts.join(":");
748
+ if (cache.meshes.has(meshCacheKey))
749
+ return cache.meshes.get(meshCacheKey);
1038
750
  const geometry = mesh.geometry;
1039
- let mode; // Use the correct mode
1040
-
1041
- if (mesh instanceof LineSegments && mesh.isLineSegments) {
751
+ let mode;
752
+ if (mesh instanceof THREE.LineSegments && mesh.isLineSegments) {
1042
753
  mode = WEBGL_CONSTANTS.LINES;
1043
- } else if (mesh instanceof LineLoop && mesh.isLineLoop) {
754
+ } else if (mesh instanceof THREE.LineLoop && mesh.isLineLoop) {
1044
755
  mode = WEBGL_CONSTANTS.LINE_LOOP;
1045
- } else if (mesh instanceof Line && mesh.isLine) {
756
+ } else if (mesh instanceof THREE.Line && mesh.isLine) {
1046
757
  mode = WEBGL_CONSTANTS.LINE_STRIP;
1047
- } else if (mesh instanceof Points && mesh.isPoints) {
758
+ } else if (mesh instanceof THREE.Points && mesh.isPoints) {
1048
759
  mode = WEBGL_CONSTANTS.POINTS;
1049
760
  } else {
1050
- mode = (mesh.material instanceof MeshBasicMaterial || mesh.material instanceof MeshDepthMaterial || mesh.material instanceof MeshLambertMaterial || mesh.material instanceof MeshNormalMaterial || mesh.material instanceof MeshPhongMaterial || mesh.material instanceof MeshStandardMaterial || mesh.material instanceof MeshToonMaterial || mesh.material instanceof ShaderMaterial) && mesh.material.wireframe ? WEBGL_CONSTANTS.LINES : WEBGL_CONSTANTS.TRIANGLES;
761
+ mode = (mesh.material instanceof THREE.MeshBasicMaterial || mesh.material instanceof THREE.MeshDepthMaterial || mesh.material instanceof THREE.MeshLambertMaterial || mesh.material instanceof THREE.MeshNormalMaterial || mesh.material instanceof THREE.MeshPhongMaterial || mesh.material instanceof THREE.MeshStandardMaterial || mesh.material instanceof THREE.MeshToonMaterial || mesh.material instanceof THREE.ShaderMaterial) && mesh.material.wireframe ? WEBGL_CONSTANTS.LINES : WEBGL_CONSTANTS.TRIANGLES;
1051
762
  }
1052
-
1053
763
  if (!geometry.isBufferGeometry) {
1054
- throw new Error('THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.');
764
+ throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");
1055
765
  }
1056
-
1057
766
  const meshDef = {};
1058
767
  const attributes = {};
1059
768
  const primitives = [];
1060
- const targets = []; // Conversion between attributes names in threejs and gltf spec
1061
-
769
+ const targets = [];
1062
770
  const nameConversion = {
1063
- uv: 'TEXCOORD_0',
1064
- uv2: 'TEXCOORD_1',
1065
- color: 'COLOR_0',
1066
- skinWeight: 'WEIGHTS_0',
1067
- skinIndex: 'JOINTS_0'
771
+ uv: "TEXCOORD_0",
772
+ uv2: "TEXCOORD_1",
773
+ color: "COLOR_0",
774
+ skinWeight: "WEIGHTS_0",
775
+ skinIndex: "JOINTS_0"
1068
776
  };
1069
- const originalNormal = geometry.getAttribute('normal');
1070
-
1071
- if (originalNormal !== undefined && !(originalNormal instanceof InterleavedBufferAttribute) && !this.isNormalizedNormalAttribute(originalNormal)) {
1072
- console.warn('THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one.');
1073
- geometry.setAttribute('normal', this.createNormalizedNormalAttribute(originalNormal));
1074
- } // @QUESTION Detect if .vertexColors = true?
1075
- // For every attribute create an accessor
1076
-
1077
-
777
+ const originalNormal = geometry.getAttribute("normal");
778
+ if (originalNormal !== void 0 && !(originalNormal instanceof THREE.InterleavedBufferAttribute) && !this.isNormalizedNormalAttribute(originalNormal)) {
779
+ console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one.");
780
+ geometry.setAttribute("normal", this.createNormalizedNormalAttribute(originalNormal));
781
+ }
1078
782
  let modifiedAttribute = null;
1079
-
1080
783
  for (let attributeName in geometry.attributes) {
1081
- // Ignore morph target attributes, which are exported later.
1082
- if (attributeName.substr(0, 5) === 'morph') continue;
784
+ if (attributeName.substr(0, 5) === "morph")
785
+ continue;
1083
786
  const attribute = geometry.attributes[attributeName];
1084
- attributeName = nameConversion[attributeName] || attributeName.toUpperCase(); // Prefix all geometry attributes except the ones specifically
1085
- // listed in the spec; non-spec attributes are considered custom.
1086
-
787
+ attributeName = nameConversion[attributeName] || attributeName.toUpperCase();
1087
788
  const validVertexAttributes = /^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;
1088
- if (!validVertexAttributes.test(attributeName)) attributeName = '_' + attributeName;
1089
-
789
+ if (!validVertexAttributes.test(attributeName))
790
+ attributeName = "_" + attributeName;
1090
791
  if (cache.attributes.has(this.getUID(attribute))) {
1091
792
  attributes[attributeName] = cache.attributes.get(this.getUID(attribute));
1092
793
  continue;
1093
- } // JOINTS_0 must be UNSIGNED_BYTE or UNSIGNED_SHORT.
1094
-
1095
-
794
+ }
1096
795
  modifiedAttribute = null;
1097
796
  const array = attribute.array;
1098
-
1099
- if (attributeName === 'JOINTS_0' && !(array instanceof Uint16Array) && !(array instanceof Uint8Array)) {
797
+ if (attributeName === "JOINTS_0" && !(array instanceof Uint16Array) && !(array instanceof Uint8Array)) {
1100
798
  console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.');
1101
- modifiedAttribute = new BufferAttribute(new Uint16Array(array), attribute.itemSize, attribute.normalized);
799
+ modifiedAttribute = new THREE.BufferAttribute(new Uint16Array(array), attribute.itemSize, attribute.normalized);
1102
800
  }
1103
-
1104
801
  const accessor = modifiedAttribute !== null && this.processAccessor(modifiedAttribute || attribute, geometry);
1105
-
1106
802
  if (accessor) {
1107
803
  attributes[attributeName] = accessor;
1108
804
  cache.attributes.set(this.getUID(attribute), accessor);
1109
805
  }
1110
806
  }
1111
-
1112
- if (originalNormal !== undefined) geometry.setAttribute('normal', originalNormal); // Skip if no exportable attributes found
1113
-
1114
- if (Object.keys(attributes).length === 0) return null; // Morph targets
1115
-
1116
- if (mesh.morphTargetInfluences !== undefined && mesh.morphTargetInfluences.length > 0) {
807
+ if (originalNormal !== void 0)
808
+ geometry.setAttribute("normal", originalNormal);
809
+ if (Object.keys(attributes).length === 0)
810
+ return null;
811
+ if (mesh.morphTargetInfluences !== void 0 && mesh.morphTargetInfluences.length > 0) {
1117
812
  const weights = [];
1118
813
  const targetNames = [];
1119
814
  const reverseDictionary = {};
1120
-
1121
- if (mesh.morphTargetDictionary !== undefined) {
815
+ if (mesh.morphTargetDictionary !== void 0) {
1122
816
  for (const key in mesh.morphTargetDictionary) {
1123
817
  reverseDictionary[mesh.morphTargetDictionary[key]] = key;
1124
818
  }
1125
819
  }
1126
-
1127
820
  for (let i = 0; i < mesh.morphTargetInfluences.length; ++i) {
1128
821
  const target = {};
1129
822
  let warned = false;
1130
-
1131
823
  for (const attributeName in geometry.morphAttributes) {
1132
- // glTF 2.0 morph supports only POSITION/NORMAL/TANGENT.
1133
- // Three.js doesn't support TANGENT yet.
1134
- if (attributeName !== 'position' && attributeName !== 'normal') {
824
+ if (attributeName !== "position" && attributeName !== "normal") {
1135
825
  if (!warned) {
1136
- console.warn('GLTFExporter: Only POSITION and NORMAL morph are supported.');
826
+ console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported.");
1137
827
  warned = true;
1138
828
  }
1139
-
1140
829
  continue;
1141
830
  }
1142
-
1143
831
  const attribute = geometry.morphAttributes[attributeName][i];
1144
- const gltfAttributeName = attributeName.toUpperCase(); // Three.js morph attribute has absolute values while the one of glTF has relative values.
1145
- //
1146
- // glTF 2.0 Specification:
1147
- // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#morph-targets
1148
-
832
+ const gltfAttributeName = attributeName.toUpperCase();
1149
833
  const baseAttribute = geometry.attributes[attributeName];
1150
-
1151
834
  if (cache.attributes.has(this.getUID(attribute))) {
1152
835
  target[gltfAttributeName] = cache.attributes.get(this.getUID(attribute));
1153
836
  continue;
1154
- } // Clones attribute not to override
1155
-
1156
-
837
+ }
1157
838
  const relativeAttribute = attribute.clone();
1158
-
1159
839
  if (!geometry.morphTargetsRelative) {
1160
840
  for (let j = 0, jl = attribute.count; j < jl; j++) {
1161
- relativeAttribute.setXYZ(j, attribute.getX(j) - baseAttribute.getX(j), attribute.getY(j) - baseAttribute.getY(j), attribute.getZ(j) - baseAttribute.getZ(j));
841
+ relativeAttribute.setXYZ(
842
+ j,
843
+ attribute.getX(j) - baseAttribute.getX(j),
844
+ attribute.getY(j) - baseAttribute.getY(j),
845
+ attribute.getZ(j) - baseAttribute.getZ(j)
846
+ );
1162
847
  }
1163
848
  }
1164
-
1165
849
  const accessor = this.processAccessor(relativeAttribute, geometry);
1166
-
1167
- if (accessor != undefined) {
850
+ if (accessor != void 0) {
1168
851
  target[gltfAttributeName] = accessor;
1169
852
  }
1170
-
1171
853
  cache.attributes.set(this.getUID(baseAttribute), target[gltfAttributeName]);
1172
854
  }
1173
-
1174
855
  targets.push(target);
1175
856
  weights.push(mesh.morphTargetInfluences[i]);
1176
- if (mesh.morphTargetDictionary !== undefined) targetNames.push(reverseDictionary[i]);
857
+ if (mesh.morphTargetDictionary !== void 0)
858
+ targetNames.push(reverseDictionary[i]);
1177
859
  }
1178
-
1179
860
  meshDef.weights = weights;
1180
-
1181
861
  if (targetNames.length > 0) {
1182
862
  meshDef.extras = {};
1183
863
  meshDef.extras.targetNames = targetNames;
1184
864
  }
1185
865
  }
1186
-
1187
866
  const isMultiMaterial = Array.isArray(mesh.material);
1188
- if (isMultiMaterial && geometry.groups.length === 0) return null;
867
+ if (isMultiMaterial && geometry.groups.length === 0)
868
+ return null;
1189
869
  const materials = isMultiMaterial ? mesh.material : [mesh.material];
1190
- const groups = isMultiMaterial ? geometry.groups : [{
1191
- materialIndex: 0,
1192
- start: undefined,
1193
- count: undefined
1194
- }];
1195
-
870
+ const groups = isMultiMaterial ? geometry.groups : [{ materialIndex: 0, start: void 0, count: void 0 }];
1196
871
  for (let i = 0, il = groups.length; i < il; i++) {
1197
872
  const primitive = {
1198
- mode: mode,
1199
- attributes: attributes
873
+ mode,
874
+ attributes
1200
875
  };
1201
-
1202
- if (geometry instanceof Object3D || geometry instanceof Material) {
876
+ if (geometry instanceof THREE.Object3D || geometry instanceof THREE.Material) {
1203
877
  this.serializeUserData(geometry, primitive);
1204
878
  }
1205
-
1206
- if (targets.length > 0) primitive.targets = targets;
1207
-
879
+ if (targets.length > 0)
880
+ primitive.targets = targets;
1208
881
  if (geometry.index !== null) {
1209
882
  let cacheKey = this.getUID(geometry.index);
1210
-
1211
- if (groups[i].start !== undefined || groups[i].count !== undefined) {
1212
- // @ts-expect-error
883
+ if (groups[i].start !== void 0 || groups[i].count !== void 0) {
1213
884
  cacheKey += `:${groups[i].start}:${groups[i].count}`;
1214
885
  }
1215
-
1216
886
  if (cache.attributes.has(cacheKey)) {
1217
887
  primitive.indices = cache.attributes.get(cacheKey);
1218
888
  } else {
1219
889
  primitive.indices = this.processAccessor(geometry.index, geometry, groups[i].start, groups[i].count);
1220
890
  cache.attributes.set(cacheKey, primitive.indices);
1221
891
  }
1222
-
1223
- if (primitive.indices === null) delete primitive.indices;
892
+ if (primitive.indices === null)
893
+ delete primitive.indices;
1224
894
  }
1225
-
1226
895
  const materialIndex = groups[i].materialIndex;
1227
-
1228
- if (materialIndex !== undefined && Array.isArray(materials)) {
896
+ if (materialIndex !== void 0 && Array.isArray(materials)) {
1229
897
  const targetMaterials = materials[materialIndex];
1230
-
1231
898
  if (!Array.isArray(targetMaterials)) {
1232
899
  const material = this.processMaterial(targetMaterials);
1233
- if (material !== null) primitive.material = material;
900
+ if (material !== null)
901
+ primitive.material = material;
1234
902
  primitives.push(primitive);
1235
903
  }
1236
904
  }
1237
905
  }
1238
-
1239
906
  meshDef.primitives = primitives;
1240
- if (!json.meshes) json.meshes = [];
1241
-
1242
- this._invokeAll(function (ext) {
907
+ if (!json.meshes)
908
+ json.meshes = [];
909
+ this._invokeAll(function(ext) {
1243
910
  ext.writeMesh && ext.writeMesh(mesh, meshDef);
1244
911
  });
1245
-
1246
912
  const index = json.meshes.push(meshDef) - 1;
1247
913
  cache.meshes.set(meshCacheKey, index);
1248
914
  return index;
1249
915
  }
1250
- /**
1251
- * Process camera
1252
- * @param {THREE.Camera} camera Camera to process
1253
- * @return {Integer} Index of the processed mesh in the "camera" array
1254
- */
1255
-
1256
-
1257
916
  processCamera(camera) {
1258
917
  const json = this.json;
1259
- if (!json.cameras) json.cameras = [];
1260
- const isOrtho = camera instanceof OrthographicCamera && camera.isOrthographicCamera;
918
+ if (!json.cameras)
919
+ json.cameras = [];
920
+ const isOrtho = camera instanceof THREE.OrthographicCamera && camera.isOrthographicCamera;
1261
921
  const cameraDef = {
1262
- type: isOrtho ? 'orthographic' : 'perspective'
922
+ type: isOrtho ? "orthographic" : "perspective"
1263
923
  };
1264
-
1265
- if (camera instanceof OrthographicCamera && isOrtho) {
924
+ if (camera instanceof THREE.OrthographicCamera && isOrtho) {
1266
925
  cameraDef.orthographic = {
1267
926
  xmag: camera.right * 2,
1268
927
  ymag: camera.top * 2,
1269
- zfar: camera.far <= 0 ? 0.001 : camera.far,
928
+ zfar: camera.far <= 0 ? 1e-3 : camera.far,
1270
929
  znear: camera.near < 0 ? 0 : camera.near
1271
930
  };
1272
- } else if (camera instanceof PerspectiveCamera) {
931
+ } else if (camera instanceof THREE.PerspectiveCamera) {
1273
932
  cameraDef.perspective = {
1274
933
  aspectRatio: camera.aspect,
1275
- yfov: MathUtils.degToRad(camera.fov),
1276
- zfar: camera.far <= 0 ? 0.001 : camera.far,
934
+ yfov: THREE.MathUtils.degToRad(camera.fov),
935
+ zfar: camera.far <= 0 ? 1e-3 : camera.far,
1277
936
  znear: camera.near < 0 ? 0 : camera.near
1278
937
  };
1279
- } // Question: Is saving "type" as name intentional?
1280
-
1281
-
1282
- if (camera.name !== '') cameraDef.name = camera.type;
938
+ }
939
+ if (camera.name !== "")
940
+ cameraDef.name = camera.type;
1283
941
  return json.cameras.push(cameraDef) - 1;
1284
942
  }
1285
- /**
1286
- * Creates glTF animation entry from AnimationClip object.
1287
- *
1288
- * Status:
1289
- * - Only properties listed in PATH_PROPERTIES may be animated.
1290
- *
1291
- * @param {THREE.AnimationClip} clip
1292
- * @param {THREE.Object3D} root
1293
- * @return {number|null}
1294
- */
1295
-
1296
-
1297
943
  processAnimation(clip, root) {
1298
944
  const json = this.json;
1299
945
  const nodeMap = this.nodeMap;
1300
- if (!json.animations) json.animations = [];
946
+ if (!json.animations)
947
+ json.animations = [];
1301
948
  clip = GLTFExporter.Utils.mergeMorphTargetTracks(clip.clone(), root);
1302
949
  const tracks = clip.tracks;
1303
950
  const channels = [];
1304
951
  const samplers = [];
1305
-
1306
952
  for (let i = 0; i < tracks.length; ++i) {
1307
953
  const track = tracks[i];
1308
- const trackBinding = PropertyBinding.parseTrackName(track.name);
1309
- let trackNode = PropertyBinding.findNode(root, trackBinding.nodeName);
954
+ const trackBinding = THREE.PropertyBinding.parseTrackName(track.name);
955
+ let trackNode = THREE.PropertyBinding.findNode(root, trackBinding.nodeName);
1310
956
  const trackProperty = PATH_PROPERTIES[trackBinding.propertyName];
1311
-
1312
- if (trackBinding.objectName === 'bones') {
957
+ if (trackBinding.objectName === "bones") {
1313
958
  if (trackNode.isSkinnedMesh) {
1314
959
  trackNode = trackNode.skeleton.getBoneByName(trackBinding.objectIndex);
1315
960
  } else {
1316
- trackNode = undefined;
961
+ trackNode = void 0;
1317
962
  }
1318
963
  }
1319
-
1320
964
  if (!trackNode || !trackProperty) {
1321
965
  console.warn('THREE.GLTFExporter: Could not export animation track "%s".', track.name);
1322
966
  return null;
1323
967
  }
1324
-
1325
968
  const inputItemSize = 1;
1326
969
  let outputItemSize = track.values.length / track.times.length;
1327
-
1328
970
  if (trackProperty === PATH_PROPERTIES.morphTargetInfluences) {
1329
971
  outputItemSize /= trackNode.morphTargetInfluences.length;
1330
972
  }
1331
-
1332
- let interpolation; // @TODO export CubicInterpolant(InterpolateSmooth) as CUBICSPLINE
1333
- // Detecting glTF cubic spline interpolant by checking factory method's special property
1334
- // GLTFCubicSplineInterpolant is a custom interpolant and track doesn't return
1335
- // valid value from .getInterpolation().
1336
- // @ts-expect-error
1337
-
973
+ let interpolation;
1338
974
  if (track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {
1339
- interpolation = 'CUBICSPLINE'; // itemSize of CUBICSPLINE keyframe is 9
1340
- // (VEC3 * 3: inTangent, splineVertex, and outTangent)
1341
- // but needs to be stored as VEC3 so dividing by 3 here.
1342
-
975
+ interpolation = "CUBICSPLINE";
1343
976
  outputItemSize /= 3;
1344
- } else if (track.getInterpolation() === InterpolateDiscrete) {
1345
- interpolation = 'STEP';
977
+ } else if (track.getInterpolation() === THREE.InterpolateDiscrete) {
978
+ interpolation = "STEP";
1346
979
  } else {
1347
- interpolation = 'LINEAR';
980
+ interpolation = "LINEAR";
1348
981
  }
1349
-
1350
982
  samplers.push({
1351
- input: this.processAccessor(new BufferAttribute(track.times, inputItemSize)),
1352
- output: this.processAccessor(new BufferAttribute(track.values, outputItemSize)),
1353
- interpolation: interpolation
983
+ input: this.processAccessor(new THREE.BufferAttribute(track.times, inputItemSize)),
984
+ output: this.processAccessor(new THREE.BufferAttribute(track.values, outputItemSize)),
985
+ interpolation
1354
986
  });
1355
987
  channels.push({
1356
988
  sampler: samplers.length - 1,
@@ -1360,44 +992,37 @@ class GLTFWriter {
1360
992
  }
1361
993
  });
1362
994
  }
1363
-
1364
995
  json.animations.push({
1365
- name: clip.name || 'clip_' + json.animations.length,
1366
- samplers: samplers,
1367
- channels: channels
996
+ name: clip.name || "clip_" + json.animations.length,
997
+ samplers,
998
+ channels
1368
999
  });
1369
1000
  return json.animations.length - 1;
1370
1001
  }
1371
- /**
1372
- * @param {THREE.Object3D} object
1373
- * @return {number|null}
1374
- */
1375
-
1376
-
1377
1002
  processSkin(object) {
1378
1003
  const json = this.json;
1379
1004
  const nodeMap = this.nodeMap;
1380
-
1381
- if (json.nodes !== undefined && object instanceof SkinnedMesh) {
1005
+ if (json.nodes !== void 0 && object instanceof THREE.SkinnedMesh) {
1382
1006
  const node = json.nodes[nodeMap.get(object)];
1383
1007
  const skeleton = object.skeleton;
1384
- if (skeleton === undefined) return null;
1008
+ if (skeleton === void 0)
1009
+ return null;
1385
1010
  const rootJoint = object.skeleton.bones[0];
1386
- if (rootJoint === undefined) return null;
1011
+ if (rootJoint === void 0)
1012
+ return null;
1387
1013
  const joints = [];
1388
1014
  const inverseBindMatrices = new Float32Array(skeleton.bones.length * 16);
1389
- const temporaryBoneInverse = new Matrix4();
1390
-
1015
+ const temporaryBoneInverse = new THREE.Matrix4();
1391
1016
  for (let i = 0; i < skeleton.bones.length; ++i) {
1392
1017
  joints.push(nodeMap.get(skeleton.bones[i]));
1393
1018
  temporaryBoneInverse.copy(skeleton.boneInverses[i]);
1394
1019
  temporaryBoneInverse.multiply(object.bindMatrix).toArray(inverseBindMatrices, i * 16);
1395
1020
  }
1396
-
1397
- if (json.skins === undefined) json.skins = [];
1021
+ if (json.skins === void 0)
1022
+ json.skins = [];
1398
1023
  json.skins.push({
1399
- inverseBindMatrices: this.processAccessor(new BufferAttribute(inverseBindMatrices, 16)),
1400
- joints: joints,
1024
+ inverseBindMatrices: this.processAccessor(new THREE.BufferAttribute(inverseBindMatrices, 16)),
1025
+ joints,
1401
1026
  skeleton: nodeMap.get(rootJoint)
1402
1027
  });
1403
1028
  const skinIndex = node.skin = json.skins.length - 1;
@@ -1406,33 +1031,23 @@ class GLTFWriter {
1406
1031
  return null;
1407
1032
  }
1408
1033
  }
1409
- /**
1410
- * Process Object3D node
1411
- * @param {THREE.Object3D} node Object3D to processNode
1412
- * @return {Integer} Index of the node in the nodes list
1413
- */
1414
-
1415
-
1416
1034
  processNode(object) {
1417
1035
  const json = this.json;
1418
1036
  const options = this.options;
1419
1037
  const nodeMap = this.nodeMap;
1420
- if (!json.nodes) json.nodes = [];
1038
+ if (!json.nodes)
1039
+ json.nodes = [];
1421
1040
  const nodeDef = {};
1422
-
1423
1041
  if (options.trs) {
1424
1042
  const rotation = object.quaternion.toArray();
1425
1043
  const position = object.position.toArray();
1426
1044
  const scale = object.scale.toArray();
1427
-
1428
1045
  if (!this.equalArray(rotation, [0, 0, 0, 1])) {
1429
1046
  nodeDef.rotation = rotation;
1430
1047
  }
1431
-
1432
1048
  if (!this.equalArray(position, [0, 0, 0])) {
1433
1049
  nodeDef.translation = position;
1434
1050
  }
1435
-
1436
1051
  if (!this.equalArray(scale, [1, 1, 1])) {
1437
1052
  nodeDef.scale = scale;
1438
1053
  }
@@ -1440,477 +1055,315 @@ class GLTFWriter {
1440
1055
  if (object.matrixAutoUpdate) {
1441
1056
  object.updateMatrix();
1442
1057
  }
1443
-
1444
1058
  if (!this.isIdentityMatrix(object.matrix)) {
1445
1059
  nodeDef.matrix = object.matrix.elements;
1446
1060
  }
1447
- } // We don't export empty strings name because it represents no-name in Three.js.
1448
-
1449
-
1450
- if (object.name !== '') nodeDef.name = String(object.name);
1061
+ }
1062
+ if (object.name !== "")
1063
+ nodeDef.name = String(object.name);
1451
1064
  this.serializeUserData(object, nodeDef);
1452
-
1453
- if ((object instanceof Mesh && object.isMesh || object instanceof Line && object.isLine || object instanceof Points && object.isPoints) && object instanceof Mesh) {
1065
+ if ((object instanceof THREE.Mesh && object.isMesh || object instanceof THREE.Line && object.isLine || object instanceof THREE.Points && object.isPoints) && object instanceof THREE.Mesh) {
1454
1066
  const meshIndex = this.processMesh(object);
1455
- if (meshIndex !== null) nodeDef.mesh = meshIndex;
1456
- } else if (object instanceof Camera && object.isCamera) {
1067
+ if (meshIndex !== null)
1068
+ nodeDef.mesh = meshIndex;
1069
+ } else if (object instanceof THREE.Camera && object.isCamera) {
1457
1070
  nodeDef.camera = this.processCamera(object);
1458
1071
  }
1459
-
1460
- if (object instanceof SkinnedMesh && object.isSkinnedMesh) this.skins.push(object);
1461
-
1072
+ if (object instanceof THREE.SkinnedMesh && object.isSkinnedMesh)
1073
+ this.skins.push(object);
1462
1074
  if (object.children.length > 0) {
1463
1075
  const children = [];
1464
-
1465
1076
  for (let i = 0, l = object.children.length; i < l; i++) {
1466
1077
  const child = object.children[i];
1467
-
1468
1078
  if (child.visible || !options.onlyVisible) {
1469
- const nodeIndex = this.processNode(child);
1470
- if (nodeIndex !== null) children.push(nodeIndex);
1079
+ const nodeIndex2 = this.processNode(child);
1080
+ if (nodeIndex2 !== null)
1081
+ children.push(nodeIndex2);
1471
1082
  }
1472
1083
  }
1473
-
1474
- if (children.length > 0) nodeDef.children = children;
1084
+ if (children.length > 0)
1085
+ nodeDef.children = children;
1475
1086
  }
1476
-
1477
- this._invokeAll(function (ext) {
1087
+ this._invokeAll(function(ext) {
1478
1088
  ext.writeNode && ext.writeNode(object, nodeDef);
1479
1089
  });
1480
-
1481
1090
  const nodeIndex = json.nodes.push(nodeDef) - 1;
1482
1091
  nodeMap.set(object, nodeIndex);
1483
1092
  return nodeIndex;
1484
1093
  }
1485
- /**
1486
- * Process Scene
1487
- * @param {Scene} node Scene to process
1488
- */
1489
-
1490
-
1491
1094
  processScene(scene) {
1492
1095
  const json = this.json;
1493
1096
  const options = this.options;
1494
-
1495
1097
  if (!json.scenes) {
1496
1098
  json.scenes = [];
1497
1099
  json.scene = 0;
1498
1100
  }
1499
-
1500
1101
  const sceneDef = {};
1501
- if (scene.name !== '') sceneDef.name = scene.name;
1102
+ if (scene.name !== "")
1103
+ sceneDef.name = scene.name;
1502
1104
  json.scenes.push(sceneDef);
1503
1105
  const nodes = [];
1504
-
1505
1106
  for (let i = 0, l = scene.children.length; i < l; i++) {
1506
1107
  const child = scene.children[i];
1507
-
1508
1108
  if (child.visible || !options.onlyVisible) {
1509
1109
  const nodeIndex = this.processNode(child);
1510
- if (nodeIndex !== null) nodes.push(nodeIndex);
1110
+ if (nodeIndex !== null)
1111
+ nodes.push(nodeIndex);
1511
1112
  }
1512
1113
  }
1513
-
1514
- if (nodes.length > 0) sceneDef.nodes = nodes;
1114
+ if (nodes.length > 0)
1115
+ sceneDef.nodes = nodes;
1515
1116
  this.serializeUserData(scene, sceneDef);
1516
1117
  }
1517
-
1518
1118
  processObjects(objects) {
1519
- const scene = new Scene();
1520
- scene.name = 'AuxScene';
1521
-
1119
+ const scene = new THREE.Scene();
1120
+ scene.name = "AuxScene";
1522
1121
  for (let i = 0; i < objects.length; i++) {
1523
- // We push directly to children instead of calling `add` to prevent
1524
- // modify the .parent and break its original scene and hierarchy
1525
1122
  scene.children.push(objects[i]);
1526
1123
  }
1527
-
1528
1124
  this.processScene(scene);
1529
1125
  }
1530
- /**
1531
- * @param {THREE.Object3D|Array<THREE.Object3D>} input
1532
- */
1533
-
1534
-
1535
1126
  processInput(input) {
1536
1127
  const options = this.options;
1537
1128
  input = input instanceof Array ? input : [input];
1538
-
1539
- this._invokeAll(function (ext) {
1129
+ this._invokeAll(function(ext) {
1540
1130
  ext.beforeParse && ext.beforeParse(input);
1541
1131
  });
1542
-
1543
1132
  const objectsWithoutScene = [];
1544
-
1545
1133
  for (let i = 0; i < input.length; i++) {
1546
1134
  const inputScene = input[i];
1547
-
1548
- if (inputScene instanceof Scene) {
1135
+ if (inputScene instanceof THREE.Scene) {
1549
1136
  this.processScene(inputScene);
1550
1137
  } else {
1551
1138
  objectsWithoutScene.push(input[i]);
1552
1139
  }
1553
1140
  }
1554
-
1555
- if (objectsWithoutScene.length > 0) this.processObjects(objectsWithoutScene);
1556
-
1141
+ if (objectsWithoutScene.length > 0)
1142
+ this.processObjects(objectsWithoutScene);
1557
1143
  for (let i = 0; i < this.skins.length; ++i) {
1558
1144
  this.processSkin(this.skins[i]);
1559
1145
  }
1560
-
1561
- for (let i = 0; options.animations !== undefined && i < options.animations.length; ++i) {
1146
+ for (let i = 0; options.animations !== void 0 && i < options.animations.length; ++i) {
1562
1147
  this.processAnimation(options.animations[i], input[0]);
1563
1148
  }
1564
-
1565
- this._invokeAll(function (ext) {
1149
+ this._invokeAll(function(ext) {
1566
1150
  ext.afterParse && ext.afterParse(input);
1567
1151
  });
1568
1152
  }
1569
-
1570
1153
  _invokeAll(func) {
1571
1154
  for (let i = 0, il = this.plugins.length; i < il; i++) {
1572
1155
  func(this.plugins[i]);
1573
1156
  }
1574
- } //------------------------------------------------------------------------------
1575
- // Utility functions
1576
- //------------------------------------------------------------------------------
1577
-
1578
- /**
1579
- * Compare two arrays
1580
- * @param {Array} array1 Array 1 to compare
1581
- * @param {Array} array2 Array 2 to compare
1582
- * @return {Boolean} Returns true if both arrays are equal
1583
- */
1584
-
1585
-
1157
+ }
1586
1158
  equalArray(array1, array2) {
1587
- return array1.length === array2.length && array1.every(function (element, index) {
1159
+ return array1.length === array2.length && array1.every(function(element, index) {
1588
1160
  return element === array2[index];
1589
1161
  });
1590
1162
  }
1591
- /**
1592
- * Converts a string to an ArrayBuffer.
1593
- * @param {string} text
1594
- * @return {ArrayBuffer}
1595
- */
1596
-
1597
-
1598
1163
  stringToArrayBuffer(text) {
1599
- if (window.TextEncoder !== undefined) {
1164
+ if (window.TextEncoder !== void 0) {
1600
1165
  return new TextEncoder().encode(text).buffer;
1601
1166
  }
1602
-
1603
1167
  const array = new Uint8Array(new ArrayBuffer(text.length));
1604
-
1605
1168
  for (let i = 0, il = text.length; i < il; i++) {
1606
- const value = text.charCodeAt(i); // Replacing multi-byte character with space(0x20).
1607
-
1608
- array[i] = value > 0xff ? 0x20 : value;
1169
+ const value = text.charCodeAt(i);
1170
+ array[i] = value > 255 ? 32 : value;
1609
1171
  }
1610
-
1611
1172
  return array.buffer;
1612
1173
  }
1613
-
1614
1174
  isIdentityMatrix(matrix) {
1615
1175
  return this.equalArray(matrix.elements, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
1616
1176
  }
1617
-
1618
1177
  getMinMax(attribute, start, count) {
1619
1178
  const output = {
1620
1179
  min: new Array(attribute.itemSize).fill(Number.POSITIVE_INFINITY),
1621
1180
  max: new Array(attribute.itemSize).fill(Number.NEGATIVE_INFINITY)
1622
1181
  };
1623
-
1624
1182
  for (let i = start; i < start + count; i++) {
1625
1183
  for (let a = 0; a < attribute.itemSize; a++) {
1626
1184
  let value;
1627
-
1628
1185
  if (attribute.itemSize > 4) {
1629
- // no support for interleaved data for itemSize > 4
1630
1186
  value = attribute.array[i * attribute.itemSize + a];
1631
1187
  } else {
1632
- if (a === 0) value = attribute.getX(i);else if (a === 1) value = attribute.getY(i);else if (a === 2) value = attribute.getZ(i);else if (a === 3) value = attribute.getW(i);
1188
+ if (a === 0)
1189
+ value = attribute.getX(i);
1190
+ else if (a === 1)
1191
+ value = attribute.getY(i);
1192
+ else if (a === 2)
1193
+ value = attribute.getZ(i);
1194
+ else if (a === 3)
1195
+ value = attribute.getW(i);
1633
1196
  }
1634
-
1635
- if (value !== undefined) {
1197
+ if (value !== void 0) {
1636
1198
  output.min[a] = Math.min(output.min[a], value);
1637
1199
  output.max[a] = Math.max(output.max[a], value);
1638
1200
  }
1639
1201
  }
1640
1202
  }
1641
-
1642
1203
  return output;
1643
1204
  }
1644
- /**
1645
- * Get the required size + padding for a buffer, rounded to the next 4-byte boundary.
1646
- * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data-alignment
1647
- */
1648
-
1649
-
1650
1205
  getPaddedBufferSize(bufferSize) {
1651
1206
  return Math.ceil(bufferSize / 4) * 4;
1652
1207
  }
1653
- /**
1654
- * Returns a buffer aligned to 4-byte boundary.
1655
- *
1656
- * @param {ArrayBuffer} arrayBuffer Buffer to pad
1657
- * @param {Integer} paddingByte (Optional)
1658
- * @returns {ArrayBuffer} The same buffer if it's already aligned to 4-byte boundary or a new buffer
1659
- */
1660
-
1661
-
1662
1208
  getPaddedArrayBuffer(arrayBuffer, paddingByte = 0) {
1663
1209
  const paddedLength = this.getPaddedBufferSize(arrayBuffer.byteLength);
1664
-
1665
1210
  if (paddedLength !== arrayBuffer.byteLength) {
1666
1211
  const array = new Uint8Array(paddedLength);
1667
1212
  array.set(new Uint8Array(arrayBuffer));
1668
-
1669
1213
  if (paddingByte !== 0) {
1670
1214
  for (let i = arrayBuffer.byteLength; i < paddedLength; i++) {
1671
1215
  array[i] = paddingByte;
1672
1216
  }
1673
1217
  }
1674
-
1675
1218
  return array.buffer;
1676
1219
  }
1677
-
1678
1220
  return arrayBuffer;
1679
1221
  }
1680
-
1681
1222
  }
1682
- /**
1683
- * Punctual Lights Extension
1684
- *
1685
- * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
1686
- */
1687
-
1688
-
1689
1223
  class GLTFLightExtension {
1690
1224
  constructor(writer) {
1691
- _defineProperty(this, "writer", void 0);
1692
-
1693
- _defineProperty(this, "name", void 0);
1694
-
1695
1225
  this.writer = writer;
1696
- this.name = 'KHR_lights_punctual';
1226
+ this.name = "KHR_lights_punctual";
1697
1227
  }
1698
-
1699
1228
  writeNode(light, nodeDef) {
1700
- if (!light.isLight) return;
1701
-
1702
- if (!(light instanceof DirectionalLight && light.isDirectionalLight) && // @ts-expect-error
1703
- !(light instanceof PointLight && light.isPointLight) && !(light instanceof SpotLight && light.isSpotLight)) {
1704
- console.warn('THREE.GLTFExporter: Only directional, point, and spot lights are supported.', light);
1229
+ if (!light.isLight)
1230
+ return;
1231
+ if (!(light instanceof THREE.DirectionalLight && light.isDirectionalLight) && !(light instanceof THREE.PointLight && light.isPointLight) && !(light instanceof THREE.SpotLight && light.isSpotLight)) {
1232
+ console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.", light);
1705
1233
  return;
1706
1234
  }
1707
-
1708
1235
  const writer = this.writer;
1709
1236
  const json = writer.json;
1710
1237
  const extensionsUsed = writer.extensionsUsed;
1711
1238
  const lightDef = {};
1712
- if (light.name) lightDef.name = light.name;
1239
+ if (light.name)
1240
+ lightDef.name = light.name;
1713
1241
  lightDef.color = light.color.toArray();
1714
1242
  lightDef.intensity = light.intensity;
1715
-
1716
- if (light instanceof DirectionalLight && light.isDirectionalLight) {
1717
- lightDef.type = 'directional';
1718
- } else if (light instanceof PointLight && // @ts-expect-error
1719
- light.isPointLight) {
1720
- lightDef.type = 'point';
1721
- if (light.distance > 0) lightDef.range = light.distance;
1722
- } else if (light instanceof SpotLight && light.isSpotLight) {
1723
- lightDef.type = 'spot';
1724
- if (light.distance > 0) lightDef.range = light.distance;
1243
+ if (light instanceof THREE.DirectionalLight && light.isDirectionalLight) {
1244
+ lightDef.type = "directional";
1245
+ } else if (light instanceof THREE.PointLight && light.isPointLight) {
1246
+ lightDef.type = "point";
1247
+ if (light.distance > 0)
1248
+ lightDef.range = light.distance;
1249
+ } else if (light instanceof THREE.SpotLight && light.isSpotLight) {
1250
+ lightDef.type = "spot";
1251
+ if (light.distance > 0)
1252
+ lightDef.range = light.distance;
1725
1253
  lightDef.spot = {};
1726
- lightDef.spot.innerConeAngle = (light.penumbra - 1.0) * light.angle * -1.0;
1254
+ lightDef.spot.innerConeAngle = (light.penumbra - 1) * light.angle * -1;
1727
1255
  lightDef.spot.outerConeAngle = light.angle;
1728
1256
  }
1729
-
1730
- if (!(light instanceof DirectionalLight) && light.decay !== undefined && light.decay !== 2) {
1731
- console.warn('THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, ' + 'and expects light.decay=2.');
1257
+ if (!(light instanceof THREE.DirectionalLight) && light.decay !== void 0 && light.decay !== 2) {
1258
+ console.warn(
1259
+ "THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."
1260
+ );
1732
1261
  }
1733
-
1734
- if (!(light instanceof PointLight) && light.target && (light.target.parent !== light || light.target.position.x !== 0 || light.target.position.y !== 0 || light.target.position.z !== -1)) {
1735
- console.warn('THREE.GLTFExporter: Light direction may be lost. For best results, ' + 'make light.target a child of the light with position 0,0,-1.');
1262
+ if (!(light instanceof THREE.PointLight) && light.target && (light.target.parent !== light || light.target.position.x !== 0 || light.target.position.y !== 0 || light.target.position.z !== -1)) {
1263
+ console.warn(
1264
+ "THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."
1265
+ );
1736
1266
  }
1737
-
1738
1267
  if (!extensionsUsed[this.name]) {
1739
1268
  json.extensions = json.extensions || {};
1740
- json.extensions[this.name] = {
1741
- lights: []
1742
- };
1269
+ json.extensions[this.name] = { lights: [] };
1743
1270
  extensionsUsed[this.name] = true;
1744
1271
  }
1745
-
1746
- if (json.extensions !== undefined) {
1272
+ if (json.extensions !== void 0) {
1747
1273
  const lights = json.extensions[this.name].lights;
1748
1274
  lights.push(lightDef);
1749
1275
  nodeDef.extensions = nodeDef.extensions || {};
1750
- nodeDef.extensions[this.name] = {
1751
- light: lights.length - 1
1752
- };
1276
+ nodeDef.extensions[this.name] = { light: lights.length - 1 };
1753
1277
  }
1754
1278
  }
1755
-
1756
1279
  }
1757
- /**
1758
- * Unlit Materials Extension
1759
- *
1760
- * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit
1761
- */
1762
-
1763
-
1764
1280
  class GLTFMaterialsUnlitExtension {
1765
1281
  constructor(writer) {
1766
- _defineProperty(this, "writer", void 0);
1767
-
1768
- _defineProperty(this, "name", void 0);
1769
-
1770
1282
  this.writer = writer;
1771
- this.name = 'KHR_materials_unlit';
1283
+ this.name = "KHR_materials_unlit";
1772
1284
  }
1773
-
1774
1285
  writeMaterial(material, materialDef) {
1775
- if (!(material instanceof MeshBasicMaterial && // @ts-expect-error
1776
- material.isMeshBasicMaterial)) {
1286
+ if (!(material instanceof THREE.MeshBasicMaterial && material.isMeshBasicMaterial)) {
1777
1287
  return;
1778
1288
  }
1779
-
1780
1289
  const writer = this.writer;
1781
1290
  const extensionsUsed = writer.extensionsUsed;
1782
1291
  materialDef.extensions = materialDef.extensions || {};
1783
1292
  materialDef.extensions[this.name] = {};
1784
1293
  extensionsUsed[this.name] = true;
1785
- materialDef.pbrMetallicRoughness.metallicFactor = 0.0;
1294
+ materialDef.pbrMetallicRoughness.metallicFactor = 0;
1786
1295
  materialDef.pbrMetallicRoughness.roughnessFactor = 0.9;
1787
1296
  }
1788
-
1789
1297
  }
1790
- /**
1791
- * Specular-Glossiness Extension
1792
- *
1793
- * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness
1794
- */
1795
-
1796
-
1797
1298
  class GLTFMaterialsPBRSpecularGlossiness {
1798
1299
  constructor(writer) {
1799
- _defineProperty(this, "writer", void 0);
1800
-
1801
- _defineProperty(this, "name", void 0);
1802
-
1803
1300
  this.writer = writer;
1804
- this.name = 'KHR_materials_pbrSpecularGlossiness';
1301
+ this.name = "KHR_materials_pbrSpecularGlossiness";
1805
1302
  }
1806
-
1807
1303
  writeMaterial(material, materialDef) {
1808
- // @ts-expect-error
1809
- if (!material.isGLTFSpecularGlossinessMaterial) return;
1304
+ if (!material.isGLTFSpecularGlossinessMaterial)
1305
+ return;
1810
1306
  const writer = this.writer;
1811
1307
  const extensionsUsed = writer.extensionsUsed;
1812
1308
  const extensionDef = {};
1813
-
1814
1309
  if (materialDef.pbrMetallicRoughness.baseColorFactor) {
1815
1310
  extensionDef.diffuseFactor = materialDef.pbrMetallicRoughness.baseColorFactor;
1816
1311
  }
1817
-
1818
- if (material instanceof MeshPhongMaterial) {
1312
+ if (material instanceof THREE.MeshPhongMaterial) {
1819
1313
  const specularFactor = [1, 1, 1];
1820
1314
  material.specular.toArray(specularFactor, 0);
1821
1315
  extensionDef.specularFactor = specularFactor;
1822
- extensionDef.glossinessFactor = // @ts-expect-error
1823
- material.glossiness;
1316
+ extensionDef.glossinessFactor = material.glossiness;
1824
1317
  }
1825
-
1826
1318
  if (materialDef.pbrMetallicRoughness.baseColorTexture) {
1827
1319
  extensionDef.diffuseTexture = materialDef.pbrMetallicRoughness.baseColorTexture;
1828
1320
  }
1829
-
1830
- if ((material instanceof MeshBasicMaterial || material instanceof MeshLambertMaterial || material instanceof MeshPhongMaterial) && material.specularMap) {
1831
- const specularMapDef = {
1832
- index: writer.processTexture(material.specularMap)
1833
- };
1321
+ if ((material instanceof THREE.MeshBasicMaterial || material instanceof THREE.MeshLambertMaterial || material instanceof THREE.MeshPhongMaterial) && material.specularMap) {
1322
+ const specularMapDef = { index: writer.processTexture(material.specularMap) };
1834
1323
  writer.applyTextureTransform(specularMapDef, material.specularMap);
1835
1324
  extensionDef.specularGlossinessTexture = specularMapDef;
1836
1325
  }
1837
-
1838
1326
  materialDef.extensions = materialDef.extensions || {};
1839
1327
  materialDef.extensions[this.name] = extensionDef;
1840
1328
  extensionsUsed[this.name] = true;
1841
1329
  }
1842
-
1843
1330
  }
1844
- /**
1845
- * Transmission Materials Extension
1846
- *
1847
- * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission
1848
- */
1849
-
1850
-
1851
1331
  class GLTFMaterialsTransmissionExtension {
1852
1332
  constructor(writer) {
1853
- _defineProperty(this, "writer", void 0);
1854
-
1855
- _defineProperty(this, "name", void 0);
1856
-
1857
1333
  this.writer = writer;
1858
- this.name = 'KHR_materials_transmission';
1334
+ this.name = "KHR_materials_transmission";
1859
1335
  }
1860
-
1861
1336
  writeMaterial(material, materialDef) {
1862
- if (!(material instanceof MeshPhysicalMaterial && // @ts-expect-error
1863
- material.isMeshPhysicalMaterial) || material.transmission === 0) {
1337
+ if (!(material instanceof THREE.MeshPhysicalMaterial && material.isMeshPhysicalMaterial) || material.transmission === 0) {
1864
1338
  return;
1865
1339
  }
1866
-
1867
1340
  const writer = this.writer;
1868
1341
  const extensionsUsed = writer.extensionsUsed;
1869
1342
  const extensionDef = {};
1870
1343
  extensionDef.transmissionFactor = material.transmission;
1871
-
1872
1344
  if (material.transmissionMap) {
1873
- const transmissionMapDef = {
1874
- index: writer.processTexture(material.transmissionMap)
1875
- };
1345
+ const transmissionMapDef = { index: writer.processTexture(material.transmissionMap) };
1876
1346
  writer.applyTextureTransform(transmissionMapDef, material.transmissionMap);
1877
1347
  extensionDef.transmissionTexture = transmissionMapDef;
1878
1348
  }
1879
-
1880
1349
  materialDef.extensions = materialDef.extensions || {};
1881
1350
  materialDef.extensions[this.name] = extensionDef;
1882
1351
  extensionsUsed[this.name] = true;
1883
1352
  }
1884
-
1885
1353
  }
1886
- /**
1887
- * Materials Volume Extension
1888
- *
1889
- * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume
1890
- */
1891
-
1892
-
1893
1354
  class GLTFMaterialsVolumeExtension {
1894
1355
  constructor(writer) {
1895
- _defineProperty(this, "writer", void 0);
1896
-
1897
- _defineProperty(this, "name", void 0);
1898
-
1899
1356
  this.writer = writer;
1900
- this.name = 'KHR_materials_volume';
1357
+ this.name = "KHR_materials_volume";
1901
1358
  }
1902
-
1903
1359
  writeMaterial(material, materialDef) {
1904
- if (!(material instanceof MeshPhysicalMaterial && // @ts-expect-error
1905
- material.isMeshPhysicalMaterial) || material.thickness === 0) {
1360
+ if (!(material instanceof THREE.MeshPhysicalMaterial && material.isMeshPhysicalMaterial) || material.thickness === 0) {
1906
1361
  return;
1907
1362
  }
1908
-
1909
1363
  const writer = this.writer;
1910
1364
  const extensionsUsed = writer.extensionsUsed;
1911
1365
  const extensionDef = {};
1912
1366
  extensionDef.thickness = material.thickness;
1913
-
1914
1367
  if (material.thicknessMap) {
1915
1368
  const thicknessMapDef = {
1916
1369
  index: writer.processTexture(material.thicknessMap)
@@ -1918,15 +1371,11 @@ class GLTFMaterialsVolumeExtension {
1918
1371
  writer.applyTextureTransform(thicknessMapDef, material.thicknessMap);
1919
1372
  extensionDef.thicknessTexture = thicknessMapDef;
1920
1373
  }
1921
-
1922
1374
  extensionDef.attenuationDistance = material.attenuationDistance;
1923
- extensionDef.attenuationColor = //@ts-expect-error
1924
- material.attenuationTint.toArray();
1375
+ extensionDef.attenuationColor = material.attenuationTint.toArray();
1925
1376
  materialDef.extensions = materialDef.extensions || {};
1926
1377
  materialDef.extensions[this.name] = extensionDef;
1927
1378
  extensionsUsed[this.name] = true;
1928
1379
  }
1929
-
1930
1380
  }
1931
-
1932
- export { GLTFExporter };
1381
+ exports.GLTFExporter = GLTFExporter;