three-stdlib 2.22.7 → 2.22.9

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