@loaders.gl/scene 5.0.0-alpha.8 → 5.0.0-beta.1

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 (969) hide show
  1. package/GLTF-README.md +46 -0
  2. package/LICENSE +2 -30
  3. package/OBJ-README.md +28 -0
  4. package/README.md +5 -0
  5. package/THIRD-PARTY-NOTICES.md +23 -0
  6. package/bin/gltf/glbdump.js +8 -0
  7. package/dist/dist.dev.js +33820 -23
  8. package/dist/dist.min.js +38 -3
  9. package/dist/gltf/bundled.cjs +34 -0
  10. package/dist/gltf/bundled.cjs.map +7 -0
  11. package/dist/gltf/bundled.d.ts +5 -0
  12. package/dist/gltf/bundled.d.ts.map +1 -0
  13. package/dist/gltf/bundled.js +6 -0
  14. package/dist/gltf/bundled.js.map +1 -0
  15. package/dist/gltf/glb-loader-types.cjs +59 -0
  16. package/dist/gltf/glb-loader-types.cjs.map +7 -0
  17. package/dist/gltf/glb-loader-types.d.ts +58 -0
  18. package/dist/gltf/glb-loader-types.d.ts.map +1 -0
  19. package/dist/gltf/glb-loader-types.js +24 -0
  20. package/dist/gltf/glb-loader-types.js.map +1 -0
  21. package/dist/gltf/glb-loader.cjs +46 -0
  22. package/dist/gltf/glb-loader.cjs.map +7 -0
  23. package/dist/gltf/glb-loader.d.ts +42 -0
  24. package/dist/gltf/glb-loader.d.ts.map +1 -0
  25. package/dist/gltf/glb-loader.js +24 -0
  26. package/dist/gltf/glb-loader.js.map +1 -0
  27. package/dist/gltf/glb-writer.cjs +51 -0
  28. package/dist/gltf/glb-writer.cjs.map +7 -0
  29. package/dist/gltf/glb-writer.d.ts +30 -0
  30. package/dist/gltf/glb-writer.d.ts.map +1 -0
  31. package/dist/gltf/glb-writer.js +31 -0
  32. package/dist/gltf/glb-writer.js.map +1 -0
  33. package/dist/gltf/gltf-1.schema.json +2075 -0
  34. package/dist/gltf/gltf-2.1.schema.json +1786 -0
  35. package/dist/gltf/gltf-2.schema.json +1786 -0
  36. package/dist/gltf/gltf-all.schema.json +5654 -0
  37. package/dist/gltf/gltf-format.cjs +55 -0
  38. package/dist/gltf/gltf-format.cjs.map +7 -0
  39. package/dist/gltf/gltf-format.d.ts +26 -0
  40. package/dist/gltf/gltf-format.d.ts.map +1 -0
  41. package/dist/gltf/gltf-format.js +29 -0
  42. package/dist/gltf/gltf-format.js.map +1 -0
  43. package/dist/gltf/gltf-loader-types.cjs +71 -0
  44. package/dist/gltf/gltf-loader-types.cjs.map +7 -0
  45. package/dist/gltf/gltf-loader-types.d.ts +71 -0
  46. package/dist/gltf/gltf-loader-types.d.ts.map +1 -0
  47. package/dist/gltf/gltf-loader-types.js +30 -0
  48. package/dist/gltf/gltf-loader-types.js.map +1 -0
  49. package/dist/gltf/gltf-loader.cjs +46 -0
  50. package/dist/gltf/gltf-loader.cjs.map +7 -0
  51. package/dist/gltf/gltf-loader.d.ts +45 -0
  52. package/dist/gltf/gltf-loader.d.ts.map +1 -0
  53. package/dist/gltf/gltf-loader.js +22 -0
  54. package/dist/gltf/gltf-loader.js.map +1 -0
  55. package/dist/gltf/gltf-source.cjs +236 -0
  56. package/dist/gltf/gltf-source.cjs.map +7 -0
  57. package/dist/gltf/gltf-source.d.ts +59 -0
  58. package/dist/gltf/gltf-source.d.ts.map +1 -0
  59. package/dist/gltf/gltf-source.js +230 -0
  60. package/dist/gltf/gltf-source.js.map +1 -0
  61. package/dist/gltf/gltf-writer.cjs +67 -0
  62. package/dist/gltf/gltf-writer.cjs.map +7 -0
  63. package/dist/gltf/gltf-writer.d.ts +14 -0
  64. package/dist/gltf/gltf-writer.d.ts.map +1 -0
  65. package/dist/gltf/gltf-writer.js +44 -0
  66. package/dist/gltf/gltf-writer.js.map +1 -0
  67. package/dist/gltf/gltf.schema.json +5654 -0
  68. package/dist/gltf/index.cjs +225 -0
  69. package/dist/gltf/index.cjs.map +7 -0
  70. package/dist/gltf/index.d.ts +46 -0
  71. package/dist/gltf/index.d.ts.map +1 -0
  72. package/dist/gltf/index.js +39 -0
  73. package/dist/gltf/index.js.map +1 -0
  74. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.cjs +68 -0
  75. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.cjs.map +7 -0
  76. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.d.ts +17 -0
  77. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.d.ts.map +1 -0
  78. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.js +45 -0
  79. package/dist/gltf/lib/api/append-gltf-v1-buffer-data.js.map +1 -0
  80. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.cjs +133 -0
  81. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.cjs.map +7 -0
  82. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.d.ts +8 -0
  83. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.d.ts.map +1 -0
  84. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.js +138 -0
  85. package/dist/gltf/lib/api/bake-gltf-v1-bind-shapes.js.map +1 -0
  86. package/dist/gltf/lib/api/clean-gltf-v1-fields.cjs +93 -0
  87. package/dist/gltf/lib/api/clean-gltf-v1-fields.cjs.map +7 -0
  88. package/dist/gltf/lib/api/clean-gltf-v1-fields.d.ts +6 -0
  89. package/dist/gltf/lib/api/clean-gltf-v1-fields.d.ts.map +1 -0
  90. package/dist/gltf/lib/api/clean-gltf-v1-fields.js +87 -0
  91. package/dist/gltf/lib/api/clean-gltf-v1-fields.js.map +1 -0
  92. package/dist/gltf/lib/api/convert-gltf-v1-accessors.cjs +128 -0
  93. package/dist/gltf/lib/api/convert-gltf-v1-accessors.cjs.map +7 -0
  94. package/dist/gltf/lib/api/convert-gltf-v1-accessors.d.ts +8 -0
  95. package/dist/gltf/lib/api/convert-gltf-v1-accessors.d.ts.map +1 -0
  96. package/dist/gltf/lib/api/convert-gltf-v1-accessors.js +147 -0
  97. package/dist/gltf/lib/api/convert-gltf-v1-accessors.js.map +1 -0
  98. package/dist/gltf/lib/api/convert-gltf-v1-animations.cjs +81 -0
  99. package/dist/gltf/lib/api/convert-gltf-v1-animations.cjs.map +7 -0
  100. package/dist/gltf/lib/api/convert-gltf-v1-animations.d.ts +4 -0
  101. package/dist/gltf/lib/api/convert-gltf-v1-animations.d.ts.map +1 -0
  102. package/dist/gltf/lib/api/convert-gltf-v1-animations.js +61 -0
  103. package/dist/gltf/lib/api/convert-gltf-v1-animations.js.map +1 -0
  104. package/dist/gltf/lib/api/convert-gltf-v1-materials.cjs +265 -0
  105. package/dist/gltf/lib/api/convert-gltf-v1-materials.cjs.map +7 -0
  106. package/dist/gltf/lib/api/convert-gltf-v1-materials.d.ts +6 -0
  107. package/dist/gltf/lib/api/convert-gltf-v1-materials.d.ts.map +1 -0
  108. package/dist/gltf/lib/api/convert-gltf-v1-materials.js +266 -0
  109. package/dist/gltf/lib/api/convert-gltf-v1-materials.js.map +1 -0
  110. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.cjs +98 -0
  111. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.cjs.map +7 -0
  112. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.d.ts +4 -0
  113. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.d.ts.map +1 -0
  114. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.js +86 -0
  115. package/dist/gltf/lib/api/convert-gltf-v1-matrix-nodes.js.map +1 -0
  116. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.cjs +87 -0
  117. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.cjs.map +7 -0
  118. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.d.ts +4 -0
  119. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.d.ts.map +1 -0
  120. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.js +72 -0
  121. package/dist/gltf/lib/api/convert-gltf-v1-skin-scenes.js.map +1 -0
  122. package/dist/gltf/lib/api/convert-gltf-v1-skins.cjs +173 -0
  123. package/dist/gltf/lib/api/convert-gltf-v1-skins.cjs.map +7 -0
  124. package/dist/gltf/lib/api/convert-gltf-v1-skins.d.ts +9 -0
  125. package/dist/gltf/lib/api/convert-gltf-v1-skins.d.ts.map +1 -0
  126. package/dist/gltf/lib/api/convert-gltf-v1-skins.js +161 -0
  127. package/dist/gltf/lib/api/convert-gltf-v1-skins.js.map +1 -0
  128. package/dist/gltf/lib/api/gltf-accessors.cjs +83 -0
  129. package/dist/gltf/lib/api/gltf-accessors.cjs.map +7 -0
  130. package/dist/gltf/lib/api/gltf-accessors.d.ts +22 -0
  131. package/dist/gltf/lib/api/gltf-accessors.d.ts.map +1 -0
  132. package/dist/gltf/lib/api/gltf-accessors.js +66 -0
  133. package/dist/gltf/lib/api/gltf-accessors.js.map +1 -0
  134. package/dist/gltf/lib/api/gltf-culling.cjs +73 -0
  135. package/dist/gltf/lib/api/gltf-culling.cjs.map +7 -0
  136. package/dist/gltf/lib/api/gltf-culling.d.ts +12 -0
  137. package/dist/gltf/lib/api/gltf-culling.d.ts.map +1 -0
  138. package/dist/gltf/lib/api/gltf-culling.js +55 -0
  139. package/dist/gltf/lib/api/gltf-culling.js.map +1 -0
  140. package/dist/gltf/lib/api/gltf-extension-data.cjs +102 -0
  141. package/dist/gltf/lib/api/gltf-extension-data.cjs.map +7 -0
  142. package/dist/gltf/lib/api/gltf-extension-data.d.ts +38 -0
  143. package/dist/gltf/lib/api/gltf-extension-data.d.ts.map +1 -0
  144. package/dist/gltf/lib/api/gltf-extension-data.js +75 -0
  145. package/dist/gltf/lib/api/gltf-extension-data.js.map +1 -0
  146. package/dist/gltf/lib/api/gltf-extensions.cjs +123 -0
  147. package/dist/gltf/lib/api/gltf-extensions.cjs.map +7 -0
  148. package/dist/gltf/lib/api/gltf-extensions.d.ts +33 -0
  149. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -0
  150. package/dist/gltf/lib/api/gltf-extensions.js +100 -0
  151. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -0
  152. package/dist/gltf/lib/api/gltf-iterator.cjs +1001 -0
  153. package/dist/gltf/lib/api/gltf-iterator.cjs.map +7 -0
  154. package/dist/gltf/lib/api/gltf-iterator.d.ts +407 -0
  155. package/dist/gltf/lib/api/gltf-iterator.d.ts.map +1 -0
  156. package/dist/gltf/lib/api/gltf-iterator.js +940 -0
  157. package/dist/gltf/lib/api/gltf-iterator.js.map +1 -0
  158. package/dist/gltf/lib/api/gltf-mesh-arrow.cjs +269 -0
  159. package/dist/gltf/lib/api/gltf-mesh-arrow.cjs.map +7 -0
  160. package/dist/gltf/lib/api/gltf-mesh-arrow.d.ts +53 -0
  161. package/dist/gltf/lib/api/gltf-mesh-arrow.d.ts.map +1 -0
  162. package/dist/gltf/lib/api/gltf-mesh-arrow.js +247 -0
  163. package/dist/gltf/lib/api/gltf-mesh-arrow.js.map +1 -0
  164. package/dist/gltf/lib/api/gltf-scenegraph.cjs +615 -0
  165. package/dist/gltf/lib/api/gltf-scenegraph.cjs.map +7 -0
  166. package/dist/gltf/lib/api/gltf-scenegraph.d.ts +183 -0
  167. package/dist/gltf/lib/api/gltf-scenegraph.d.ts.map +1 -0
  168. package/dist/gltf/lib/api/gltf-scenegraph.js +624 -0
  169. package/dist/gltf/lib/api/gltf-scenegraph.js.map +1 -0
  170. package/dist/gltf/lib/api/normalize-gltf-v1.cjs +479 -0
  171. package/dist/gltf/lib/api/normalize-gltf-v1.cjs.map +7 -0
  172. package/dist/gltf/lib/api/normalize-gltf-v1.d.ts +37 -0
  173. package/dist/gltf/lib/api/normalize-gltf-v1.d.ts.map +1 -0
  174. package/dist/gltf/lib/api/normalize-gltf-v1.js +461 -0
  175. package/dist/gltf/lib/api/normalize-gltf-v1.js.map +1 -0
  176. package/dist/gltf/lib/api/repack-gltf-v1-accessors.cjs +405 -0
  177. package/dist/gltf/lib/api/repack-gltf-v1-accessors.cjs.map +7 -0
  178. package/dist/gltf/lib/api/repack-gltf-v1-accessors.d.ts +50 -0
  179. package/dist/gltf/lib/api/repack-gltf-v1-accessors.d.ts.map +1 -0
  180. package/dist/gltf/lib/api/repack-gltf-v1-accessors.js +448 -0
  181. package/dist/gltf/lib/api/repack-gltf-v1-accessors.js.map +1 -0
  182. package/dist/gltf/lib/api/validate-gltf-v1-buffers.cjs +110 -0
  183. package/dist/gltf/lib/api/validate-gltf-v1-buffers.cjs.map +7 -0
  184. package/dist/gltf/lib/api/validate-gltf-v1-buffers.d.ts +4 -0
  185. package/dist/gltf/lib/api/validate-gltf-v1-buffers.d.ts.map +1 -0
  186. package/dist/gltf/lib/api/validate-gltf-v1-buffers.js +111 -0
  187. package/dist/gltf/lib/api/validate-gltf-v1-buffers.js.map +1 -0
  188. package/dist/gltf/lib/api/validate-gltf-v1-cameras.cjs +41 -0
  189. package/dist/gltf/lib/api/validate-gltf-v1-cameras.cjs.map +7 -0
  190. package/dist/gltf/lib/api/validate-gltf-v1-cameras.d.ts +4 -0
  191. package/dist/gltf/lib/api/validate-gltf-v1-cameras.d.ts.map +1 -0
  192. package/dist/gltf/lib/api/validate-gltf-v1-cameras.js +34 -0
  193. package/dist/gltf/lib/api/validate-gltf-v1-cameras.js.map +1 -0
  194. package/dist/gltf/lib/api/validate-gltf-v1-geometry.cjs +121 -0
  195. package/dist/gltf/lib/api/validate-gltf-v1-geometry.cjs.map +7 -0
  196. package/dist/gltf/lib/api/validate-gltf-v1-geometry.d.ts +5 -0
  197. package/dist/gltf/lib/api/validate-gltf-v1-geometry.d.ts.map +1 -0
  198. package/dist/gltf/lib/api/validate-gltf-v1-geometry.js +118 -0
  199. package/dist/gltf/lib/api/validate-gltf-v1-geometry.js.map +1 -0
  200. package/dist/gltf/lib/api/validate-gltf-v1-payloads.cjs +265 -0
  201. package/dist/gltf/lib/api/validate-gltf-v1-payloads.cjs.map +7 -0
  202. package/dist/gltf/lib/api/validate-gltf-v1-payloads.d.ts +4 -0
  203. package/dist/gltf/lib/api/validate-gltf-v1-payloads.d.ts.map +1 -0
  204. package/dist/gltf/lib/api/validate-gltf-v1-payloads.js +268 -0
  205. package/dist/gltf/lib/api/validate-gltf-v1-payloads.js.map +1 -0
  206. package/dist/gltf/lib/encoders/encode-glb.cjs +147 -0
  207. package/dist/gltf/lib/encoders/encode-glb.cjs.map +7 -0
  208. package/dist/gltf/lib/encoders/encode-glb.d.ts +21 -0
  209. package/dist/gltf/lib/encoders/encode-glb.d.ts.map +1 -0
  210. package/dist/gltf/lib/encoders/encode-glb.js +142 -0
  211. package/dist/gltf/lib/encoders/encode-glb.js.map +1 -0
  212. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +202 -0
  213. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +7 -0
  214. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +20 -0
  215. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -0
  216. package/dist/gltf/lib/encoders/encode-gltf-draco.js +187 -0
  217. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -0
  218. package/dist/gltf/lib/encoders/encode-gltf.cjs +40 -0
  219. package/dist/gltf/lib/encoders/encode-gltf.cjs.map +7 -0
  220. package/dist/gltf/lib/encoders/encode-gltf.d.ts +22 -0
  221. package/dist/gltf/lib/encoders/encode-gltf.d.ts.map +1 -0
  222. package/dist/gltf/lib/encoders/encode-gltf.js +32 -0
  223. package/dist/gltf/lib/encoders/encode-gltf.js.map +1 -0
  224. package/dist/gltf/lib/extensions/EXT_mesh_features.cjs +175 -0
  225. package/dist/gltf/lib/extensions/EXT_mesh_features.cjs.map +7 -0
  226. package/dist/gltf/lib/extensions/EXT_mesh_features.d.ts +22 -0
  227. package/dist/gltf/lib/extensions/EXT_mesh_features.d.ts.map +1 -0
  228. package/dist/gltf/lib/extensions/EXT_mesh_features.js +189 -0
  229. package/dist/gltf/lib/extensions/EXT_mesh_features.js.map +1 -0
  230. package/dist/gltf/lib/extensions/EXT_mesh_polygon.cjs +149 -0
  231. package/dist/gltf/lib/extensions/EXT_mesh_polygon.cjs.map +7 -0
  232. package/dist/gltf/lib/extensions/EXT_mesh_polygon.d.ts +7 -0
  233. package/dist/gltf/lib/extensions/EXT_mesh_polygon.d.ts.map +1 -0
  234. package/dist/gltf/lib/extensions/EXT_mesh_polygon.js +125 -0
  235. package/dist/gltf/lib/extensions/EXT_mesh_polygon.js.map +1 -0
  236. package/dist/gltf/lib/extensions/EXT_meshopt_compression.cjs +37 -0
  237. package/dist/gltf/lib/extensions/EXT_meshopt_compression.cjs.map +7 -0
  238. package/dist/gltf/lib/extensions/EXT_meshopt_compression.d.ts +25 -0
  239. package/dist/gltf/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -0
  240. package/dist/gltf/lib/extensions/EXT_meshopt_compression.js +29 -0
  241. package/dist/gltf/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  242. package/dist/gltf/lib/extensions/EXT_primitive_voxels.cjs +87 -0
  243. package/dist/gltf/lib/extensions/EXT_primitive_voxels.cjs.map +7 -0
  244. package/dist/gltf/lib/extensions/EXT_primitive_voxels.d.ts +10 -0
  245. package/dist/gltf/lib/extensions/EXT_primitive_voxels.d.ts.map +1 -0
  246. package/dist/gltf/lib/extensions/EXT_primitive_voxels.js +57 -0
  247. package/dist/gltf/lib/extensions/EXT_primitive_voxels.js.map +1 -0
  248. package/dist/gltf/lib/extensions/EXT_structural_metadata.cjs +684 -0
  249. package/dist/gltf/lib/extensions/EXT_structural_metadata.cjs.map +7 -0
  250. package/dist/gltf/lib/extensions/EXT_structural_metadata.d.ts +26 -0
  251. package/dist/gltf/lib/extensions/EXT_structural_metadata.d.ts.map +1 -0
  252. package/dist/gltf/lib/extensions/EXT_structural_metadata.js +786 -0
  253. package/dist/gltf/lib/extensions/EXT_structural_metadata.js.map +1 -0
  254. package/dist/gltf/lib/extensions/EXT_texture_avif.cjs +56 -0
  255. package/dist/gltf/lib/extensions/EXT_texture_avif.cjs.map +7 -0
  256. package/dist/gltf/lib/extensions/EXT_texture_avif.d.ts +15 -0
  257. package/dist/gltf/lib/extensions/EXT_texture_avif.d.ts.map +1 -0
  258. package/dist/gltf/lib/extensions/EXT_texture_avif.js +40 -0
  259. package/dist/gltf/lib/extensions/EXT_texture_avif.js.map +1 -0
  260. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +53 -0
  261. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +7 -0
  262. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts +10 -0
  263. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -0
  264. package/dist/gltf/lib/extensions/EXT_texture_webp.js +32 -0
  265. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -0
  266. package/dist/gltf/lib/extensions/KHR_audio_emitter.cjs +128 -0
  267. package/dist/gltf/lib/extensions/KHR_audio_emitter.cjs.map +7 -0
  268. package/dist/gltf/lib/extensions/KHR_audio_emitter.d.ts +8 -0
  269. package/dist/gltf/lib/extensions/KHR_audio_emitter.d.ts.map +1 -0
  270. package/dist/gltf/lib/extensions/KHR_audio_emitter.js +121 -0
  271. package/dist/gltf/lib/extensions/KHR_audio_emitter.js.map +1 -0
  272. package/dist/gltf/lib/extensions/KHR_binary_gltf.cjs +53 -0
  273. package/dist/gltf/lib/extensions/KHR_binary_gltf.cjs.map +7 -0
  274. package/dist/gltf/lib/extensions/KHR_binary_gltf.d.ts +6 -0
  275. package/dist/gltf/lib/extensions/KHR_binary_gltf.d.ts.map +1 -0
  276. package/dist/gltf/lib/extensions/KHR_binary_gltf.js +40 -0
  277. package/dist/gltf/lib/extensions/KHR_binary_gltf.js.map +1 -0
  278. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +131 -0
  279. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +7 -0
  280. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts +8 -0
  281. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -0
  282. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +107 -0
  283. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  284. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +209 -0
  285. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +7 -0
  286. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +13 -0
  287. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -0
  288. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +160 -0
  289. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -0
  290. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.cjs +110 -0
  291. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.cjs.map +7 -0
  292. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.d.ts +10 -0
  293. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.d.ts.map +1 -0
  294. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.js +87 -0
  295. package/dist/gltf/lib/extensions/KHR_mesh_primitive_restart.js.map +1 -0
  296. package/dist/gltf/lib/extensions/KHR_meshopt_compression.cjs +37 -0
  297. package/dist/gltf/lib/extensions/KHR_meshopt_compression.cjs.map +7 -0
  298. package/dist/gltf/lib/extensions/KHR_meshopt_compression.d.ts +24 -0
  299. package/dist/gltf/lib/extensions/KHR_meshopt_compression.d.ts.map +1 -0
  300. package/dist/gltf/lib/extensions/KHR_meshopt_compression.js +28 -0
  301. package/dist/gltf/lib/extensions/KHR_meshopt_compression.js.map +1 -0
  302. package/dist/gltf/lib/extensions/KHR_texture_basisu.cjs +47 -0
  303. package/dist/gltf/lib/extensions/KHR_texture_basisu.cjs.map +7 -0
  304. package/dist/gltf/lib/extensions/KHR_texture_basisu.d.ts +10 -0
  305. package/dist/gltf/lib/extensions/KHR_texture_basisu.d.ts.map +1 -0
  306. package/dist/gltf/lib/extensions/KHR_texture_basisu.js +26 -0
  307. package/dist/gltf/lib/extensions/KHR_texture_basisu.js.map +1 -0
  308. package/dist/gltf/lib/extensions/KHR_texture_transform.cjs +258 -0
  309. package/dist/gltf/lib/extensions/KHR_texture_transform.cjs.map +7 -0
  310. package/dist/gltf/lib/extensions/KHR_texture_transform.d.ts +10 -0
  311. package/dist/gltf/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
  312. package/dist/gltf/lib/extensions/KHR_texture_transform.js +271 -0
  313. package/dist/gltf/lib/extensions/KHR_texture_transform.js.map +1 -0
  314. package/dist/gltf/lib/extensions/MPEG_audio_spatial.cjs +70 -0
  315. package/dist/gltf/lib/extensions/MPEG_audio_spatial.cjs.map +7 -0
  316. package/dist/gltf/lib/extensions/MPEG_audio_spatial.d.ts +10 -0
  317. package/dist/gltf/lib/extensions/MPEG_audio_spatial.d.ts.map +1 -0
  318. package/dist/gltf/lib/extensions/MPEG_audio_spatial.js +45 -0
  319. package/dist/gltf/lib/extensions/MPEG_audio_spatial.js.map +1 -0
  320. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.cjs +276 -0
  321. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.cjs.map +7 -0
  322. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.d.ts +5 -0
  323. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
  324. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.js +306 -0
  325. package/dist/gltf/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  326. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.cjs +71 -0
  327. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.cjs.map +7 -0
  328. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.d.ts +5 -0
  329. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -0
  330. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.js +54 -0
  331. package/dist/gltf/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  332. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.cjs +62 -0
  333. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.cjs.map +7 -0
  334. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.d.ts +9 -0
  335. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -0
  336. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.js +38 -0
  337. package/dist/gltf/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  338. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.cjs +99 -0
  339. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.cjs.map +7 -0
  340. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +5 -0
  341. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -0
  342. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.js +76 -0
  343. package/dist/gltf/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  344. package/dist/gltf/lib/extensions/meshopt-compression.cjs +114 -0
  345. package/dist/gltf/lib/extensions/meshopt-compression.cjs.map +7 -0
  346. package/dist/gltf/lib/extensions/meshopt-compression.d.ts +48 -0
  347. package/dist/gltf/lib/extensions/meshopt-compression.d.ts.map +1 -0
  348. package/dist/gltf/lib/extensions/meshopt-compression.js +123 -0
  349. package/dist/gltf/lib/extensions/meshopt-compression.js.map +1 -0
  350. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +280 -0
  351. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +7 -0
  352. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts +84 -0
  353. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -0
  354. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +358 -0
  355. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
  356. package/dist/gltf/lib/gltf-utils/get-typed-array.cjs +189 -0
  357. package/dist/gltf/lib/gltf-utils/get-typed-array.cjs.map +7 -0
  358. package/dist/gltf/lib/gltf-utils/get-typed-array.d.ts +13 -0
  359. package/dist/gltf/lib/gltf-utils/get-typed-array.d.ts.map +1 -0
  360. package/dist/gltf/lib/gltf-utils/get-typed-array.js +175 -0
  361. package/dist/gltf/lib/gltf-utils/get-typed-array.js.map +1 -0
  362. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.cjs +90 -0
  363. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.cjs.map +7 -0
  364. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.d.ts +6 -0
  365. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -0
  366. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.js +72 -0
  367. package/dist/gltf/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  368. package/dist/gltf/lib/gltf-utils/gltf-constants.cjs +90 -0
  369. package/dist/gltf/lib/gltf-utils/gltf-constants.cjs.map +7 -0
  370. package/dist/gltf/lib/gltf-utils/gltf-constants.d.ts +26 -0
  371. package/dist/gltf/lib/gltf-utils/gltf-constants.d.ts.map +1 -0
  372. package/dist/gltf/lib/gltf-utils/gltf-constants.js +46 -0
  373. package/dist/gltf/lib/gltf-utils/gltf-constants.js.map +1 -0
  374. package/dist/gltf/lib/gltf-utils/gltf-utils.cjs +157 -0
  375. package/dist/gltf/lib/gltf-utils/gltf-utils.cjs.map +7 -0
  376. package/dist/gltf/lib/gltf-utils/gltf-utils.d.ts +17 -0
  377. package/dist/gltf/lib/gltf-utils/gltf-utils.d.ts.map +1 -0
  378. package/dist/gltf/lib/gltf-utils/gltf-utils.js +135 -0
  379. package/dist/gltf/lib/gltf-utils/gltf-utils.js.map +1 -0
  380. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.cjs +91 -0
  381. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.cjs.map +7 -0
  382. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.d.ts +21 -0
  383. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.d.ts.map +1 -0
  384. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.js +77 -0
  385. package/dist/gltf/lib/gltf-utils/resolve-gltf-file.js.map +1 -0
  386. package/dist/gltf/lib/gltf-utils/resolve-url.cjs +61 -0
  387. package/dist/gltf/lib/gltf-utils/resolve-url.cjs.map +7 -0
  388. package/dist/gltf/lib/gltf-utils/resolve-url.d.ts +10 -0
  389. package/dist/gltf/lib/gltf-utils/resolve-url.d.ts.map +1 -0
  390. package/dist/gltf/lib/gltf-utils/resolve-url.js +43 -0
  391. package/dist/gltf/lib/gltf-utils/resolve-url.js.map +1 -0
  392. package/dist/gltf/lib/parsers/parse-glb.cjs +185 -0
  393. package/dist/gltf/lib/parsers/parse-glb.cjs.map +7 -0
  394. package/dist/gltf/lib/parsers/parse-glb.d.ts +20 -0
  395. package/dist/gltf/lib/parsers/parse-glb.d.ts.map +1 -0
  396. package/dist/gltf/lib/parsers/parse-glb.js +216 -0
  397. package/dist/gltf/lib/parsers/parse-glb.js.map +1 -0
  398. package/dist/gltf/lib/parsers/parse-gltf.cjs +365 -0
  399. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +7 -0
  400. package/dist/gltf/lib/parsers/parse-gltf.d.ts +43 -0
  401. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -0
  402. package/dist/gltf/lib/parsers/parse-gltf.js +372 -0
  403. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -0
  404. package/dist/gltf/lib/types/glb-types.cjs +19 -0
  405. package/dist/gltf/lib/types/glb-types.cjs.map +7 -0
  406. package/dist/gltf/lib/types/glb-types.d.ts +35 -0
  407. package/dist/gltf/lib/types/glb-types.d.ts.map +1 -0
  408. package/dist/gltf/lib/types/glb-types.js +5 -0
  409. package/dist/gltf/lib/types/glb-types.js.map +1 -0
  410. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +123 -0
  411. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +7 -0
  412. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +110 -0
  413. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -0
  414. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +87 -0
  415. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -0
  416. package/dist/gltf/lib/types/gltf-audio-extension-schemas.cjs +189 -0
  417. package/dist/gltf/lib/types/gltf-audio-extension-schemas.cjs.map +7 -0
  418. package/dist/gltf/lib/types/gltf-audio-extension-schemas.d.ts +192 -0
  419. package/dist/gltf/lib/types/gltf-audio-extension-schemas.d.ts.map +1 -0
  420. package/dist/gltf/lib/types/gltf-audio-extension-schemas.js +154 -0
  421. package/dist/gltf/lib/types/gltf-audio-extension-schemas.js.map +1 -0
  422. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.cjs +19 -0
  423. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.cjs.map +7 -0
  424. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.d.ts +421 -0
  425. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.d.ts.map +1 -0
  426. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.js +5 -0
  427. package/dist/gltf/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  428. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs +19 -0
  429. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +7 -0
  430. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +39 -0
  431. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -0
  432. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.js +5 -0
  433. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.js.map +1 -0
  434. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.cjs +19 -0
  435. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.cjs.map +7 -0
  436. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.d.ts +49 -0
  437. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.d.ts.map +1 -0
  438. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.js +5 -0
  439. package/dist/gltf/lib/types/gltf-ext-mesh-features-schema.js.map +1 -0
  440. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.cjs +19 -0
  441. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.cjs.map +7 -0
  442. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.d.ts +334 -0
  443. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.d.ts.map +1 -0
  444. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.js +5 -0
  445. package/dist/gltf/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -0
  446. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.cjs +19 -0
  447. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.cjs.map +7 -0
  448. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.d.ts +42 -0
  449. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.d.ts.map +1 -0
  450. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.js +5 -0
  451. package/dist/gltf/lib/types/gltf-ext-vector-voxel-schema.js.map +1 -0
  452. package/dist/gltf/lib/types/gltf-extension-schemas.cjs +83 -0
  453. package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +7 -0
  454. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +229 -0
  455. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -0
  456. package/dist/gltf/lib/types/gltf-extension-schemas.js +53 -0
  457. package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -0
  458. package/dist/gltf/lib/types/gltf-interactivity.cjs +34 -0
  459. package/dist/gltf/lib/types/gltf-interactivity.cjs.map +7 -0
  460. package/dist/gltf/lib/types/gltf-interactivity.d.ts +131 -0
  461. package/dist/gltf/lib/types/gltf-interactivity.d.ts.map +1 -0
  462. package/dist/gltf/lib/types/gltf-interactivity.js +13 -0
  463. package/dist/gltf/lib/types/gltf-interactivity.js.map +1 -0
  464. package/dist/gltf/lib/types/gltf-json-schema.cjs +19 -0
  465. package/dist/gltf/lib/types/gltf-json-schema.cjs.map +7 -0
  466. package/dist/gltf/lib/types/gltf-json-schema.d.ts +841 -0
  467. package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -0
  468. package/dist/gltf/lib/types/gltf-json-schema.js +3 -0
  469. package/dist/gltf/lib/types/gltf-json-schema.js.map +1 -0
  470. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.cjs +19 -0
  471. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.cjs.map +7 -0
  472. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.d.ts +46 -0
  473. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.d.ts.map +1 -0
  474. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.js +5 -0
  475. package/dist/gltf/lib/types/gltf-khr-audio-emitter-schema.js.map +1 -0
  476. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.cjs +19 -0
  477. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.cjs.map +7 -0
  478. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.d.ts +20 -0
  479. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.d.ts.map +1 -0
  480. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.js +5 -0
  481. package/dist/gltf/lib/types/gltf-mpeg-audio-spatial-schema.js.map +1 -0
  482. package/dist/gltf/lib/types/gltf-official-json-schemas.cjs +17840 -0
  483. package/dist/gltf/lib/types/gltf-official-json-schemas.cjs.map +7 -0
  484. package/dist/gltf/lib/types/gltf-official-json-schemas.d.ts +14 -0
  485. package/dist/gltf/lib/types/gltf-official-json-schemas.d.ts.map +1 -0
  486. package/dist/gltf/lib/types/gltf-official-json-schemas.js +17751 -0
  487. package/dist/gltf/lib/types/gltf-official-json-schemas.js.map +1 -0
  488. package/dist/gltf/lib/types/gltf-shape-schema.cjs +19 -0
  489. package/dist/gltf/lib/types/gltf-shape-schema.cjs.map +7 -0
  490. package/dist/gltf/lib/types/gltf-shape-schema.d.ts +49 -0
  491. package/dist/gltf/lib/types/gltf-shape-schema.d.ts.map +1 -0
  492. package/dist/gltf/lib/types/gltf-shape-schema.js +5 -0
  493. package/dist/gltf/lib/types/gltf-shape-schema.js.map +1 -0
  494. package/dist/gltf/lib/types/gltf-types.cjs +19 -0
  495. package/dist/gltf/lib/types/gltf-types.cjs.map +7 -0
  496. package/dist/gltf/lib/types/gltf-types.d.ts +53 -0
  497. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -0
  498. package/dist/gltf/lib/types/gltf-types.js +5 -0
  499. package/dist/gltf/lib/types/gltf-types.js.map +1 -0
  500. package/dist/gltf/lib/types/gltf-vector-topology.cjs +19 -0
  501. package/dist/gltf/lib/types/gltf-vector-topology.cjs.map +7 -0
  502. package/dist/gltf/lib/types/gltf-vector-topology.d.ts +56 -0
  503. package/dist/gltf/lib/types/gltf-vector-topology.d.ts.map +1 -0
  504. package/dist/gltf/lib/types/gltf-vector-topology.js +5 -0
  505. package/dist/gltf/lib/types/gltf-vector-topology.js.map +1 -0
  506. package/dist/gltf/lib/types/gltf-version-zod-schemas.cjs +423 -0
  507. package/dist/gltf/lib/types/gltf-version-zod-schemas.cjs.map +7 -0
  508. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +1129 -0
  509. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -0
  510. package/dist/gltf/lib/types/gltf-version-zod-schemas.js +333 -0
  511. package/dist/gltf/lib/types/gltf-version-zod-schemas.js.map +1 -0
  512. package/dist/gltf/lib/types/gltf-zod-schema.cjs +462 -0
  513. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +7 -0
  514. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +1595 -0
  515. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -0
  516. package/dist/gltf/lib/types/gltf-zod-schema.js +497 -0
  517. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -0
  518. package/dist/gltf/lib/utils/assert.cjs +35 -0
  519. package/dist/gltf/lib/utils/assert.cjs.map +7 -0
  520. package/dist/gltf/lib/utils/assert.d.ts +2 -0
  521. package/dist/gltf/lib/utils/assert.d.ts.map +1 -0
  522. package/dist/gltf/lib/utils/assert.js +12 -0
  523. package/dist/gltf/lib/utils/assert.js.map +1 -0
  524. package/dist/gltf/lib/utils/version.cjs +31 -0
  525. package/dist/gltf/lib/utils/version.cjs.map +7 -0
  526. package/dist/gltf/lib/utils/version.d.ts +2 -0
  527. package/dist/gltf/lib/utils/version.d.ts.map +1 -0
  528. package/dist/gltf/lib/utils/version.js +8 -0
  529. package/dist/gltf/lib/utils/version.js.map +1 -0
  530. package/dist/gltf/libs/README.md +12 -0
  531. package/dist/gltf/libs/meshopt-decoder.d.mts +15 -0
  532. package/dist/gltf/libs/meshopt-decoder.mjs +196 -0
  533. package/dist/gltf/libs/meshoptimizer-LICENSE.md +21 -0
  534. package/dist/gltf/mesh-arrow.cjs +31 -0
  535. package/dist/gltf/mesh-arrow.cjs.map +7 -0
  536. package/dist/gltf/mesh-arrow.d.ts +2 -0
  537. package/dist/gltf/mesh-arrow.d.ts.map +1 -0
  538. package/dist/gltf/mesh-arrow.js +5 -0
  539. package/dist/gltf/mesh-arrow.js.map +1 -0
  540. package/dist/gltf/meshopt/meshopt-decoder.cjs +93 -0
  541. package/dist/gltf/meshopt/meshopt-decoder.cjs.map +7 -0
  542. package/dist/gltf/meshopt/meshopt-decoder.d.ts +78 -0
  543. package/dist/gltf/meshopt/meshopt-decoder.d.ts.map +1 -0
  544. package/dist/gltf/meshopt/meshopt-decoder.js +111 -0
  545. package/dist/gltf/meshopt/meshopt-decoder.js.map +1 -0
  546. package/dist/gltf/meshopt/meshopt-module-loader.cjs +43 -0
  547. package/dist/gltf/meshopt/meshopt-module-loader.cjs.map +7 -0
  548. package/dist/gltf/meshopt/meshopt-module-loader.d.ts +3 -0
  549. package/dist/gltf/meshopt/meshopt-module-loader.d.ts.map +1 -0
  550. package/dist/gltf/meshopt/meshopt-module-loader.js +8 -0
  551. package/dist/gltf/meshopt/meshopt-module-loader.js.map +1 -0
  552. package/dist/gltf/schema.cjs +60 -0
  553. package/dist/gltf/schema.cjs.map +7 -0
  554. package/dist/gltf/schema.d.ts +6 -0
  555. package/dist/gltf/schema.d.ts.map +1 -0
  556. package/dist/gltf/schema.js +10 -0
  557. package/dist/gltf/schema.js.map +1 -0
  558. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_binary_glTF/image.KHR_binary_glTF.schema.json +34 -0
  559. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_binary_glTF/shader.KHR_binary_glTF.schema.json +16 -0
  560. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/glTF.KHR_materials_common.schema.json +272 -0
  561. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.ambient.schema.json +57 -0
  562. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.directional.schema.json +57 -0
  563. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.point.schema.json +72 -0
  564. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.schema.json +258 -0
  565. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/light.spot.schema.json +82 -0
  566. package/dist/gltf/schemas/extensions/1.0/Khronos/KHR_materials_common/node.KHR_materials_common.schema.json +23 -0
  567. package/dist/gltf/schemas/extensions/1.0/Vendor/CESIUM_RTC/CESIUM_RTC.schema.json +21 -0
  568. package/dist/gltf/schemas/extensions/1.0/Vendor/WEB3D_quantized_attributes/WEB3D_quantized_attributes.accessor.schema.json +40 -0
  569. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness/glTF.KHR_materials_pbrSpecularGlossiness.schema.json +141 -0
  570. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/glTF.KHR_techniques_webgl.schema.json +417 -0
  571. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/material.KHR_techniques_webgl.schema.json +133 -0
  572. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/program.schema.json +97 -0
  573. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/shader.schema.json +109 -0
  574. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/technique.attribute.schema.json +51 -0
  575. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/technique.schema.json +267 -0
  576. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/technique.uniform.schema.json +185 -0
  577. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_techniques_webgl/uniform.value.schema.json +98 -0
  578. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_xmp/glTF.KHR_xmp.schema.json +61 -0
  579. package/dist/gltf/schemas/extensions/2.0/Archived/KHR_xmp/node.KHR_xmp.schema.json +59 -0
  580. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_animation_pointer/animation.channel.target.KHR_animation_pointer.schema.json +51 -0
  581. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_draco_mesh_compression/mesh.primitive.KHR_draco_mesh_compression.schema.json +67 -0
  582. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_gaussian_splatting/mesh.primitive.KHR_gaussian_splatting.schema.json +100 -0
  583. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/declaration.KHR_interactivity.schema.json +106 -0
  584. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/event.KHR_interactivity.schema.json +90 -0
  585. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/glTF.KHR_interactivity.schema.json +546 -0
  586. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/graph.KHR_interactivity.schema.json +512 -0
  587. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/node.KHR_interactivity.schema.json +183 -0
  588. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/type.KHR_interactivity.schema.json +96 -0
  589. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_interactivity/variable.KHR_interactivity.schema.json +64 -0
  590. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/glTF.KHR_lights_punctual.schema.json +175 -0
  591. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/light.schema.json +151 -0
  592. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/light.spot.schema.json +58 -0
  593. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_lights_punctual/node.KHR_lights_punctual.schema.json +58 -0
  594. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_anisotropy/material.KHR_materials_anisotropy.schema.json +103 -0
  595. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_clearcoat/material.KHR_materials_clearcoat.schema.json +144 -0
  596. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_diffuse_transmission/material.KHR_materials_diffuse_transmission.schema.json +123 -0
  597. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_dispersion/material.KHR_materials_dispersion.schema.json +50 -0
  598. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_emissive_strength/material.KHR_materials_emissive_strength.schema.json +49 -0
  599. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_ior/material.KHR_materials_ior.schema.json +58 -0
  600. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_iridescence/material.KHR_materials_iridescence.schema.json +125 -0
  601. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_sheen/material.KHR_materials_sheen.schema.json +122 -0
  602. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_specular/material.KHR_materials_specular.schema.json +122 -0
  603. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_transmission/material.KHR_materials_transmission.schema.json +97 -0
  604. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_unlit/material.KHR_materials_unlit.schema.json +43 -0
  605. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_variants/glTF.KHR_materials_variants.schema.json +88 -0
  606. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_variants/mesh.primitive.KHR_materials_variants.schema.json +100 -0
  607. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_materials_volume/material.KHR_materials_volume.schema.json +119 -0
  608. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_meshopt_compression/buffer.KHR_meshopt_compression.schema.json +48 -0
  609. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_meshopt_compression/bufferView.KHR_meshopt_compression.schema.json +106 -0
  610. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_node_hoverability/node.KHR_node_hoverability.schema.json +49 -0
  611. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_node_selectability/node.KHR_node_selectability.schema.json +49 -0
  612. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_node_visibility/node.KHR_node_visibility.schema.json +49 -0
  613. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_texture_basisu/texture.KHR_texture_basisu.schema.json +56 -0
  614. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_texture_transform/textureInfo.KHR_texture_transform.schema.json +79 -0
  615. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_xmp_json_ld/KHR_xmp_json_ld.schema.json +59 -0
  616. package/dist/gltf/schemas/extensions/2.0/Khronos/KHR_xmp_json_ld/glTF.KHR_xmp_json_ld.schema.json +70 -0
  617. package/dist/gltf/schemas/extensions/2.0/Vendor/ADOBE_materials_clearcoat_specular/glTF.ADOBE_materials_clearcoat_specular.schema.json +105 -0
  618. package/dist/gltf/schemas/extensions/2.0/Vendor/ADOBE_materials_clearcoat_tint/material.ADOBE_materials_clearcoat_tint.schema.json +106 -0
  619. package/dist/gltf/schemas/extensions/2.0/Vendor/ADOBE_materials_thin_transparency/glTF.ADOBE_materials_thin_transparency.schema.json +105 -0
  620. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/articulation.schema.json +177 -0
  621. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/articulation.stage.schema.json +136 -0
  622. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/gltf.AGI_articulations.schema.json +200 -0
  623. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_articulations/node.AGI_articulations.schema.json +53 -0
  624. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_stk_metadata/gltf.AGI_stk_metadata.schema.json +81 -0
  625. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_stk_metadata/node.AGI_stk_metadata.schema.json +53 -0
  626. package/dist/gltf/schemas/extensions/2.0/Vendor/AGI_stk_metadata/solarPanelGroup.schema.json +59 -0
  627. package/dist/gltf/schemas/extensions/2.0/Vendor/CESIUM_primitive_outline/primitive.CESIUM_primitive_outline.schema.json +56 -0
  628. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_ies/glTF.EXT_lights_ies.schema.json +132 -0
  629. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_ies/lightProfile.schema.json +107 -0
  630. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_ies/node.EXT_lights_ies.schema.json +80 -0
  631. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_image_based/glTF.EXT_lights_image_based.schema.json +145 -0
  632. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_image_based/light.schema.json +121 -0
  633. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_lights_image_based/scene.EXT_lights_image_based.schema.json +58 -0
  634. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/glTF.EXT_mesh_gpu_instancing.schema.json +56 -0
  635. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_manifold/mesh.EXT_mesh_manifold.schema.json +175 -0
  636. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/lineString.schema.json +70 -0
  637. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/primitive.EXT_mesh_primitive_edge_visibility.schema.json +119 -0
  638. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_restart/EXT_mesh_primitive_restart.schema.json +97 -0
  639. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_mesh_primitive_restart/primitiveGroup.schema.json +72 -0
  640. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_meshopt_compression/buffer.EXT_meshopt_compression.schema.json +48 -0
  641. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_meshopt_compression/bufferView.EXT_meshopt_compression.schema.json +105 -0
  642. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_texture_astc/texture.EXT_texture_astc.schema.json +56 -0
  643. package/dist/gltf/schemas/extensions/2.0/Vendor/EXT_texture_webp/glTF.EXT_texture_webp.schema.json +56 -0
  644. package/dist/gltf/schemas/extensions/2.0/Vendor/FB_geometry_metadata/scene.FB_geometry_metadata.schema.json +97 -0
  645. package/dist/gltf/schemas/extensions/2.0/Vendor/FB_geometry_metadata/sceneBounds.schema.json +64 -0
  646. package/dist/gltf/schemas/extensions/2.0/Vendor/GRIFFEL_bim_data/GRIFFEL_bim_data.schema.json +164 -0
  647. package/dist/gltf/schemas/extensions/2.0/Vendor/GRIFFEL_bim_data/glTF.GRIFFEL_bim_data.schema.json +107 -0
  648. package/dist/gltf/schemas/extensions/2.0/Vendor/GRIFFEL_bim_data/node.GRIFFEL_bim_data.schema.json +95 -0
  649. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_accessor_timed/MPEG_accessor_timed.schema.json +85 -0
  650. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_animation_timing/MPEG_animation_timing.schema.json +60 -0
  651. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.listener.schema.json +51 -0
  652. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.reverb.property.schema.json +63 -0
  653. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.reverb.schema.json +107 -0
  654. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.schema.json +276 -0
  655. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_audio_spatial/MPEG_audio_spatial.source.schema.json +139 -0
  656. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_buffer_circular/MPEG_buffer_circular.schema.json +80 -0
  657. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.media.alternative.schema.json +110 -0
  658. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.media.alternative.track.schema.json +56 -0
  659. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.media.schema.json +195 -0
  660. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_media/MPEG_media.schema.json +237 -0
  661. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_mesh_linking/MPEG_mesh_linking.schema.json +89 -0
  662. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_scene_dynamic/MPEG_scene_dynamic.schema.json +69 -0
  663. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_texture_video/MPEG_texture_video.schema.json +109 -0
  664. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_viewport_recommended/MPEG_viewport_recommended.schema.json +119 -0
  665. package/dist/gltf/schemas/extensions/2.0/Vendor/MPEG_viewport_recommended/MPEG_viewport_recommended.viewport.schema.json +96 -0
  666. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_lod/glTF.MSFT_lod.schema.json +51 -0
  667. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_packing_normalRoughnessMetallic/glTF.MSFT_packing_normalRoughnessMetallic.schema.json +62 -0
  668. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_packing_occlusionRoughnessMetallic/glTF.MSFT_packing_occlusionRoughnessMetallic.schema.json +90 -0
  669. package/dist/gltf/schemas/extensions/2.0/Vendor/MSFT_texture_dds/glTF.MSFT_texture_dds.schema.json +56 -0
  670. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/bsdfMeasurement.schema.json +109 -0
  671. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/functionCall.argument.schema.json +228 -0
  672. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/functionCall.schema.json +292 -0
  673. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/functionCall.type.schema.json +86 -0
  674. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/glTF.NV_materials_mdl.schema.json +451 -0
  675. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/material.NV_materials_mdl.schema.json +60 -0
  676. package/dist/gltf/schemas/extensions/2.0/Vendor/NV_materials_mdl/module.schema.json +114 -0
  677. package/dist/gltf/unbundled.cjs +34 -0
  678. package/dist/gltf/unbundled.cjs.map +7 -0
  679. package/dist/gltf/unbundled.d.ts +5 -0
  680. package/dist/gltf/unbundled.d.ts.map +1 -0
  681. package/dist/gltf/unbundled.js +6 -0
  682. package/dist/gltf/unbundled.js.map +1 -0
  683. package/dist/gltf/webp/webp.cjs +53 -0
  684. package/dist/gltf/webp/webp.cjs.map +7 -0
  685. package/dist/gltf/webp/webp.d.ts +7 -0
  686. package/dist/gltf/webp/webp.d.ts.map +1 -0
  687. package/dist/gltf/webp/webp.js +38 -0
  688. package/dist/gltf/webp/webp.js.map +1 -0
  689. package/dist/index.cjs +43 -809
  690. package/dist/index.cjs.map +4 -3
  691. package/dist/index.d.ts +13 -2
  692. package/dist/index.d.ts.map +1 -1
  693. package/dist/index.js +11 -1
  694. package/dist/index.js.map +1 -1
  695. package/dist/obj/bundled.cjs +44 -0
  696. package/dist/obj/bundled.cjs.map +7 -0
  697. package/dist/obj/bundled.d.ts +7 -0
  698. package/dist/obj/bundled.d.ts.map +1 -0
  699. package/dist/obj/bundled.js +8 -0
  700. package/dist/obj/bundled.js.map +1 -0
  701. package/dist/obj/index.cjs +49 -0
  702. package/dist/obj/index.cjs.map +7 -0
  703. package/dist/obj/index.d.ts +13 -0
  704. package/dist/obj/index.d.ts.map +1 -0
  705. package/dist/obj/index.js +16 -0
  706. package/dist/obj/index.js.map +1 -0
  707. package/dist/obj/lib/get-obj-schema.cjs +60 -0
  708. package/dist/obj/lib/get-obj-schema.cjs.map +7 -0
  709. package/dist/obj/lib/get-obj-schema.d.ts +4 -0
  710. package/dist/obj/lib/get-obj-schema.d.ts.map +1 -0
  711. package/dist/obj/lib/get-obj-schema.js +36 -0
  712. package/dist/obj/lib/get-obj-schema.js.map +1 -0
  713. package/dist/obj/lib/obj-types.cjs +2 -0
  714. package/dist/obj/lib/obj-types.cjs.map +7 -0
  715. package/dist/obj/lib/obj-types.d.ts +1 -0
  716. package/dist/obj/lib/obj-types.d.ts.map +1 -0
  717. package/dist/obj/lib/obj-types.js +5 -0
  718. package/dist/obj/lib/obj-types.js.map +1 -0
  719. package/dist/obj/lib/parse-mtl.cjs +97 -0
  720. package/dist/obj/lib/parse-mtl.cjs.map +7 -0
  721. package/dist/obj/lib/parse-mtl.d.ts +34 -0
  722. package/dist/obj/lib/parse-mtl.d.ts.map +1 -0
  723. package/dist/obj/lib/parse-mtl.js +200 -0
  724. package/dist/obj/lib/parse-mtl.js.map +1 -0
  725. package/dist/obj/lib/parse-obj-meshes.cjs +389 -0
  726. package/dist/obj/lib/parse-obj-meshes.cjs.map +7 -0
  727. package/dist/obj/lib/parse-obj-meshes.d.ts +5 -0
  728. package/dist/obj/lib/parse-obj-meshes.d.ts.map +1 -0
  729. package/dist/obj/lib/parse-obj-meshes.js +441 -0
  730. package/dist/obj/lib/parse-obj-meshes.js.map +1 -0
  731. package/dist/obj/lib/parse-obj.cjs +96 -0
  732. package/dist/obj/lib/parse-obj.cjs.map +7 -0
  733. package/dist/obj/lib/parse-obj.d.ts +3 -0
  734. package/dist/obj/lib/parse-obj.d.ts.map +1 -0
  735. package/dist/obj/lib/parse-obj.js +72 -0
  736. package/dist/obj/lib/parse-obj.js.map +1 -0
  737. package/dist/obj/mtl-format.cjs +39 -0
  738. package/dist/obj/mtl-format.cjs.map +7 -0
  739. package/dist/obj/mtl-format.d.ts +14 -0
  740. package/dist/obj/mtl-format.d.ts.map +1 -0
  741. package/dist/obj/mtl-format.js +17 -0
  742. package/dist/obj/mtl-format.js.map +1 -0
  743. package/dist/obj/mtl-loader-types.cjs +62 -0
  744. package/dist/obj/mtl-loader-types.cjs.map +7 -0
  745. package/dist/obj/mtl-loader-types.d.ts +73 -0
  746. package/dist/obj/mtl-loader-types.d.ts.map +1 -0
  747. package/dist/obj/mtl-loader-types.js +34 -0
  748. package/dist/obj/mtl-loader-types.js.map +1 -0
  749. package/dist/obj/mtl-loader.cjs +45 -0
  750. package/dist/obj/mtl-loader.cjs.map +7 -0
  751. package/dist/obj/mtl-loader.d.ts +51 -0
  752. package/dist/obj/mtl-loader.d.ts.map +1 -0
  753. package/dist/obj/mtl-loader.js +25 -0
  754. package/dist/obj/mtl-loader.js.map +1 -0
  755. package/dist/obj/obj-format.cjs +39 -0
  756. package/dist/obj/obj-format.cjs.map +7 -0
  757. package/dist/obj/obj-format.d.ts +13 -0
  758. package/dist/obj/obj-format.d.ts.map +1 -0
  759. package/dist/obj/obj-format.js +16 -0
  760. package/dist/obj/obj-format.js.map +1 -0
  761. package/dist/obj/obj-loader-types.cjs +69 -0
  762. package/dist/obj/obj-loader-types.cjs.map +7 -0
  763. package/dist/obj/obj-loader-types.d.ts +112 -0
  764. package/dist/obj/obj-loader-types.d.ts.map +1 -0
  765. package/dist/obj/obj-loader-types.js +41 -0
  766. package/dist/obj/obj-loader-types.js.map +1 -0
  767. package/dist/obj/obj-loader.cjs +161 -0
  768. package/dist/obj/obj-loader.cjs.map +7 -0
  769. package/dist/obj/obj-loader.d.ts +40 -0
  770. package/dist/obj/obj-loader.d.ts.map +1 -0
  771. package/dist/obj/obj-loader.js +142 -0
  772. package/dist/obj/obj-loader.js.map +1 -0
  773. package/dist/obj/obj-writer.cjs +165 -0
  774. package/dist/obj/obj-writer.cjs.map +7 -0
  775. package/dist/obj/obj-writer.d.ts +35 -0
  776. package/dist/obj/obj-writer.d.ts.map +1 -0
  777. package/dist/obj/obj-writer.js +123 -0
  778. package/dist/obj/obj-writer.js.map +1 -0
  779. package/dist/obj/unbundled.cjs +44 -0
  780. package/dist/obj/unbundled.cjs.map +7 -0
  781. package/dist/obj/unbundled.d.ts +7 -0
  782. package/dist/obj/unbundled.d.ts.map +1 -0
  783. package/dist/obj/unbundled.js +8 -0
  784. package/dist/obj/unbundled.js.map +1 -0
  785. package/dist/obj/workers/obj-worker.cjs +23 -0
  786. package/dist/obj/workers/obj-worker.cjs.map +7 -0
  787. package/dist/obj/workers/obj-worker.d.ts +2 -0
  788. package/dist/obj/workers/obj-worker.d.ts.map +1 -0
  789. package/dist/obj/workers/obj-worker.js +23 -0
  790. package/dist/obj/workers/obj-worker.js.map +1 -0
  791. package/dist/obj-worker.js +17609 -0
  792. package/dist/usd/index.cjs +31 -0
  793. package/dist/usd/index.cjs.map +7 -0
  794. package/dist/usd/index.d.ts +3 -0
  795. package/dist/usd/index.d.ts.map +1 -0
  796. package/dist/usd/index.js +5 -0
  797. package/dist/usd/index.js.map +1 -0
  798. package/dist/usd/lib/parse-usd.cjs +294 -0
  799. package/dist/usd/lib/parse-usd.cjs.map +7 -0
  800. package/dist/{lib → usd/lib}/parse-usd.d.ts +1 -1
  801. package/dist/usd/lib/parse-usd.d.ts.map +1 -0
  802. package/dist/usd/lib/parse-usd.js.map +1 -0
  803. package/dist/usd/lib/parse-usda.cjs +406 -0
  804. package/dist/usd/lib/parse-usda.cjs.map +7 -0
  805. package/dist/usd/lib/parse-usda.d.ts.map +1 -0
  806. package/dist/usd/lib/parse-usda.js.map +1 -0
  807. package/dist/usd/lib/parse-usdz.cjs +76 -0
  808. package/dist/usd/lib/parse-usdz.cjs.map +7 -0
  809. package/dist/usd/lib/parse-usdz.d.ts.map +1 -0
  810. package/dist/usd/lib/parse-usdz.js.map +1 -0
  811. package/dist/usd/lib/usd-types.cjs +19 -0
  812. package/dist/usd/lib/usd-types.cjs.map +7 -0
  813. package/dist/{lib → usd/lib}/usd-types.d.ts +1 -1
  814. package/dist/usd/lib/usd-types.d.ts.map +1 -0
  815. package/dist/usd/lib/usd-types.js.map +1 -0
  816. package/dist/usd/usd-loader-types.cjs +67 -0
  817. package/dist/usd/usd-loader-types.cjs.map +7 -0
  818. package/dist/usd/usd-loader-types.d.ts.map +1 -0
  819. package/dist/{usd-loader-types.js → usd/usd-loader-types.js} +2 -2
  820. package/dist/usd/usd-loader-types.js.map +1 -0
  821. package/dist/usd/usd-loader.cjs +41 -0
  822. package/dist/usd/usd-loader.cjs.map +7 -0
  823. package/dist/usd/usd-loader.d.ts.map +1 -0
  824. package/dist/usd/usd-loader.js.map +1 -0
  825. package/package.json +181 -10
  826. package/src/gltf/bundled.ts +8 -0
  827. package/src/gltf/glb-loader-types.ts +40 -0
  828. package/src/gltf/glb-loader.ts +42 -0
  829. package/src/gltf/glb-writer.ts +46 -0
  830. package/src/gltf/gltf-format.ts +32 -0
  831. package/src/gltf/gltf-loader-types.ts +52 -0
  832. package/src/gltf/gltf-loader.ts +49 -0
  833. package/src/gltf/gltf-source.ts +244 -0
  834. package/src/gltf/gltf-writer.ts +62 -0
  835. package/src/gltf/index.ts +270 -0
  836. package/src/gltf/lib/api/append-gltf-v1-buffer-data.ts +61 -0
  837. package/src/gltf/lib/api/bake-gltf-v1-bind-shapes.ts +178 -0
  838. package/src/gltf/lib/api/clean-gltf-v1-fields.ts +94 -0
  839. package/src/gltf/lib/api/convert-gltf-v1-accessors.ts +170 -0
  840. package/src/gltf/lib/api/convert-gltf-v1-animations.ts +79 -0
  841. package/src/gltf/lib/api/convert-gltf-v1-materials.ts +351 -0
  842. package/src/gltf/lib/api/convert-gltf-v1-matrix-nodes.ts +116 -0
  843. package/src/gltf/lib/api/convert-gltf-v1-skin-scenes.ts +88 -0
  844. package/src/gltf/lib/api/convert-gltf-v1-skins.ts +217 -0
  845. package/src/gltf/lib/api/gltf-accessors.ts +87 -0
  846. package/src/gltf/lib/api/gltf-culling.ts +80 -0
  847. package/src/gltf/lib/api/gltf-extension-data.ts +125 -0
  848. package/src/gltf/lib/api/gltf-extensions.ts +133 -0
  849. package/src/gltf/lib/api/gltf-iterator.ts +1469 -0
  850. package/src/gltf/lib/api/gltf-mesh-arrow.ts +410 -0
  851. package/src/gltf/lib/api/gltf-scenegraph.ts +741 -0
  852. package/src/gltf/lib/api/normalize-gltf-v1.ts +603 -0
  853. package/src/gltf/lib/api/repack-gltf-v1-accessors.ts +566 -0
  854. package/src/gltf/lib/api/validate-gltf-v1-buffers.ts +139 -0
  855. package/src/gltf/lib/api/validate-gltf-v1-cameras.ts +40 -0
  856. package/src/gltf/lib/api/validate-gltf-v1-geometry.ts +156 -0
  857. package/src/gltf/lib/api/validate-gltf-v1-payloads.ts +315 -0
  858. package/src/gltf/lib/encoders/encode-glb.ts +198 -0
  859. package/src/gltf/lib/encoders/encode-gltf-draco.ts +239 -0
  860. package/src/gltf/lib/encoders/encode-gltf.ts +45 -0
  861. package/src/gltf/lib/extensions/EXT_mesh_features.ts +240 -0
  862. package/src/gltf/lib/extensions/EXT_mesh_polygon.ts +172 -0
  863. package/src/gltf/lib/extensions/EXT_meshopt_compression.ts +33 -0
  864. package/src/gltf/lib/extensions/EXT_primitive_voxels.ts +85 -0
  865. package/src/gltf/lib/extensions/EXT_structural_metadata.ts +1130 -0
  866. package/src/gltf/lib/extensions/EXT_texture_avif.ts +56 -0
  867. package/src/gltf/lib/extensions/EXT_texture_webp.ts +46 -0
  868. package/src/gltf/lib/extensions/KHR_audio_emitter.ts +136 -0
  869. package/src/gltf/lib/extensions/KHR_binary_gltf.ts +56 -0
  870. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +169 -0
  871. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +239 -0
  872. package/src/gltf/lib/extensions/KHR_mesh_primitive_restart.ts +108 -0
  873. package/src/gltf/lib/extensions/KHR_meshopt_compression.ts +32 -0
  874. package/src/gltf/lib/extensions/KHR_texture_basisu.ts +39 -0
  875. package/src/gltf/lib/extensions/KHR_texture_transform.ts +385 -0
  876. package/src/gltf/lib/extensions/MPEG_audio_spatial.ts +59 -0
  877. package/src/gltf/lib/extensions/deprecated/EXT_feature_metadata.ts +479 -0
  878. package/src/gltf/lib/extensions/deprecated/KHR_lights_punctual.ts +67 -0
  879. package/src/gltf/lib/extensions/deprecated/KHR_materials_unlit.ts +52 -0
  880. package/src/gltf/lib/extensions/deprecated/KHR_techniques_webgl.ts +105 -0
  881. package/src/gltf/lib/extensions/meshopt-compression.ts +189 -0
  882. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +473 -0
  883. package/src/gltf/lib/gltf-utils/get-typed-array.ts +215 -0
  884. package/src/gltf/lib/gltf-utils/gltf-attribute-utils.ts +85 -0
  885. package/src/gltf/lib/gltf-utils/gltf-constants.ts +53 -0
  886. package/src/gltf/lib/gltf-utils/gltf-utils.ts +162 -0
  887. package/src/gltf/lib/gltf-utils/resolve-gltf-file.ts +95 -0
  888. package/src/gltf/lib/gltf-utils/resolve-url.ts +48 -0
  889. package/src/gltf/lib/parsers/parse-glb.ts +299 -0
  890. package/src/gltf/lib/parsers/parse-gltf.ts +570 -0
  891. package/src/gltf/lib/types/glb-types.ts +44 -0
  892. package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +127 -0
  893. package/src/gltf/lib/types/gltf-audio-extension-schemas.ts +167 -0
  894. package/src/gltf/lib/types/gltf-ext-feature-metadata-schema.ts +474 -0
  895. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +46 -0
  896. package/src/gltf/lib/types/gltf-ext-mesh-features-schema.ts +56 -0
  897. package/src/gltf/lib/types/gltf-ext-structural-metadata-schema.ts +387 -0
  898. package/src/gltf/lib/types/gltf-ext-vector-voxel-schema.ts +49 -0
  899. package/src/gltf/lib/types/gltf-extension-schemas.ts +87 -0
  900. package/src/gltf/lib/types/gltf-interactivity.ts +168 -0
  901. package/src/gltf/lib/types/gltf-json-schema.ts +947 -0
  902. package/src/gltf/lib/types/gltf-khr-audio-emitter-schema.ts +60 -0
  903. package/src/gltf/lib/types/gltf-mpeg-audio-spatial-schema.ts +31 -0
  904. package/src/gltf/lib/types/gltf-official-json-schemas.ts +18619 -0
  905. package/src/gltf/lib/types/gltf-shape-schema.ts +47 -0
  906. package/src/gltf/lib/types/gltf-types.ts +90 -0
  907. package/src/gltf/lib/types/gltf-vector-topology.ts +65 -0
  908. package/src/gltf/lib/types/gltf-version-zod-schemas.ts +511 -0
  909. package/src/gltf/lib/types/gltf-zod-schema.ts +545 -0
  910. package/src/gltf/lib/utils/assert.ts +12 -0
  911. package/src/gltf/lib/utils/version.ts +8 -0
  912. package/src/gltf/libs/README.md +12 -0
  913. package/src/gltf/libs/meshopt-decoder.d.mts +15 -0
  914. package/src/gltf/libs/meshopt-decoder.mjs +196 -0
  915. package/src/gltf/libs/meshoptimizer-LICENSE.md +21 -0
  916. package/src/gltf/mesh-arrow.ts +11 -0
  917. package/src/gltf/meshopt/meshopt-decoder.ts +185 -0
  918. package/src/gltf/meshopt/meshopt-encoder.ts.disabled +409 -0
  919. package/src/gltf/meshopt/meshopt-module-loader.ts +8 -0
  920. package/src/gltf/schema.ts +24 -0
  921. package/src/gltf/unbundled.ts +8 -0
  922. package/src/gltf/webp/webp.ts +45 -0
  923. package/src/index.ts +13 -11
  924. package/src/obj/bundled.ts +16 -0
  925. package/src/obj/index.ts +23 -0
  926. package/src/obj/lib/get-obj-schema.ts +45 -0
  927. package/src/obj/lib/obj-types.ts +3 -0
  928. package/src/obj/lib/parse-mtl.ts +248 -0
  929. package/src/obj/lib/parse-obj-meshes.ts +530 -0
  930. package/src/obj/lib/parse-obj.ts +88 -0
  931. package/src/obj/mtl-format.ts +19 -0
  932. package/src/obj/mtl-loader-types.ts +46 -0
  933. package/src/obj/mtl-loader.ts +37 -0
  934. package/src/obj/obj-format.ts +18 -0
  935. package/src/obj/obj-loader-types.ts +75 -0
  936. package/src/obj/obj-loader.ts +203 -0
  937. package/src/obj/obj-writer.ts +190 -0
  938. package/src/obj/unbundled.ts +10 -0
  939. package/src/obj/workers/obj-worker.ts +24 -0
  940. package/src/usd/index.ts +15 -0
  941. package/src/{lib → usd/lib}/parse-usd.ts +1 -1
  942. package/src/{lib → usd/lib}/usd-types.ts +1 -1
  943. package/src/{usd-loader-types.ts → usd/usd-loader-types.ts} +2 -2
  944. package/src/{usd-loader.ts → usd/usd-loader.ts} +1 -1
  945. package/third-party-licenses/gltf-loader-ts-LICENSE +21 -0
  946. package/third-party-licenses/three-LICENSE +21 -0
  947. package/dist/lib/parse-usd.d.ts.map +0 -1
  948. package/dist/lib/parse-usd.js.map +0 -1
  949. package/dist/lib/parse-usda.d.ts.map +0 -1
  950. package/dist/lib/parse-usda.js.map +0 -1
  951. package/dist/lib/parse-usdz.d.ts.map +0 -1
  952. package/dist/lib/parse-usdz.js.map +0 -1
  953. package/dist/lib/usd-types.d.ts.map +0 -1
  954. package/dist/lib/usd-types.js.map +0 -1
  955. package/dist/usd-loader-types.d.ts.map +0 -1
  956. package/dist/usd-loader-types.js.map +0 -1
  957. package/dist/usd-loader.d.ts.map +0 -1
  958. package/dist/usd-loader.js.map +0 -1
  959. /package/dist/{lib → usd/lib}/parse-usd.js +0 -0
  960. /package/dist/{lib → usd/lib}/parse-usda.d.ts +0 -0
  961. /package/dist/{lib → usd/lib}/parse-usda.js +0 -0
  962. /package/dist/{lib → usd/lib}/parse-usdz.d.ts +0 -0
  963. /package/dist/{lib → usd/lib}/parse-usdz.js +0 -0
  964. /package/dist/{lib → usd/lib}/usd-types.js +0 -0
  965. /package/dist/{usd-loader-types.d.ts → usd/usd-loader-types.d.ts} +0 -0
  966. /package/dist/{usd-loader.d.ts → usd/usd-loader.d.ts} +0 -0
  967. /package/dist/{usd-loader.js → usd/usd-loader.js} +0 -0
  968. /package/src/{lib → usd/lib}/parse-usda.ts +0 -0
  969. /package/src/{lib → usd/lib}/parse-usdz.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/gltf/lib/extensions/KHR_texture_basisu.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// GLTF EXTENSION: KHR_texture_basisu\n// https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_texture_basisu\n/* eslint-disable camelcase */\n\nimport type {GLTF_KHR_texture_basisu} from '../types/gltf-json-schema';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\n\nimport {GLTFIterator} from '../api/gltf-iterator';\n\nconst KHR_TEXTURE_BASISU = 'KHR_texture_basisu';\n\n/** Extension name */\nexport const name = KHR_TEXTURE_BASISU;\n\n/**\n * Replaces a texture source reference with the extension texture\n * Done in preprocess() to prevent load of default image\n */\nexport function preprocess(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): void {\n void options;\n const iterator = new GLTFIterator(gltfData);\n\n for (const texture of iterator.textures) {\n const extension = iterator.getExtension<GLTF_KHR_texture_basisu>(texture, KHR_TEXTURE_BASISU);\n if (extension) {\n // TODO - if multiple texture extensions are present which one wins?\n texture.source = extension.source;\n iterator.removeExtension(texture, KHR_TEXTURE_BASISU);\n }\n }\n\n // Remove the top-level extension\n iterator.removeExtension(KHR_TEXTURE_BASISU);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,2BAA2B;AAE3B,IAAM,qBAAqB;AAGpB,IAAM,OAAO;AAMb,SAAS,WAAW,UAA2B,SAAkC;AACtF,OAAK;AACL,QAAM,WAAW,IAAI,kCAAa,QAAQ;AAE1C,aAAW,WAAW,SAAS,UAAU;AACvC,UAAM,YAAY,SAAS,aAAsC,SAAS,kBAAkB;AAC5F,QAAI,WAAW;AAEb,cAAQ,SAAS,UAAU;AAC3B,eAAS,gBAAgB,SAAS,kBAAkB;AAAA,IACtD;AAAA,EACF;AAGA,WAAS,gBAAgB,kBAAkB;AAC7C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { GLTFWithBuffers } from "../types/gltf-types.js";
