@loaders.gl/scene 5.0.0-alpha.9 → 5.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1328) hide show
  1. package/DRACO-README.md +15 -0
  2. package/GLTF-README.md +46 -0
  3. package/LICENSE +2 -30
  4. package/OBJ-README.md +28 -0
  5. package/README.md +12 -1
  6. package/THIRD-PARTY-NOTICES.md +26 -0
  7. package/bin/gltf/glbdump.js +8 -0
  8. package/dist/dist.dev.js +34608 -40
  9. package/dist/dist.min.js +38 -3
  10. package/dist/draco/bundled.cjs +37 -0
  11. package/dist/draco/bundled.cjs.map +7 -0
  12. package/dist/draco/bundled.d.ts +6 -0
  13. package/dist/draco/bundled.d.ts.map +1 -0
  14. package/dist/draco/bundled.js +7 -0
  15. package/dist/draco/bundled.js.map +1 -0
  16. package/dist/draco/draco-format.cjs +41 -0
  17. package/dist/draco/draco-format.cjs.map +7 -0
  18. package/dist/draco/draco-format.d.ts +15 -0
  19. package/dist/draco/draco-format.d.ts.map +1 -0
  20. package/dist/draco/draco-format.js +18 -0
  21. package/dist/draco/draco-format.js.map +1 -0
  22. package/dist/draco/draco-javascript-loader-with-parser.cjs +44 -0
  23. package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
  24. package/dist/draco/draco-javascript-loader-with-parser.d.ts +34 -0
  25. package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
  26. package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
  27. package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
  28. package/dist/draco/draco-libraries.cjs +61 -0
  29. package/dist/draco/draco-libraries.cjs.map +7 -0
  30. package/dist/draco/draco-libraries.d.ts +28 -0
  31. package/dist/draco/draco-libraries.d.ts.map +1 -0
  32. package/dist/draco/draco-libraries.js +33 -0
  33. package/dist/draco/draco-libraries.js.map +1 -0
  34. package/dist/draco/draco-library-options.cjs +80 -0
  35. package/dist/draco/draco-library-options.cjs.map +7 -0
  36. package/dist/draco/draco-library-options.d.ts +16 -0
  37. package/dist/draco/draco-library-options.d.ts.map +1 -0
  38. package/dist/draco/draco-library-options.js +52 -0
  39. package/dist/draco/draco-library-options.js.map +1 -0
  40. package/dist/draco/draco-loader-options.cjs +37 -0
  41. package/dist/draco/draco-loader-options.cjs.map +7 -0
  42. package/dist/draco/draco-loader-options.d.ts +27 -0
  43. package/dist/draco/draco-loader-options.d.ts.map +1 -0
  44. package/dist/draco/draco-loader-options.js +12 -0
  45. package/dist/draco/draco-loader-options.js.map +1 -0
  46. package/dist/draco/draco-loader-types.cjs +88 -0
  47. package/dist/draco/draco-loader-types.cjs.map +7 -0
  48. package/dist/draco/draco-loader-types.d.ts +69 -0
  49. package/dist/draco/draco-loader-types.d.ts.map +1 -0
  50. package/dist/draco/draco-loader-types.js +54 -0
  51. package/dist/draco/draco-loader-types.js.map +1 -0
  52. package/dist/draco/draco-loader.cjs +51 -0
  53. package/dist/draco/draco-loader.cjs.map +7 -0
  54. package/dist/draco/draco-loader.d.ts +39 -0
  55. package/dist/draco/draco-loader.d.ts.map +1 -0
  56. package/dist/draco/draco-loader.js +22 -0
  57. package/dist/draco/draco-loader.js.map +1 -0
  58. package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
  59. package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
  60. package/dist/draco/draco-wasm-loader-with-parser.d.ts +34 -0
  61. package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
  62. package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
  63. package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
  64. package/dist/draco/draco-writer.cjs +183 -0
  65. package/dist/draco/draco-writer.cjs.map +7 -0
  66. package/dist/draco/draco-writer.d.ts +97 -0
  67. package/dist/draco/draco-writer.d.ts.map +1 -0
  68. package/dist/draco/draco-writer.js +166 -0
  69. package/dist/draco/draco-writer.js.map +1 -0
  70. package/dist/draco/draco3d/draco3d-types.cjs +76 -0
  71. package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
  72. package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
  73. package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
  74. package/dist/draco/draco3d/draco3d-types.js +47 -0
  75. package/dist/draco/draco3d/draco3d-types.js.map +1 -0
  76. package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
  77. package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
  78. package/dist/draco/draco3d-loader-with-parser.d.ts +34 -0
  79. package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
  80. package/dist/draco/draco3d-loader-with-parser.js +21 -0
  81. package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
  82. package/dist/draco/index.cjs +54 -0
  83. package/dist/draco/index.cjs.map +7 -0
  84. package/dist/draco/index.d.ts +13 -0
  85. package/dist/draco/index.d.ts.map +1 -0
  86. package/dist/draco/index.js +13 -0
  87. package/dist/draco/index.js.map +1 -0
  88. package/dist/draco/lib/draco-builder.cjs +660 -0
  89. package/dist/draco/lib/draco-builder.cjs.map +7 -0
  90. package/dist/draco/lib/draco-builder.d.ts +175 -0
  91. package/dist/draco/lib/draco-builder.d.ts.map +1 -0
  92. package/dist/draco/lib/draco-builder.js +612 -0
  93. package/dist/draco/lib/draco-builder.js.map +1 -0
  94. package/dist/draco/lib/draco-library-loader.cjs +47 -0
  95. package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
  96. package/dist/draco/lib/draco-library-loader.d.ts +5 -0
  97. package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
  98. package/dist/draco/lib/draco-library-loader.js +23 -0
  99. package/dist/draco/lib/draco-library-loader.js.map +1 -0
  100. package/dist/draco/lib/draco-module-loader.cjs +281 -0
  101. package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
  102. package/dist/draco/lib/draco-module-loader.d.ts +25 -0
  103. package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
  104. package/dist/draco/lib/draco-module-loader.js +220 -0
  105. package/dist/draco/lib/draco-module-loader.js.map +1 -0
  106. package/dist/draco/lib/draco-parser.cjs +598 -0
  107. package/dist/draco/lib/draco-parser.cjs.map +7 -0
  108. package/dist/draco/lib/draco-parser.d.ts +142 -0
  109. package/dist/draco/lib/draco-parser.d.ts.map +1 -0
  110. package/dist/draco/lib/draco-parser.js +595 -0
  111. package/dist/draco/lib/draco-parser.js.map +1 -0
  112. package/dist/draco/lib/draco-types.cjs +19 -0
  113. package/dist/draco/lib/draco-types.cjs.map +7 -0
  114. package/dist/draco/lib/draco-types.d.ts +59 -0
  115. package/dist/draco/lib/draco-types.d.ts.map +1 -0
  116. package/dist/draco/lib/draco-types.js +5 -0
  117. package/dist/draco/lib/draco-types.js.map +1 -0
  118. package/dist/draco/lib/parse-draco.cjs +59 -0
  119. package/dist/draco/lib/parse-draco.cjs.map +7 -0
  120. package/dist/draco/lib/parse-draco.d.ts +22 -0
  121. package/dist/draco/lib/parse-draco.d.ts.map +1 -0
  122. package/dist/draco/lib/parse-draco.js +32 -0
  123. package/dist/draco/lib/parse-draco.js.map +1 -0
  124. package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
  125. package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
  126. package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
  127. package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
  128. package/dist/draco/lib/utils/get-draco-schema.js +45 -0
  129. package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
  130. package/dist/draco/lib/utils/version.cjs +31 -0
  131. package/dist/draco/lib/utils/version.cjs.map +7 -0
  132. package/dist/draco/lib/utils/version.d.ts +2 -0
  133. package/dist/draco/lib/utils/version.d.ts.map +1 -0
  134. package/dist/draco/lib/utils/version.js +8 -0
  135. package/dist/draco/lib/utils/version.js.map +1 -0
  136. package/dist/draco/unbundled.cjs +33 -0
  137. package/dist/draco/unbundled.cjs.map +7 -0
  138. package/dist/draco/unbundled.d.ts +3 -0
  139. package/dist/draco/unbundled.d.ts.map +1 -0
  140. package/dist/draco/unbundled.js +5 -0
  141. package/dist/draco/unbundled.js.map +1 -0
  142. package/dist/draco/workers/draco-worker-node.cjs +8 -0
  143. package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
  144. package/dist/draco/workers/draco-worker-node.d.ts +2 -0
  145. package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
  146. package/dist/draco/workers/draco-worker-node.js +9 -0
  147. package/dist/draco/workers/draco-worker-node.js.map +1 -0
  148. package/dist/draco/workers/draco-worker.cjs +7 -0
  149. package/dist/draco/workers/draco-worker.cjs.map +7 -0
  150. package/dist/draco/workers/draco-worker.d.ts +2 -0
  151. package/dist/draco/workers/draco-worker.d.ts.map +1 -0
  152. package/dist/draco/workers/draco-worker.js +7 -0
  153. package/dist/draco/workers/draco-worker.js.map +1 -0
  154. package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
  155. package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
  156. package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
  157. package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
  158. package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
  159. package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
  160. package/dist/draco/workers/draco-writer-worker-node.js +9 -0
  161. package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
  162. package/dist/draco/workers/draco-writer-worker.cjs +10 -0
  163. package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
  164. package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
  165. package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
  166. package/dist/draco/workers/draco-writer-worker.js +7 -0
  167. package/dist/draco/workers/draco-writer-worker.js.map +1 -0
  168. package/dist/draco-javascript-loader.cjs +25 -0
  169. package/dist/draco-javascript-loader.cjs.map +7 -0
  170. package/dist/draco-javascript-loader.d.ts +2 -0
  171. package/dist/draco-javascript-loader.d.ts.map +1 -0
  172. package/dist/draco-javascript-loader.js +3 -0
  173. package/dist/draco-javascript-loader.js.map +1 -0
  174. package/dist/draco-library-options.cjs +36 -0
  175. package/dist/draco-library-options.cjs.map +7 -0
  176. package/dist/draco-library-options.d.ts +3 -0
  177. package/dist/draco-library-options.d.ts.map +1 -0
  178. package/dist/draco-library-options.js +4 -0
  179. package/dist/draco-library-options.js.map +1 -0
  180. package/dist/draco-loader-types.cjs +25 -0
  181. package/dist/draco-loader-types.cjs.map +7 -0
  182. package/dist/draco-loader-types.d.ts +2 -0
  183. package/dist/draco-loader-types.d.ts.map +1 -0
  184. package/dist/draco-loader-types.js +3 -0
  185. package/dist/draco-loader-types.js.map +1 -0
  186. package/dist/draco-loader.cjs +25 -0
  187. package/dist/draco-loader.cjs.map +7 -0
  188. package/dist/draco-loader.d.ts +2 -0
  189. package/dist/draco-loader.d.ts.map +1 -0
  190. package/dist/draco-loader.js +3 -0
  191. package/dist/draco-loader.js.map +1 -0
  192. package/dist/draco-wasm-loader.cjs +25 -0
  193. package/dist/draco-wasm-loader.cjs.map +7 -0
  194. package/dist/draco-wasm-loader.d.ts +2 -0
  195. package/dist/draco-wasm-loader.d.ts.map +1 -0
  196. package/dist/draco-wasm-loader.js +3 -0
  197. package/dist/draco-wasm-loader.js.map +1 -0
  198. package/dist/draco-worker-node.js +28279 -0
  199. package/dist/draco-worker-node.js.map +7 -0
  200. package/dist/draco-worker.js +18145 -0
  201. package/dist/draco-worker.js.map +7 -0
  202. package/dist/draco-writer-worker-node.cjs +27521 -0
  203. package/dist/draco-writer-worker-node.cjs.map +7 -0
  204. package/dist/draco-writer-worker.js +17339 -0
  205. package/dist/draco-writer-worker.js.map +7 -0
  206. package/dist/draco-writer.cjs +25 -0
  207. package/dist/draco-writer.cjs.map +7 -0
  208. package/dist/draco-writer.d.ts +2 -0
  209. package/dist/draco-writer.d.ts.map +1 -0
  210. package/dist/draco-writer.js +3 -0
  211. package/dist/draco-writer.js.map +1 -0
  212. package/dist/draco3d-loader.cjs +25 -0
  213. package/dist/draco3d-loader.cjs.map +7 -0
  214. package/dist/draco3d-loader.d.ts +2 -0
  215. package/dist/draco3d-loader.d.ts.map +1 -0
  216. package/dist/draco3d-loader.js +3 -0
  217. package/dist/draco3d-loader.js.map +1 -0
  218. package/dist/glb-loader-types.cjs +61 -0
  219. package/dist/glb-loader-types.cjs.map +7 -0
  220. package/dist/glb-loader-types.d.ts +2 -0
  221. package/dist/glb-loader-types.d.ts.map +1 -0
  222. package/dist/glb-loader-types.js +2 -0
  223. package/dist/glb-loader-types.js.map +1 -0
  224. package/dist/glb-loader.cjs +48 -0
  225. package/dist/glb-loader.cjs.map +7 -0
  226. package/dist/glb-loader.d.ts +2 -0
  227. package/dist/glb-loader.d.ts.map +1 -0
  228. package/dist/glb-loader.js +2 -0
  229. package/dist/glb-loader.js.map +1 -0
  230. package/dist/glb-writer.cjs +53 -0
  231. package/dist/glb-writer.cjs.map +7 -0
  232. package/dist/glb-writer.d.ts +2 -0
  233. package/dist/glb-writer.d.ts.map +1 -0
  234. package/dist/glb-writer.js +2 -0
  235. package/dist/glb-writer.js.map +1 -0
  236. package/dist/gltf/bundled.cjs +34 -0
  237. package/dist/gltf/bundled.cjs.map +7 -0
  238. package/dist/gltf/bundled.d.ts +5 -0
  239. package/dist/gltf/bundled.d.ts.map +1 -0
  240. package/dist/gltf/bundled.js +6 -0
  241. package/dist/gltf/bundled.js.map +1 -0
  242. package/dist/gltf/glb-loader-types.cjs +59 -0
  243. package/dist/gltf/glb-loader-types.cjs.map +7 -0
  244. package/dist/gltf/glb-loader-types.d.ts +58 -0
  245. package/dist/gltf/glb-loader-types.d.ts.map +1 -0
  246. package/dist/gltf/glb-loader-types.js +24 -0
  247. package/dist/gltf/glb-loader-types.js.map +1 -0
  248. package/dist/gltf/glb-loader.cjs +46 -0
  249. package/dist/gltf/glb-loader.cjs.map +7 -0
  250. package/dist/gltf/glb-loader.d.ts +42 -0
  251. package/dist/gltf/glb-loader.d.ts.map +1 -0
  252. package/dist/gltf/glb-loader.js +24 -0
  253. package/dist/gltf/glb-loader.js.map +1 -0
  254. package/dist/gltf/glb-writer.cjs +51 -0
  255. package/dist/gltf/glb-writer.cjs.map +7 -0
  256. package/dist/gltf/glb-writer.d.ts +30 -0
  257. package/dist/gltf/glb-writer.d.ts.map +1 -0
  258. package/dist/gltf/glb-writer.js +31 -0
  259. package/dist/gltf/glb-writer.js.map +1 -0
  260. package/dist/gltf/gltf-1.schema.json +2075 -0
  261. package/dist/gltf/gltf-2.1.schema.json +1786 -0
  262. package/dist/gltf/gltf-2.schema.json +1786 -0
  263. package/dist/gltf/gltf-all.schema.json +5654 -0
  264. package/dist/gltf/gltf-format.cjs +55 -0
  265. package/dist/gltf/gltf-format.cjs.map +7 -0
  266. package/dist/gltf/gltf-format.d.ts +26 -0
  267. package/dist/gltf/gltf-format.d.ts.map +1 -0
  268. package/dist/gltf/gltf-format.js +29 -0
  269. package/dist/gltf/gltf-format.js.map +1 -0
  270. package/dist/gltf/gltf-loader-types.cjs +71 -0
  271. package/dist/gltf/gltf-loader-types.cjs.map +7 -0
  272. package/dist/gltf/gltf-loader-types.d.ts +71 -0
  273. package/dist/gltf/gltf-loader-types.d.ts.map +1 -0
  274. package/dist/gltf/gltf-loader-types.js +30 -0
  275. package/dist/gltf/gltf-loader-types.js.map +1 -0
  276. package/dist/gltf/gltf-loader.cjs +46 -0
  277. package/dist/gltf/gltf-loader.cjs.map +7 -0
  278. package/dist/gltf/gltf-loader.d.ts +45 -0
  279. package/dist/gltf/gltf-loader.d.ts.map +1 -0
  280. package/dist/gltf/gltf-loader.js +22 -0
  281. package/dist/gltf/gltf-loader.js.map +1 -0
  282. package/dist/gltf/gltf-source.cjs +236 -0
  283. package/dist/gltf/gltf-source.cjs.map +7 -0
  284. package/dist/gltf/gltf-source.d.ts +59 -0
  285. package/dist/gltf/gltf-source.d.ts.map +1 -0
  286. package/dist/gltf/gltf-source.js +230 -0
  287. package/dist/gltf/gltf-source.js.map +1 -0
  288. package/dist/gltf/gltf-writer.cjs +67 -0
  289. package/dist/gltf/gltf-writer.cjs.map +7 -0
  290. package/dist/gltf/gltf-writer.d.ts +14 -0
  291. package/dist/gltf/gltf-writer.d.ts.map +1 -0
  292. package/dist/gltf/gltf-writer.js +44 -0
  293. package/dist/gltf/gltf-writer.js.map +1 -0
  294. package/dist/gltf/gltf.schema.json +5654 -0
  295. package/dist/gltf/index.cjs +225 -0
  296. package/dist/gltf/index.cjs.map +7 -0
  297. package/dist/gltf/index.d.ts +46 -0
  298. package/dist/gltf/index.d.ts.map +1 -0
  299. package/dist/gltf/index.js +39 -0
  300. package/dist/gltf/index.js.map +1 -0
  301. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.cjs +68 -0
  302. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.cjs.map +7 -0
  303. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.d.ts +17 -0
  304. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.d.ts.map +1 -0
  305. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.js +45 -0
  306. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.js.map +1 -0
  307. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.cjs +133 -0
  308. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.cjs.map +7 -0
  309. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.d.ts +8 -0
  310. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.d.ts.map +1 -0
  311. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.js +138 -0
  312. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.js.map +1 -0
  313. package/dist/gltf/lib/api/clean-gltf-v1-fields.cjs +93 -0
  314. package/dist/gltf/lib/api/clean-gltf-v1-fields.cjs.map +7 -0
  315. package/dist/gltf/lib/api/clean-gltf-v1-fields.d.ts +6 -0
  316. package/dist/gltf/lib/api/clean-gltf-v1-fields.d.ts.map +1 -0
  317. package/dist/gltf/lib/api/clean-gltf-v1-fields.js +87 -0
  318. package/dist/gltf/lib/api/clean-gltf-v1-fields.js.map +1 -0
  319. package/dist/gltf/lib/api/convert-gltf-v1-accessors.cjs +128 -0
  320. package/dist/gltf/lib/api/convert-gltf-v1-accessors.cjs.map +7 -0
  321. package/dist/gltf/lib/api/convert-gltf-v1-accessors.d.ts +8 -0
  322. package/dist/gltf/lib/api/convert-gltf-v1-accessors.d.ts.map +1 -0
  323. package/dist/gltf/lib/api/convert-gltf-v1-accessors.js +147 -0
  324. package/dist/gltf/lib/api/convert-gltf-v1-accessors.js.map +1 -0
  325. package/dist/gltf/lib/api/convert-gltf-v1-animations.cjs +81 -0
  326. package/dist/gltf/lib/api/convert-gltf-v1-animations.cjs.map +7 -0
  327. package/dist/gltf/lib/api/convert-gltf-v1-animations.d.ts +4 -0
  328. package/dist/gltf/lib/api/convert-gltf-v1-animations.d.ts.map +1 -0
  329. package/dist/gltf/lib/api/convert-gltf-v1-animations.js +61 -0
  330. package/dist/gltf/lib/api/convert-gltf-v1-animations.js.map +1 -0
  331. package/dist/gltf/lib/api/convert-gltf-v1-materials.cjs +265 -0
  332. package/dist/gltf/lib/api/convert-gltf-v1-materials.cjs.map +7 -0
  333. package/dist/gltf/lib/api/convert-gltf-v1-materials.d.ts +6 -0
  334. package/dist/gltf/lib/api/convert-gltf-v1-materials.d.ts.map +1 -0
  335. package/dist/gltf/lib/api/convert-gltf-v1-materials.js +266 -0
  336. package/dist/gltf/lib/api/convert-gltf-v1-materials.js.map +1 -0
  337. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.cjs +98 -0
  338. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.cjs.map +7 -0
  339. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.d.ts +4 -0
  340. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.d.ts.map +1 -0
  341. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.js +86 -0
  342. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.js.map +1 -0
  343. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.cjs +87 -0
  344. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.cjs.map +7 -0
  345. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.d.ts +4 -0
  346. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.d.ts.map +1 -0
  347. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.js +72 -0
  348. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.js.map +1 -0
  349. package/dist/gltf/lib/api/convert-gltf-v1-skins.cjs +173 -0
  350. package/dist/gltf/lib/api/convert-gltf-v1-skins.cjs.map +7 -0
  351. package/dist/gltf/lib/api/convert-gltf-v1-skins.d.ts +9 -0
  352. package/dist/gltf/lib/api/convert-gltf-v1-skins.d.ts.map +1 -0
  353. package/dist/gltf/lib/api/convert-gltf-v1-skins.js +161 -0
  354. package/dist/gltf/lib/api/convert-gltf-v1-skins.js.map +1 -0
  355. package/dist/gltf/lib/api/gltf-accessors.cjs +83 -0
  356. package/dist/gltf/lib/api/gltf-accessors.cjs.map +7 -0
  357. package/dist/gltf/lib/api/gltf-accessors.d.ts +22 -0
  358. package/dist/gltf/lib/api/gltf-accessors.d.ts.map +1 -0
  359. package/dist/gltf/lib/api/gltf-accessors.js +66 -0
  360. package/dist/gltf/lib/api/gltf-accessors.js.map +1 -0
  361. package/dist/gltf/lib/api/gltf-culling.cjs +73 -0
  362. package/dist/gltf/lib/api/gltf-culling.cjs.map +7 -0
  363. package/dist/gltf/lib/api/gltf-culling.d.ts +12 -0
  364. package/dist/gltf/lib/api/gltf-culling.d.ts.map +1 -0
  365. package/dist/gltf/lib/api/gltf-culling.js +55 -0
  366. package/dist/gltf/lib/api/gltf-culling.js.map +1 -0
  367. package/dist/gltf/lib/api/gltf-extension-data.cjs +102 -0
  368. package/dist/gltf/lib/api/gltf-extension-data.cjs.map +7 -0
  369. package/dist/gltf/lib/api/gltf-extension-data.d.ts +38 -0
  370. package/dist/gltf/lib/api/gltf-extension-data.d.ts.map +1 -0
  371. package/dist/gltf/lib/api/gltf-extension-data.js +75 -0
  372. package/dist/gltf/lib/api/gltf-extension-data.js.map +1 -0
  373. package/dist/gltf/lib/api/gltf-extensions.cjs +123 -0
  374. package/dist/gltf/lib/api/gltf-extensions.cjs.map +7 -0
  375. package/dist/gltf/lib/api/gltf-extensions.d.ts +33 -0
  376. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -0
  377. package/dist/gltf/lib/api/gltf-extensions.js +100 -0
  378. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -0
  379. package/dist/gltf/lib/api/gltf-iterator.cjs +1001 -0
  380. package/dist/gltf/lib/api/gltf-iterator.cjs.map +7 -0
  381. package/dist/gltf/lib/api/gltf-iterator.d.ts +407 -0
  382. package/dist/gltf/lib/api/gltf-iterator.d.ts.map +1 -0
  383. package/dist/gltf/lib/api/gltf-iterator.js +940 -0
  384. package/dist/gltf/lib/api/gltf-iterator.js.map +1 -0
  385. package/dist/gltf/lib/api/gltf-mesh-arrow.cjs +269 -0
  386. package/dist/gltf/lib/api/gltf-mesh-arrow.cjs.map +7 -0
  387. package/dist/gltf/lib/api/gltf-mesh-arrow.d.ts +53 -0
  388. package/dist/gltf/lib/api/gltf-mesh-arrow.d.ts.map +1 -0
  389. package/dist/gltf/lib/api/gltf-mesh-arrow.js +247 -0
  390. package/dist/gltf/lib/api/gltf-mesh-arrow.js.map +1 -0
  391. package/dist/gltf/lib/api/gltf-scenegraph.cjs +615 -0
  392. package/dist/gltf/lib/api/gltf-scenegraph.cjs.map +7 -0
  393. package/dist/gltf/lib/api/gltf-scenegraph.d.ts +183 -0
  394. package/dist/gltf/lib/api/gltf-scenegraph.d.ts.map +1 -0
  395. package/dist/gltf/lib/api/gltf-scenegraph.js +624 -0
  396. package/dist/gltf/lib/api/gltf-scenegraph.js.map +1 -0
  397. package/dist/gltf/lib/api/normalize-gltf-v1.cjs +479 -0
  398. package/dist/gltf/lib/api/normalize-gltf-v1.cjs.map +7 -0
  399. package/dist/gltf/lib/api/normalize-gltf-v1.d.ts +37 -0
  400. package/dist/gltf/lib/api/normalize-gltf-v1.d.ts.map +1 -0
  401. package/dist/gltf/lib/api/normalize-gltf-v1.js +461 -0
  402. package/dist/gltf/lib/api/normalize-gltf-v1.js.map +1 -0
  403. package/dist/gltf/lib/api/repack-gltf-v1-accessors.cjs +405 -0
  404. package/dist/gltf/lib/api/repack-gltf-v1-accessors.cjs.map +7 -0
  405. package/dist/gltf/lib/api/repack-gltf-v1-accessors.d.ts +50 -0
  406. package/dist/gltf/lib/api/repack-gltf-v1-accessors.d.ts.map +1 -0
  407. package/dist/gltf/lib/api/repack-gltf-v1-accessors.js +448 -0
  408. package/dist/gltf/lib/api/repack-gltf-v1-accessors.js.map +1 -0
  409. package/dist/gltf/lib/api/validate-gltf-v1-buffers.cjs +110 -0
  410. package/dist/gltf/lib/api/validate-gltf-v1-buffers.cjs.map +7 -0
  411. package/dist/gltf/lib/api/validate-gltf-v1-buffers.d.ts +4 -0
  412. package/dist/gltf/lib/api/validate-gltf-v1-buffers.d.ts.map +1 -0
  413. package/dist/gltf/lib/api/validate-gltf-v1-buffers.js +111 -0
  414. package/dist/gltf/lib/api/validate-gltf-v1-buffers.js.map +1 -0
  415. package/dist/gltf/lib/api/validate-gltf-v1-cameras.cjs +41 -0
  416. package/dist/gltf/lib/api/validate-gltf-v1-cameras.cjs.map +7 -0
  417. package/dist/gltf/lib/api/validate-gltf-v1-cameras.d.ts +4 -0
  418. package/dist/gltf/lib/api/validate-gltf-v1-cameras.d.ts.map +1 -0
  419. package/dist/gltf/lib/api/validate-gltf-v1-cameras.js +34 -0
  420. package/dist/gltf/lib/api/validate-gltf-v1-cameras.js.map +1 -0
  421. package/dist/gltf/lib/api/validate-gltf-v1-geometry.cjs +121 -0
  422. package/dist/gltf/lib/api/validate-gltf-v1-geometry.cjs.map +7 -0
  423. package/dist/gltf/lib/api/validate-gltf-v1-geometry.d.ts +5 -0
  424. package/dist/gltf/lib/api/validate-gltf-v1-geometry.d.ts.map +1 -0
  425. package/dist/gltf/lib/api/validate-gltf-v1-geometry.js +118 -0
  426. package/dist/gltf/lib/api/validate-gltf-v1-geometry.js.map +1 -0
  427. package/dist/gltf/lib/api/validate-gltf-v1-payloads.cjs +265 -0
  428. package/dist/gltf/lib/api/validate-gltf-v1-payloads.cjs.map +7 -0
  429. package/dist/gltf/lib/api/validate-gltf-v1-payloads.d.ts +4 -0
  430. package/dist/gltf/lib/api/validate-gltf-v1-payloads.d.ts.map +1 -0
  431. package/dist/gltf/lib/api/validate-gltf-v1-payloads.js +268 -0
  432. package/dist/gltf/lib/api/validate-gltf-v1-payloads.js.map +1 -0
  433. package/dist/gltf/lib/encoders/encode-glb.cjs +147 -0
  434. package/dist/gltf/lib/encoders/encode-glb.cjs.map +7 -0
  435. package/dist/gltf/lib/encoders/encode-glb.d.ts +21 -0
  436. package/dist/gltf/lib/encoders/encode-glb.d.ts.map +1 -0
  437. package/dist/gltf/lib/encoders/encode-glb.js +142 -0
  438. package/dist/gltf/lib/encoders/encode-glb.js.map +1 -0
  439. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +212 -0
  440. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +7 -0
  441. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +20 -0
  442. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -0
  443. package/dist/gltf/lib/encoders/encode-gltf-draco.js +187 -0
  444. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -0
  445. package/dist/gltf/lib/encoders/encode-gltf.cjs +40 -0
  446. package/dist/gltf/lib/encoders/encode-gltf.cjs.map +7 -0
  447. package/dist/gltf/lib/encoders/encode-gltf.d.ts +22 -0
  448. package/dist/gltf/lib/encoders/encode-gltf.d.ts.map +1 -0
  449. package/dist/gltf/lib/encoders/encode-gltf.js +32 -0
  450. package/dist/gltf/lib/encoders/encode-gltf.js.map +1 -0
  451. package/dist/gltf/lib/extensions/EXT_mesh_features.cjs +175 -0
  452. package/dist/gltf/lib/extensions/EXT_mesh_features.cjs.map +7 -0
  453. package/dist/gltf/lib/extensions/EXT_mesh_features.d.ts +22 -0
  454. package/dist/gltf/lib/extensions/EXT_mesh_features.d.ts.map +1 -0
  455. package/dist/gltf/lib/extensions/EXT_mesh_features.js +189 -0
  456. package/dist/gltf/lib/extensions/EXT_mesh_features.js.map +1 -0
  457. package/dist/gltf/lib/extensions/EXT_mesh_polygon.cjs +149 -0
  458. package/dist/gltf/lib/extensions/EXT_mesh_polygon.cjs.map +7 -0
  459. package/dist/gltf/lib/extensions/EXT_mesh_polygon.d.ts +7 -0
  460. package/dist/gltf/lib/extensions/EXT_mesh_polygon.d.ts.map +1 -0
  461. package/dist/gltf/lib/extensions/EXT_mesh_polygon.js +125 -0
  462. package/dist/gltf/lib/extensions/EXT_mesh_polygon.js.map +1 -0
  463. package/dist/gltf/lib/extensions/EXT_meshopt_compression.cjs +37 -0
  464. package/dist/gltf/lib/extensions/EXT_meshopt_compression.cjs.map +7 -0
  465. package/dist/gltf/lib/extensions/EXT_meshopt_compression.d.ts +25 -0
  466. package/dist/gltf/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -0
  467. package/dist/gltf/lib/extensions/EXT_meshopt_compression.js +29 -0
  468. package/dist/gltf/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  469. package/dist/gltf/lib/extensions/EXT_primitive_voxels.cjs +87 -0
  470. package/dist/gltf/lib/extensions/EXT_primitive_voxels.cjs.map +7 -0
  471. package/dist/gltf/lib/extensions/EXT_primitive_voxels.d.ts +10 -0
  472. package/dist/gltf/lib/extensions/EXT_primitive_voxels.d.ts.map +1 -0
  473. package/dist/gltf/lib/extensions/EXT_primitive_voxels.js +57 -0
  474. package/dist/gltf/lib/extensions/EXT_primitive_voxels.js.map +1 -0
  475. package/dist/gltf/lib/extensions/EXT_structural_metadata.cjs +684 -0
  476. package/dist/gltf/lib/extensions/EXT_structural_metadata.cjs.map +7 -0
  477. package/dist/gltf/lib/extensions/EXT_structural_metadata.d.ts +26 -0
  478. package/dist/gltf/lib/extensions/EXT_structural_metadata.d.ts.map +1 -0
  479. package/dist/gltf/lib/extensions/EXT_structural_metadata.js +786 -0
  480. package/dist/gltf/lib/extensions/EXT_structural_metadata.js.map +1 -0
  481. package/dist/gltf/lib/extensions/EXT_texture_avif.cjs +56 -0
  482. package/dist/gltf/lib/extensions/EXT_texture_avif.cjs.map +7 -0
  483. package/dist/gltf/lib/extensions/EXT_texture_avif.d.ts +15 -0
  484. package/dist/gltf/lib/extensions/EXT_texture_avif.d.ts.map +1 -0
  485. package/dist/gltf/lib/extensions/EXT_texture_avif.js +40 -0
  486. package/dist/gltf/lib/extensions/EXT_texture_avif.js.map +1 -0
  487. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +53 -0
  488. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +7 -0
  489. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts +10 -0
  490. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -0
  491. package/dist/gltf/lib/extensions/EXT_texture_webp.js +32 -0
  492. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -0
  493. package/dist/gltf/lib/extensions/KHR_audio_emitter.cjs +128 -0
  494. package/dist/gltf/lib/extensions/KHR_audio_emitter.cjs.map +7 -0
  495. package/dist/gltf/lib/extensions/KHR_audio_emitter.d.ts +8 -0
  496. package/dist/gltf/lib/extensions/KHR_audio_emitter.d.ts.map +1 -0
  497. package/dist/gltf/lib/extensions/KHR_audio_emitter.js +121 -0
  498. package/dist/gltf/lib/extensions/KHR_audio_emitter.js.map +1 -0
  499. package/dist/gltf/lib/extensions/KHR_binary_gltf.cjs +53 -0
  500. package/dist/gltf/lib/extensions/KHR_binary_gltf.cjs.map +7 -0
  501. package/dist/gltf/lib/extensions/KHR_binary_gltf.d.ts +6 -0
  502. package/dist/gltf/lib/extensions/KHR_binary_gltf.d.ts.map +1 -0
  503. package/dist/gltf/lib/extensions/KHR_binary_gltf.js +40 -0
  504. package/dist/gltf/lib/extensions/KHR_binary_gltf.js.map +1 -0
  505. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +131 -0
  506. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +7 -0
  507. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts +8 -0
  508. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -0
  509. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +107 -0
  510. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  511. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +209 -0
  512. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +7 -0
  513. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +13 -0
  514. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -0
  515. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +160 -0
  516. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -0
  517. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.cjs +110 -0
  518. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.cjs.map +7 -0
  519. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.d.ts +10 -0
  520. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.d.ts.map +1 -0
  521. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.js +87 -0
  522. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.js.map +1 -0
  523. package/dist/gltf/lib/extensions/KHR_meshopt_compression.cjs +37 -0
  524. package/dist/gltf/lib/extensions/KHR_meshopt_compression.cjs.map +7 -0
  525. package/dist/gltf/lib/extensions/KHR_meshopt_compression.d.ts +24 -0
  526. package/dist/gltf/lib/extensions/KHR_meshopt_compression.d.ts.map +1 -0
  527. package/dist/gltf/lib/extensions/KHR_meshopt_compression.js +28 -0
  528. package/dist/gltf/lib/extensions/KHR_meshopt_compression.js.map +1 -0
  529. package/dist/gltf/lib/extensions/KHR_texture_basisu.cjs +47 -0
  530. package/dist/gltf/lib/extensions/KHR_texture_basisu.cjs.map +7 -0
  531. package/dist/gltf/lib/extensions/KHR_texture_basisu.d.ts +10 -0
  532. package/dist/gltf/lib/extensions/KHR_texture_basisu.d.ts.map +1 -0
  533. package/dist/gltf/lib/extensions/KHR_texture_basisu.js +26 -0
  534. package/dist/gltf/lib/extensions/KHR_texture_basisu.js.map +1 -0
  535. package/dist/gltf/lib/extensions/KHR_texture_transform.cjs +258 -0
  536. package/dist/gltf/lib/extensions/KHR_texture_transform.cjs.map +7 -0
  537. package/dist/gltf/lib/extensions/KHR_texture_transform.d.ts +10 -0
  538. package/dist/gltf/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
  539. package/dist/gltf/lib/extensions/KHR_texture_transform.js +271 -0
  540. package/dist/gltf/lib/extensions/KHR_texture_transform.js.map +1 -0
  541. package/dist/gltf/lib/extensions/MPEG_audio_spatial.cjs +70 -0
  542. package/dist/gltf/lib/extensions/MPEG_audio_spatial.cjs.map +7 -0
  543. package/dist/gltf/lib/extensions/MPEG_audio_spatial.d.ts +10 -0
  544. package/dist/gltf/lib/extensions/MPEG_audio_spatial.d.ts.map +1 -0
  545. package/dist/gltf/lib/extensions/MPEG_audio_spatial.js +45 -0
  546. package/dist/gltf/lib/extensions/MPEG_audio_spatial.js.map +1 -0
  547. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.cjs +276 -0
  548. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.cjs.map +7 -0
  549. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.d.ts +5 -0
  550. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
  551. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.js +306 -0
  552. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  553. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.cjs +71 -0
  554. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.cjs.map +7 -0
  555. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.d.ts +5 -0
  556. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -0
  557. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.js +54 -0
  558. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  559. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.cjs +62 -0
  560. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.cjs.map +7 -0
  561. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.d.ts +9 -0
  562. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -0
  563. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.js +38 -0
  564. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  565. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.cjs +99 -0
  566. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.cjs.map +7 -0
  567. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +5 -0
  568. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -0
  569. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.js +76 -0
  570. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  571. package/dist/gltf/lib/extensions/meshopt-compression.cjs +114 -0
  572. package/dist/gltf/lib/extensions/meshopt-compression.cjs.map +7 -0
  573. package/dist/gltf/lib/extensions/meshopt-compression.d.ts +48 -0
  574. package/dist/gltf/lib/extensions/meshopt-compression.d.ts.map +1 -0
  575. package/dist/gltf/lib/extensions/meshopt-compression.js +123 -0
  576. package/dist/gltf/lib/extensions/meshopt-compression.js.map +1 -0
  577. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +280 -0
  578. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +7 -0
  579. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts +84 -0
  580. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -0
  581. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +358 -0
  582. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
  583. package/dist/gltf/lib/gltf-utils/get-typed-array.cjs +189 -0
  584. package/dist/gltf/lib/gltf-utils/get-typed-array.cjs.map +7 -0
  585. package/dist/gltf/lib/gltf-utils/get-typed-array.d.ts +13 -0
  586. package/dist/gltf/lib/gltf-utils/get-typed-array.d.ts.map +1 -0
  587. package/dist/gltf/lib/gltf-utils/get-typed-array.js +175 -0
  588. package/dist/gltf/lib/gltf-utils/get-typed-array.js.map +1 -0
  589. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.cjs +90 -0
  590. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.cjs.map +7 -0
  591. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.d.ts +6 -0
  592. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -0
  593. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.js +72 -0
  594. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  595. package/dist/gltf/lib/gltf-utils/gltf-constants.cjs +90 -0
  596. package/dist/gltf/lib/gltf-utils/gltf-constants.cjs.map +7 -0
  597. package/dist/gltf/lib/gltf-utils/gltf-constants.d.ts +26 -0
  598. package/dist/gltf/lib/gltf-utils/gltf-constants.d.ts.map +1 -0
  599. package/dist/gltf/lib/gltf-utils/gltf-constants.js +46 -0
  600. package/dist/gltf/lib/gltf-utils/gltf-constants.js.map +1 -0
  601. package/dist/gltf/lib/gltf-utils/gltf-utils.cjs +157 -0
  602. package/dist/gltf/lib/gltf-utils/gltf-utils.cjs.map +7 -0
  603. package/dist/gltf/lib/gltf-utils/gltf-utils.d.ts +17 -0
  604. package/dist/gltf/lib/gltf-utils/gltf-utils.d.ts.map +1 -0
  605. package/dist/gltf/lib/gltf-utils/gltf-utils.js +135 -0
  606. package/dist/gltf/lib/gltf-utils/gltf-utils.js.map +1 -0
  607. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.cjs +91 -0
  608. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.cjs.map +7 -0
  609. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.d.ts +21 -0
  610. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.d.ts.map +1 -0
  611. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.js +77 -0
  612. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.js.map +1 -0
  613. package/dist/gltf/lib/gltf-utils/resolve-url.cjs +61 -0
  614. package/dist/gltf/lib/gltf-utils/resolve-url.cjs.map +7 -0
  615. package/dist/gltf/lib/gltf-utils/resolve-url.d.ts +10 -0
  616. package/dist/gltf/lib/gltf-utils/resolve-url.d.ts.map +1 -0
  617. package/dist/gltf/lib/gltf-utils/resolve-url.js +43 -0
  618. package/dist/gltf/lib/gltf-utils/resolve-url.js.map +1 -0
  619. package/dist/gltf/lib/parsers/parse-glb.cjs +185 -0
  620. package/dist/gltf/lib/parsers/parse-glb.cjs.map +7 -0
  621. package/dist/gltf/lib/parsers/parse-glb.d.ts +20 -0
  622. package/dist/gltf/lib/parsers/parse-glb.d.ts.map +1 -0
  623. package/dist/gltf/lib/parsers/parse-glb.js +216 -0
  624. package/dist/gltf/lib/parsers/parse-glb.js.map +1 -0
  625. package/dist/gltf/lib/parsers/parse-gltf.cjs +365 -0
  626. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +7 -0
  627. package/dist/gltf/lib/parsers/parse-gltf.d.ts +43 -0
  628. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -0
  629. package/dist/gltf/lib/parsers/parse-gltf.js +372 -0
  630. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -0
  631. package/dist/gltf/lib/types/glb-types.cjs +19 -0
  632. package/dist/gltf/lib/types/glb-types.cjs.map +7 -0
  633. package/dist/gltf/lib/types/glb-types.d.ts +35 -0
  634. package/dist/gltf/lib/types/glb-types.d.ts.map +1 -0
  635. package/dist/gltf/lib/types/glb-types.js +5 -0
  636. package/dist/gltf/lib/types/glb-types.js.map +1 -0
  637. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +123 -0
  638. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +7 -0
  639. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +110 -0
  640. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -0
  641. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +87 -0
  642. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -0
  643. package/dist/gltf/lib/types/gltf-audio-extension-schemas.cjs +189 -0
  644. package/dist/gltf/lib/types/gltf-audio-extension-schemas.cjs.map +7 -0
  645. package/dist/gltf/lib/types/gltf-audio-extension-schemas.d.ts +192 -0
  646. package/dist/gltf/lib/types/gltf-audio-extension-schemas.d.ts.map +1 -0
  647. package/dist/gltf/lib/types/gltf-audio-extension-schemas.js +154 -0
  648. package/dist/gltf/lib/types/gltf-audio-extension-schemas.js.map +1 -0
  649. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.cjs +19 -0
  650. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.cjs.map +7 -0
  651. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.d.ts +421 -0
  652. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.d.ts.map +1 -0
  653. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.js +5 -0
  654. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  655. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs +19 -0
  656. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +7 -0
  657. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +39 -0
  658. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -0
  659. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.js +5 -0
  660. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.js.map +1 -0
  661. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.cjs +19 -0
  662. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.cjs.map +7 -0
  663. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.d.ts +49 -0
  664. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.d.ts.map +1 -0
  665. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.js +5 -0
  666. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.js.map +1 -0
  667. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.cjs +19 -0
  668. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.cjs.map +7 -0
  669. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.d.ts +334 -0
  670. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.d.ts.map +1 -0
  671. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.js +5 -0
  672. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -0
  673. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.cjs +19 -0
  674. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.cjs.map +7 -0
  675. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.d.ts +42 -0
  676. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.d.ts.map +1 -0
  677. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.js +5 -0
  678. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.js.map +1 -0
  679. package/dist/gltf/lib/types/gltf-extension-schemas.cjs +83 -0
  680. package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +7 -0
  681. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +229 -0
  682. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -0
  683. package/dist/gltf/lib/types/gltf-extension-schemas.js +53 -0
  684. package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -0
  685. package/dist/gltf/lib/types/gltf-interactivity.cjs +34 -0
  686. package/dist/gltf/lib/types/gltf-interactivity.cjs.map +7 -0
  687. package/dist/gltf/lib/types/gltf-interactivity.d.ts +131 -0
  688. package/dist/gltf/lib/types/gltf-interactivity.d.ts.map +1 -0
  689. package/dist/gltf/lib/types/gltf-interactivity.js +13 -0
  690. package/dist/gltf/lib/types/gltf-interactivity.js.map +1 -0
  691. package/dist/gltf/lib/types/gltf-json-schema.cjs +19 -0
  692. package/dist/gltf/lib/types/gltf-json-schema.cjs.map +7 -0
  693. package/dist/gltf/lib/types/gltf-json-schema.d.ts +841 -0
  694. package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -0
  695. package/dist/gltf/lib/types/gltf-json-schema.js +3 -0
  696. package/dist/gltf/lib/types/gltf-json-schema.js.map +1 -0
  697. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.cjs +19 -0
  698. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.cjs.map +7 -0
  699. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.d.ts +46 -0
  700. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.d.ts.map +1 -0
  701. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.js +5 -0
  702. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.js.map +1 -0
  703. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.cjs +19 -0
  704. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.cjs.map +7 -0
  705. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.d.ts +20 -0
  706. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.d.ts.map +1 -0
  707. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.js +5 -0
  708. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.js.map +1 -0
  709. package/dist/gltf/lib/types/gltf-official-json-schemas.cjs +17840 -0
  710. package/dist/gltf/lib/types/gltf-official-json-schemas.cjs.map +7 -0
  711. package/dist/gltf/lib/types/gltf-official-json-schemas.d.ts +14 -0
  712. package/dist/gltf/lib/types/gltf-official-json-schemas.d.ts.map +1 -0
  713. package/dist/gltf/lib/types/gltf-official-json-schemas.js +17751 -0
  714. package/dist/gltf/lib/types/gltf-official-json-schemas.js.map +1 -0
  715. package/dist/gltf/lib/types/gltf-shape-schema.cjs +19 -0
  716. package/dist/gltf/lib/types/gltf-shape-schema.cjs.map +7 -0
  717. package/dist/gltf/lib/types/gltf-shape-schema.d.ts +49 -0
  718. package/dist/gltf/lib/types/gltf-shape-schema.d.ts.map +1 -0
  719. package/dist/gltf/lib/types/gltf-shape-schema.js +5 -0
  720. package/dist/gltf/lib/types/gltf-shape-schema.js.map +1 -0
  721. package/dist/gltf/lib/types/gltf-types.cjs +19 -0
  722. package/dist/gltf/lib/types/gltf-types.cjs.map +7 -0
  723. package/dist/gltf/lib/types/gltf-types.d.ts +53 -0
  724. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -0
  725. package/dist/gltf/lib/types/gltf-types.js +5 -0
  726. package/dist/gltf/lib/types/gltf-types.js.map +1 -0
  727. package/dist/gltf/lib/types/gltf-vector-topology.cjs +19 -0
  728. package/dist/gltf/lib/types/gltf-vector-topology.cjs.map +7 -0
  729. package/dist/gltf/lib/types/gltf-vector-topology.d.ts +56 -0
  730. package/dist/gltf/lib/types/gltf-vector-topology.d.ts.map +1 -0
  731. package/dist/gltf/lib/types/gltf-vector-topology.js +5 -0
  732. package/dist/gltf/lib/types/gltf-vector-topology.js.map +1 -0
  733. package/dist/gltf/lib/types/gltf-version-zod-schemas.cjs +423 -0
  734. package/dist/gltf/lib/types/gltf-version-zod-schemas.cjs.map +7 -0
  735. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +1129 -0
  736. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -0
  737. package/dist/gltf/lib/types/gltf-version-zod-schemas.js +333 -0
  738. package/dist/gltf/lib/types/gltf-version-zod-schemas.js.map +1 -0
  739. package/dist/gltf/lib/types/gltf-zod-schema.cjs +462 -0
  740. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +7 -0
  741. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +1595 -0
  742. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -0
  743. package/dist/gltf/lib/types/gltf-zod-schema.js +497 -0
  744. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -0
  745. package/dist/gltf/lib/utils/assert.cjs +35 -0
  746. package/dist/gltf/lib/utils/assert.cjs.map +7 -0
  747. package/dist/gltf/lib/utils/assert.d.ts +2 -0
  748. package/dist/gltf/lib/utils/assert.d.ts.map +1 -0
  749. package/dist/gltf/lib/utils/assert.js +12 -0
  750. package/dist/gltf/lib/utils/assert.js.map +1 -0
  751. package/dist/gltf/lib/utils/version.cjs +31 -0
  752. package/dist/gltf/lib/utils/version.cjs.map +7 -0
  753. package/dist/gltf/lib/utils/version.d.ts +2 -0
  754. package/dist/gltf/lib/utils/version.d.ts.map +1 -0
  755. package/dist/gltf/lib/utils/version.js +8 -0
  756. package/dist/gltf/lib/utils/version.js.map +1 -0
  757. package/dist/gltf/libs/README.md +12 -0
  758. package/dist/gltf/libs/meshopt-decoder.d.mts +15 -0
  759. package/dist/gltf/libs/meshopt-decoder.mjs +196 -0
  760. package/dist/gltf/libs/meshoptimizer-LICENSE.md +21 -0
  761. package/dist/gltf/mesh-arrow.cjs +31 -0
  762. package/dist/gltf/mesh-arrow.cjs.map +7 -0
  763. package/dist/gltf/mesh-arrow.d.ts +2 -0
  764. package/dist/gltf/mesh-arrow.d.ts.map +1 -0
  765. package/dist/gltf/mesh-arrow.js +5 -0
  766. package/dist/gltf/mesh-arrow.js.map +1 -0
  767. package/dist/gltf/meshopt/meshopt-decoder.cjs +93 -0
  768. package/dist/gltf/meshopt/meshopt-decoder.cjs.map +7 -0
  769. package/dist/gltf/meshopt/meshopt-decoder.d.ts +78 -0
  770. package/dist/gltf/meshopt/meshopt-decoder.d.ts.map +1 -0
  771. package/dist/gltf/meshopt/meshopt-decoder.js +111 -0
  772. package/dist/gltf/meshopt/meshopt-decoder.js.map +1 -0
  773. package/dist/gltf/meshopt/meshopt-module-loader.cjs +43 -0
  774. package/dist/gltf/meshopt/meshopt-module-loader.cjs.map +7 -0
  775. package/dist/gltf/meshopt/meshopt-module-loader.d.ts +3 -0
  776. package/dist/gltf/meshopt/meshopt-module-loader.d.ts.map +1 -0
  777. package/dist/gltf/meshopt/meshopt-module-loader.js +8 -0
  778. package/dist/gltf/meshopt/meshopt-module-loader.js.map +1 -0
  779. package/dist/gltf/schema.cjs +60 -0
  780. package/dist/gltf/schema.cjs.map +7 -0
  781. package/dist/gltf/schema.d.ts +6 -0
  782. package/dist/gltf/schema.d.ts.map +1 -0
  783. package/dist/gltf/schema.js +10 -0
  784. package/dist/gltf/schema.js.map +1 -0
  785. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_binary_glTF/image.KHR_binary_glTF.schema.json +34 -0
  786. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_binary_glTF/shader.KHR_binary_glTF.schema.json +16 -0
  787. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/glTF.KHR_materials_common.schema.json +272 -0
  788. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.ambient.schema.json +57 -0
  789. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.directional.schema.json +57 -0
  790. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.point.schema.json +72 -0
  791. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.schema.json +258 -0
  792. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.spot.schema.json +82 -0
  793. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/node.KHR_materials_common.schema.json +23 -0
  794. package/dist/gltf/schemas/extensions/1.0/Vendor/CESIUM_RTC/CESIUM_RTC.schema.json +21 -0
  795. package/dist/gltf/schemas/extensions/1.0/Vendor/WEB3D_quantized_attributes/WEB3D_quantized_attributes.accessor.schema.json +40 -0
  796. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness/glTF.KHR_materials_pbrSpecularGlossiness.schema.json +141 -0
  797. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/glTF.KHR_techniques_webgl.schema.json +417 -0
  798. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/material.KHR_techniques_webgl.schema.json +133 -0
  799. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/program.schema.json +97 -0
  800. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/shader.schema.json +109 -0
  801. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/technique.attribute.schema.json +51 -0
  802. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/technique.schema.json +267 -0
  803. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/technique.uniform.schema.json +185 -0
  804. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/uniform.value.schema.json +98 -0
  805. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_xmp/glTF.KHR_xmp.schema.json +61 -0
  806. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_xmp/node.KHR_xmp.schema.json +59 -0
  807. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_animation_pointer/animation.channel.target.KHR_animation_pointer.schema.json +51 -0
  808. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_draco_mesh_compression/mesh.primitive.KHR_draco_mesh_compression.schema.json +67 -0
  809. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_gaussian_splatting/mesh.primitive.KHR_gaussian_splatting.schema.json +100 -0
  810. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/declaration.KHR_interactivity.schema.json +106 -0
  811. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/event.KHR_interactivity.schema.json +90 -0
  812. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/glTF.KHR_interactivity.schema.json +546 -0
  813. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/graph.KHR_interactivity.schema.json +512 -0
  814. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/node.KHR_interactivity.schema.json +183 -0
  815. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/type.KHR_interactivity.schema.json +96 -0
  816. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/variable.KHR_interactivity.schema.json +64 -0
  817. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/glTF.KHR_lights_punctual.schema.json +175 -0
  818. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/light.schema.json +151 -0
  819. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/light.spot.schema.json +58 -0
  820. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/node.KHR_lights_punctual.schema.json +58 -0
  821. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_anisotropy/material.KHR_materials_anisotropy.schema.json +103 -0
  822. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_clearcoat/material.KHR_materials_clearcoat.schema.json +144 -0
  823. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_diffuse_transmission/material.KHR_materials_diffuse_transmission.schema.json +123 -0
  824. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_dispersion/material.KHR_materials_dispersion.schema.json +50 -0
  825. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_emissive_strength/material.KHR_materials_emissive_strength.schema.json +49 -0
  826. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_ior/material.KHR_materials_ior.schema.json +58 -0
  827. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_iridescence/material.KHR_materials_iridescence.schema.json +125 -0
  828. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_sheen/material.KHR_materials_sheen.schema.json +122 -0
  829. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_specular/material.KHR_materials_specular.schema.json +122 -0
  830. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_transmission/material.KHR_materials_transmission.schema.json +97 -0
  831. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_unlit/material.KHR_materials_unlit.schema.json +43 -0
  832. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_variants/glTF.KHR_materials_variants.schema.json +88 -0
  833. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_variants/mesh.primitive.KHR_materials_variants.schema.json +100 -0
  834. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_volume/material.KHR_materials_volume.schema.json +119 -0
  835. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_meshopt_compression/buffer.KHR_meshopt_compression.schema.json +48 -0
  836. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_meshopt_compression/bufferView.KHR_meshopt_compression.schema.json +106 -0
  837. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_node_hoverability/node.KHR_node_hoverability.schema.json +49 -0
  838. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_node_selectability/node.KHR_node_selectability.schema.json +49 -0
  839. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_node_visibility/node.KHR_node_visibility.schema.json +49 -0
  840. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_texture_basisu/texture.KHR_texture_basisu.schema.json +56 -0
  841. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_texture_transform/textureInfo.KHR_texture_transform.schema.json +79 -0
  842. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_xmp_json_ld/KHR_xmp_json_ld.schema.json +59 -0
  843. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_xmp_json_ld/glTF.KHR_xmp_json_ld.schema.json +70 -0
  844. package/dist/gltf/schemas/extensions/2.0/Vendor/ADOBE_materials_clearcoat_specular/glTF.ADOBE_materials_clearcoat_specular.schema.json +105 -0
  845. package/dist/gltf/schemas/extensions/2.0/Vendor/ADOBE_materials_clearcoat_tint/material.ADOBE_materials_clearcoat_tint.schema.json +106 -0
  846. package/dist/gltf/schemas/extensions/2.0/Vendor/ADOBE_materials_thin_transparency/glTF.ADOBE_materials_thin_transparency.schema.json +105 -0
  847. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/articulation.schema.json +177 -0
  848. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/articulation.stage.schema.json +136 -0
  849. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/gltf.AGI_articulations.schema.json +200 -0
  850. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/node.AGI_articulations.schema.json +53 -0
  851. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_stk_metadata/gltf.AGI_stk_metadata.schema.json +81 -0
  852. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_stk_metadata/node.AGI_stk_metadata.schema.json +53 -0
  853. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_stk_metadata/solarPanelGroup.schema.json +59 -0
  854. package/dist/gltf/schemas/extensions/2.0/Vendor/CESIUM_primitive_outline/primitive.CESIUM_primitive_outline.schema.json +56 -0
  855. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_ies/glTF.EXT_lights_ies.schema.json +132 -0
  856. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_ies/lightProfile.schema.json +107 -0
  857. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_ies/node.EXT_lights_ies.schema.json +80 -0
  858. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_image_based/glTF.EXT_lights_image_based.schema.json +145 -0
  859. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_image_based/light.schema.json +121 -0
  860. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_image_based/scene.EXT_lights_image_based.schema.json +58 -0
  861. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/glTF.EXT_mesh_gpu_instancing.schema.json +56 -0
  862. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_manifold/mesh.EXT_mesh_manifold.schema.json +175 -0
  863. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/lineString.schema.json +70 -0
  864. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/primitive.EXT_mesh_primitive_edge_visibility.schema.json +119 -0
  865. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_restart/EXT_mesh_primitive_restart.schema.json +97 -0
  866. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_restart/primitiveGroup.schema.json +72 -0
  867. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_meshopt_compression/buffer.EXT_meshopt_compression.schema.json +48 -0
  868. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_meshopt_compression/bufferView.EXT_meshopt_compression.schema.json +105 -0
  869. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_texture_astc/texture.EXT_texture_astc.schema.json +56 -0
  870. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_texture_webp/glTF.EXT_texture_webp.schema.json +56 -0
  871. package/dist/gltf/schemas/extensions/2.0/Vendor/FB_geometry_metadata/scene.FB_geometry_metadata.schema.json +97 -0
  872. package/dist/gltf/schemas/extensions/2.0/Vendor/FB_geometry_metadata/sceneBounds.schema.json +64 -0
  873. package/dist/gltf/schemas/extensions/2.0/Vendor/GRIFFEL_bim_data/GRIFFEL_bim_data.schema.json +164 -0
  874. package/dist/gltf/schemas/extensions/2.0/Vendor/GRIFFEL_bim_data/glTF.GRIFFEL_bim_data.schema.json +107 -0
  875. package/dist/gltf/schemas/extensions/2.0/Vendor/GRIFFEL_bim_data/node.GRIFFEL_bim_data.schema.json +95 -0
  876. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_accessor_timed/MPEG_accessor_timed.schema.json +85 -0
  877. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_animation_timing/MPEG_animation_timing.schema.json +60 -0
  878. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.listener.schema.json +51 -0
  879. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.reverb.property.schema.json +63 -0
  880. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.reverb.schema.json +107 -0
  881. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.schema.json +276 -0
  882. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.source.schema.json +139 -0
  883. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_buffer_circular/MPEG_buffer_circular.schema.json +80 -0
  884. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.media.alternative.schema.json +110 -0
  885. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.media.alternative.track.schema.json +56 -0
  886. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.media.schema.json +195 -0
  887. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.schema.json +237 -0
  888. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_mesh_linking/MPEG_mesh_linking.schema.json +89 -0
  889. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_scene_dynamic/MPEG_scene_dynamic.schema.json +69 -0
  890. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_texture_video/MPEG_texture_video.schema.json +109 -0
  891. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_viewport_recommended/MPEG_viewport_recommended.schema.json +119 -0
  892. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_viewport_recommended/MPEG_viewport_recommended.viewport.schema.json +96 -0
  893. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_lod/glTF.MSFT_lod.schema.json +51 -0
  894. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_packing_normalRoughnessMetallic/glTF.MSFT_packing_normalRoughnessMetallic.schema.json +62 -0
  895. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_packing_occlusionRoughnessMetallic/glTF.MSFT_packing_occlusionRoughnessMetallic.schema.json +90 -0
  896. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_texture_dds/glTF.MSFT_texture_dds.schema.json +56 -0
  897. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/bsdfMeasurement.schema.json +109 -0
  898. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/functionCall.argument.schema.json +228 -0
  899. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/functionCall.schema.json +292 -0
  900. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/functionCall.type.schema.json +86 -0
  901. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/glTF.NV_materials_mdl.schema.json +451 -0
  902. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/material.NV_materials_mdl.schema.json +60 -0
  903. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/module.schema.json +114 -0
  904. package/dist/gltf/unbundled.cjs +34 -0
  905. package/dist/gltf/unbundled.cjs.map +7 -0
  906. package/dist/gltf/unbundled.d.ts +5 -0
  907. package/dist/gltf/unbundled.d.ts.map +1 -0
  908. package/dist/gltf/unbundled.js +6 -0
  909. package/dist/gltf/unbundled.js.map +1 -0
  910. package/dist/gltf/webp/webp.cjs +53 -0
  911. package/dist/gltf/webp/webp.cjs.map +7 -0
  912. package/dist/gltf/webp/webp.d.ts +7 -0
  913. package/dist/gltf/webp/webp.d.ts.map +1 -0
  914. package/dist/gltf/webp/webp.js +38 -0
  915. package/dist/gltf/webp/webp.js.map +1 -0
  916. package/dist/gltf-loader-types.cjs +73 -0
  917. package/dist/gltf-loader-types.cjs.map +7 -0
  918. package/dist/gltf-loader-types.d.ts +2 -0
  919. package/dist/gltf-loader-types.d.ts.map +1 -0
  920. package/dist/gltf-loader-types.js +2 -0
  921. package/dist/gltf-loader-types.js.map +1 -0
  922. package/dist/gltf-loader.cjs +48 -0
  923. package/dist/gltf-loader.cjs.map +7 -0
  924. package/dist/gltf-loader.d.ts +2 -0
  925. package/dist/gltf-loader.d.ts.map +1 -0
  926. package/dist/gltf-loader.js +2 -0
  927. package/dist/gltf-loader.js.map +1 -0
  928. package/dist/gltf-source.cjs +238 -0
  929. package/dist/gltf-source.cjs.map +7 -0
  930. package/dist/gltf-source.d.ts +2 -0
  931. package/dist/gltf-source.d.ts.map +1 -0
  932. package/dist/gltf-source.js +2 -0
  933. package/dist/gltf-source.js.map +1 -0
  934. package/dist/gltf-writer.cjs +69 -0
  935. package/dist/gltf-writer.cjs.map +7 -0
  936. package/dist/gltf-writer.d.ts +2 -0
  937. package/dist/gltf-writer.d.ts.map +1 -0
  938. package/dist/gltf-writer.js +2 -0
  939. package/dist/gltf-writer.js.map +1 -0
  940. package/dist/index.cjs +56 -809
  941. package/dist/index.cjs.map +4 -3
  942. package/dist/index.d.ts +17 -2
  943. package/dist/index.d.ts.map +1 -1
  944. package/dist/index.js +14 -1
  945. package/dist/index.js.map +1 -1
  946. package/dist/libs/DRACO-LICENSE +252 -0
  947. package/dist/libs/README.md +20 -0
  948. package/dist/libs/draco_decoder.js +34 -0
  949. package/dist/libs/draco_decoder.mjs +37 -0
  950. package/dist/libs/draco_decoder.wasm +0 -0
  951. package/dist/libs/draco_decoder_gltf.wasm +0 -0
  952. package/dist/libs/draco_encoder.js +98 -0
  953. package/dist/libs/draco_encoder.mjs +101 -0
  954. package/dist/libs/draco_encoder.wasm +0 -0
  955. package/dist/libs/draco_wasm_wrapper.js +117 -0
  956. package/dist/libs/draco_wasm_wrapper.mjs +120 -0
  957. package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
  958. package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
  959. package/dist/mtl-loader-types.cjs +64 -0
  960. package/dist/mtl-loader-types.cjs.map +7 -0
  961. package/dist/mtl-loader-types.d.ts +2 -0
  962. package/dist/mtl-loader-types.d.ts.map +1 -0
  963. package/dist/mtl-loader-types.js +2 -0
  964. package/dist/mtl-loader-types.js.map +1 -0
  965. package/dist/mtl-loader.cjs +47 -0
  966. package/dist/mtl-loader.cjs.map +7 -0
  967. package/dist/mtl-loader.d.ts +2 -0
  968. package/dist/mtl-loader.d.ts.map +1 -0
  969. package/dist/mtl-loader.js +2 -0
  970. package/dist/mtl-loader.js.map +1 -0
  971. package/dist/obj/bundled.cjs +44 -0
  972. package/dist/obj/bundled.cjs.map +7 -0
  973. package/dist/obj/bundled.d.ts +7 -0
  974. package/dist/obj/bundled.d.ts.map +1 -0
  975. package/dist/obj/bundled.js +8 -0
  976. package/dist/obj/bundled.js.map +1 -0
  977. package/dist/obj/index.cjs +49 -0
  978. package/dist/obj/index.cjs.map +7 -0
  979. package/dist/obj/index.d.ts +13 -0
  980. package/dist/obj/index.d.ts.map +1 -0
  981. package/dist/obj/index.js +16 -0
  982. package/dist/obj/index.js.map +1 -0
  983. package/dist/obj/lib/get-obj-schema.cjs +60 -0
  984. package/dist/obj/lib/get-obj-schema.cjs.map +7 -0
  985. package/dist/obj/lib/get-obj-schema.d.ts +4 -0
  986. package/dist/obj/lib/get-obj-schema.d.ts.map +1 -0
  987. package/dist/obj/lib/get-obj-schema.js +36 -0
  988. package/dist/obj/lib/get-obj-schema.js.map +1 -0
  989. package/dist/obj/lib/obj-types.cjs +2 -0
  990. package/dist/obj/lib/obj-types.cjs.map +7 -0
  991. package/dist/obj/lib/obj-types.d.ts +1 -0
  992. package/dist/obj/lib/obj-types.d.ts.map +1 -0
  993. package/dist/obj/lib/obj-types.js +5 -0
  994. package/dist/obj/lib/obj-types.js.map +1 -0
  995. package/dist/obj/lib/parse-mtl.cjs +97 -0
  996. package/dist/obj/lib/parse-mtl.cjs.map +7 -0
  997. package/dist/obj/lib/parse-mtl.d.ts +34 -0
  998. package/dist/obj/lib/parse-mtl.d.ts.map +1 -0
  999. package/dist/obj/lib/parse-mtl.js +200 -0
  1000. package/dist/obj/lib/parse-mtl.js.map +1 -0
  1001. package/dist/obj/lib/parse-obj-meshes.cjs +389 -0
  1002. package/dist/obj/lib/parse-obj-meshes.cjs.map +7 -0
  1003. package/dist/obj/lib/parse-obj-meshes.d.ts +5 -0
  1004. package/dist/obj/lib/parse-obj-meshes.d.ts.map +1 -0
  1005. package/dist/obj/lib/parse-obj-meshes.js +441 -0
  1006. package/dist/obj/lib/parse-obj-meshes.js.map +1 -0
  1007. package/dist/obj/lib/parse-obj.cjs +96 -0
  1008. package/dist/obj/lib/parse-obj.cjs.map +7 -0
  1009. package/dist/obj/lib/parse-obj.d.ts +3 -0
  1010. package/dist/obj/lib/parse-obj.d.ts.map +1 -0
  1011. package/dist/obj/lib/parse-obj.js +72 -0
  1012. package/dist/obj/lib/parse-obj.js.map +1 -0
  1013. package/dist/obj/mtl-format.cjs +39 -0
  1014. package/dist/obj/mtl-format.cjs.map +7 -0
  1015. package/dist/obj/mtl-format.d.ts +14 -0
  1016. package/dist/obj/mtl-format.d.ts.map +1 -0
  1017. package/dist/obj/mtl-format.js +17 -0
  1018. package/dist/obj/mtl-format.js.map +1 -0
  1019. package/dist/obj/mtl-loader-types.cjs +62 -0
  1020. package/dist/obj/mtl-loader-types.cjs.map +7 -0
  1021. package/dist/obj/mtl-loader-types.d.ts +73 -0
  1022. package/dist/obj/mtl-loader-types.d.ts.map +1 -0
  1023. package/dist/obj/mtl-loader-types.js +34 -0
  1024. package/dist/obj/mtl-loader-types.js.map +1 -0
  1025. package/dist/obj/mtl-loader.cjs +45 -0
  1026. package/dist/obj/mtl-loader.cjs.map +7 -0
  1027. package/dist/obj/mtl-loader.d.ts +51 -0
  1028. package/dist/obj/mtl-loader.d.ts.map +1 -0
  1029. package/dist/obj/mtl-loader.js +25 -0
  1030. package/dist/obj/mtl-loader.js.map +1 -0
  1031. package/dist/obj/obj-format.cjs +39 -0
  1032. package/dist/obj/obj-format.cjs.map +7 -0
  1033. package/dist/obj/obj-format.d.ts +13 -0
  1034. package/dist/obj/obj-format.d.ts.map +1 -0
  1035. package/dist/obj/obj-format.js +16 -0
  1036. package/dist/obj/obj-format.js.map +1 -0
  1037. package/dist/obj/obj-loader-types.cjs +69 -0
  1038. package/dist/obj/obj-loader-types.cjs.map +7 -0
  1039. package/dist/obj/obj-loader-types.d.ts +112 -0
  1040. package/dist/obj/obj-loader-types.d.ts.map +1 -0
  1041. package/dist/obj/obj-loader-types.js +41 -0
  1042. package/dist/obj/obj-loader-types.js.map +1 -0
  1043. package/dist/obj/obj-loader.cjs +161 -0
  1044. package/dist/obj/obj-loader.cjs.map +7 -0
  1045. package/dist/obj/obj-loader.d.ts +40 -0
  1046. package/dist/obj/obj-loader.d.ts.map +1 -0
  1047. package/dist/obj/obj-loader.js +142 -0
  1048. package/dist/obj/obj-loader.js.map +1 -0
  1049. package/dist/obj/obj-writer.cjs +165 -0
  1050. package/dist/obj/obj-writer.cjs.map +7 -0
  1051. package/dist/obj/obj-writer.d.ts +35 -0
  1052. package/dist/obj/obj-writer.d.ts.map +1 -0
  1053. package/dist/obj/obj-writer.js +123 -0
  1054. package/dist/obj/obj-writer.js.map +1 -0
  1055. package/dist/obj/unbundled.cjs +44 -0
  1056. package/dist/obj/unbundled.cjs.map +7 -0
  1057. package/dist/obj/unbundled.d.ts +7 -0
  1058. package/dist/obj/unbundled.d.ts.map +1 -0
  1059. package/dist/obj/unbundled.js +8 -0
  1060. package/dist/obj/unbundled.js.map +1 -0
  1061. package/dist/obj/workers/obj-worker.cjs +23 -0
  1062. package/dist/obj/workers/obj-worker.cjs.map +7 -0
  1063. package/dist/obj/workers/obj-worker.d.ts +2 -0
  1064. package/dist/obj/workers/obj-worker.d.ts.map +1 -0
  1065. package/dist/obj/workers/obj-worker.js +23 -0
  1066. package/dist/obj/workers/obj-worker.js.map +1 -0
  1067. package/dist/obj-loader-types.cjs +71 -0
  1068. package/dist/obj-loader-types.cjs.map +7 -0
  1069. package/dist/obj-loader-types.d.ts +2 -0
  1070. package/dist/obj-loader-types.d.ts.map +1 -0
  1071. package/dist/obj-loader-types.js +2 -0
  1072. package/dist/obj-loader-types.js.map +1 -0
  1073. package/dist/obj-loader.cjs +163 -0
  1074. package/dist/obj-loader.cjs.map +7 -0
  1075. package/dist/obj-loader.d.ts +2 -0
  1076. package/dist/obj-loader.d.ts.map +1 -0
  1077. package/dist/obj-loader.js +2 -0
  1078. package/dist/obj-loader.js.map +1 -0
  1079. package/dist/obj-worker.js +17742 -0
  1080. package/dist/obj-writer.cjs +167 -0
  1081. package/dist/obj-writer.cjs.map +7 -0
  1082. package/dist/obj-writer.d.ts +2 -0
  1083. package/dist/obj-writer.d.ts.map +1 -0
  1084. package/dist/obj-writer.js +2 -0
  1085. package/dist/obj-writer.js.map +1 -0
  1086. package/dist/usd/index.cjs +31 -0
  1087. package/dist/usd/index.cjs.map +7 -0
  1088. package/dist/usd/index.d.ts +3 -0
  1089. package/dist/usd/index.d.ts.map +1 -0
  1090. package/dist/usd/index.js +5 -0
  1091. package/dist/usd/index.js.map +1 -0
  1092. package/dist/usd/lib/parse-usd.cjs +294 -0
  1093. package/dist/usd/lib/parse-usd.cjs.map +7 -0
  1094. package/dist/{lib → usd/lib}/parse-usd.d.ts +1 -1
  1095. package/dist/usd/lib/parse-usd.d.ts.map +1 -0
  1096. package/dist/usd/lib/parse-usd.js.map +1 -0
  1097. package/dist/usd/lib/parse-usda.cjs +406 -0
  1098. package/dist/usd/lib/parse-usda.cjs.map +7 -0
  1099. package/dist/usd/lib/parse-usda.d.ts.map +1 -0
  1100. package/dist/usd/lib/parse-usda.js.map +1 -0
  1101. package/dist/usd/lib/parse-usdz.cjs +76 -0
  1102. package/dist/usd/lib/parse-usdz.cjs.map +7 -0
  1103. package/dist/usd/lib/parse-usdz.d.ts.map +1 -0
  1104. package/dist/usd/lib/parse-usdz.js.map +1 -0
  1105. package/dist/usd/lib/usd-types.cjs +19 -0
  1106. package/dist/usd/lib/usd-types.cjs.map +7 -0
  1107. package/dist/{lib → usd/lib}/usd-types.d.ts +1 -1
  1108. package/dist/usd/lib/usd-types.d.ts.map +1 -0
  1109. package/dist/usd/lib/usd-types.js.map +1 -0
  1110. package/dist/usd/usd-loader-types.cjs +67 -0
  1111. package/dist/usd/usd-loader-types.cjs.map +7 -0
  1112. package/dist/usd/usd-loader-types.d.ts +50 -0
  1113. package/dist/usd/usd-loader-types.d.ts.map +1 -0
  1114. package/dist/usd/usd-loader-types.js +35 -0
  1115. package/dist/usd/usd-loader-types.js.map +1 -0
  1116. package/dist/usd/usd-loader.cjs +41 -0
  1117. package/dist/usd/usd-loader.cjs.map +7 -0
  1118. package/dist/usd/usd-loader.d.ts +30 -0
  1119. package/dist/usd/usd-loader.d.ts.map +1 -0
  1120. package/dist/usd/usd-loader.js +17 -0
  1121. package/dist/usd/usd-loader.js.map +1 -0
  1122. package/dist/usd-loader-types.cjs +69 -0
  1123. package/dist/usd-loader-types.cjs.map +7 -0
  1124. package/dist/usd-loader-types.d.ts +1 -49
  1125. package/dist/usd-loader-types.d.ts.map +1 -1
  1126. package/dist/usd-loader-types.js +1 -34
  1127. package/dist/usd-loader-types.js.map +1 -1
  1128. package/dist/usd-loader.cjs +43 -0
  1129. package/dist/usd-loader.cjs.map +7 -0
  1130. package/dist/usd-loader.d.ts +1 -29
  1131. package/dist/usd-loader.d.ts.map +1 -1
  1132. package/dist/usd-loader.js +1 -16
  1133. package/dist/usd-loader.js.map +1 -1
  1134. package/package.json +241 -11
  1135. package/src/draco/bundled.ts +10 -0
  1136. package/src/draco/draco-format.ts +20 -0
  1137. package/src/draco/draco-javascript-loader-with-parser.ts +26 -0
  1138. package/src/draco/draco-libraries.ts +35 -0
  1139. package/src/draco/draco-library-options.ts +76 -0
  1140. package/src/draco/draco-loader-options.ts +33 -0
  1141. package/src/draco/draco-loader-types.ts +78 -0
  1142. package/src/draco/draco-loader.ts +45 -0
  1143. package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
  1144. package/src/draco/draco-writer.ts +252 -0
  1145. package/src/draco/draco3d/draco3d-types.ts +498 -0
  1146. package/src/draco/draco3d-loader-with-parser.ts +34 -0
  1147. package/src/draco/index.ts +46 -0
  1148. package/src/draco/lib/draco-builder.ts +935 -0
  1149. package/src/draco/lib/draco-library-loader.ts +38 -0
  1150. package/src/draco/lib/draco-module-loader.ts +370 -0
  1151. package/src/draco/lib/draco-parser.ts +776 -0
  1152. package/src/draco/lib/draco-types.ts +72 -0
  1153. package/src/draco/lib/parse-draco.ts +51 -0
  1154. package/src/draco/lib/utils/get-draco-schema.ts +65 -0
  1155. package/src/draco/lib/utils/version.ts +8 -0
  1156. package/src/draco/libs/DRACO-LICENSE +252 -0
  1157. package/src/draco/libs/README.md +20 -0
  1158. package/src/draco/libs/draco_decoder.js +34 -0
  1159. package/src/draco/libs/draco_decoder.wasm +0 -0
  1160. package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
  1161. package/src/draco/libs/draco_encoder.js +98 -0
  1162. package/src/draco/libs/draco_encoder.wasm +0 -0
  1163. package/src/draco/libs/draco_wasm_wrapper.js +117 -0
  1164. package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
  1165. package/src/draco/unbundled.ts +6 -0
  1166. package/src/draco/workers/draco-worker-node.ts +10 -0
  1167. package/src/draco/workers/draco-worker.ts +8 -0
  1168. package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
  1169. package/src/draco/workers/draco-writer-worker-node.ts +13 -0
  1170. package/src/draco/workers/draco-writer-worker.ts +11 -0
  1171. package/src/draco-javascript-loader.ts +2 -0
  1172. package/src/draco-library-options.ts +6 -0
  1173. package/src/draco-loader-types.ts +2 -0
  1174. package/src/draco-loader.ts +2 -0
  1175. package/src/draco-wasm-loader.ts +2 -0
  1176. package/src/draco-writer.ts +2 -0
  1177. package/src/draco3d-loader.ts +2 -0
  1178. package/src/glb-loader-types.ts +1 -0
  1179. package/src/glb-loader.ts +1 -0
  1180. package/src/glb-writer.ts +1 -0
  1181. package/src/gltf/bundled.ts +8 -0
  1182. package/src/gltf/glb-loader-types.ts +40 -0
  1183. package/src/gltf/glb-loader.ts +42 -0
  1184. package/src/gltf/glb-writer.ts +46 -0
  1185. package/src/gltf/gltf-format.ts +32 -0
  1186. package/src/gltf/gltf-loader-types.ts +52 -0
  1187. package/src/gltf/gltf-loader.ts +49 -0
  1188. package/src/gltf/gltf-source.ts +244 -0
  1189. package/src/gltf/gltf-writer.ts +62 -0
  1190. package/src/gltf/index.ts +270 -0
  1191. package/src/gltf/lib/api/append-gltf-v1-buffer-data.ts +61 -0
  1192. package/src/gltf/lib/api/bake-gltf-v1-bind-shapes.ts +178 -0
  1193. package/src/gltf/lib/api/clean-gltf-v1-fields.ts +94 -0
  1194. package/src/gltf/lib/api/convert-gltf-v1-accessors.ts +170 -0
  1195. package/src/gltf/lib/api/convert-gltf-v1-animations.ts +79 -0
  1196. package/src/gltf/lib/api/convert-gltf-v1-materials.ts +351 -0
  1197. package/src/gltf/lib/api/convert-gltf-v1-matrix-nodes.ts +116 -0
  1198. package/src/gltf/lib/api/convert-gltf-v1-skin-scenes.ts +88 -0
  1199. package/src/gltf/lib/api/convert-gltf-v1-skins.ts +217 -0
  1200. package/src/gltf/lib/api/gltf-accessors.ts +87 -0
  1201. package/src/gltf/lib/api/gltf-culling.ts +80 -0
  1202. package/src/gltf/lib/api/gltf-extension-data.ts +125 -0
  1203. package/src/gltf/lib/api/gltf-extensions.ts +133 -0
  1204. package/src/gltf/lib/api/gltf-iterator.ts +1469 -0
  1205. package/src/gltf/lib/api/gltf-mesh-arrow.ts +410 -0
  1206. package/src/gltf/lib/api/gltf-scenegraph.ts +741 -0
  1207. package/src/gltf/lib/api/normalize-gltf-v1.ts +603 -0
  1208. package/src/gltf/lib/api/repack-gltf-v1-accessors.ts +566 -0
  1209. package/src/gltf/lib/api/validate-gltf-v1-buffers.ts +139 -0
  1210. package/src/gltf/lib/api/validate-gltf-v1-cameras.ts +40 -0
  1211. package/src/gltf/lib/api/validate-gltf-v1-geometry.ts +156 -0
  1212. package/src/gltf/lib/api/validate-gltf-v1-payloads.ts +315 -0
  1213. package/src/gltf/lib/encoders/encode-glb.ts +198 -0
  1214. package/src/gltf/lib/encoders/encode-gltf-draco.ts +239 -0
  1215. package/src/gltf/lib/encoders/encode-gltf.ts +45 -0
  1216. package/src/gltf/lib/extensions/EXT_mesh_features.ts +240 -0
  1217. package/src/gltf/lib/extensions/EXT_mesh_polygon.ts +172 -0
  1218. package/src/gltf/lib/extensions/EXT_meshopt_compression.ts +33 -0
  1219. package/src/gltf/lib/extensions/EXT_primitive_voxels.ts +85 -0
  1220. package/src/gltf/lib/extensions/EXT_structural_metadata.ts +1130 -0
  1221. package/src/gltf/lib/extensions/EXT_texture_avif.ts +56 -0
  1222. package/src/gltf/lib/extensions/EXT_texture_webp.ts +46 -0
  1223. package/src/gltf/lib/extensions/KHR_audio_emitter.ts +136 -0
  1224. package/src/gltf/lib/extensions/KHR_binary_gltf.ts +56 -0
  1225. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +170 -0
  1226. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +239 -0
  1227. package/src/gltf/lib/extensions/KHR_mesh_primitive_restart.ts +108 -0
  1228. package/src/gltf/lib/extensions/KHR_meshopt_compression.ts +32 -0
  1229. package/src/gltf/lib/extensions/KHR_texture_basisu.ts +39 -0
  1230. package/src/gltf/lib/extensions/KHR_texture_transform.ts +385 -0
  1231. package/src/gltf/lib/extensions/MPEG_audio_spatial.ts +59 -0
  1232. package/src/gltf/lib/extensions/deprecated/EXT_feature_metadata.ts +479 -0
  1233. package/src/gltf/lib/extensions/deprecated/KHR_lights_punctual.ts +67 -0
  1234. package/src/gltf/lib/extensions/deprecated/KHR_materials_unlit.ts +52 -0
  1235. package/src/gltf/lib/extensions/deprecated/KHR_techniques_webgl.ts +105 -0
  1236. package/src/gltf/lib/extensions/meshopt-compression.ts +189 -0
  1237. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +473 -0
  1238. package/src/gltf/lib/gltf-utils/get-typed-array.ts +215 -0
  1239. package/src/gltf/lib/gltf-utils/gltf-attribute-utils.ts +85 -0
  1240. package/src/gltf/lib/gltf-utils/gltf-constants.ts +53 -0
  1241. package/src/gltf/lib/gltf-utils/gltf-utils.ts +162 -0
  1242. package/src/gltf/lib/gltf-utils/resolve-gltf-file.ts +95 -0
  1243. package/src/gltf/lib/gltf-utils/resolve-url.ts +48 -0
  1244. package/src/gltf/lib/parsers/parse-glb.ts +299 -0
  1245. package/src/gltf/lib/parsers/parse-gltf.ts +570 -0
  1246. package/src/gltf/lib/types/glb-types.ts +44 -0
  1247. package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +127 -0
  1248. package/src/gltf/lib/types/gltf-audio-extension-schemas.ts +167 -0
  1249. package/src/gltf/lib/types/gltf-ext-feature-metadata-schema.ts +474 -0
  1250. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +46 -0
  1251. package/src/gltf/lib/types/gltf-ext-mesh-features-schema.ts +56 -0
  1252. package/src/gltf/lib/types/gltf-ext-structural-metadata-schema.ts +387 -0
  1253. package/src/gltf/lib/types/gltf-ext-vector-voxel-schema.ts +49 -0
  1254. package/src/gltf/lib/types/gltf-extension-schemas.ts +87 -0
  1255. package/src/gltf/lib/types/gltf-interactivity.ts +168 -0
  1256. package/src/gltf/lib/types/gltf-json-schema.ts +947 -0
  1257. package/src/gltf/lib/types/gltf-khr-audio-emitter-schema.ts +60 -0
  1258. package/src/gltf/lib/types/gltf-mpeg-audio-spatial-schema.ts +31 -0
  1259. package/src/gltf/lib/types/gltf-official-json-schemas.ts +18619 -0
  1260. package/src/gltf/lib/types/gltf-shape-schema.ts +47 -0
  1261. package/src/gltf/lib/types/gltf-types.ts +90 -0
  1262. package/src/gltf/lib/types/gltf-vector-topology.ts +65 -0
  1263. package/src/gltf/lib/types/gltf-version-zod-schemas.ts +511 -0
  1264. package/src/gltf/lib/types/gltf-zod-schema.ts +545 -0
  1265. package/src/gltf/lib/utils/assert.ts +12 -0
  1266. package/src/gltf/lib/utils/version.ts +8 -0
  1267. package/src/gltf/libs/README.md +12 -0
  1268. package/src/gltf/libs/meshopt-decoder.d.mts +15 -0
  1269. package/src/gltf/libs/meshopt-decoder.mjs +196 -0
  1270. package/src/gltf/libs/meshoptimizer-LICENSE.md +21 -0
  1271. package/src/gltf/mesh-arrow.ts +11 -0
  1272. package/src/gltf/meshopt/meshopt-decoder.ts +185 -0
  1273. package/src/gltf/meshopt/meshopt-encoder.ts.disabled +409 -0
  1274. package/src/gltf/meshopt/meshopt-module-loader.ts +8 -0
  1275. package/src/gltf/schema.ts +24 -0
  1276. package/src/gltf/unbundled.ts +8 -0
  1277. package/src/gltf/webp/webp.ts +45 -0
  1278. package/src/gltf-loader-types.ts +1 -0
  1279. package/src/gltf-loader.ts +1 -0
  1280. package/src/gltf-source.ts +1 -0
  1281. package/src/gltf-writer.ts +1 -0
  1282. package/src/index.ts +18 -11
  1283. package/src/mtl-loader-types.ts +1 -0
  1284. package/src/mtl-loader.ts +1 -0
  1285. package/src/obj/bundled.ts +16 -0
  1286. package/src/obj/index.ts +23 -0
  1287. package/src/obj/lib/get-obj-schema.ts +45 -0
  1288. package/src/obj/lib/obj-types.ts +3 -0
  1289. package/src/obj/lib/parse-mtl.ts +248 -0
  1290. package/src/obj/lib/parse-obj-meshes.ts +530 -0
  1291. package/src/obj/lib/parse-obj.ts +88 -0
  1292. package/src/obj/mtl-format.ts +19 -0
  1293. package/src/obj/mtl-loader-types.ts +46 -0
  1294. package/src/obj/mtl-loader.ts +37 -0
  1295. package/src/obj/obj-format.ts +18 -0
  1296. package/src/obj/obj-loader-types.ts +75 -0
  1297. package/src/obj/obj-loader.ts +203 -0
  1298. package/src/obj/obj-writer.ts +190 -0
  1299. package/src/obj/unbundled.ts +10 -0
  1300. package/src/obj/workers/obj-worker.ts +24 -0
  1301. package/src/obj-loader-types.ts +1 -0
  1302. package/src/obj-loader.ts +1 -0
  1303. package/src/obj-writer.ts +1 -0
  1304. package/src/usd/index.ts +15 -0
  1305. package/src/{lib → usd/lib}/parse-usd.ts +1 -1
  1306. package/src/{lib → usd/lib}/usd-types.ts +1 -1
  1307. package/src/usd/usd-loader-types.ts +40 -0
  1308. package/src/usd/usd-loader.ts +26 -0
  1309. package/src/usd-loader-types.ts +1 -40
  1310. package/src/usd-loader.ts +1 -26
  1311. package/third-party-licenses/gltf-loader-ts-LICENSE +21 -0
  1312. package/third-party-licenses/three-LICENSE +21 -0
  1313. package/dist/lib/parse-usd.d.ts.map +0 -1
  1314. package/dist/lib/parse-usd.js.map +0 -1
  1315. package/dist/lib/parse-usda.d.ts.map +0 -1
  1316. package/dist/lib/parse-usda.js.map +0 -1
  1317. package/dist/lib/parse-usdz.d.ts.map +0 -1
  1318. package/dist/lib/parse-usdz.js.map +0 -1
  1319. package/dist/lib/usd-types.d.ts.map +0 -1
  1320. package/dist/lib/usd-types.js.map +0 -1
  1321. /package/dist/{lib → usd/lib}/parse-usd.js +0 -0
  1322. /package/dist/{lib → usd/lib}/parse-usda.d.ts +0 -0
  1323. /package/dist/{lib → usd/lib}/parse-usda.js +0 -0
  1324. /package/dist/{lib → usd/lib}/parse-usdz.d.ts +0 -0
  1325. /package/dist/{lib → usd/lib}/parse-usdz.js +0 -0
  1326. /package/dist/{lib → usd/lib}/usd-types.js +0 -0
  1327. /package/src/{lib → usd/lib}/parse-usda.ts +0 -0
  1328. /package/src/{lib → usd/lib}/parse-usdz.ts +0 -0
