three-stdlib 2.22.5 → 2.22.7

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