2
+ import type { GLTFLoaderOptions } from "../../gltf-loader-types.js";
3
+ /** Extension name */
4
+ export declare const name = "KHR_texture_basisu";
5
+ /**
6
+ * Replaces a texture source reference with the extension texture
7
+ * Done in preprocess() to prevent load of default image
8
+ */
9
+ export declare function preprocess(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): void;
10
+ //# sourceMappingURL=KHR_texture_basisu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KHR_texture_basisu.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_texture_basisu.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AACzD,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAM/D,qBAAqB;AACrB,eAAO,MAAM,IAAI,uBAAqB,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAetF"}
@@ -0,0 +1,26 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GLTFIterator } from "../api/gltf-iterator.js";
5
+ const KHR_TEXTURE_BASISU = 'KHR_texture_basisu';
6
+ /** Extension name */
7
+ export const name = KHR_TEXTURE_BASISU;
8
+ /**
9
+ * Replaces a texture source reference with the extension texture
10
+ * Done in preprocess() to prevent load of default image
11
+ */
12
+ export function preprocess(gltfData, options) {
13
+ void options;
14
+ const iterator = new GLTFIterator(gltfData);
15
+ for (const texture of iterator.textures) {
16
+ const extension = iterator.getExtension(texture, KHR_TEXTURE_BASISU);
17
+ if (extension) {
18
+ // TODO - if multiple texture extensions are present which one wins?
19
+ texture.source = extension.source;
20
+ iterator.removeExtension(texture, KHR_TEXTURE_BASISU);
21
+ }
22
+ }
23
+ // Remove the top-level extension
24
+ iterator.removeExtension(KHR_TEXTURE_BASISU);
25
+ }
26
+ //# sourceMappingURL=KHR_texture_basisu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KHR_texture_basisu.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_texture_basisu.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAUpC,OAAO,EAAC,YAAY,EAAC,gCAA6B;AAElD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD,qBAAqB;AACrB,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAyB,EAAE,OAA0B;IAC9E,KAAK,OAAO,CAAC;IACb,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAA0B,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC9F,IAAI,SAAS,EAAE,CAAC;YACd,oEAAoE;YACpE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAClC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name2 in all)
8
+ __defProp(target, name2, { get: all[name2], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/gltf/lib/extensions/KHR_texture_transform.ts
21
+ var KHR_texture_transform_exports = {};
22
+ __export(KHR_texture_transform_exports, {
23
+ decode: () => decode,
24
+ name: () => name
25
+ });
26
+ module.exports = __toCommonJS(KHR_texture_transform_exports);
27
+ var import_core = require("@math.gl/core");
28
+ var import_gltf_utils = require("../gltf-utils/gltf-utils.cjs");
29
+ var import_gltf_constants = require("../gltf-utils/gltf-constants.cjs");
30
+ var import_gltf_iterator = require("../api/gltf-iterator.cjs");
31
+ var import_loader_utils = require("@loaders.gl/core/loader-utils");
32
+ var KHR_TEXTURE_TRANSFORM = "KHR_texture_transform";
33
+ var name = KHR_TEXTURE_TRANSFORM;
34
+ var scratchVector = new import_core.Vector3();
35
+ var scratchRotationMatrix = new import_core.Matrix3();
36
+ var scratchScaleMatrix = new import_core.Matrix3();
37
+ async function decode(gltfData, options) {
38
+ const iterator = new import_gltf_iterator.GLTFIterator(gltfData);
39
+ const hasExtension = iterator.hasExtension(KHR_TEXTURE_TRANSFORM);
40
+ if (!hasExtension || !options.gltf?.loadBuffers) {
41
+ return;
42
+ }
43
+ const materials = gltfData.json.materials || [];
44
+ for (let i = 0; i < materials.length; i++) {
45
+ transformTexCoords(i, gltfData, iterator);
46
+ }
47
+ if (!materials.some((material) => findTextureInfos(material).length > 0)) {
48
+ iterator.removeExtension(KHR_TEXTURE_TRANSFORM);
49
+ }
50
+ }
51
+ function transformTexCoords(materialIndex, gltfData, iterator) {
52
+ const material = gltfData.json.materials?.[materialIndex];
53
+ const materialTextures = findTextureInfos(material);
54
+ const processedTransforms = /* @__PURE__ */ new Map();
55
+ let nextTexCoord = getNextTexCoord(gltfData);
56
+ for (const textureInfo of materialTextures) {
57
+ const extension = textureInfo.extensions?.[KHR_TEXTURE_TRANSFORM];
58
+ if (extension) {
59
+ const sourceTexCoord = extension.texCoord ?? textureInfo.texCoord ?? 0;
60
+ const transformKey = getTransformKey(sourceTexCoord, extension);
61
+ let transformParameters = processedTransforms.get(transformKey);
62
+ if (!transformParameters) {
63
+ transformParameters = {
64
+ sourceTexCoord,
65
+ texCoord: nextTexCoord,
66
+ matrix: makeTransformationMatrix(extension)
67
+ };
68
+ if (!transformPrimitives(gltfData, materialIndex, transformParameters)) {
69
+ continue;
70
+ }
71
+ nextTexCoord++;
72
+ processedTransforms.set(transformKey, transformParameters);
73
+ }
74
+ textureInfo.texCoord = transformParameters.texCoord;
75
+ removeObjectExtension(iterator, textureInfo, KHR_TEXTURE_TRANSFORM);
76
+ if (textureInfo.extensions && Object.keys(textureInfo.extensions).length === 0) {
77
+ delete textureInfo.extensions;
78
+ }
79
+ }
80
+ }
81
+ }
82
+ function removeObjectExtension(iterator, object, extensionName) {
83
+ if (object.extensions?.[extensionName] !== void 0) {
84
+ iterator.recordRemovedExtension(extensionName);
85
+ delete object.extensions[extensionName];
86
+ }
87
+ }
88
+ function findTextureInfos(value) {
89
+ if (!value || typeof value !== "object") {
90
+ return [];
91
+ }
92
+ const object = value;
93
+ const textureInfos = [];
94
+ const extensions = object.extensions;
95
+ if (Number.isFinite(object.index) && extensions?.[KHR_TEXTURE_TRANSFORM]) {
96
+ textureInfos.push(object);
97
+ }
98
+ for (const [key, nestedValue] of Object.entries(object)) {
99
+ if (key !== "extras") {
100
+ textureInfos.push(...findTextureInfos(nestedValue));
101
+ }
102
+ }
103
+ return textureInfos;
104
+ }
105
+ function getNextTexCoord(gltfData) {
106
+ let maximumTexCoord = -1;
107
+ for (const mesh of gltfData.json.meshes || []) {
108
+ for (const primitive of mesh.primitives) {
109
+ for (const attributeName of Object.keys(primitive.attributes)) {
110
+ const match = /^TEXCOORD_(\d+)$/.exec(attributeName);
111
+ if (match) {
112
+ maximumTexCoord = Math.max(maximumTexCoord, Number(match[1]));
113
+ }
114
+ }
115
+ }
116
+ }
117
+ return maximumTexCoord + 1;
118
+ }
119
+ function getTransformKey(sourceTexCoord, extension) {
120
+ const { offset = [0, 0], rotation = 0, scale = [1, 1] } = extension;
121
+ return JSON.stringify([sourceTexCoord, offset, rotation, scale]);
122
+ }
123
+ function transformPrimitives(gltfData, materialIndex, transformParameters) {
124
+ const primitives = [];
125
+ const meshes = gltfData.json.meshes || [];
126
+ for (const mesh of meshes) {
127
+ for (const primitive of mesh.primitives) {
128
+ const material = primitive.material;
129
+ if (Number.isFinite(material) && materialIndex === material) {
130
+ primitives.push(primitive);
131
+ }
132
+ }
133
+ }
134
+ if (primitives.length === 0 || primitives.some(
135
+ (primitive) => !canTransformPrimitive(gltfData, primitive, transformParameters.sourceTexCoord)
136
+ )) {
137
+ return false;
138
+ }
139
+ for (const primitive of primitives) {
140
+ transformPrimitive(gltfData, primitive, transformParameters);
141
+ }
142
+ return true;
143
+ }
144
+ function canTransformPrimitive(gltfData, primitive, sourceTexCoord) {
145
+ const texCoordAccessor = primitive.attributes[`TEXCOORD_${sourceTexCoord}`];
146
+ const decodedAccessor = texCoordAccessor;
147
+ if (ArrayBuffer.isView(decodedAccessor?.value)) {
148
+ return true;
149
+ }
150
+ if (!Number.isFinite(texCoordAccessor)) {
151
+ return false;
152
+ }
153
+ const accessor = gltfData.json.accessors?.[texCoordAccessor];
154
+ if (!accessor || accessor.bufferView === void 0 || accessor.sparse) {
155
+ return false;
156
+ }
157
+ const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
158
+ return Boolean(bufferView && gltfData.buffers[bufferView.buffer]);
159
+ }
160
+ function transformPrimitive(gltfData, primitive, transformParameters) {
161
+ const { sourceTexCoord, texCoord, matrix } = transformParameters;
162
+ const texCoordAccessor = primitive.attributes[`TEXCOORD_${sourceTexCoord}`];
163
+ const decodedAccessor = texCoordAccessor;
164
+ if (ArrayBuffer.isView(decodedAccessor?.value)) {
165
+ const result = new Float32Array(decodedAccessor.count * 2);
166
+ for (let index = 0; index < decodedAccessor.count; index++) {
167
+ transformCoordinatePair(
168
+ decodedAccessor.value.subarray(index * 2, index * 2 + 2),
169
+ decodedAccessor,
170
+ matrix,
171
+ result,
172
+ index * 2
173
+ );
174
+ }
175
+ createAttribute(texCoord, decodedAccessor, primitive, gltfData, result);
176
+ return;
177
+ }
178
+ if (Number.isFinite(texCoordAccessor)) {
179
+ const accessor = gltfData.json.accessors?.[texCoordAccessor];
180
+ if (accessor && accessor.bufferView !== void 0) {
181
+ const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
182
+ if (bufferView) {
183
+ const { arrayBuffer, byteOffset: bufferByteOffset } = gltfData.buffers[bufferView.buffer];
184
+ const byteOffset = (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);
185
+ const { ArrayType, length } = (0, import_gltf_utils.getAccessorArrayTypeAndLength)(accessor, bufferView);
186
+ const bytes = import_gltf_constants.BYTES[accessor.componentType];
187
+ const components = import_gltf_constants.COMPONENTS[accessor.type];
188
+ const elementAddressScale = bufferView.byteStride || bytes * components;
189
+ const result = new Float32Array(length);
190
+ for (let i = 0; i < accessor.count; i++) {
191
+ const uv = new ArrayType(arrayBuffer, byteOffset + i * elementAddressScale, 2);
192
+ transformCoordinatePair(uv, accessor, matrix, result, i * components);
193
+ }
194
+ createAttribute(texCoord, accessor, primitive, gltfData, result);
195
+ }
196
+ }
197
+ }
198
+ }
199
+ function transformCoordinatePair(textureCoordinates, accessor, matrix, result, offset) {
200
+ const signed = accessor.componentType === 5120 || accessor.componentType === 5122;
201
+ const divisor = 2 ** (import_gltf_constants.BYTES[accessor.componentType] * 8 - (signed ? 1 : 0)) - 1;
202
+ scratchVector.set(
203
+ accessor.normalized ? Math.max(textureCoordinates[0] / divisor, -1) : textureCoordinates[0],
204
+ accessor.normalized ? Math.max(textureCoordinates[1] / divisor, -1) : textureCoordinates[1],
205
+ 1
206
+ );
207
+ scratchVector.transformByMatrix3(matrix);
208
+ result.set([scratchVector[0], scratchVector[1]], offset);
209
+ }
210
+ function createAttribute(newTexCoord, originalAccessor, primitive, gltfData, newTexCoordArray) {
211
+ gltfData.buffers.push({
212
+ arrayBuffer: (0, import_loader_utils.ensureArrayBuffer)(newTexCoordArray.buffer),
213
+ byteOffset: 0,
214
+ byteLength: newTexCoordArray.buffer.byteLength
215
+ });
216
+ gltfData.json.bufferViews = gltfData.json.bufferViews || [];
217
+ const bufferViews = gltfData.json.bufferViews;
218
+ bufferViews.push({
219
+ buffer: gltfData.buffers.length - 1,
220
+ byteLength: newTexCoordArray.buffer.byteLength,
221
+ byteOffset: 0
222
+ });
223
+ const accessors = gltfData.json.accessors;
224
+ if (!accessors) {
225
+ return;
226
+ }
227
+ accessors.push({
228
+ bufferView: bufferViews?.length - 1,
229
+ byteOffset: 0,
230
+ componentType: 5126,
231
+ count: originalAccessor.count,
232
+ type: "VEC2"
233
+ });
234
+ primitive.attributes[`TEXCOORD_${newTexCoord}`] = accessors.length - 1;
235
+ }
236
+ function makeTransformationMatrix(extensionData) {
237
+ const { offset = [0, 0], rotation = 0, scale = [1, 1] } = extensionData;
238
+ const translationMatrix = new import_core.Matrix3().set(1, 0, 0, 0, 1, 0, offset[0], offset[1], 1);
239
+ const rotationMatrix = scratchRotationMatrix.set(
240
+ Math.cos(rotation),
241
+ Math.sin(rotation),
242
+ 0,
243
+ -Math.sin(rotation),
244
+ Math.cos(rotation),
245
+ 0,
246
+ 0,
247
+ 0,
248
+ 1
249
+ );
250
+ const scaleMatrix = scratchScaleMatrix.set(scale[0], 0, 0, 0, scale[1], 0, 0, 0, 1);
251
+ return translationMatrix.multiplyRight(rotationMatrix).multiplyRight(scaleMatrix);
252
+ }
253
+ // Annotate the CommonJS export names for ESM import in node:
254
+ 0 && (module.exports = {
255
+ decode,
256
+ name
257
+ });
258
+ //# sourceMappingURL=KHR_texture_transform.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/gltf/lib/extensions/KHR_texture_transform.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/**\n * https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_transform/README.md\n */\n\nimport {Vector3, Matrix3} from '@math.gl/core';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {\n GLTFMeshPrimitive,\n GLTFAccessor,\n GLTFMaterialNormalTextureInfo,\n GLTFMaterialOcclusionTextureInfo,\n GLTFTextureInfo\n} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\n\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\nimport {BYTES, COMPONENTS} from '../gltf-utils/gltf-constants';\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport {ensureArrayBuffer} from '@loaders.gl/core/loader-utils';\n\n/** Extension name */\nconst KHR_TEXTURE_TRANSFORM = 'KHR_texture_transform';\n\nexport const name = KHR_TEXTURE_TRANSFORM;\n\nconst scratchVector = new Vector3();\nconst scratchRotationMatrix = new Matrix3();\nconst scratchScaleMatrix = new Matrix3();\n\n/** Extension textureInfo https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_texture_transform#gltf-schema-updates */\ntype TextureInfo = {\n /** The offset of the UV coordinate origin as a factor of the texture dimensions. */\n offset?: [number, number];\n /** Rotate the UVs by this many radians counter-clockwise around the origin. This is equivalent to a similar rotation of the image clockwise. */\n rotation?: number;\n /** The scale factor applied to the components of the UV coordinates. */\n scale?: [number, number];\n /** Overrides the textureInfo texCoord value if supplied, and if this extension is supported. */\n texCoord?: number;\n};\n/** Intersection of all GLTF textures */\ntype CompoundGLTFTextureInfo = GLTFTextureInfo &\n GLTFMaterialNormalTextureInfo &\n GLTFMaterialOcclusionTextureInfo;\n/** Accessor values produced by mesh decoders before glTF postprocessing. */\ntype DecodedTextureAccessor = GLTFAccessor & {\n /** Packed float or integer UV pairs, in decoded vertex order. */\n value?: Float32Array | Uint8Array | Uint16Array | Int8Array | Int16Array;\n};\n/** Parameters for TEXCOORD transformation */\ntype TransformParameters = {\n /** Source texCoord selected by the texture info or extension. */\n sourceTexCoord: number;\n /** Generated texCoord containing the transformed values. */\n texCoord: number;\n /** Transformation matrix */\n matrix: Matrix3;\n};\n\n/**\n * The extension entry to process the transformation\n * @param gltfData gltf buffers and json\n * @param options GLTFLoader options\n */\nexport async function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions) {\n const iterator = new GLTFIterator(gltfData);\n const hasExtension = iterator.hasExtension(KHR_TEXTURE_TRANSFORM);\n if (!hasExtension || !options.gltf?.loadBuffers) {\n return;\n }\n const materials = gltfData.json.materials || [];\n for (let i = 0; i < materials.length; i++) {\n transformTexCoords(i, gltfData, iterator);\n }\n if (!materials.some(material => findTextureInfos(material).length > 0)) {\n iterator.removeExtension(KHR_TEXTURE_TRANSFORM);\n }\n}\n\n/**\n * Transform TEXCOORD by material\n * @param materialIndex processing material index\n * @param gltfData gltf buffers and json\n * @param gltfScenegraph glTF scenegraph used to remove decoded extensions\n */\nfunction transformTexCoords(\n materialIndex: number,\n gltfData: GLTFWithBuffers,\n iterator: GLTFIterator\n): void {\n const material = gltfData.json.materials?.[materialIndex];\n const materialTextures = findTextureInfos(material);\n const processedTransforms = new Map<string, TransformParameters>();\n let nextTexCoord = getNextTexCoord(gltfData);\n\n for (const textureInfo of materialTextures) {\n const extension = textureInfo.extensions?.[KHR_TEXTURE_TRANSFORM] as TextureInfo | undefined;\n if (extension) {\n const sourceTexCoord = extension.texCoord ?? textureInfo.texCoord ?? 0;\n const transformKey = getTransformKey(sourceTexCoord, extension);\n let transformParameters = processedTransforms.get(transformKey);\n if (!transformParameters) {\n transformParameters = {\n sourceTexCoord,\n texCoord: nextTexCoord,\n matrix: makeTransformationMatrix(extension)\n };\n if (!transformPrimitives(gltfData, materialIndex, transformParameters)) {\n continue;\n }\n nextTexCoord++;\n processedTransforms.set(transformKey, transformParameters);\n }\n textureInfo.texCoord = transformParameters.texCoord;\n removeObjectExtension(iterator, textureInfo, KHR_TEXTURE_TRANSFORM);\n if (textureInfo.extensions && Object.keys(textureInfo.extensions).length === 0) {\n delete textureInfo.extensions;\n }\n }\n }\n}\n\n/** Remove an object extension while preserving top-level extension bookkeeping. */\nfunction removeObjectExtension(\n iterator: GLTFIterator,\n object: {extensions?: Record<string, unknown>},\n extensionName: string\n): void {\n if (object.extensions?.[extensionName] !== undefined) {\n iterator.recordRemovedExtension(extensionName);\n delete object.extensions[extensionName];\n }\n}\n\n/**\n * Finds texture infos at any nesting level of a material, including KHR_materials_* extensions.\n * @param value material value to inspect\n * @returns texture infos using KHR_texture_transform\n */\nfunction findTextureInfos(value: unknown): CompoundGLTFTextureInfo[] {\n if (!value || typeof value !== 'object') {\n return [];\n }\n const object = value as Record<string, unknown>;\n const textureInfos: CompoundGLTFTextureInfo[] = [];\n const extensions = object.extensions as Record<string, unknown> | undefined;\n if (Number.isFinite(object.index) && extensions?.[KHR_TEXTURE_TRANSFORM]) {\n textureInfos.push(object as CompoundGLTFTextureInfo);\n }\n for (const [key, nestedValue] of Object.entries(object)) {\n if (key !== 'extras') {\n textureInfos.push(...findTextureInfos(nestedValue));\n }\n }\n return textureInfos;\n}\n\n/** Returns the first TEXCOORD set index unused by every primitive. */\nfunction getNextTexCoord(gltfData: GLTFWithBuffers): number {\n let maximumTexCoord = -1;\n for (const mesh of gltfData.json.meshes || []) {\n for (const primitive of mesh.primitives) {\n for (const attributeName of Object.keys(primitive.attributes)) {\n const match = /^TEXCOORD_(\\d+)$/.exec(attributeName);\n if (match) {\n maximumTexCoord = Math.max(maximumTexCoord, Number(match[1]));\n }\n }\n }\n }\n return maximumTexCoord + 1;\n}\n\n/** Returns a stable key for transformations that can share generated attributes. */\nfunction getTransformKey(sourceTexCoord: number, extension: TextureInfo): string {\n const {offset = [0, 0], rotation = 0, scale = [1, 1]} = extension;\n return JSON.stringify([sourceTexCoord, offset, rotation, scale]);\n}\n\n/**\n * Transform primitives of the particular material.\n * @param gltfData gltf data\n * @param materialIndex primitives with this material will be transformed\n * @param transformParameters source and generated texture coordinate sets\n * @returns true when every relevant primitive received the generated attribute\n */\nfunction transformPrimitives(\n gltfData: GLTFWithBuffers,\n materialIndex: number,\n transformParameters: TransformParameters\n): boolean {\n const primitives: GLTFMeshPrimitive[] = [];\n const meshes = gltfData.json.meshes || [];\n for (const mesh of meshes) {\n for (const primitive of mesh.primitives) {\n const material = primitive.material;\n if (Number.isFinite(material) && materialIndex === material) {\n primitives.push(primitive);\n }\n }\n }\n if (\n primitives.length === 0 ||\n primitives.some(\n primitive => !canTransformPrimitive(gltfData, primitive, transformParameters.sourceTexCoord)\n )\n ) {\n return false;\n }\n for (const primitive of primitives) {\n transformPrimitive(gltfData, primitive, transformParameters);\n }\n return true;\n}\n\n/** Returns whether a primitive's source texture coordinates can be transformed without data loss. */\nfunction canTransformPrimitive(\n gltfData: GLTFWithBuffers,\n primitive: GLTFMeshPrimitive,\n sourceTexCoord: number\n): boolean {\n const texCoordAccessor = primitive.attributes[`TEXCOORD_${sourceTexCoord}`];\n const decodedAccessor = texCoordAccessor as unknown as DecodedTextureAccessor;\n if (ArrayBuffer.isView(decodedAccessor?.value)) {\n return true;\n }\n if (!Number.isFinite(texCoordAccessor)) {\n return false;\n }\n const accessor = gltfData.json.accessors?.[texCoordAccessor];\n if (!accessor || accessor.bufferView === undefined || accessor.sparse) {\n return false;\n }\n const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];\n return Boolean(bufferView && gltfData.buffers[bufferView.buffer]);\n}\n\n/**\n * Transform `TEXCOORD_0` attribute in the primitive\n * @param gltfData gltf data\n * @param primitive primitive object\n * @param transformParameters texCoord couple and transformation matrix\n */\nfunction transformPrimitive(\n gltfData: GLTFWithBuffers,\n primitive: GLTFMeshPrimitive,\n transformParameters: TransformParameters\n) {\n const {sourceTexCoord, texCoord, matrix} = transformParameters;\n const texCoordAccessor = primitive.attributes[`TEXCOORD_${sourceTexCoord}`];\n const decodedAccessor = texCoordAccessor as unknown as DecodedTextureAccessor;\n if (ArrayBuffer.isView(decodedAccessor?.value)) {\n const result = new Float32Array(decodedAccessor.count * 2);\n for (let index = 0; index < decodedAccessor.count; index++) {\n transformCoordinatePair(\n decodedAccessor.value.subarray(index * 2, index * 2 + 2),\n decodedAccessor,\n matrix,\n result,\n index * 2\n );\n }\n createAttribute(texCoord, decodedAccessor, primitive, gltfData, result);\n return;\n }\n if (Number.isFinite(texCoordAccessor)) {\n // Get accessor of the `TEXCOORD_0` attribute\n const accessor = gltfData.json.accessors?.[texCoordAccessor];\n if (accessor && accessor.bufferView !== undefined) {\n // Get `bufferView` of the `accessor`\n const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];\n if (bufferView) {\n // Get `arrayBuffer` the `bufferView` look at\n const {arrayBuffer, byteOffset: bufferByteOffset} = gltfData.buffers[bufferView.buffer];\n // Resulting byteOffset is sum of the buffer, accessor and bufferView byte offsets\n const byteOffset =\n (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);\n // Deduce TypedArray type and its length from `accessor` and `bufferView` data\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // Number of bytes each component occupies\n const bytes = BYTES[accessor.componentType];\n // Number of components. For the `TEXCOORD_0` with `VEC2` type, it must return 2\n const components = COMPONENTS[accessor.type];\n // Multiplier to calculate the address of the `TEXCOORD_0` element in the arrayBuffer\n const elementAddressScale = bufferView.byteStride || bytes * components;\n // Data transform to Float32Array\n const result = new Float32Array(length);\n for (let i = 0; i < accessor.count; i++) {\n // Take [u, v] couple from the arrayBuffer\n const uv = new ArrayType(arrayBuffer, byteOffset + i * elementAddressScale, 2);\n transformCoordinatePair(uv, accessor, matrix, result, i * components);\n }\n createAttribute(texCoord, accessor, primitive, gltfData, result);\n }\n }\n }\n}\n\n/** Normalizes one packed UV pair and writes its transformed Float32 coordinates. */\nfunction transformCoordinatePair(\n textureCoordinates: ArrayLike<number>,\n accessor: GLTFAccessor,\n matrix: Matrix3,\n result: Float32Array,\n offset: number\n): void {\n const signed = accessor.componentType === 5120 || accessor.componentType === 5122;\n const divisor = 2 ** (BYTES[accessor.componentType] * 8 - (signed ? 1 : 0)) - 1;\n scratchVector.set(\n accessor.normalized ? Math.max(textureCoordinates[0] / divisor, -1) : textureCoordinates[0],\n accessor.normalized ? Math.max(textureCoordinates[1] / divisor, -1) : textureCoordinates[1],\n 1\n );\n scratchVector.transformByMatrix3(matrix);\n result.set([scratchVector[0], scratchVector[1]], offset);\n}\n\n/**\n *\n * @param newTexCoord new `texCoord` value\n * @param originalAccessor original accessor object, that store data before transformation\n * @param primitive primitive object\n * @param gltfData gltf data\n * @param newTexCoordArray typed array with data after transformation\n * @returns\n */\nfunction createAttribute(\n newTexCoord: number,\n originalAccessor: GLTFAccessor,\n primitive: GLTFMeshPrimitive,\n gltfData: GLTFWithBuffers,\n newTexCoordArray: Float32Array\n) {\n gltfData.buffers.push({\n arrayBuffer: ensureArrayBuffer(newTexCoordArray.buffer),\n byteOffset: 0,\n byteLength: newTexCoordArray.buffer.byteLength\n });\n gltfData.json.bufferViews = gltfData.json.bufferViews || [];\n const bufferViews = gltfData.json.bufferViews;\n bufferViews.push({\n buffer: gltfData.buffers.length - 1,\n byteLength: newTexCoordArray.buffer.byteLength,\n byteOffset: 0\n });\n const accessors = gltfData.json.accessors;\n if (!accessors) {\n return;\n }\n accessors.push({\n bufferView: bufferViews?.length - 1,\n byteOffset: 0,\n componentType: 5126,\n count: originalAccessor.count,\n type: 'VEC2'\n });\n primitive.attributes[`TEXCOORD_${newTexCoord}`] = accessors.length - 1;\n}\n\n/**\n * Construct transformation matrix from the extension data (transition, rotation, scale)\n * @param extensionData extension data\n * @returns transformation matrix\n */\nfunction makeTransformationMatrix(extensionData: TextureInfo): Matrix3 {\n const {offset = [0, 0], rotation = 0, scale = [1, 1]} = extensionData;\n const translationMatrix = new Matrix3().set(1, 0, 0, 0, 1, 0, offset[0], offset[1], 1);\n const rotationMatrix = scratchRotationMatrix.set(\n Math.cos(rotation),\n Math.sin(rotation),\n 0,\n -Math.sin(rotation),\n Math.cos(rotation),\n 0,\n 0,\n 0,\n 1\n );\n const scaleMatrix = scratchScaleMatrix.set(scale[0], 0, 0, 0, scale[1], 0, 0, 0, 1);\n return translationMatrix.multiplyRight(rotationMatrix).multiplyRight(scaleMatrix);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { GLTFWithBuffers } from "../types/gltf-types.js";
2
+ import type { GLTFLoaderOptions } from "../../gltf-loader-types.js";
3
+ export declare const name = "KHR_texture_transform";
4
+ /**
5
+ * The extension entry to process the transformation
6
+ * @param gltfData gltf buffers and json
7
+ * @param options GLTFLoader options
8
+ */
9
+ export declare function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): Promise<void>;
10
+ //# sourceMappingURL=KHR_texture_transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KHR_texture_transform.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_texture_transform.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AAQzD,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAU/D,eAAO,MAAM,IAAI,0BAAwB,CAAC;AAoC1C;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,iBAajF"}
@@ -0,0 +1,271 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /**
5
+ * https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_transform/README.md
6
+ */
7
+ import { Vector3, Matrix3 } from '@math.gl/core';
8
+ import { getAccessorArrayTypeAndLength } from "../gltf-utils/gltf-utils.js";
9
+ import { BYTES, COMPONENTS } from "../gltf-utils/gltf-constants.js";
10
+ import { GLTFIterator } from "../api/gltf-iterator.js";
11
+ import { ensureArrayBuffer } from '@loaders.gl/core/loader-utils';
12
+ /** Extension name */
13
+ const KHR_TEXTURE_TRANSFORM = 'KHR_texture_transform';
14
+ export const name = KHR_TEXTURE_TRANSFORM;
15
+ const scratchVector = new Vector3();
16
+ const scratchRotationMatrix = new Matrix3();
17
+ const scratchScaleMatrix = new Matrix3();
18
+ /**
19
+ * The extension entry to process the transformation
20
+ * @param gltfData gltf buffers and json
21
+ * @param options GLTFLoader options
22
+ */
23
+ export async function decode(gltfData, options) {
24
+ const iterator = new GLTFIterator(gltfData);
25
+ const hasExtension = iterator.hasExtension(KHR_TEXTURE_TRANSFORM);
26
+ if (!hasExtension || !options.gltf?.loadBuffers) {
27
+ return;
28
+ }
29
+ const materials = gltfData.json.materials || [];
30
+ for (let i = 0; i < materials.length; i++) {
31
+ transformTexCoords(i, gltfData, iterator);
32
+ }
33
+ if (!materials.some(material => findTextureInfos(material).length > 0)) {
34
+ iterator.removeExtension(KHR_TEXTURE_TRANSFORM);
35
+ }
36
+ }
37
+ /**
38
+ * Transform TEXCOORD by material
39
+ * @param materialIndex processing material index
40
+ * @param gltfData gltf buffers and json
41
+ * @param gltfScenegraph glTF scenegraph used to remove decoded extensions
42
+ */
43
+ function transformTexCoords(materialIndex, gltfData, iterator) {
44
+ const material = gltfData.json.materials?.[materialIndex];
45
+ const materialTextures = findTextureInfos(material);
46
+ const processedTransforms = new Map();
47
+ let nextTexCoord = getNextTexCoord(gltfData);
48
+ for (const textureInfo of materialTextures) {
49
+ const extension = textureInfo.extensions?.[KHR_TEXTURE_TRANSFORM];
50
+ if (extension) {
51
+ const sourceTexCoord = extension.texCoord ?? textureInfo.texCoord ?? 0;
52
+ const transformKey = getTransformKey(sourceTexCoord, extension);
53
+ let transformParameters = processedTransforms.get(transformKey);
54
+ if (!transformParameters) {
55
+ transformParameters = {
56
+ sourceTexCoord,
57
+ texCoord: nextTexCoord,
58
+ matrix: makeTransformationMatrix(extension)
59
+ };
60
+ if (!transformPrimitives(gltfData, materialIndex, transformParameters)) {
61
+ continue;
62
+ }
63
+ nextTexCoord++;
64
+ processedTransforms.set(transformKey, transformParameters);
65
+ }
66
+ textureInfo.texCoord = transformParameters.texCoord;
67
+ removeObjectExtension(iterator, textureInfo, KHR_TEXTURE_TRANSFORM);
68
+ if (textureInfo.extensions && Object.keys(textureInfo.extensions).length === 0) {
69
+ delete textureInfo.extensions;
70
+ }
71
+ }
72
+ }
73
+ }
74
+ /** Remove an object extension while preserving top-level extension bookkeeping. */
75
+ function removeObjectExtension(iterator, object, extensionName) {
76
+ if (object.extensions?.[extensionName] !== undefined) {
77
+ iterator.recordRemovedExtension(extensionName);
78
+ delete object.extensions[extensionName];
79
+ }
80
+ }
81
+ /**
82
+ * Finds texture infos at any nesting level of a material, including KHR_materials_* extensions.
83
+ * @param value material value to inspect
84
+ * @returns texture infos using KHR_texture_transform
85
+ */
86
+ function findTextureInfos(value) {
87
+ if (!value || typeof value !== 'object') {
88
+ return [];
89
+ }
90
+ const object = value;
91
+ const textureInfos = [];
92
+ const extensions = object.extensions;
93
+ if (Number.isFinite(object.index) && extensions?.[KHR_TEXTURE_TRANSFORM]) {
94
+ textureInfos.push(object);
95
+ }
96
+ for (const [key, nestedValue] of Object.entries(object)) {
97
+ if (key !== 'extras') {
98
+ textureInfos.push(...findTextureInfos(nestedValue));
99
+ }
100
+ }
101
+ return textureInfos;
102
+ }
103
+ /** Returns the first TEXCOORD set index unused by every primitive. */
104
+ function getNextTexCoord(gltfData) {
105
+ let maximumTexCoord = -1;
106
+ for (const mesh of gltfData.json.meshes || []) {
107
+ for (const primitive of mesh.primitives) {
108
+ for (const attributeName of Object.keys(primitive.attributes)) {
109
+ const match = /^TEXCOORD_(\d+)$/.exec(attributeName);
110
+ if (match) {
111
+ maximumTexCoord = Math.max(maximumTexCoord, Number(match[1]));
112
+ }
113
+ }
114
+ }
115
+ }
116
+ return maximumTexCoord + 1;
117
+ }
118
+ /** Returns a stable key for transformations that can share generated attributes. */
119
+ function getTransformKey(sourceTexCoord, extension) {
120
+ const { offset = [0, 0], rotation = 0, scale = [1, 1] } = extension;
121
+ return JSON.stringify([sourceTexCoord, offset, rotation, scale]);
122
+ }
123
+ /**
124
+ * Transform primitives of the particular material.
125
+ * @param gltfData gltf data
126
+ * @param materialIndex primitives with this material will be transformed
127
+ * @param transformParameters source and generated texture coordinate sets
128
+ * @returns true when every relevant primitive received the generated attribute
129
+ */
130
+ function transformPrimitives(gltfData, materialIndex, transformParameters) {
131
+ const primitives = [];
132
+ const meshes = gltfData.json.meshes || [];
133
+ for (const mesh of meshes) {
134
+ for (const primitive of mesh.primitives) {
135
+ const material = primitive.material;
136
+ if (Number.isFinite(material) && materialIndex === material) {
137
+ primitives.push(primitive);
138
+ }
139
+ }
140
+ }
141
+ if (primitives.length === 0 ||
142
+ primitives.some(primitive => !canTransformPrimitive(gltfData, primitive, transformParameters.sourceTexCoord))) {
143
+ return false;
144
+ }
145
+ for (const primitive of primitives) {
146
+ transformPrimitive(gltfData, primitive, transformParameters);
147
+ }
148
+ return true;
149
+ }
150
+ /** Returns whether a primitive's source texture coordinates can be transformed without data loss. */
151
+ function canTransformPrimitive(gltfData, primitive, sourceTexCoord) {
152
+ const texCoordAccessor = primitive.attributes[`TEXCOORD_${sourceTexCoord}`];
153
+ const decodedAccessor = texCoordAccessor;
154
+ if (ArrayBuffer.isView(decodedAccessor?.value)) {
155
+ return true;
156
+ }
157
+ if (!Number.isFinite(texCoordAccessor)) {
158
+ return false;
159
+ }
160
+ const accessor = gltfData.json.accessors?.[texCoordAccessor];
161
+ if (!accessor || accessor.bufferView === undefined || accessor.sparse) {
162
+ return false;
163
+ }
164
+ const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
165
+ return Boolean(bufferView && gltfData.buffers[bufferView.buffer]);
166
+ }
167
+ /**
168
+ * Transform `TEXCOORD_0` attribute in the primitive
169
+ * @param gltfData gltf data
170
+ * @param primitive primitive object
171
+ * @param transformParameters texCoord couple and transformation matrix
172
+ */
173
+ function transformPrimitive(gltfData, primitive, transformParameters) {
174
+ const { sourceTexCoord, texCoord, matrix } = transformParameters;
175
+ const texCoordAccessor = primitive.attributes[`TEXCOORD_${sourceTexCoord}`];
176
+ const decodedAccessor = texCoordAccessor;
177
+ if (ArrayBuffer.isView(decodedAccessor?.value)) {
178
+ const result = new Float32Array(decodedAccessor.count * 2);
179
+ for (let index = 0; index < decodedAccessor.count; index++) {
180
+ transformCoordinatePair(decodedAccessor.value.subarray(index * 2, index * 2 + 2), decodedAccessor, matrix, result, index * 2);
181
+ }
182
+ createAttribute(texCoord, decodedAccessor, primitive, gltfData, result);
183
+ return;
184
+ }
185
+ if (Number.isFinite(texCoordAccessor)) {
186
+ // Get accessor of the `TEXCOORD_0` attribute
187
+ const accessor = gltfData.json.accessors?.[texCoordAccessor];
188
+ if (accessor && accessor.bufferView !== undefined) {
189
+ // Get `bufferView` of the `accessor`
190
+ const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
191
+ if (bufferView) {
192
+ // Get `arrayBuffer` the `bufferView` look at
193
+ const { arrayBuffer, byteOffset: bufferByteOffset } = gltfData.buffers[bufferView.buffer];
194
+ // Resulting byteOffset is sum of the buffer, accessor and bufferView byte offsets
195
+ const byteOffset = (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);
196
+ // Deduce TypedArray type and its length from `accessor` and `bufferView` data
197
+ const { ArrayType, length } = getAccessorArrayTypeAndLength(accessor, bufferView);
198
+ // Number of bytes each component occupies
199
+ const bytes = BYTES[accessor.componentType];
200
+ // Number of components. For the `TEXCOORD_0` with `VEC2` type, it must return 2
201
+ const components = COMPONENTS[accessor.type];
202
+ // Multiplier to calculate the address of the `TEXCOORD_0` element in the arrayBuffer
203
+ const elementAddressScale = bufferView.byteStride || bytes * components;
204
+ // Data transform to Float32Array
205
+ const result = new Float32Array(length);
206
+ for (let i = 0; i < accessor.count; i++) {
207
+ // Take [u, v] couple from the arrayBuffer
208
+ const uv = new ArrayType(arrayBuffer, byteOffset + i * elementAddressScale, 2);
209
+ transformCoordinatePair(uv, accessor, matrix, result, i * components);
210
+ }
211
+ createAttribute(texCoord, accessor, primitive, gltfData, result);
212
+ }
213
+ }
214
+ }
215
+ }
216
+ /** Normalizes one packed UV pair and writes its transformed Float32 coordinates. */
217
+ function transformCoordinatePair(textureCoordinates, accessor, matrix, result, offset) {
218
+ const signed = accessor.componentType === 5120 || accessor.componentType === 5122;
219
+ const divisor = 2 ** (BYTES[accessor.componentType] * 8 - (signed ? 1 : 0)) - 1;
220
+ scratchVector.set(accessor.normalized ? Math.max(textureCoordinates[0] / divisor, -1) : textureCoordinates[0], accessor.normalized ? Math.max(textureCoordinates[1] / divisor, -1) : textureCoordinates[1], 1);
221
+ scratchVector.transformByMatrix3(matrix);
222
+ result.set([scratchVector[0], scratchVector[1]], offset);
223
+ }
224
+ /**
225
+ *
226
+ * @param newTexCoord new `texCoord` value
227
+ * @param originalAccessor original accessor object, that store data before transformation
228
+ * @param primitive primitive object
229
+ * @param gltfData gltf data
230
+ * @param newTexCoordArray typed array with data after transformation
231
+ * @returns
232
+ */
233
+ function createAttribute(newTexCoord, originalAccessor, primitive, gltfData, newTexCoordArray) {
234
+ gltfData.buffers.push({
235
+ arrayBuffer: ensureArrayBuffer(newTexCoordArray.buffer),
236
+ byteOffset: 0,
237
+ byteLength: newTexCoordArray.buffer.byteLength
238
+ });
239
+ gltfData.json.bufferViews = gltfData.json.bufferViews || [];
240
+ const bufferViews = gltfData.json.bufferViews;
241
+ bufferViews.push({
242
+ buffer: gltfData.buffers.length - 1,
243
+ byteLength: newTexCoordArray.buffer.byteLength,
244
+ byteOffset: 0
245
+ });
246
+ const accessors = gltfData.json.accessors;
247
+ if (!accessors) {
248
+ return;
249
+ }
250
+ accessors.push({
251
+ bufferView: bufferViews?.length - 1,
252
+ byteOffset: 0,
253
+ componentType: 5126,
254
+ count: originalAccessor.count,
255
+ type: 'VEC2'
256
+ });
257
+ primitive.attributes[`TEXCOORD_${newTexCoord}`] = accessors.length - 1;
258
+ }
259
+ /**
260
+ * Construct transformation matrix from the extension data (transition, rotation, scale)
261
+ * @param extensionData extension data
262
+ * @returns transformation matrix
263
+ */
264
+ function makeTransformationMatrix(extensionData) {
265
+ const { offset = [0, 0], rotation = 0, scale = [1, 1] } = extensionData;
266
+ const translationMatrix = new Matrix3().set(1, 0, 0, 0, 1, 0, offset[0], offset[1], 1);
267
+ const rotationMatrix = scratchRotationMatrix.set(Math.cos(rotation), Math.sin(rotation), 0, -Math.sin(rotation), Math.cos(rotation), 0, 0, 0, 1);
268
+ const scaleMatrix = scratchScaleMatrix.set(scale[0], 0, 0, 0, scale[1], 0, 0, 0, 1);
269
+ return translationMatrix.multiplyRight(rotationMatrix).multiplyRight(scaleMatrix);
270
+ }
271
+ //# sourceMappingURL=KHR_texture_transform.js.map