@@ -0,0 +1,1469 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {BigTypedArray} from '@loaders.gl/core/schema';
6
+ import type {
7
+ GLTF,
8
+ GLTFAccessor,
9
+ GLTFAnimation,
10
+ GLTFAnimationChannel,
11
+ GLTFAnimationChannelTarget,
12
+ GLTFAnimationSampler,
13
+ GLTFBuffer,
14
+ GLTFBufferView,
15
+ GLTFCamera,
16
+ GLTFExternalAsset,
17
+ GLTFFile,
18
+ GLTFImage,
19
+ GLTFMaterial,
20
+ GLTFMaterialNormalTextureInfo,
21
+ GLTFMaterialOcclusionTextureInfo,
22
+ GLTFMesh,
23
+ GLTFMeshPrimitive,
24
+ GLTFNode,
25
+ GLTFSampler,
26
+ GLTFScene,
27
+ GLTFSkin,
28
+ GLTFTexture,
29
+ GLTFTextureInfo
30
+ } from '../types/gltf-json-schema';
31
+ import type {GLTFWithBuffers} from '../types/gltf-types';
32
+ import {
33
+ getTypedArrayForAccessor as getAccessorTypedArray,
34
+ getTypedArrayForBufferView as getBufferViewTypedArray,
35
+ getTypedArrayForImageData as getImageTypedArray
36
+ } from '../gltf-utils/get-typed-array';
37
+ import {getAccessorTypeFromSize} from '../gltf-utils/gltf-utils';
38
+
39
+ /** String tag identifying a raw glTF object registered with an iterator. */
40
+ export type GLTFIteratorType =
41
+ | 'accessor'
42
+ | 'animation'
43
+ | 'animationChannel'
44
+ | 'animationChannelTarget'
45
+ | 'animationSampler'
46
+ | 'buffer'
47
+ | 'bufferView'
48
+ | 'camera'
49
+ | 'externalAsset'
50
+ | 'file'
51
+ | 'image'
52
+ | 'material'
53
+ | 'mesh'
54
+ | 'primitive'
55
+ | 'node'
56
+ | 'sampler'
57
+ | 'scene'
58
+ | 'skin'
59
+ | 'texture'
60
+ | 'textureInfo';
61
+
62
+ /** Top-level glTF collection wrapper tags. */
63
+ type GLTFCollectionType = Exclude<
64
+ GLTFIteratorType,
65
+ 'animationChannel' | 'animationChannelTarget' | 'animationSampler' | 'primitive' | 'textureInfo'
66
+ >;
67
+
68
+ /** Minimum raw object shape required by extension helpers. */
69
+ type GLTFIteratorData = {
70
+ extensions?: Record<string, any>;
71
+ };
72
+
73
+ /** Base class for a lightweight view of one raw glTF object. */
74
+ abstract class GLTFObjectIterator<DataT extends GLTFIteratorData, TypeT extends GLTFIteratorType> {
75
+ /** Original glTF container. */
76
+ readonly gltf: GLTFWithBuffers;
77
+
78
+ /** Stable tag identifying the wrapped object type. */
79
+ readonly type: TypeT;
80
+
81
+ /** Index in the object's top-level or parent-local collection. */
82
+ readonly index: number;
83
+
84
+ /** Exact unmodified object from the source glTF JSON. */
85
+ readonly data: DataT;
86
+
87
+ /** Human-readable path to the raw object. */
88
+ readonly path: string;
89
+
90
+ /** Root iterator used to resolve linked indices. */
91
+ protected readonly iterator: GLTFIterator;
92
+
93
+ /** Create a lightweight wrapper for a raw glTF object. */
94
+ constructor(iterator: GLTFIterator, type: TypeT, index: number, data: DataT, path: string) {
95
+ this.iterator = iterator;
96
+ this.gltf = iterator.gltf;
97
+ this.type = type;
98
+ this.index = index;
99
+ this.data = data;
100
+ this.path = path;
101
+ }
102
+ }
103
+
104
+ /** Base class for an object stored in a parent-local array or property. */
105
+ abstract class GLTFNestedObjectIterator<
106
+ DataT extends GLTFIteratorData,
107
+ TypeT extends GLTFIteratorType,
108
+ ParentT extends GLTFObjectIterator<GLTFIteratorData, GLTFIteratorType>
109
+ > extends GLTFObjectIterator<DataT, TypeT> {
110
+ /** Wrapper containing this nested object. */
111
+ readonly parent: ParentT;
112
+
113
+ /** Create a wrapper for a parent-local raw glTF object. */
114
+ constructor(
115
+ iterator: GLTFIterator,
116
+ type: TypeT,
117
+ index: number,
118
+ data: DataT,
119
+ path: string,
120
+ parent: ParentT
121
+ ) {
122
+ super(iterator, type, index, data, path);
123
+ this.parent = parent;
124
+ }
125
+ }
126
+
127
+ /** Metadata privately associated with a raw glTF object by an iterator. */
128
+ export interface GLTFIteratorMetadata {
129
+ readonly gltf: GLTFWithBuffers;
130
+ readonly type: GLTFIteratorType;
131
+ readonly index: number;
132
+ readonly parent?: GLTFIteratorData;
133
+ readonly path: string;
134
+ }
135
+
136
+ /** Lazily resolved standard relationships for one raw glTF object. */
137
+ export type GLTFIteratorReferences = object;
138
+
139
+ /** References reachable from a texture wrapper. */
140
+ export interface GLTFTextureReferences {
141
+ readonly sampler: GLTFSampler | undefined;
142
+ readonly source: GLTFImage | undefined;
143
+ }
144
+
145
+ /** References reachable from a node wrapper. */
146
+ export interface GLTFNodeReferences {
147
+ readonly camera: GLTFCamera | undefined;
148
+ readonly children: IterableIterator<GLTFNode>;
149
+ readonly skin: GLTFSkin | undefined;
150
+ readonly mesh: GLTFMesh | undefined;
151
+ readonly externalAsset: GLTFExternalAsset | undefined;
152
+ }
153
+
154
+ /** References reachable from a mesh wrapper. */
155
+ export interface GLTFMeshReferences {
156
+ readonly primitives: IterableIterator<GLTFMeshPrimitive>;
157
+ }
158
+
159
+ /** References reachable from a scene wrapper. */
160
+ export interface GLTFSceneReferences {
161
+ readonly nodes: IterableIterator<GLTFNode>;
162
+ }
163
+
164
+ /** References reachable from a mesh primitive wrapper. */
165
+ export interface GLTFMeshPrimitiveReferences {
166
+ readonly attributes: ReadonlyMap<string, GLTFAccessor>;
167
+ readonly indices: GLTFAccessor | undefined;
168
+ readonly material: GLTFMaterial | undefined;
169
+ readonly targets: ReadonlyArray<ReadonlyMap<string, GLTFAccessor>>;
170
+ }
171
+
172
+ /** References reachable from a texture-info wrapper. */
173
+ export interface GLTFTextureInfoReferences {
174
+ readonly texture: GLTFTexture;
175
+ }
176
+
177
+ /** References reachable from a material wrapper. */
178
+ export interface GLTFMaterialReferences {
179
+ readonly baseColorTexture: GLTFTextureInfo | undefined;
180
+ readonly metallicRoughnessTexture: GLTFTextureInfo | undefined;
181
+ readonly normalTexture: GLTFMaterialNormalTextureInfo | undefined;
182
+ readonly occlusionTexture: GLTFMaterialOcclusionTextureInfo | undefined;
183
+ readonly emissiveTexture: GLTFTextureInfo | undefined;
184
+ readonly textures: IterableIterator<
185
+ GLTFTextureInfo | GLTFMaterialNormalTextureInfo | GLTFMaterialOcclusionTextureInfo
186
+ >;
187
+ }
188
+
189
+ /** References reachable from an accessor wrapper. */
190
+ export interface GLTFAccessorReferences {
191
+ readonly bufferView: GLTFBufferView | undefined;
192
+ }
193
+
194
+ /** References reachable from a buffer-view wrapper. */
195
+ export interface GLTFBufferViewReferences {
196
+ readonly buffer: GLTFBuffer;
197
+ }
198
+
199
+ /** References reachable from a file or image wrapper. */
200
+ export interface GLTFBufferViewOwnerReferences {
201
+ readonly bufferView: GLTFBufferView | undefined;
202
+ }
203
+
204
+ /** References reachable from an external asset wrapper. */
205
+ export interface GLTFExternalAssetReferences {
206
+ readonly file: GLTFFile;
207
+ }
208
+
209
+ /** References reachable from an animation wrapper. */
210
+ export interface GLTFAnimationReferences {
211
+ readonly channels: IterableIterator<GLTFAnimationChannel>;
212
+ readonly samplers: IterableIterator<GLTFAnimationSampler>;
213
+ }
214
+
215
+ /** References reachable from an animation channel wrapper. */
216
+ export interface GLTFAnimationChannelReferences {
217
+ readonly sampler: GLTFAnimationSampler;
218
+ readonly target: GLTFAnimationChannelTarget;
219
+ }
220
+
221
+ /** References reachable from an animation target wrapper. */
222
+ export interface GLTFAnimationChannelTargetReferences {
223
+ readonly node: GLTFNode | undefined;
224
+ }
225
+
226
+ /** References reachable from an animation sampler wrapper. */
227
+ export interface GLTFAnimationSamplerReferences {
228
+ readonly input: GLTFAccessor;
229
+ readonly output: GLTFAccessor;
230
+ }
231
+
232
+ /** References reachable from a skin wrapper. */
233
+ export interface GLTFSkinReferences {
234
+ readonly inverseBindMatrices: GLTFAccessor | undefined;
235
+ readonly skeleton: GLTFNode | undefined;
236
+ readonly joints: IterableIterator<GLTFNode>;
237
+ }
238
+
239
+ /** Lightweight accessor wrapper. */
240
+ class GLTFAccessorIterator extends GLTFObjectIterator<GLTFAccessor, 'accessor'> {
241
+ /** Resolve the accessor's buffer view. */
242
+ get bufferView(): GLTFBufferViewIterator | undefined {
243
+ return this.data.bufferView === undefined
244
+ ? undefined
245
+ : this.iterator.resolveBufferView(this.data.bufferView, `${this.path}.bufferView`);
246
+ }
247
+ }
248
+
249
+ /** Lightweight animation wrapper. */
250
+ class GLTFAnimationIterator extends GLTFObjectIterator<GLTFAnimation, 'animation'> {
251
+ /** Iterate animation channels in source order. */
252
+ get channels(): IterableIterator<GLTFAnimationChannelIterator> {
253
+ return iterateValues(this.data.channels, (channel, channelIndex) =>
254
+ this.iterator.getOrCreateNested(
255
+ channel,
256
+ () =>
257
+ new GLTFAnimationChannelIterator(
258
+ this.iterator,
259
+ 'animationChannel',
260
+ channelIndex,
261
+ channel,
262
+ `${this.path}.channels[${channelIndex}]`,
263
+ this
264
+ )
265
+ )
266
+ );
267
+ }
268
+
269
+ /** Iterate animation samplers in source order. */
270
+ get samplers(): IterableIterator<GLTFAnimationSamplerIterator> {
271
+ return iterateValues(this.data.samplers, (sampler, samplerIndex) =>
272
+ this.iterator.getOrCreateNested(
273
+ sampler,
274
+ () =>
275
+ new GLTFAnimationSamplerIterator(
276
+ this.iterator,
277
+ 'animationSampler',
278
+ samplerIndex,
279
+ sampler,
280
+ `${this.path}.samplers[${samplerIndex}]`,
281
+ this
282
+ )
283
+ )
284
+ );
285
+ }
286
+ }
287
+
288
+ /** Lightweight animation channel wrapper. */
289
+ class GLTFAnimationChannelIterator extends GLTFNestedObjectIterator<
290
+ GLTFAnimationChannel,
291
+ 'animationChannel',
292
+ GLTFAnimationIterator
293
+ > {
294
+ /** Resolve the animation-local sampler. */
295
+ get sampler(): GLTFAnimationSamplerIterator {
296
+ const samplers = this.parent.data.samplers;
297
+ const sampler = samplers[this.data.sampler];
298
+ if (!sampler) {
299
+ throw new Error(
300
+ `Invalid glTF reference at ${this.path}.sampler: animation sampler index ${this.data.sampler} is out of range`
301
+ );
302
+ }
303
+ return this.iterator.getOrCreateNested(
304
+ sampler,
305
+ () =>
306
+ new GLTFAnimationSamplerIterator(
307
+ this.iterator,
308
+ 'animationSampler',
309
+ this.data.sampler,
310
+ sampler,
311
+ `${this.parent.path}.samplers[${this.data.sampler}]`,
312
+ this.parent
313
+ )
314
+ );
315
+ }
316
+
317
+ /** Return the channel target wrapper. */
318
+ get target(): GLTFAnimationChannelTargetIterator {
319
+ return this.iterator.getOrCreateNested(
320
+ this.data.target,
321
+ () =>
322
+ new GLTFAnimationChannelTargetIterator(
323
+ this.iterator,
324
+ 'animationChannelTarget',
325
+ 0,
326
+ this.data.target,
327
+ `${this.path}.target`,
328
+ this
329
+ )
330
+ );
331
+ }
332
+ }
333
+
334
+ /** Lightweight animation channel target wrapper. */
335
+ class GLTFAnimationChannelTargetIterator extends GLTFNestedObjectIterator<
336
+ GLTFAnimationChannelTarget,
337
+ 'animationChannelTarget',
338
+ GLTFAnimationChannelIterator
339
+ > {
340
+ /** Resolve the target node when one is specified. */
341
+ get node(): GLTFNodeIterator | undefined {
342
+ return this.data.node === undefined
343
+ ? undefined
344
+ : this.iterator.resolveNode(this.data.node, `${this.path}.node`);
345
+ }
346
+ }
347
+
348
+ /** Lightweight animation sampler wrapper. */
349
+ class GLTFAnimationSamplerIterator extends GLTFNestedObjectIterator<
350
+ GLTFAnimationSampler,
351
+ 'animationSampler',
352
+ GLTFAnimationIterator
353
+ > {
354
+ /** Resolve the sampler input accessor. */
355
+ get input(): GLTFAccessorIterator {
356
+ return this.iterator.resolveAccessor(this.data.input, `${this.path}.input`);
357
+ }
358
+
359
+ /** Resolve the sampler output accessor. */
360
+ get output(): GLTFAccessorIterator {
361
+ return this.iterator.resolveAccessor(this.data.output, `${this.path}.output`);
362
+ }
363
+ }
364
+
365
+ /** Lightweight buffer wrapper. */
366
+ class GLTFBufferIterator extends GLTFObjectIterator<GLTFBuffer, 'buffer'> {
367
+ /** Return the loaded byte range parallel to this JSON buffer, when available. */
368
+ get loadedBuffer(): GLTFWithBuffers['buffers'][number] | undefined {
369
+ return this.gltf.buffers[this.index];
370
+ }
371
+ }
372
+
373
+ /** Lightweight buffer-view wrapper. */
374
+ class GLTFBufferViewIterator extends GLTFObjectIterator<GLTFBufferView, 'bufferView'> {
375
+ /** Resolve the backing JSON buffer. */
376
+ get buffer(): GLTFBufferIterator {
377
+ return this.iterator.resolveBuffer(this.data.buffer, `${this.path}.buffer`);
378
+ }
379
+
380
+ /** Return a byte view over the loaded buffer-view range. */
381
+ get loadedBufferView(): Uint8Array | undefined {
382
+ const loadedBuffer = this.buffer.loadedBuffer;
383
+ if (!loadedBuffer) {
384
+ return undefined;
385
+ }
386
+ const byteOffset = loadedBuffer.byteOffset + (this.data.byteOffset || 0);
387
+ return new Uint8Array(loadedBuffer.arrayBuffer, byteOffset, this.data.byteLength);
388
+ }
389
+ }
390
+
391
+ /** Lightweight camera wrapper. */
392
+ class GLTFCameraIterator extends GLTFObjectIterator<GLTFCamera, 'camera'> {}
393
+
394
+ /** Lightweight external-asset wrapper for draft glTF 2.1. */
395
+ class GLTFExternalAssetIterator extends GLTFObjectIterator<GLTFExternalAsset, 'externalAsset'> {
396
+ /** Resolve the file containing the external glTF asset. */
397
+ get file(): GLTFFileIterator {
398
+ return this.iterator.resolveFile(this.data.file, `${this.path}.file`);
399
+ }
400
+
401
+ /** Return the parsed external glTF loaded parallel to this definition. */
402
+ get loadedAsset(): GLTFWithBuffers | null | undefined {
403
+ return this.gltf.externalAssets?.[this.index];
404
+ }
405
+ }
406
+
407
+ /** Lightweight file wrapper for draft glTF 2.1. */
408
+ class GLTFFileIterator extends GLTFObjectIterator<GLTFFile, 'file'> {
409
+ /** Resolve the optional buffer view containing this file. */
410
+ get bufferView(): GLTFBufferViewIterator | undefined {
411
+ return this.data.bufferView === undefined
412
+ ? undefined
413
+ : this.iterator.resolveBufferView(this.data.bufferView, `${this.path}.bufferView`);
414
+ }
415
+
416
+ /** Return the resolved file loaded parallel to this definition. */
417
+ get loadedFile(): NonNullable<GLTFWithBuffers['files']>[number] | undefined {
418
+ return this.gltf.files?.[this.index];
419
+ }
420
+ }
421
+
422
+ /** Lightweight image wrapper. */
423
+ class GLTFImageIterator extends GLTFObjectIterator<GLTFImage, 'image'> {
424
+ /** Resolve the optional buffer view containing this image. */
425
+ get bufferView(): GLTFBufferViewIterator | undefined {
426
+ return this.data.bufferView === undefined
427
+ ? undefined
428
+ : this.iterator.resolveBufferView(this.data.bufferView, `${this.path}.bufferView`);
429
+ }
430
+
431
+ /** Return the decoded image loaded parallel to this definition. */
432
+ get loadedImage(): NonNullable<GLTFWithBuffers['images']>[number] | undefined {
433
+ return this.gltf.images?.[this.index];
434
+ }
435
+ }
436
+
437
+ /** Lightweight material wrapper. */
438
+ class GLTFMaterialIterator extends GLTFObjectIterator<GLTFMaterial, 'material'> {
439
+ /** Resolve the base-color texture info. */
440
+ get baseColorTexture(): GLTFTextureInfoIterator | undefined {
441
+ return this.getTextureInfo(
442
+ this.data.pbrMetallicRoughness?.baseColorTexture,
443
+ 0,
444
+ 'pbrMetallicRoughness.baseColorTexture'
445
+ );
446
+ }
447
+
448
+ /** Resolve the metallic-roughness texture info. */
449
+ get metallicRoughnessTexture(): GLTFTextureInfoIterator | undefined {
450
+ return this.getTextureInfo(
451
+ this.data.pbrMetallicRoughness?.metallicRoughnessTexture,
452
+ 1,
453
+ 'pbrMetallicRoughness.metallicRoughnessTexture'
454
+ );
455
+ }
456
+
457
+ /** Resolve the normal texture info. */
458
+ get normalTexture(): GLTFTextureInfoIterator | undefined {
459
+ return this.getTextureInfo(this.data.normalTexture, 2, 'normalTexture');
460
+ }
461
+
462
+ /** Resolve the occlusion texture info. */
463
+ get occlusionTexture(): GLTFTextureInfoIterator | undefined {
464
+ return this.getTextureInfo(this.data.occlusionTexture, 3, 'occlusionTexture');
465
+ }
466
+
467
+ /** Resolve the emissive texture info. */
468
+ get emissiveTexture(): GLTFTextureInfoIterator | undefined {
469
+ return this.getTextureInfo(this.data.emissiveTexture, 4, 'emissiveTexture');
470
+ }
471
+
472
+ /** Resolve standard texture-info properties in their schema order. */
473
+ get textures(): IterableIterator<GLTFTextureInfoIterator> {
474
+ const textureInfos = [
475
+ this.baseColorTexture,
476
+ this.metallicRoughnessTexture,
477
+ this.normalTexture,
478
+ this.occlusionTexture,
479
+ this.emissiveTexture
480
+ ].filter((textureInfo): textureInfo is GLTFTextureInfoIterator => Boolean(textureInfo));
481
+ return textureInfos.values();
482
+ }
483
+
484
+ /** Wrap one optional standard material texture-info property. */
485
+ private getTextureInfo(
486
+ textureInfo:
487
+ | GLTFTextureInfo
488
+ | GLTFMaterialNormalTextureInfo
489
+ | GLTFMaterialOcclusionTextureInfo
490
+ | undefined,
491
+ index: number,
492
+ propertyPath: string
493
+ ): GLTFTextureInfoIterator | undefined {
494
+ return textureInfo
495
+ ? this.iterator.getOrCreateNested(
496
+ textureInfo,
497
+ () =>
498
+ new GLTFTextureInfoIterator(
499
+ this.iterator,
500
+ 'textureInfo',
501
+ index,
502
+ textureInfo,
503
+ `${this.path}.${propertyPath}`,
504
+ this
505
+ )
506
+ )
507
+ : undefined;
508
+ }
509
+ }
510
+
511
+ /** Lightweight texture-info wrapper nested in a material. */
512
+ class GLTFTextureInfoIterator extends GLTFNestedObjectIterator<
513
+ GLTFTextureInfo | GLTFMaterialNormalTextureInfo | GLTFMaterialOcclusionTextureInfo,
514
+ 'textureInfo',
515
+ GLTFMaterialIterator
516
+ > {
517
+ /** Resolve the texture referenced by the raw texture-info `index` field. */
518
+ get texture(): GLTFTextureIterator {
519
+ return this.iterator.resolveTexture(this.data.index, `${this.path}.index`);
520
+ }
521
+ }
522
+
523
+ /** Lightweight mesh wrapper. */
524
+ class GLTFMeshIterator extends GLTFObjectIterator<GLTFMesh, 'mesh'> {
525
+ /** Iterate mesh primitives in source order. */
526
+ get primitives(): IterableIterator<GLTFMeshPrimitiveIterator> {
527
+ return iterateValues(this.data.primitives, (primitive, primitiveIndex) =>
528
+ this.iterator.getOrCreateNested(
529
+ primitive,
530
+ () =>
531
+ new GLTFMeshPrimitiveIterator(
532
+ this.iterator,
533
+ 'primitive',
534
+ primitiveIndex,
535
+ primitive,
536
+ `${this.path}.primitives[${primitiveIndex}]`,
537
+ this
538
+ )
539
+ )
540
+ );
541
+ }
542
+ }
543
+
544
+ /** Lightweight mesh primitive wrapper. */
545
+ class GLTFMeshPrimitiveIterator extends GLTFNestedObjectIterator<
546
+ GLTFMeshPrimitive,
547
+ 'primitive',
548
+ GLTFMeshIterator
549
+ > {
550
+ /** Resolve every vertex attribute accessor by semantic name. */
551
+ get attributes(): ReadonlyMap<string, GLTFAccessorIterator> {
552
+ return new Map(
553
+ Object.entries(this.data.attributes).map(([attributeName, accessorIndex]) => [
554
+ attributeName,
555
+ this.iterator.resolveAccessor(accessorIndex, `${this.path}.attributes.${attributeName}`)
556
+ ])
557
+ );
558
+ }
559
+
560
+ /** Resolve the optional index accessor. */
561
+ get indices(): GLTFAccessorIterator | undefined {
562
+ return this.data.indices === undefined
563
+ ? undefined
564
+ : this.iterator.resolveAccessor(this.data.indices, `${this.path}.indices`);
565
+ }
566
+
567
+ /** Resolve the optional material. */
568
+ get material(): GLTFMaterialIterator | undefined {
569
+ return this.data.material === undefined
570
+ ? undefined
571
+ : this.iterator.resolveMaterial(this.data.material, `${this.path}.material`);
572
+ }
573
+
574
+ /** Resolve morph-target attribute accessors without rewriting target dictionaries. */
575
+ get targets(): ReadonlyArray<ReadonlyMap<string, GLTFAccessorIterator>> {
576
+ return (this.data.targets || []).map(
577
+ (target, targetIndex) =>
578
+ new Map(
579
+ Object.entries(target).map(([attributeName, accessorIndex]) => [
580
+ attributeName,
581
+ this.iterator.resolveAccessor(
582
+ accessorIndex,
583
+ `${this.path}.targets[${targetIndex}].${attributeName}`
584
+ )
585
+ ])
586
+ )
587
+ );
588
+ }
589
+ }
590
+
591
+ /** Lightweight node wrapper. */
592
+ class GLTFNodeIterator extends GLTFObjectIterator<GLTFNode, 'node'> {
593
+ /** Resolve the optional camera. */
594
+ get camera(): GLTFCameraIterator | undefined {
595
+ return this.data.camera === undefined
596
+ ? undefined
597
+ : this.iterator.resolveCamera(this.data.camera, `${this.path}.camera`);
598
+ }
599
+
600
+ /** Iterate resolved child nodes in source order. */
601
+ get children(): IterableIterator<GLTFNodeIterator> {
602
+ return iterateValues(this.data.children || [], (childNodeIndex, childIndex) =>
603
+ this.iterator.resolveNode(childNodeIndex, `${this.path}.children[${childIndex}]`)
604
+ );
605
+ }
606
+
607
+ /** Resolve the optional skin. */
608
+ get skin(): GLTFSkinIterator | undefined {
609
+ return this.data.skin === undefined
610
+ ? undefined
611
+ : this.iterator.resolveSkin(this.data.skin, `${this.path}.skin`);
612
+ }
613
+
614
+ /** Resolve the optional mesh definition. */
615
+ get mesh(): GLTFMeshIterator | undefined {
616
+ return this.data.mesh === undefined
617
+ ? undefined
618
+ : this.iterator.resolveMesh(this.data.mesh, `${this.path}.mesh`);
619
+ }
620
+
621
+ /** Resolve the optional draft glTF 2.1 external asset. */
622
+ get externalAsset(): GLTFExternalAssetIterator | undefined {
623
+ return this.data.externalAsset === undefined
624
+ ? undefined
625
+ : this.iterator.resolveExternalAsset(this.data.externalAsset, `${this.path}.externalAsset`);
626
+ }
627
+ }
628
+
629
+ /** Lightweight texture sampler wrapper. */
630
+ class GLTFSamplerIterator extends GLTFObjectIterator<GLTFSampler, 'sampler'> {}
631
+
632
+ /** Lightweight scene wrapper. */
633
+ class GLTFSceneIterator extends GLTFObjectIterator<GLTFScene, 'scene'> {
634
+ /** Iterate resolved scene root nodes in source order. */
635
+ get nodes(): IterableIterator<GLTFNodeIterator> {
636
+ return iterateValues(this.data.nodes || [], (nodeIndex, sceneNodeIndex) =>
637
+ this.iterator.resolveNode(nodeIndex, `${this.path}.nodes[${sceneNodeIndex}]`)
638
+ );
639
+ }
640
+ }
641
+
642
+ /** Lightweight skin wrapper. */
643
+ class GLTFSkinIterator extends GLTFObjectIterator<GLTFSkin, 'skin'> {
644
+ /** Resolve the optional inverse-bind-matrix accessor. */
645
+ get inverseBindMatrices(): GLTFAccessorIterator | undefined {
646
+ return this.data.inverseBindMatrices === undefined
647
+ ? undefined
648
+ : this.iterator.resolveAccessor(
649
+ this.data.inverseBindMatrices,
650
+ `${this.path}.inverseBindMatrices`
651
+ );
652
+ }
653
+
654
+ /** Resolve the optional skeleton root node. */
655
+ get skeleton(): GLTFNodeIterator | undefined {
656
+ return this.data.skeleton === undefined
657
+ ? undefined
658
+ : this.iterator.resolveNode(this.data.skeleton, `${this.path}.skeleton`);
659
+ }
660
+
661
+ /** Iterate resolved joint nodes in source order. */
662
+ get joints(): IterableIterator<GLTFNodeIterator> {
663
+ return iterateValues(this.data.joints, (jointNodeIndex, jointIndex) =>
664
+ this.iterator.resolveNode(jointNodeIndex, `${this.path}.joints[${jointIndex}]`)
665
+ );
666
+ }
667
+ }
668
+
669
+ /** Lightweight texture wrapper. */
670
+ class GLTFTextureIterator extends GLTFObjectIterator<GLTFTexture, 'texture'> {
671
+ /** Resolve the optional sampler. */
672
+ get sampler(): GLTFSamplerIterator | undefined {
673
+ return this.data.sampler === undefined
674
+ ? undefined
675
+ : this.iterator.resolveSampler(this.data.sampler, `${this.path}.sampler`);
676
+ }
677
+
678
+ /** Resolve the optional source image. */
679
+ get source(): GLTFImageIterator | undefined {
680
+ return this.data.source === undefined
681
+ ? undefined
682
+ : this.iterator.resolveImage(this.data.source, `${this.path}.source`);
683
+ }
684
+ }
685
+
686
+ /**
687
+ * Traverse and transform raw glTF data through lazy, identity-preserving object wrappers.
688
+ *
689
+ * The iterator never clones, links, normalizes, or otherwise postprocesses its input. Wrapper
690
+ * `data` fields are the original mutable JSON objects so extension handlers can transform them in
691
+ * place while using typed reference getters for navigation.
692
+ */
693
+ export class GLTFIterator {
694
+ /** Original glTF container traversed by this iterator. */
695
+ readonly gltf: GLTFWithBuffers;
696
+
697
+ /** Cached wrapper for each raw source object. */
698
+ private readonly objectCache = new WeakMap<object, GLTFObjectIterator<any, any>>();
699
+
700
+ /** Cached lazy reference facades keyed by their source wrapper. */
701
+ private readonly referencesCache = new WeakMap<object, GLTFIteratorReferences>();
702
+
703
+ /** Create an iterator over an existing parsed glTF container. */
704
+ constructor(gltf: GLTFWithBuffers) {
705
+ this.gltf = gltf;
706
+ }
707
+
708
+ /** Exact unmodified glTF JSON root. */
709
+ get data(): GLTF {
710
+ return this.gltf.json;
711
+ }
712
+
713
+ /** Return the loaded bytes addressed by a raw bufferView index. */
714
+ getTypedArrayForBufferView(bufferViewIndex: number): Uint8Array {
715
+ return getBufferViewTypedArray(this.data, this.gltf.buffers, bufferViewIndex);
716
+ }
717
+
718
+ /** Return the loaded typed values addressed by a raw accessor index or decoded accessor. */
719
+ getTypedArrayForAccessor(accessor: GLTFAccessor | number): BigTypedArray {
720
+ return getAccessorTypedArray(this.data, this.gltf.buffers, accessor);
721
+ }
722
+
723
+ /** Return the loaded bytes addressed by a raw image index. */
724
+ getTypedArrayForImageData(imageIndex: number): Uint8Array {
725
+ return getImageTypedArray(this.data, this.gltf.buffers, imageIndex);
726
+ }
727
+
728
+ /** Return the loaded buffer companion for a raw buffer definition. */
729
+ getLoadedBuffer(buffer: GLTFBuffer): GLTFWithBuffers['buffers'][number] | undefined {
730
+ const metadata = this.getMetadata(buffer);
731
+ return this.gltf.buffers[metadata.index];
732
+ }
733
+
734
+ /** Return the loaded byte range for a raw buffer-view definition. */
735
+ getLoadedBufferView(bufferView: GLTFBufferView): Uint8Array | undefined {
736
+ const buffer = this.getReferences(bufferView).buffer;
737
+ const loadedBuffer = this.getLoadedBuffer(buffer);
738
+ if (!loadedBuffer) {
739
+ return undefined;
740
+ }
741
+ const byteOffset = loadedBuffer.byteOffset + (bufferView.byteOffset || 0);
742
+ return new Uint8Array(loadedBuffer.arrayBuffer, byteOffset, bufferView.byteLength);
743
+ }
744
+
745
+ /** Return the loaded image companion for a raw image definition. */
746
+ getLoadedImage(image: GLTFImage): NonNullable<GLTFWithBuffers['images']>[number] | undefined {
747
+ return this.gltf.images?.[this.getMetadata(image).index];
748
+ }
749
+
750
+ /** Return the loaded file companion for a raw file definition. */
751
+ getLoadedFile(file: GLTFFile): NonNullable<GLTFWithBuffers['files']>[number] | undefined {
752
+ return this.gltf.files?.[this.getMetadata(file).index];
753
+ }
754
+
755
+ /** Return the loaded asset companion for a raw external-asset definition. */
756
+ getLoadedExternalAsset(externalAsset: GLTFExternalAsset): GLTFWithBuffers | null | undefined {
757
+ return this.gltf.externalAssets?.[this.getMetadata(externalAsset).index];
758
+ }
759
+
760
+ /** Append loaded bytes and a raw buffer definition, returning the new buffer index. */
761
+ addBuffer(array: ArrayBufferView): number {
762
+ const arrayBuffer = array.buffer.slice(
763
+ array.byteOffset,
764
+ array.byteOffset + array.byteLength
765
+ ) as ArrayBuffer;
766
+ this.gltf.buffers.push({arrayBuffer, byteOffset: 0, byteLength: array.byteLength});
767
+ this.data.buffers ||= [];
768
+ this.data.buffers.push({byteLength: array.byteLength});
769
+ return this.data.buffers.length - 1;
770
+ }
771
+
772
+ /** Append a raw bufferView definition and return its index. */
773
+ addBufferView(bufferIndex: number, byteLength: number, byteOffset = 0): number {
774
+ this.data.bufferViews ||= [];
775
+ this.data.bufferViews.push({buffer: bufferIndex, byteOffset, byteLength});
776
+ return this.data.bufferViews.length - 1;
777
+ }
778
+
779
+ /** Append a raw accessor definition and return its index. */
780
+ addAccessor(
781
+ bufferViewIndex: number,
782
+ accessor: {
783
+ size: number;
784
+ componentType: number;
785
+ count: number;
786
+ min?: number[];
787
+ max?: number[];
788
+ }
789
+ ): number {
790
+ this.data.accessors ||= [];
791
+ this.data.accessors.push({
792
+ bufferView: bufferViewIndex,
793
+ type: getAccessorTypeFromSize(accessor.size),
794
+ componentType: accessor.componentType,
795
+ count: accessor.count,
796
+ min: accessor.min,
797
+ max: accessor.max
798
+ });
799
+ return this.data.accessors.length - 1;
800
+ }
801
+
802
+ /** Return lazily resolved standard relationships for a raw glTF object. */
803
+ getReferences(object: GLTFAccessor): GLTFAccessorReferences;
804
+ getReferences(object: GLTFAnimation): GLTFAnimationReferences;
805
+ getReferences(object: GLTFAnimationChannel): GLTFAnimationChannelReferences;
806
+ getReferences(object: GLTFAnimationChannelTarget): GLTFAnimationChannelTargetReferences;
807
+ getReferences(object: GLTFAnimationSampler): GLTFAnimationSamplerReferences;
808
+ getReferences(object: GLTFBufferView): GLTFBufferViewReferences;
809
+ getReferences(object: GLTFExternalAsset): GLTFExternalAssetReferences;
810
+ getReferences(object: GLTFFile): GLTFBufferViewOwnerReferences;
811
+ getReferences(object: GLTFImage): GLTFBufferViewOwnerReferences;
812
+ getReferences(object: GLTFMaterial): GLTFMaterialReferences;
813
+ getReferences(object: GLTFTextureInfo): GLTFTextureInfoReferences;
814
+ getReferences(object: GLTFMesh): GLTFMeshReferences;
815
+ getReferences(object: GLTFMeshPrimitive): GLTFMeshPrimitiveReferences;
816
+ getReferences(object: GLTFNode): GLTFNodeReferences;
817
+ getReferences(object: GLTFScene): GLTFSceneReferences;
818
+ getReferences(object: GLTFSkin): GLTFSkinReferences;
819
+ getReferences(object: GLTFTexture): GLTFTextureReferences;
820
+ getReferences(object: GLTFIteratorData): GLTFIteratorReferences {
821
+ const cachedReferences = this.referencesCache.get(object);
822
+ if (cachedReferences) {
823
+ return cachedReferences;
824
+ }
825
+ const objectIterator = this.getObjectIterator(object);
826
+ const references = createReferences(objectIterator);
827
+ this.referencesCache.set(object, references);
828
+ return references;
829
+ }
830
+
831
+ /** Return iterator-owned metadata for a raw glTF object. */
832
+ getMetadata(object: GLTFIteratorData): GLTFIteratorMetadata {
833
+ const objectIterator = this.getObjectIterator(object);
834
+ const parent =
835
+ objectIterator instanceof GLTFNestedObjectIterator ? objectIterator.parent.data : undefined;
836
+ return {
837
+ gltf: this.gltf,
838
+ type: objectIterator.type,
839
+ index: objectIterator.index,
840
+ parent,
841
+ path: objectIterator.path
842
+ };
843
+ }
844
+
845
+ /** Resolve the default scene. */
846
+ get scene(): GLTFScene | undefined {
847
+ return this.data.scene === undefined
848
+ ? undefined
849
+ : this.resolveScene(this.data.scene, 'scene').data;
850
+ }
851
+
852
+ /** Resolve the optional draft glTF 2.1 thumbnail image. */
853
+ get thumbnail(): GLTFImage | undefined {
854
+ return this.data.asset.thumbnail === undefined
855
+ ? undefined
856
+ : this.resolveImage(this.data.asset.thumbnail, 'asset.thumbnail').data;
857
+ }
858
+
859
+ /** Iterate raw accessors in source order. */
860
+ get accessors(): IterableIterator<GLTFAccessor> {
861
+ return this.iterateCollectionData('accessor') as IterableIterator<GLTFAccessor>;
862
+ }
863
+
864
+ /** Iterate raw animations in source order. */
865
+ get animations(): IterableIterator<GLTFAnimation> {
866
+ return this.iterateCollectionData('animation') as IterableIterator<GLTFAnimation>;
867
+ }
868
+
869
+ /** Iterate raw buffers in source order. */
870
+ get buffers(): IterableIterator<GLTFBuffer> {
871
+ return this.iterateCollectionData('buffer') as IterableIterator<GLTFBuffer>;
872
+ }
873
+
874
+ /** Iterate raw buffer views in source order. */
875
+ get bufferViews(): IterableIterator<GLTFBufferView> {
876
+ return this.iterateCollectionData('bufferView') as IterableIterator<GLTFBufferView>;
877
+ }
878
+
879
+ /** Iterate raw cameras in source order. */
880
+ get cameras(): IterableIterator<GLTFCamera> {
881
+ return this.iterateCollectionData('camera') as IterableIterator<GLTFCamera>;
882
+ }
883
+
884
+ /** Iterate raw draft glTF 2.1 external assets in source order. */
885
+ get externalAssets(): IterableIterator<GLTFExternalAsset> {
886
+ return this.iterateCollectionData('externalAsset') as IterableIterator<GLTFExternalAsset>;
887
+ }
888
+
889
+ /** Iterate raw draft glTF 2.1 files in source order. */
890
+ get files(): IterableIterator<GLTFFile> {
891
+ return this.iterateCollectionData('file') as IterableIterator<GLTFFile>;
892
+ }
893
+
894
+ /** Iterate raw images in source order. */
895
+ get images(): IterableIterator<GLTFImage> {
896
+ return this.iterateCollectionData('image') as IterableIterator<GLTFImage>;
897
+ }
898
+
899
+ /** Iterate raw materials in source order. */
900
+ get materials(): IterableIterator<GLTFMaterial> {
901
+ return this.iterateCollectionData('material') as IterableIterator<GLTFMaterial>;
902
+ }
903
+
904
+ /** Iterate raw mesh definitions in source order. */
905
+ get meshes(): IterableIterator<GLTFMesh> {
906
+ return this.iterateCollectionData('mesh') as IterableIterator<GLTFMesh>;
907
+ }
908
+
909
+ /** Iterate raw nodes in source order. */
910
+ get nodes(): IterableIterator<GLTFNode> {
911
+ return this.iterateCollectionData('node') as IterableIterator<GLTFNode>;
912
+ }
913
+
914
+ /** Iterate raw texture samplers in source order. */
915
+ get samplers(): IterableIterator<GLTFSampler> {
916
+ return this.iterateCollectionData('sampler') as IterableIterator<GLTFSampler>;
917
+ }
918
+
919
+ /** Iterate raw scenes in source order. */
920
+ get scenes(): IterableIterator<GLTFScene> {
921
+ return this.iterateCollectionData('scene') as IterableIterator<GLTFScene>;
922
+ }
923
+
924
+ /** Iterate raw skins in source order. */
925
+ get skins(): IterableIterator<GLTFSkin> {
926
+ return this.iterateCollectionData('skin') as IterableIterator<GLTFSkin>;
927
+ }
928
+
929
+ /** Iterate raw textures in source order. */
930
+ get textures(): IterableIterator<GLTFTexture> {
931
+ return this.iterateCollectionData('texture') as IterableIterator<GLTFTexture>;
932
+ }
933
+
934
+ /** Return whether an extension is declared used or required. */
935
+ hasExtension(extensionName: string): boolean {
936
+ return (
937
+ Boolean(this.data.extensionsUsed?.includes(extensionName)) ||
938
+ Boolean(this.data.extensionsRequired?.includes(extensionName))
939
+ );
940
+ }
941
+
942
+ /** Return whether an extension is declared required. */
943
+ isExtensionRequired(extensionName: string): boolean {
944
+ return Boolean(this.data.extensionsRequired?.includes(extensionName));
945
+ }
946
+
947
+ /** Return an extension payload from the root or a wrapped raw object without modifying it. */
948
+ getExtension<ExtensionT = unknown>(extensionName: string): ExtensionT | undefined;
949
+ getExtension<ExtensionT = unknown>(
950
+ object: GLTFIteratorData,
951
+ extensionName: string
952
+ ): ExtensionT | undefined;
953
+ getExtension<ExtensionT = unknown>(
954
+ objectOrExtensionName: GLTFIteratorData | string,
955
+ objectExtensionName?: string
956
+ ): ExtensionT | undefined {
957
+ const data = typeof objectOrExtensionName === 'string' ? this.data : objectOrExtensionName;
958
+ const extensionName =
959
+ typeof objectOrExtensionName === 'string' ? objectOrExtensionName : objectExtensionName!;
960
+ return data.extensions?.[extensionName] as ExtensionT | undefined;
961
+ }
962
+
963
+ /** Set an extension payload on the root or a wrapped raw object and register it as used. */
964
+ setExtension<ExtensionT>(extensionName: string, extension: ExtensionT, required?: boolean): void;
965
+ setExtension<ExtensionT>(
966
+ object: GLTFIteratorData,
967
+ extensionName: string,
968
+ extension: ExtensionT
969
+ ): void;
970
+ setExtension<ExtensionT>(
971
+ objectOrExtensionName: GLTFIteratorData | string,
972
+ extensionNameOrExtension: string | ExtensionT,
973
+ extensionOrRequired?: ExtensionT | boolean
974
+ ): void {
975
+ const isRootExtension = typeof objectOrExtensionName === 'string';
976
+ const data = isRootExtension ? this.data : objectOrExtensionName;
977
+ const extensionName = isRootExtension
978
+ ? objectOrExtensionName
979
+ : (extensionNameOrExtension as string);
980
+ const extension = isRootExtension
981
+ ? (extensionNameOrExtension as ExtensionT)
982
+ : (extensionOrRequired as ExtensionT);
983
+ const required = isRootExtension ? Boolean(extensionOrRequired) : false;
984
+ data.extensions ||= {};
985
+ data.extensions[extensionName] = extension;
986
+ this.registerUsedExtension(extensionName);
987
+ if (required) {
988
+ this.registerRequiredExtension(extensionName);
989
+ }
990
+ }
991
+
992
+ /** Register an extension in `extensionsUsed`. */
993
+ registerUsedExtension(extensionName: string): void {
994
+ this.data.extensionsUsed ||= [];
995
+ if (!this.data.extensionsUsed.includes(extensionName)) {
996
+ this.data.extensionsUsed.push(extensionName);
997
+ }
998
+ }
999
+
1000
+ /** Register an extension in both `extensionsUsed` and `extensionsRequired`. */
1001
+ registerRequiredExtension(extensionName: string): void {
1002
+ this.registerUsedExtension(extensionName);
1003
+ this.data.extensionsRequired ||= [];
1004
+ if (!this.data.extensionsRequired.includes(extensionName)) {
1005
+ this.data.extensionsRequired.push(extensionName);
1006
+ }
1007
+ }
1008
+
1009
+ /** Remove extension data from the root or a wrapped raw object. */
1010
+ removeExtension(extensionName: string): void;
1011
+ removeExtension(object: GLTFIteratorData, extensionName: string): void;
1012
+ removeExtension(
1013
+ objectOrExtensionName: GLTFIteratorData | string,
1014
+ objectExtensionName?: string
1015
+ ): void {
1016
+ const isRootExtension = typeof objectOrExtensionName === 'string';
1017
+ const data = isRootExtension ? this.data : objectOrExtensionName;
1018
+ const extensionName = isRootExtension ? objectOrExtensionName : objectExtensionName!;
1019
+ if (data.extensions?.[extensionName] !== undefined) {
1020
+ this.recordRemovedExtension(extensionName);
1021
+ delete data.extensions[extensionName];
1022
+ }
1023
+ if (isRootExtension) {
1024
+ removeString(this.data.extensionsUsed, extensionName);
1025
+ removeString(this.data.extensionsRequired, extensionName);
1026
+ }
1027
+ }
1028
+
1029
+ /** Record that an extension payload was consumed by a transformation. */
1030
+ recordRemovedExtension(extensionName: string): void {
1031
+ const json = this.data as GLTF & {extensionsRemoved?: string[]};
1032
+ json.extensionsRemoved ||= [];
1033
+ if (!json.extensionsRemoved.includes(extensionName)) {
1034
+ json.extensionsRemoved.push(extensionName);
1035
+ }
1036
+ }
1037
+
1038
+ /** Resolve an accessor reference. */
1039
+ resolveAccessor(index: number, sourcePath: string): GLTFAccessorIterator {
1040
+ return this.resolveCollectionObject('accessor', index, sourcePath) as GLTFAccessorIterator;
1041
+ }
1042
+
1043
+ /** Resolve a buffer reference. */
1044
+ resolveBuffer(index: number, sourcePath: string): GLTFBufferIterator {
1045
+ return this.resolveCollectionObject('buffer', index, sourcePath) as GLTFBufferIterator;
1046
+ }
1047
+
1048
+ /** Resolve a buffer-view reference. */
1049
+ resolveBufferView(index: number, sourcePath: string): GLTFBufferViewIterator {
1050
+ return this.resolveCollectionObject('bufferView', index, sourcePath) as GLTFBufferViewIterator;
1051
+ }
1052
+
1053
+ /** Resolve a camera reference. */
1054
+ resolveCamera(index: number, sourcePath: string): GLTFCameraIterator {
1055
+ return this.resolveCollectionObject('camera', index, sourcePath) as GLTFCameraIterator;
1056
+ }
1057
+
1058
+ /** Resolve a draft external-asset reference. */
1059
+ resolveExternalAsset(index: number, sourcePath: string): GLTFExternalAssetIterator {
1060
+ return this.resolveCollectionObject(
1061
+ 'externalAsset',
1062
+ index,
1063
+ sourcePath
1064
+ ) as GLTFExternalAssetIterator;
1065
+ }
1066
+
1067
+ /** Resolve a draft file reference. */
1068
+ resolveFile(index: number, sourcePath: string): GLTFFileIterator {
1069
+ return this.resolveCollectionObject('file', index, sourcePath) as GLTFFileIterator;
1070
+ }
1071
+
1072
+ /** Resolve an image reference. */
1073
+ resolveImage(index: number, sourcePath: string): GLTFImageIterator {
1074
+ return this.resolveCollectionObject('image', index, sourcePath) as GLTFImageIterator;
1075
+ }
1076
+
1077
+ /** Resolve a material reference. */
1078
+ resolveMaterial(index: number, sourcePath: string): GLTFMaterialIterator {
1079
+ return this.resolveCollectionObject('material', index, sourcePath) as GLTFMaterialIterator;
1080
+ }
1081
+
1082
+ /** Resolve a mesh reference. */
1083
+ resolveMesh(index: number, sourcePath: string): GLTFMeshIterator {
1084
+ return this.resolveCollectionObject('mesh', index, sourcePath) as GLTFMeshIterator;
1085
+ }
1086
+
1087
+ /** Resolve a node reference. */
1088
+ resolveNode(index: number, sourcePath: string): GLTFNodeIterator {
1089
+ return this.resolveCollectionObject('node', index, sourcePath) as GLTFNodeIterator;
1090
+ }
1091
+
1092
+ /** Resolve a sampler reference. */
1093
+ resolveSampler(index: number, sourcePath: string): GLTFSamplerIterator {
1094
+ return this.resolveCollectionObject('sampler', index, sourcePath) as GLTFSamplerIterator;
1095
+ }
1096
+
1097
+ /** Resolve a scene reference. */
1098
+ resolveScene(index: number, sourcePath: string): GLTFSceneIterator {
1099
+ return this.resolveCollectionObject('scene', index, sourcePath) as GLTFSceneIterator;
1100
+ }
1101
+
1102
+ /** Resolve a skin reference. */
1103
+ resolveSkin(index: number, sourcePath: string): GLTFSkinIterator {
1104
+ return this.resolveCollectionObject('skin', index, sourcePath) as GLTFSkinIterator;
1105
+ }
1106
+
1107
+ /** Resolve a texture reference. */
1108
+ resolveTexture(index: number, sourcePath: string): GLTFTextureIterator {
1109
+ return this.resolveCollectionObject('texture', index, sourcePath) as GLTFTextureIterator;
1110
+ }
1111
+
1112
+ /** Return a cached nested wrapper or create it once. */
1113
+ getOrCreateNested<IteratorT extends GLTFObjectIterator<any, any>>(
1114
+ data: object,
1115
+ createIterator: () => IteratorT
1116
+ ): IteratorT {
1117
+ return this.getOrCreate(data, createIterator);
1118
+ }
1119
+
1120
+ /** Iterate one top-level glTF collection lazily. */
1121
+ private iterateCollection(
1122
+ type: GLTFCollectionType
1123
+ ): IterableIterator<GLTFObjectIterator<any, any>> {
1124
+ const values = this.getCollection(type);
1125
+ return iterateValues(values, (_, index) => this.resolveCollectionObject(type, index, type));
1126
+ }
1127
+
1128
+ /** Iterate exact raw objects from one top-level glTF collection. */
1129
+ private iterateCollectionData(type: GLTFCollectionType): IterableIterator<GLTFIteratorData> {
1130
+ return (function* iterateRawObjects(
1131
+ iterator: GLTFIterator
1132
+ ): IterableIterator<GLTFIteratorData> {
1133
+ for (const objectIterator of iterator.iterateCollection(type)) {
1134
+ yield objectIterator.data;
1135
+ }
1136
+ })(this);
1137
+ }
1138
+
1139
+ /** Return the registered internal context for a raw glTF object. */
1140
+ private getObjectIterator(object: GLTFIteratorData): GLTFObjectIterator<any, any> {
1141
+ const objectIterator = this.objectCache.get(object);
1142
+ if (!objectIterator) {
1143
+ throw new Error('glTF object is not registered with this iterator');
1144
+ }
1145
+ return objectIterator;
1146
+ }
1147
+
1148
+ /** Resolve and cache one top-level collection object. */
1149
+ private resolveCollectionObject(
1150
+ type: GLTFCollectionType,
1151
+ index: number,
1152
+ sourcePath: string
1153
+ ): GLTFObjectIterator<any, any> {
1154
+ const values = this.getCollection(type);
1155
+ const data = values[index] as GLTFIteratorData | undefined;
1156
+ if (!data) {
1157
+ throw new Error(
1158
+ `Invalid glTF reference at ${sourcePath}: ${type} index ${index} is out of range`
1159
+ );
1160
+ }
1161
+ return this.getOrCreate(data, () => this.createCollectionObject(type, index, data));
1162
+ }
1163
+
1164
+ /** Return the raw array corresponding to a top-level wrapper type. */
1165
+ private getCollection(type: GLTFCollectionType): GLTFIteratorData[] {
1166
+ switch (type) {
1167
+ case 'accessor':
1168
+ return this.data.accessors || [];
1169
+ case 'animation':
1170
+ return this.data.animations || [];
1171
+ case 'buffer':
1172
+ return this.data.buffers || [];
1173
+ case 'bufferView':
1174
+ return this.data.bufferViews || [];
1175
+ case 'camera':
1176
+ return this.data.cameras || [];
1177
+ case 'externalAsset':
1178
+ return this.data.externalAssets || [];
1179
+ case 'file':
1180
+ return this.data.files || [];
1181
+ case 'image':
1182
+ return this.data.images || [];
1183
+ case 'material':
1184
+ return this.data.materials || [];
1185
+ case 'mesh':
1186
+ return this.data.meshes || [];
1187
+ case 'node':
1188
+ return this.data.nodes || [];
1189
+ case 'sampler':
1190
+ return this.data.samplers || [];
1191
+ case 'scene':
1192
+ return this.data.scenes || [];
1193
+ case 'skin':
1194
+ return this.data.skins || [];
1195
+ case 'texture':
1196
+ return this.data.textures || [];
1197
+ }
1198
+ }
1199
+
1200
+ /** Create one correctly typed top-level wrapper. */
1201
+ private createCollectionObject(
1202
+ type: GLTFCollectionType,
1203
+ index: number,
1204
+ data: GLTFIteratorData
1205
+ ): GLTFObjectIterator<any, any> {
1206
+ const path = `${getCollectionName(type)}[${index}]`;
1207
+ switch (type) {
1208
+ case 'accessor':
1209
+ return new GLTFAccessorIterator(this, type, index, data as GLTFAccessor, path);
1210
+ case 'animation':
1211
+ return new GLTFAnimationIterator(this, type, index, data as GLTFAnimation, path);
1212
+ case 'buffer':
1213
+ return new GLTFBufferIterator(this, type, index, data as GLTFBuffer, path);
1214
+ case 'bufferView':
1215
+ return new GLTFBufferViewIterator(this, type, index, data as GLTFBufferView, path);
1216
+ case 'camera':
1217
+ return new GLTFCameraIterator(this, type, index, data as GLTFCamera, path);
1218
+ case 'externalAsset':
1219
+ return new GLTFExternalAssetIterator(this, type, index, data as GLTFExternalAsset, path);
1220
+ case 'file':
1221
+ return new GLTFFileIterator(this, type, index, data as GLTFFile, path);
1222
+ case 'image':
1223
+ return new GLTFImageIterator(this, type, index, data as GLTFImage, path);
1224
+ case 'material':
1225
+ return new GLTFMaterialIterator(this, type, index, data as GLTFMaterial, path);
1226
+ case 'mesh':
1227
+ return new GLTFMeshIterator(this, type, index, data as GLTFMesh, path);
1228
+ case 'node':
1229
+ return new GLTFNodeIterator(this, type, index, data as GLTFNode, path);
1230
+ case 'sampler':
1231
+ return new GLTFSamplerIterator(this, type, index, data as GLTFSampler, path);
1232
+ case 'scene':
1233
+ return new GLTFSceneIterator(this, type, index, data as GLTFScene, path);
1234
+ case 'skin':
1235
+ return new GLTFSkinIterator(this, type, index, data as GLTFSkin, path);
1236
+ case 'texture':
1237
+ return new GLTFTextureIterator(this, type, index, data as GLTFTexture, path);
1238
+ }
1239
+ }
1240
+
1241
+ /** Reuse a wrapper for the same raw source object. */
1242
+ private getOrCreate<IteratorT extends GLTFObjectIterator<any, any>>(
1243
+ data: object,
1244
+ createIterator: () => IteratorT
1245
+ ): IteratorT {
1246
+ const cachedIterator = this.objectCache.get(data);
1247
+ if (cachedIterator) {
1248
+ return cachedIterator as IteratorT;
1249
+ }
1250
+ const iterator = createIterator();
1251
+ this.objectCache.set(data, iterator);
1252
+ return iterator;
1253
+ }
1254
+ }
1255
+
1256
+ /** Build a lazy relationship facade without resolving any links during construction. */
1257
+ function createReferences(object: GLTFObjectIterator<any, any>): GLTFIteratorReferences {
1258
+ switch (object.type) {
1259
+ case 'accessor':
1260
+ return {
1261
+ get bufferView() {
1262
+ return (object as GLTFAccessorIterator).bufferView?.data;
1263
+ }
1264
+ };
1265
+ case 'animation':
1266
+ return {
1267
+ get channels() {
1268
+ return iterateObjectData((object as GLTFAnimationIterator).channels);
1269
+ },
1270
+ get samplers() {
1271
+ return iterateObjectData((object as GLTFAnimationIterator).samplers);
1272
+ }
1273
+ };
1274
+ case 'animationChannel':
1275
+ return {
1276
+ get sampler() {
1277
+ return (object as GLTFAnimationChannelIterator).sampler.data;
1278
+ },
1279
+ get target() {
1280
+ return (object as GLTFAnimationChannelIterator).target.data;
1281
+ }
1282
+ };
1283
+ case 'animationChannelTarget':
1284
+ return {
1285
+ get node() {
1286
+ return (object as GLTFAnimationChannelTargetIterator).node?.data;
1287
+ }
1288
+ };
1289
+ case 'animationSampler':
1290
+ return {
1291
+ get input() {
1292
+ return (object as GLTFAnimationSamplerIterator).input.data;
1293
+ },
1294
+ get output() {
1295
+ return (object as GLTFAnimationSamplerIterator).output.data;
1296
+ }
1297
+ };
1298
+ case 'bufferView':
1299
+ return {
1300
+ get buffer() {
1301
+ return (object as GLTFBufferViewIterator).buffer.data;
1302
+ }
1303
+ };
1304
+ case 'externalAsset':
1305
+ return {
1306
+ get file() {
1307
+ return (object as GLTFExternalAssetIterator).file.data;
1308
+ }
1309
+ };
1310
+ case 'file':
1311
+ case 'image':
1312
+ return {
1313
+ get bufferView() {
1314
+ return (object as GLTFFileIterator | GLTFImageIterator).bufferView?.data;
1315
+ }
1316
+ };
1317
+ case 'material':
1318
+ return {
1319
+ get baseColorTexture() {
1320
+ return (object as GLTFMaterialIterator).baseColorTexture?.data;
1321
+ },
1322
+ get metallicRoughnessTexture() {
1323
+ return (object as GLTFMaterialIterator).metallicRoughnessTexture?.data;
1324
+ },
1325
+ get normalTexture() {
1326
+ return (object as GLTFMaterialIterator).normalTexture?.data;
1327
+ },
1328
+ get occlusionTexture() {
1329
+ return (object as GLTFMaterialIterator).occlusionTexture?.data;
1330
+ },
1331
+ get emissiveTexture() {
1332
+ return (object as GLTFMaterialIterator).emissiveTexture?.data;
1333
+ },
1334
+ get textures() {
1335
+ return iterateObjectData((object as GLTFMaterialIterator).textures);
1336
+ }
1337
+ };
1338
+ case 'textureInfo':
1339
+ return {
1340
+ get texture() {
1341
+ return (object as GLTFTextureInfoIterator).texture.data;
1342
+ }
1343
+ };
1344
+ case 'mesh':
1345
+ return {
1346
+ get primitives() {
1347
+ return iterateObjectData((object as GLTFMeshIterator).primitives);
1348
+ }
1349
+ };
1350
+ case 'primitive':
1351
+ return {
1352
+ get attributes() {
1353
+ return mapObjectData((object as GLTFMeshPrimitiveIterator).attributes);
1354
+ },
1355
+ get indices() {
1356
+ return (object as GLTFMeshPrimitiveIterator).indices?.data;
1357
+ },
1358
+ get material() {
1359
+ return (object as GLTFMeshPrimitiveIterator).material?.data;
1360
+ },
1361
+ get targets() {
1362
+ return (object as GLTFMeshPrimitiveIterator).targets.map(mapObjectData);
1363
+ }
1364
+ };
1365
+ case 'node':
1366
+ return {
1367
+ get camera() {
1368
+ return (object as GLTFNodeIterator).camera?.data;
1369
+ },
1370
+ get children() {
1371
+ return iterateObjectData((object as GLTFNodeIterator).children);
1372
+ },
1373
+ get skin() {
1374
+ return (object as GLTFNodeIterator).skin?.data;
1375
+ },
1376
+ get mesh() {
1377
+ return (object as GLTFNodeIterator).mesh?.data;
1378
+ },
1379
+ get externalAsset() {
1380
+ return (object as GLTFNodeIterator).externalAsset?.data;
1381
+ }
1382
+ };
1383
+ case 'scene':
1384
+ return {
1385
+ get nodes() {
1386
+ return iterateObjectData((object as GLTFSceneIterator).nodes);
1387
+ }
1388
+ };
1389
+ case 'skin':
1390
+ return {
1391
+ get inverseBindMatrices() {
1392
+ return (object as GLTFSkinIterator).inverseBindMatrices?.data;
1393
+ },
1394
+ get skeleton() {
1395
+ return (object as GLTFSkinIterator).skeleton?.data;
1396
+ },
1397
+ get joints() {
1398
+ return iterateObjectData((object as GLTFSkinIterator).joints);
1399
+ }
1400
+ };
1401
+ case 'texture':
1402
+ return {
1403
+ get sampler() {
1404
+ return (object as GLTFTextureIterator).sampler?.data;
1405
+ },
1406
+ get source() {
1407
+ return (object as GLTFTextureIterator).source?.data;
1408
+ }
1409
+ };
1410
+ default:
1411
+ return {};
1412
+ }
1413
+ }
1414
+
1415
+ /** Iterate raw array values without creating wrapper arrays. */
1416
+ function iterateValues<ValueT, IteratorT>(
1417
+ values: readonly ValueT[],
1418
+ getIterator: (value: ValueT, index: number) => IteratorT
1419
+ ): IterableIterator<IteratorT> {
1420
+ return (function* iterate(): IterableIterator<IteratorT> {
1421
+ for (let index = 0; index < values.length; index++) {
1422
+ yield getIterator(values[index], index);
1423
+ }
1424
+ })();
1425
+ }
1426
+
1427
+ /** Yield the exact raw object carried by each internal iterator context. */
1428
+ function iterateObjectData<DataT extends GLTFIteratorData>(
1429
+ objects: Iterable<GLTFObjectIterator<DataT, any>>
1430
+ ): IterableIterator<DataT> {
1431
+ return (function* iterateRawData(): IterableIterator<DataT> {
1432
+ for (const object of objects) {
1433
+ yield object.data;
1434
+ }
1435
+ })();
1436
+ }
1437
+
1438
+ /** Replace internal iterator contexts in a reference map with their exact raw objects. */
1439
+ function mapObjectData<DataT extends GLTFIteratorData>(
1440
+ objects: ReadonlyMap<string, GLTFObjectIterator<DataT, any>>
1441
+ ): ReadonlyMap<string, DataT> {
1442
+ return new Map(Array.from(objects, ([name, object]) => [name, object.data]));
1443
+ }
1444
+
1445
+ /** Return the JSON collection name for a wrapper type. */
1446
+ function getCollectionName(type: GLTFCollectionType): string {
1447
+ switch (type) {
1448
+ case 'bufferView':
1449
+ return 'bufferViews';
1450
+ case 'externalAsset':
1451
+ return 'externalAssets';
1452
+ case 'mesh':
1453
+ return 'meshes';
1454
+ default:
1455
+ return `${type}s`;
1456
+ }
1457
+ }
1458
+
1459
+ /** Remove every occurrence of a string from an optional array. */
1460
+ function removeString(values: string[] | undefined, value: string): void {
1461
+ if (!values) {
1462
+ return;
1463
+ }
1464
+ for (let index = values.length - 1; index >= 0; index--) {
1465
+ if (values[index] === value) {
1466
+ values.splice(index, 1);
1467
+ }
1468
+ }
1469
+ }