@loaders.gl/gltf 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (332) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +5767 -0
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/glb-loader.js +56 -0
  8. package/dist/es5/glb-loader.js.map +1 -0
  9. package/dist/es5/glb-writer.js +34 -0
  10. package/dist/es5/glb-writer.js.map +1 -0
  11. package/dist/es5/gltf-loader.js +81 -0
  12. package/dist/es5/gltf-loader.js.map +1 -0
  13. package/dist/es5/gltf-writer.js +35 -0
  14. package/dist/es5/gltf-writer.js.map +1 -0
  15. package/dist/es5/index.js +55 -0
  16. package/dist/es5/index.js.map +1 -0
  17. package/dist/es5/lib/api/gltf-extensions.js +109 -0
  18. package/dist/es5/lib/api/gltf-extensions.js.map +1 -0
  19. package/dist/es5/lib/api/gltf-scenegraph.js +598 -0
  20. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -0
  21. package/dist/es5/lib/api/normalize-gltf-v1.js +331 -0
  22. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -0
  23. package/dist/es5/lib/api/post-process-gltf.js +470 -0
  24. package/dist/es5/lib/api/post-process-gltf.js.map +1 -0
  25. package/dist/es5/lib/encoders/encode-glb.js +61 -0
  26. package/dist/es5/lib/encoders/encode-glb.js.map +1 -0
  27. package/dist/es5/lib/encoders/encode-gltf.js +20 -0
  28. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -0
  29. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +94 -0
  30. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  31. package/dist/es5/lib/extensions/EXT_texture_webp.js +43 -0
  32. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -0
  33. package/dist/es5/lib/extensions/KHR_binary_gltf.js +39 -0
  34. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -0
  35. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +247 -0
  36. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  37. package/dist/es5/lib/extensions/KHR_texture_basisu.js +36 -0
  38. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -0
  39. package/dist/es5/lib/extensions/KHR_texture_transform.js +230 -0
  40. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -0
  41. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +281 -0
  42. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  43. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +99 -0
  44. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  45. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +76 -0
  46. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  47. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +113 -0
  48. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  49. package/dist/es5/lib/gltf-utils/get-typed-array.js +23 -0
  50. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -0
  51. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +68 -0
  52. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  53. package/dist/es5/lib/gltf-utils/gltf-constants.js +48 -0
  54. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -0
  55. package/dist/es5/lib/gltf-utils/gltf-utils.js +86 -0
  56. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -0
  57. package/dist/es5/lib/gltf-utils/resolve-url.js +18 -0
  58. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-glb.js +120 -0
  60. package/dist/es5/lib/parsers/parse-glb.js.map +1 -0
  61. package/dist/es5/lib/parsers/parse-gltf.js +280 -0
  62. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -0
  63. package/dist/es5/lib/types/glb-types.js +2 -0
  64. package/dist/es5/lib/types/glb-types.js.map +1 -0
  65. package/dist/es5/lib/types/gltf-json-schema.js +2 -0
  66. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -0
  67. package/dist/es5/lib/types/gltf-postprocessed-schema.js +2 -0
  68. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -0
  69. package/dist/es5/lib/types/gltf-types.js +2 -0
  70. package/dist/es5/lib/types/gltf-types.js.map +1 -0
  71. package/dist/es5/lib/utils/assert.js +12 -0
  72. package/dist/es5/lib/utils/assert.js.map +1 -0
  73. package/dist/es5/lib/utils/version.js +9 -0
  74. package/dist/es5/lib/utils/version.js.map +1 -0
  75. package/dist/es5/meshopt/meshopt-decoder.js +215 -0
  76. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -0
  77. package/dist/es5/webp/webp.js +83 -0
  78. package/dist/es5/webp/webp.js.map +1 -0
  79. package/dist/esm/bundle.js +4 -0
  80. package/dist/esm/bundle.js.map +1 -0
  81. package/dist/esm/glb-loader.js +31 -0
  82. package/dist/esm/glb-loader.js.map +1 -0
  83. package/dist/esm/glb-writer.js +27 -0
  84. package/dist/esm/glb-writer.js.map +1 -0
  85. package/dist/esm/gltf-loader.js +51 -0
  86. package/dist/esm/gltf-loader.js.map +1 -0
  87. package/dist/esm/gltf-writer.js +28 -0
  88. package/dist/esm/gltf-writer.js.map +1 -0
  89. package/dist/esm/index.js +8 -0
  90. package/dist/esm/index.js.map +1 -0
  91. package/dist/esm/lib/api/gltf-extensions.js +35 -0
  92. package/dist/esm/lib/api/gltf-extensions.js.map +1 -0
  93. package/dist/esm/lib/api/gltf-scenegraph.js +455 -0
  94. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -0
  95. package/dist/esm/lib/api/normalize-gltf-v1.js +204 -0
  96. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -0
  97. package/dist/esm/lib/api/post-process-gltf.js +396 -0
  98. package/dist/esm/lib/api/post-process-gltf.js.map +1 -0
  99. package/dist/esm/lib/encoders/encode-glb.js +54 -0
  100. package/dist/esm/lib/encoders/encode-glb.js.map +1 -0
  101. package/dist/esm/lib/encoders/encode-gltf.js +14 -0
  102. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -0
  103. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +41 -0
  104. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  105. package/dist/esm/lib/extensions/EXT_texture_webp.js +25 -0
  106. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -0
  107. package/dist/esm/lib/extensions/KHR_binary_gltf.js +21 -0
  108. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -0
  109. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +111 -0
  110. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  111. package/dist/esm/lib/extensions/KHR_texture_basisu.js +18 -0
  112. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -0
  113. package/dist/esm/lib/extensions/KHR_texture_transform.js +182 -0
  114. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -0
  115. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +223 -0
  116. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  117. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +42 -0
  118. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  119. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +33 -0
  120. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  121. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +61 -0
  122. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  123. package/dist/esm/lib/gltf-utils/get-typed-array.js +16 -0
  124. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -0
  125. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +62 -0
  126. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  127. package/dist/esm/lib/gltf-utils/gltf-constants.js +37 -0
  128. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -0
  129. package/dist/esm/lib/gltf-utils/gltf-utils.js +74 -0
  130. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -0
  131. package/dist/esm/lib/gltf-utils/resolve-url.js +12 -0
  132. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -0
  133. package/dist/esm/lib/parsers/parse-glb.js +114 -0
  134. package/dist/esm/lib/parsers/parse-glb.js.map +1 -0
  135. package/dist/esm/lib/parsers/parse-gltf.js +151 -0
  136. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -0
  137. package/dist/esm/lib/types/glb-types.js +2 -0
  138. package/dist/esm/lib/types/glb-types.js.map +1 -0
  139. package/dist/esm/lib/types/gltf-json-schema.js +2 -0
  140. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -0
  141. package/dist/esm/lib/types/gltf-postprocessed-schema.js +2 -0
  142. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -0
  143. package/dist/esm/lib/types/gltf-types.js +2 -0
  144. package/dist/esm/lib/types/gltf-types.js.map +1 -0
  145. package/dist/esm/lib/utils/assert.js +6 -0
  146. package/dist/esm/lib/utils/assert.js.map +1 -0
  147. package/dist/esm/lib/utils/version.js +2 -0
  148. package/dist/esm/lib/utils/version.js.map +1 -0
  149. package/dist/esm/meshopt/meshopt-decoder.js +91 -0
  150. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -0
  151. package/dist/esm/meshopt/meshopt-encoder.ts.disabled +409 -0
  152. package/dist/esm/webp/webp.js +25 -0
  153. package/dist/esm/webp/webp.js.map +1 -0
  154. package/dist/glb-loader.d.ts +14 -0
  155. package/dist/glb-loader.d.ts.map +1 -0
  156. package/dist/glb-loader.js +30 -28
  157. package/dist/glb-writer.d.ts +13 -0
  158. package/dist/glb-writer.d.ts.map +1 -0
  159. package/dist/glb-writer.js +32 -26
  160. package/dist/gltf-loader.d.ts +19 -0
  161. package/dist/gltf-loader.d.ts.map +1 -0
  162. package/dist/gltf-loader.js +46 -43
  163. package/dist/gltf-writer.d.ts +25 -0
  164. package/dist/gltf-writer.d.ts.map +1 -0
  165. package/dist/gltf-writer.js +29 -26
  166. package/dist/index.d.ts +15 -0
  167. package/dist/index.d.ts.map +1 -0
  168. package/dist/index.js +28 -7
  169. package/dist/lib/api/gltf-extensions.d.ts +31 -0
  170. package/dist/lib/api/gltf-extensions.d.ts.map +1 -0
  171. package/dist/lib/api/gltf-extensions.js +79 -31
  172. package/dist/lib/api/gltf-scenegraph.d.ts +180 -0
  173. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -0
  174. package/dist/lib/api/gltf-scenegraph.js +578 -513
  175. package/dist/lib/api/normalize-gltf-v1.d.ts +2 -0
  176. package/dist/lib/api/normalize-gltf-v1.d.ts.map +1 -0
  177. package/dist/lib/api/normalize-gltf-v1.js +278 -226
  178. package/dist/lib/api/post-process-gltf.d.ts +5 -0
  179. package/dist/lib/api/post-process-gltf.d.ts.map +1 -0
  180. package/dist/lib/api/post-process-gltf.js +386 -345
  181. package/dist/lib/encoders/encode-glb.d.ts +15 -0
  182. package/dist/lib/encoders/encode-glb.d.ts.map +1 -0
  183. package/dist/lib/encoders/encode-glb.js +67 -58
  184. package/dist/lib/encoders/encode-gltf.d.ts +20 -0
  185. package/dist/lib/encoders/encode-gltf.d.ts.map +1 -0
  186. package/dist/lib/encoders/encode-gltf.js +30 -12
  187. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +7 -0
  188. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -0
  189. package/dist/lib/extensions/EXT_meshopt_compression.js +35 -50
  190. package/dist/lib/extensions/EXT_texture_webp.d.ts +12 -0
  191. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -0
  192. package/dist/lib/extensions/EXT_texture_webp.js +32 -28
  193. package/dist/lib/extensions/KHR_binary_gltf.d.ts +7 -0
  194. package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -0
  195. package/dist/lib/extensions/KHR_binary_gltf.js +36 -23
  196. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +13 -0
  197. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -0
  198. package/dist/lib/extensions/KHR_draco_mesh_compression.js +123 -111
  199. package/dist/lib/extensions/KHR_texture_basisu.d.ts +12 -0
  200. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -0
  201. package/dist/lib/extensions/KHR_texture_basisu.js +26 -19
  202. package/dist/lib/extensions/KHR_texture_transform.d.ts +13 -0
  203. package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
  204. package/dist/lib/extensions/KHR_texture_transform.js +227 -0
  205. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +7 -0
  206. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
  207. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +290 -0
  208. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +7 -0
  209. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -0
  210. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +54 -44
  211. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +7 -0
  212. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -0
  213. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +39 -32
  214. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +7 -0
  215. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -0
  216. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +73 -62
  217. package/dist/lib/gltf-utils/get-typed-array.d.ts +3 -0
  218. package/dist/lib/gltf-utils/get-typed-array.d.ts.map +1 -0
  219. package/dist/lib/gltf-utils/get-typed-array.js +39 -14
  220. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +6 -0
  221. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -0
  222. package/dist/lib/gltf-utils/gltf-attribute-utils.js +65 -65
  223. package/dist/lib/gltf-utils/gltf-constants.d.ts +21 -0
  224. package/dist/lib/gltf-utils/gltf-constants.d.ts.map +1 -0
  225. package/dist/lib/gltf-utils/gltf-constants.js +38 -32
  226. package/dist/lib/gltf-utils/gltf-utils.d.ts +15 -0
  227. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -0
  228. package/dist/lib/gltf-utils/gltf-utils.js +79 -45
  229. package/dist/lib/gltf-utils/resolve-url.d.ts +2 -0
  230. package/dist/lib/gltf-utils/resolve-url.d.ts.map +1 -0
  231. package/dist/lib/gltf-utils/resolve-url.js +17 -15
  232. package/dist/lib/parsers/parse-glb.d.ts +20 -0
  233. package/dist/lib/parsers/parse-glb.d.ts.map +1 -0
  234. package/dist/lib/parsers/parse-glb.js +143 -105
  235. package/dist/lib/parsers/parse-gltf.d.ts +18 -0
  236. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -0
  237. package/dist/lib/parsers/parse-gltf.js +164 -155
  238. package/dist/lib/types/glb-types.d.ts +17 -0
  239. package/dist/lib/types/glb-types.d.ts.map +1 -0
  240. package/dist/lib/types/glb-types.js +2 -2
  241. package/dist/lib/types/gltf-json-schema.d.ts +1119 -0
  242. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -0
  243. package/dist/lib/types/gltf-json-schema.js +4 -2
  244. package/dist/lib/types/gltf-postprocessed-schema.d.ts +651 -0
  245. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -0
  246. package/dist/lib/types/gltf-postprocessed-schema.js +4 -2
  247. package/dist/lib/types/gltf-types.d.ts +26 -0
  248. package/dist/lib/types/gltf-types.d.ts.map +1 -0
  249. package/dist/lib/types/gltf-types.js +3 -2
  250. package/dist/lib/utils/assert.d.ts +2 -0
  251. package/dist/lib/utils/assert.d.ts.map +1 -0
  252. package/dist/lib/utils/assert.js +11 -5
  253. package/dist/lib/utils/version.d.ts +2 -0
  254. package/dist/lib/utils/version.d.ts.map +1 -0
  255. package/dist/lib/utils/version.js +7 -2
  256. package/dist/meshopt/meshopt-decoder.d.ts +6 -0
  257. package/dist/meshopt/meshopt-decoder.d.ts.map +1 -0
  258. package/dist/meshopt/meshopt-decoder.js +97 -82
  259. package/dist/webp/webp.d.ts +7 -0
  260. package/dist/webp/webp.d.ts.map +1 -0
  261. package/dist/webp/webp.js +32 -23
  262. package/package.json +11 -13
  263. package/src/glb-loader.ts +4 -4
  264. package/src/glb-writer.ts +11 -3
  265. package/src/gltf-loader.ts +12 -8
  266. package/src/gltf-writer.ts +2 -2
  267. package/src/index.ts +34 -5
  268. package/src/lib/api/gltf-extensions.ts +14 -3
  269. package/src/lib/api/gltf-scenegraph.ts +68 -40
  270. package/src/lib/api/{normalize-gltf-v1.js → normalize-gltf-v1.ts} +20 -17
  271. package/src/lib/api/post-process-gltf.ts +556 -0
  272. package/src/lib/encoders/{encode-glb.js → encode-glb.ts} +21 -4
  273. package/src/lib/encoders/encode-gltf.ts +34 -0
  274. package/src/lib/extensions/EXT_meshopt_compression.ts +16 -25
  275. package/src/lib/extensions/EXT_texture_webp.ts +5 -4
  276. package/src/lib/extensions/KHR_binary_gltf.ts +3 -3
  277. package/src/lib/extensions/KHR_draco_mesh_compression.ts +8 -8
  278. package/src/lib/extensions/KHR_texture_basisu.ts +6 -5
  279. package/src/lib/extensions/KHR_texture_transform.ts +308 -0
  280. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +404 -0
  281. package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
  282. package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +5 -5
  283. package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +3 -2
  284. package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
  285. package/src/lib/gltf-utils/gltf-constants.ts +2 -2
  286. package/src/lib/gltf-utils/gltf-utils.ts +31 -0
  287. package/src/lib/parsers/parse-glb.ts +50 -24
  288. package/src/lib/parsers/parse-gltf.ts +38 -28
  289. package/src/lib/types/glb-types.ts +1 -1
  290. package/src/lib/types/gltf-json-schema.ts +585 -126
  291. package/src/lib/types/gltf-postprocessed-schema.ts +290 -212
  292. package/src/lib/types/gltf-types.ts +43 -43
  293. package/src/lib/utils/{assert.js → assert.ts} +1 -1
  294. package/dist/bundle.js.map +0 -1
  295. package/dist/glb-loader.js.map +0 -1
  296. package/dist/glb-writer.js.map +0 -1
  297. package/dist/gltf-loader.js.map +0 -1
  298. package/dist/gltf-writer.js.map +0 -1
  299. package/dist/index.js.map +0 -1
  300. package/dist/lib/api/gltf-extensions.js.map +0 -1
  301. package/dist/lib/api/gltf-scenegraph.js.map +0 -1
  302. package/dist/lib/api/normalize-gltf-v1.js.map +0 -1
  303. package/dist/lib/api/post-process-gltf.js.map +0 -1
  304. package/dist/lib/encoders/encode-glb.js.map +0 -1
  305. package/dist/lib/encoders/encode-gltf.js.map +0 -1
  306. package/dist/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  307. package/dist/lib/extensions/EXT_texture_webp.js.map +0 -1
  308. package/dist/lib/extensions/KHR_binary_gltf.js.map +0 -1
  309. package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  310. package/dist/lib/extensions/KHR_texture_basisu.js.map +0 -1
  311. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  312. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  313. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  314. package/dist/lib/gltf-utils/get-typed-array.js.map +0 -1
  315. package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  316. package/dist/lib/gltf-utils/gltf-constants.js.map +0 -1
  317. package/dist/lib/gltf-utils/gltf-utils.js.map +0 -1
  318. package/dist/lib/gltf-utils/resolve-url.js.map +0 -1
  319. package/dist/lib/parsers/parse-glb.js.map +0 -1
  320. package/dist/lib/parsers/parse-gltf.js.map +0 -1
  321. package/dist/lib/types/glb-types.js.map +0 -1
  322. package/dist/lib/types/gltf-json-schema.js.map +0 -1
  323. package/dist/lib/types/gltf-postprocessed-schema.js.map +0 -1
  324. package/dist/lib/types/gltf-types.js.map +0 -1
  325. package/dist/lib/utils/assert.js.map +0 -1
  326. package/dist/lib/utils/version.js.map +0 -1
  327. package/dist/meshopt/meshopt-decoder.js.map +0 -1
  328. package/dist/webp/webp.js.map +0 -1
  329. package/src/lib/api/post-process-gltf.js +0 -388
  330. package/src/lib/encoders/encode-gltf.js +0 -25
  331. /package/dist/{meshopt → es5/meshopt}/meshopt-encoder.ts.disabled +0 -0
  332. /package/src/lib/utils/{version.js → version.ts} +0 -0
@@ -0,0 +1,51 @@
1
+ import { VERSION } from './lib/utils/version';
2
+ import { parseGLTF } from './lib/parsers/parse-gltf';
3
+ export const GLTFLoader = {
4
+ name: 'glTF',
5
+ id: 'gltf',
6
+ module: 'gltf',
7
+ version: VERSION,
8
+ extensions: ['gltf', 'glb'],
9
+ mimeTypes: ['model/gltf+json', 'model/gltf-binary'],
10
+ text: true,
11
+ binary: true,
12
+ tests: ['glTF'],
13
+ parse,
14
+ options: {
15
+ gltf: {
16
+ normalize: true,
17
+ loadBuffers: true,
18
+ loadImages: true,
19
+ decompressMeshes: true
20
+ },
21
+ log: console
22
+ },
23
+ deprecatedOptions: {
24
+ fetchImages: 'gltf.loadImages',
25
+ createImages: 'gltf.loadImages',
26
+ decompress: 'gltf.decompressMeshes',
27
+ postProcess: 'gltf.postProcess',
28
+ gltf: {
29
+ decompress: 'gltf.decompressMeshes',
30
+ postProcess: 'removed in v4'
31
+ }
32
+ }
33
+ };
34
+ export async function parse(arrayBuffer) {
35
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
36
+ let context = arguments.length > 2 ? arguments[2] : undefined;
37
+ options = {
38
+ ...GLTFLoader.options,
39
+ ...options
40
+ };
41
+ options.gltf = {
42
+ ...GLTFLoader.options.gltf,
43
+ ...options.gltf
44
+ };
45
+ const {
46
+ byteOffset = 0
47
+ } = options;
48
+ const gltf = {};
49
+ return await parseGLTF(gltf, arrayBuffer, byteOffset, options, context);
50
+ }
51
+ //# sourceMappingURL=gltf-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gltf-loader.js","names":["VERSION","parseGLTF","GLTFLoader","name","id","module","version","extensions","mimeTypes","text","binary","tests","parse","options","gltf","normalize","loadBuffers","loadImages","decompressMeshes","log","console","deprecatedOptions","fetchImages","createImages","decompress","postProcess","arrayBuffer","arguments","length","undefined","context","byteOffset"],"sources":["../../src/gltf-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {DracoLoaderOptions} from '@loaders.gl/draco';\nimport {VERSION} from './lib/utils/version';\nimport type {ImageLoaderOptions} from '@loaders.gl/images';\nimport type {TextureLoaderOptions} from '@loaders.gl/textures';\nimport type {ParseGLTFOptions} from './lib/parsers/parse-gltf';\nimport type {GLTFWithBuffers} from './lib/types/gltf-types';\nimport type {GLBLoaderOptions} from './glb-loader';\nimport {parseGLTF} from './lib/parsers/parse-gltf';\n\n/**\n * GLTF loader options\n */\nexport type GLTFLoaderOptions = LoaderOptions &\n ImageLoaderOptions &\n TextureLoaderOptions &\n GLBLoaderOptions &\n DracoLoaderOptions & {\n gltf?: ParseGLTFOptions;\n };\n\n/**\n * GLTF loader\n */\nexport const GLTFLoader: LoaderWithParser<GLTFWithBuffers, never, GLBLoaderOptions> = {\n name: 'glTF',\n id: 'gltf',\n module: 'gltf',\n version: VERSION,\n extensions: ['gltf', 'glb'],\n mimeTypes: ['model/gltf+json', 'model/gltf-binary'],\n\n text: true,\n binary: true,\n tests: ['glTF'],\n parse,\n\n options: {\n gltf: {\n normalize: true, // Normalize glTF v1 to glTF v2 format (not yet stable)\n loadBuffers: true, // Fetch any linked .BIN buffers, decode base64\n loadImages: true, // Create image objects\n decompressMeshes: true // Decompress Draco encoded meshes\n },\n\n // common?\n log: console // eslint-disable-line\n },\n deprecatedOptions: {\n fetchImages: 'gltf.loadImages',\n createImages: 'gltf.loadImages',\n decompress: 'gltf.decompressMeshes',\n postProcess: 'gltf.postProcess',\n gltf: {\n decompress: 'gltf.decompressMeshes',\n postProcess: 'removed in v4'\n }\n }\n};\n\nexport async function parse(\n arrayBuffer,\n options: GLTFLoaderOptions = {},\n context\n): Promise<GLTFWithBuffers> {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GLTFLoader.options, ...options};\n // @ts-ignore\n options.gltf = {...GLTFLoader.options.gltf, ...options.gltf};\n\n const {byteOffset = 0} = options;\n const gltf = {};\n return await parseGLTF(gltf as GLTFWithBuffers, arrayBuffer, byteOffset, options, context);\n}\n"],"mappings":"AAEA,SAAQA,OAAO,QAAO,qBAAqB;AAM3C,SAAQC,SAAS,QAAO,0BAA0B;AAgBlD,OAAO,MAAMC,UAAsE,GAAG;EACpFC,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEN,OAAO;EAChBO,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;EAC3BC,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;EAEnDC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,CAAC;EACfC,KAAK;EAELC,OAAO,EAAE;IACPC,IAAI,EAAE;MACJC,SAAS,EAAE,IAAI;MACfC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE,IAAI;MAChBC,gBAAgB,EAAE;IACpB,CAAC;IAGDC,GAAG,EAAEC;EACP,CAAC;EACDC,iBAAiB,EAAE;IACjBC,WAAW,EAAE,iBAAiB;IAC9BC,YAAY,EAAE,iBAAiB;IAC/BC,UAAU,EAAE,uBAAuB;IACnCC,WAAW,EAAE,kBAAkB;IAC/BX,IAAI,EAAE;MACJU,UAAU,EAAE,uBAAuB;MACnCC,WAAW,EAAE;IACf;EACF;AACF,CAAC;AAED,OAAO,eAAeb,KAAKA,CACzBc,WAAW,EAGe;EAAA,IAF1Bb,OAA0B,GAAAc,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAC/BG,OAAO,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAGPhB,OAAO,GAAG;IAAC,GAAGX,UAAU,CAACW,OAAO;IAAE,GAAGA;EAAO,CAAC;EAE7CA,OAAO,CAACC,IAAI,GAAG;IAAC,GAAGZ,UAAU,CAACW,OAAO,CAACC,IAAI;IAAE,GAAGD,OAAO,CAACC;EAAI,CAAC;EAE5D,MAAM;IAACiB,UAAU,GAAG;EAAC,CAAC,GAAGlB,OAAO;EAChC,MAAMC,IAAI,GAAG,CAAC,CAAC;EACf,OAAO,MAAMb,SAAS,CAACa,IAAI,EAAqBY,WAAW,EAAEK,UAAU,EAAElB,OAAO,EAAEiB,OAAO,CAAC;AAC5F"}
@@ -0,0 +1,28 @@
1
+ import { VERSION } from './lib/utils/version';
2
+ import { encodeGLTFSync } from './lib/encoders/encode-gltf';
3
+ export const GLTFWriter = {
4
+ name: 'glTF',
5
+ id: 'gltf',
6
+ module: 'gltf',
7
+ version: VERSION,
8
+ extensions: ['glb'],
9
+ mimeTypes: ['model/gltf-binary'],
10
+ binary: true,
11
+ encodeSync,
12
+ options: {
13
+ gltf: {}
14
+ }
15
+ };
16
+ function encodeSync(gltf) {
17
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
18
+ const {
19
+ byteOffset = 0
20
+ } = options;
21
+ const byteLength = encodeGLTFSync(gltf, null, byteOffset, options);
22
+ const arrayBuffer = new ArrayBuffer(byteLength);
23
+ const dataView = new DataView(arrayBuffer);
24
+ encodeGLTFSync(gltf, dataView, byteOffset, options);
25
+ return arrayBuffer;
26
+ }
27
+ export const _TypecheckGLBLoader = GLTFWriter;
28
+ //# sourceMappingURL=gltf-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gltf-writer.js","names":["VERSION","encodeGLTFSync","GLTFWriter","name","id","module","version","extensions","mimeTypes","binary","encodeSync","options","gltf","arguments","length","undefined","byteOffset","byteLength","arrayBuffer","ArrayBuffer","dataView","DataView","_TypecheckGLBLoader"],"sources":["../../src/gltf-writer.ts"],"sourcesContent":["import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport {encodeGLTFSync} from './lib/encoders/encode-gltf';\n\nexport type GLTFWriterOptions = WriterOptions & {\n gltf?: {};\n byteOffset?: number;\n};\n\n/**\n * GLTF exporter\n */\nexport const GLTFWriter = {\n name: 'glTF',\n id: 'gltf',\n module: 'gltf',\n version: VERSION,\n\n extensions: ['glb'], // We only support encoding to binary GLB, not to JSON GLTF\n mimeTypes: ['model/gltf-binary'], // 'model/gltf+json',\n binary: true,\n\n encodeSync,\n\n options: {\n gltf: {}\n }\n};\n\nfunction encodeSync(gltf, options: GLTFWriterOptions = {}) {\n const {byteOffset = 0} = options;\n\n // Calculate length, then create arraybuffer and encode\n const byteLength = encodeGLTFSync(gltf, null, byteOffset, options);\n const arrayBuffer = new ArrayBuffer(byteLength);\n const dataView = new DataView(arrayBuffer);\n encodeGLTFSync(gltf, dataView, byteOffset, options);\n\n return arrayBuffer;\n}\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckGLBLoader: Writer = GLTFWriter;\n"],"mappings":"AACA,SAAQA,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,cAAc,QAAO,4BAA4B;AAUzD,OAAO,MAAMC,UAAU,GAAG;EACxBC,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEN,OAAO;EAEhBO,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,mBAAmB,CAAC;EAChCC,MAAM,EAAE,IAAI;EAEZC,UAAU;EAEVC,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC;EACT;AACF,CAAC;AAED,SAASF,UAAUA,CAACE,IAAI,EAAmC;EAAA,IAAjCD,OAA0B,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvD,MAAM;IAACG,UAAU,GAAG;EAAC,CAAC,GAAGL,OAAO;EAGhC,MAAMM,UAAU,GAAGhB,cAAc,CAACW,IAAI,EAAE,IAAI,EAAEI,UAAU,EAAEL,OAAO,CAAC;EAClE,MAAMO,WAAW,GAAG,IAAIC,WAAW,CAACF,UAAU,CAAC;EAC/C,MAAMG,QAAQ,GAAG,IAAIC,QAAQ,CAACH,WAAW,CAAC;EAC1CjB,cAAc,CAACW,IAAI,EAAEQ,QAAQ,EAAEJ,UAAU,EAAEL,OAAO,CAAC;EAEnD,OAAOO,WAAW;AACpB;AAGA,OAAO,MAAMI,mBAA2B,GAAGpB,UAAU"}
@@ -0,0 +1,8 @@
1
+ export { GLTFLoader } from './gltf-loader';
2
+ export { GLTFWriter } from './gltf-writer';
3
+ export { GLBLoader } from './glb-loader';
4
+ export { GLBWriter } from './glb-writer';
5
+ export { GLTFScenegraph } from './lib/api/gltf-scenegraph';
6
+ export { postProcessGLTF } from './lib/api/post-process-gltf';
7
+ export { getMemoryUsageGLTF as _getMemoryUsageGLTF } from './lib/gltf-utils/gltf-utils';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["GLTFLoader","GLTFWriter","GLBLoader","GLBWriter","GLTFScenegraph","postProcessGLTF","getMemoryUsageGLTF","_getMemoryUsageGLTF"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase, indent */\nexport type {GLB} from './lib/types/glb-types';\n\n// Raw GLTF Types (i.e. not post-processed)\nexport type {\n GLTF,\n GLTFAccessor,\n GLTFBuffer,\n GLTFBufferView,\n GLTFMeshPrimitive,\n GLTFMesh,\n GLTFNode,\n GLTFMaterial,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture,\n GLTFImage,\n GLTFObject,\n // The following extensions are handled by the GLTFLoader and removed from the parsed glTF (disable via options.gltf.excludeExtensions)\n GLTF_KHR_binary_glTF,\n GLTF_KHR_draco_mesh_compression,\n GLTF_KHR_texture_basisu,\n GLTF_EXT_meshopt_compression,\n GLTF_EXT_texture_webp,\n GLTF_EXT_feature_metadata,\n GLTF_EXT_feature_metadata_primitive,\n GLTF_EXT_feature_metadata_attribute,\n GLTF_EXT_mesh_features\n} from './lib/types/gltf-json-schema';\n\n// Postprocessed types (modified GLTF types)\nexport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFNodePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFMeshPrimitivePostprocessed,\n GLTFImagePostprocessed,\n GLTFTexturePostprocessed\n} from './lib/types/gltf-postprocessed-schema';\n\nexport type {GLTFWithBuffers} from './lib/types/gltf-types';\n\n// glTF loader/writer definition objects\nexport {GLTFLoader} from './gltf-loader';\nexport {GLTFWriter} from './gltf-writer';\n\n// GLB Loader & Writer (for custom formats that want to leverage the GLB binary \"envelope\")\nexport {GLBLoader} from './glb-loader';\nexport {GLBWriter} from './glb-writer';\n\n// glTF Data Access Helper Class\nexport {GLTFScenegraph} from './lib/api/gltf-scenegraph';\nexport {postProcessGLTF} from './lib/api/post-process-gltf';\nexport {getMemoryUsageGLTF as _getMemoryUsageGLTF} from './lib/gltf-utils/gltf-utils';\n\n/** @deprecated */\n// export type {GLTFMesh as Mesh} from './lib/types/gltf-json-schema';\n/** @deprecated */\n// export type {GLTFNodePostprocessed as Node} from './lib/types/gltf-postprocessed-schema';\n/** @deprecated */\n// export type {GLTFAccessorPostprocessed as Accessor} from './lib/types/gltf-postprocessed-schema';\n// /** @deprecated */\n// export type {GLTFImagePostprocessed as Image} from './lib/types/gltf-postprocessed-schema';\n"],"mappings":"AA8CA,SAAQA,UAAU,QAAO,eAAe;AACxC,SAAQC,UAAU,QAAO,eAAe;AAGxC,SAAQC,SAAS,QAAO,cAAc;AACtC,SAAQC,SAAS,QAAO,cAAc;AAGtC,SAAQC,cAAc,QAAO,2BAA2B;AACxD,SAAQC,eAAe,QAAO,6BAA6B;AAC3D,SAAQC,kBAAkB,IAAIC,mBAAmB,QAAO,6BAA6B"}
@@ -0,0 +1,35 @@
1
+ import * as EXT_meshopt_compression from '../extensions/EXT_meshopt_compression';
2
+ import * as EXT_texture_webp from '../extensions/EXT_texture_webp';
3
+ import * as KHR_texture_basisu from '../extensions/KHR_texture_basisu';
4
+ import * as KHR_draco_mesh_compression from '../extensions/KHR_draco_mesh_compression';
5
+ import * as KHR_texture_transform from '../extensions/KHR_texture_transform';
6
+ import * as KHR_lights_punctual from '../extensions/deprecated/KHR_lights_punctual';
7
+ import * as KHR_materials_unlit from '../extensions/deprecated/KHR_materials_unlit';
8
+ import * as KHR_techniques_webgl from '../extensions/deprecated/KHR_techniques_webgl';
9
+ import * as EXT_feature_metadata from '../extensions/deprecated/EXT_feature_metadata';
10
+ export const EXTENSIONS = [EXT_meshopt_compression, EXT_texture_webp, KHR_texture_basisu, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_unlit, KHR_techniques_webgl, KHR_texture_transform, EXT_feature_metadata];
11
+ export function preprocessExtensions(gltf) {
12
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13
+ let context = arguments.length > 2 ? arguments[2] : undefined;
14
+ const extensions = EXTENSIONS.filter(extension => useExtension(extension.name, options));
15
+ for (const extension of extensions) {
16
+ var _extension$preprocess;
17
+ (_extension$preprocess = extension.preprocess) === null || _extension$preprocess === void 0 ? void 0 : _extension$preprocess.call(extension, gltf, options, context);
18
+ }
19
+ }
20
+ export async function decodeExtensions(gltf) {
21
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
22
+ let context = arguments.length > 2 ? arguments[2] : undefined;
23
+ const extensions = EXTENSIONS.filter(extension => useExtension(extension.name, options));
24
+ for (const extension of extensions) {
25
+ var _extension$decode;
26
+ await ((_extension$decode = extension.decode) === null || _extension$decode === void 0 ? void 0 : _extension$decode.call(extension, gltf, options, context));
27
+ }
28
+ }
29
+ function useExtension(extensionName, options) {
30
+ var _options$gltf;
31
+ const excludes = (options === null || options === void 0 ? void 0 : (_options$gltf = options.gltf) === null || _options$gltf === void 0 ? void 0 : _options$gltf.excludeExtensions) || {};
32
+ const exclude = extensionName in excludes && !excludes[extensionName];
33
+ return !exclude;
34
+ }
35
+ //# sourceMappingURL=gltf-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gltf-extensions.js","names":["EXT_meshopt_compression","EXT_texture_webp","KHR_texture_basisu","KHR_draco_mesh_compression","KHR_texture_transform","KHR_lights_punctual","KHR_materials_unlit","KHR_techniques_webgl","EXT_feature_metadata","EXTENSIONS","preprocessExtensions","gltf","options","arguments","length","undefined","context","extensions","filter","extension","useExtension","name","_extension$preprocess","preprocess","call","decodeExtensions","_extension$decode","decode","extensionName","_options$gltf","excludes","excludeExtensions","exclude"],"sources":["../../../../src/lib/api/gltf-extensions.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {GLTF} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\n// GLTF 1.0 extensions (decode only)\n// import * as KHR_binary_gltf from './KHR_draco_mesh_compression';\n\n// GLTF 2.0 Khronos extensions (decode/encode)\nimport * as EXT_meshopt_compression from '../extensions/EXT_meshopt_compression';\nimport * as EXT_texture_webp from '../extensions/EXT_texture_webp';\nimport * as KHR_texture_basisu from '../extensions/KHR_texture_basisu';\nimport * as KHR_draco_mesh_compression from '../extensions/KHR_draco_mesh_compression';\nimport * as KHR_texture_transform from '../extensions/KHR_texture_transform';\n\n// Deprecated. These should be handled by rendering library (e.g. luma.gl), not the loader.\nimport * as KHR_lights_punctual from '../extensions/deprecated/KHR_lights_punctual';\nimport * as KHR_materials_unlit from '../extensions/deprecated/KHR_materials_unlit';\nimport * as KHR_techniques_webgl from '../extensions/deprecated/KHR_techniques_webgl';\nimport * as EXT_feature_metadata from '../extensions/deprecated/EXT_feature_metadata';\n\n// Vendor extensions\n\ntype GLTFExtensionPlugin = {\n name: string;\n preprocess?: (gltfData: {json: GLTF}, options: GLTFLoaderOptions, context) => void;\n decode?: (\n gltfData: {\n json: GLTF;\n buffers: {arrayBuffer: ArrayBuffer; byteOffset: number; byteLength: number}[];\n },\n options: GLTFLoaderOptions,\n context\n ) => Promise<void>;\n encode?: (gltfData: {json: GLTF}, options: GLTFLoaderOptions) => void;\n};\n\n/**\n * List of extensions processed by the GLTFLoader\n * Note that may extensions can only be handled on the rendering stage and are left out here\n * These are just extensions that can be handled fully or partially during loading.\n */\nexport const EXTENSIONS: GLTFExtensionPlugin[] = [\n // 1.0\n // KHR_binary_gltf is handled separately - must be processed before other parsing starts\n // KHR_binary_gltf,\n\n // 2.0\n EXT_meshopt_compression,\n EXT_texture_webp,\n // Basisu should come after webp, we want basisu to be preferred if both are provided\n KHR_texture_basisu,\n KHR_draco_mesh_compression,\n KHR_lights_punctual,\n KHR_materials_unlit,\n KHR_techniques_webgl,\n KHR_texture_transform,\n EXT_feature_metadata\n];\n\n/** Call before any resource loading starts */\nexport function preprocessExtensions(gltf, options: GLTFLoaderOptions = {}, context?) {\n const extensions = EXTENSIONS.filter((extension) => useExtension(extension.name, options));\n for (const extension of extensions) {\n extension.preprocess?.(gltf, options, context);\n }\n}\n\n/** Call after resource loading */\nexport async function decodeExtensions(gltf, options: GLTFLoaderOptions = {}, context?) {\n const extensions = EXTENSIONS.filter((extension) => useExtension(extension.name, options));\n for (const extension of extensions) {\n // Note: We decode async extensions sequentially, this might not be necessary\n // Currently we only have Draco, but when we add Basis we may revisit\n await extension.decode?.(gltf, options, context);\n }\n}\n\nfunction useExtension(extensionName: string, options: GLTFLoaderOptions) {\n const excludes = options?.gltf?.excludeExtensions || {};\n const exclude = extensionName in excludes && !excludes[extensionName];\n return !exclude;\n}\n"],"mappings":"AAQA,OAAO,KAAKA,uBAAuB,MAAM,uCAAuC;AAChF,OAAO,KAAKC,gBAAgB,MAAM,gCAAgC;AAClE,OAAO,KAAKC,kBAAkB,MAAM,kCAAkC;AACtE,OAAO,KAAKC,0BAA0B,MAAM,0CAA0C;AACtF,OAAO,KAAKC,qBAAqB,MAAM,qCAAqC;AAG5E,OAAO,KAAKC,mBAAmB,MAAM,8CAA8C;AACnF,OAAO,KAAKC,mBAAmB,MAAM,8CAA8C;AACnF,OAAO,KAAKC,oBAAoB,MAAM,+CAA+C;AACrF,OAAO,KAAKC,oBAAoB,MAAM,+CAA+C;AAuBrF,OAAO,MAAMC,UAAiC,GAAG,CAM/CT,uBAAuB,EACvBC,gBAAgB,EAEhBC,kBAAkB,EAClBC,0BAA0B,EAC1BE,mBAAmB,EACnBC,mBAAmB,EACnBC,oBAAoB,EACpBH,qBAAqB,EACrBI,oBAAoB,CACrB;AAGD,OAAO,SAASE,oBAAoBA,CAACC,IAAI,EAA6C;EAAA,IAA3CC,OAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEG,OAAQ,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAClF,MAAME,UAAU,GAAGR,UAAU,CAACS,MAAM,CAAEC,SAAS,IAAKC,YAAY,CAACD,SAAS,CAACE,IAAI,EAAET,OAAO,CAAC,CAAC;EAC1F,KAAK,MAAMO,SAAS,IAAIF,UAAU,EAAE;IAAA,IAAAK,qBAAA;IAClC,CAAAA,qBAAA,GAAAH,SAAS,CAACI,UAAU,cAAAD,qBAAA,uBAApBA,qBAAA,CAAAE,IAAA,CAAAL,SAAS,EAAcR,IAAI,EAAEC,OAAO,EAAEI,OAAO,CAAC;EAChD;AACF;AAGA,OAAO,eAAeS,gBAAgBA,CAACd,IAAI,EAA6C;EAAA,IAA3CC,OAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEG,OAAQ,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EACpF,MAAME,UAAU,GAAGR,UAAU,CAACS,MAAM,CAAEC,SAAS,IAAKC,YAAY,CAACD,SAAS,CAACE,IAAI,EAAET,OAAO,CAAC,CAAC;EAC1F,KAAK,MAAMO,SAAS,IAAIF,UAAU,EAAE;IAAA,IAAAS,iBAAA;IAGlC,QAAAA,iBAAA,GAAMP,SAAS,CAACQ,MAAM,cAAAD,iBAAA,uBAAhBA,iBAAA,CAAAF,IAAA,CAAAL,SAAS,EAAUR,IAAI,EAAEC,OAAO,EAAEI,OAAO,CAAC;EAClD;AACF;AAEA,SAASI,YAAYA,CAACQ,aAAqB,EAAEhB,OAA0B,EAAE;EAAA,IAAAiB,aAAA;EACvE,MAAMC,QAAQ,GAAG,CAAAlB,OAAO,aAAPA,OAAO,wBAAAiB,aAAA,GAAPjB,OAAO,CAAED,IAAI,cAAAkB,aAAA,uBAAbA,aAAA,CAAeE,iBAAiB,KAAI,CAAC,CAAC;EACvD,MAAMC,OAAO,GAAGJ,aAAa,IAAIE,QAAQ,IAAI,CAACA,QAAQ,CAACF,aAAa,CAAC;EACrE,OAAO,CAACI,OAAO;AACjB"}
@@ -0,0 +1,455 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { getBinaryImageMetadata } from '@loaders.gl/images';
3
+ import { padToNBytes, copyToArray } from '@loaders.gl/loader-utils';
4
+ import { assert } from '../utils/assert';
5
+ import { getAccessorArrayTypeAndLength, getAccessorTypeFromSize, getComponentTypeFromArray } from '../gltf-utils/gltf-utils';
6
+ function makeDefaultGLTFJson() {
7
+ return {
8
+ asset: {
9
+ version: '2.0',
10
+ generator: 'loaders.gl'
11
+ },
12
+ buffers: [],
13
+ extensions: {},
14
+ extensionsRequired: [],
15
+ extensionsUsed: []
16
+ };
17
+ }
18
+ export class GLTFScenegraph {
19
+ constructor(gltf) {
20
+ _defineProperty(this, "gltf", void 0);
21
+ _defineProperty(this, "sourceBuffers", void 0);
22
+ _defineProperty(this, "byteLength", void 0);
23
+ this.gltf = {
24
+ json: (gltf === null || gltf === void 0 ? void 0 : gltf.json) || makeDefaultGLTFJson(),
25
+ buffers: (gltf === null || gltf === void 0 ? void 0 : gltf.buffers) || [],
26
+ images: (gltf === null || gltf === void 0 ? void 0 : gltf.images) || []
27
+ };
28
+ this.sourceBuffers = [];
29
+ this.byteLength = 0;
30
+ if (this.gltf.buffers && this.gltf.buffers[0]) {
31
+ this.byteLength = this.gltf.buffers[0].byteLength;
32
+ this.sourceBuffers = [this.gltf.buffers[0]];
33
+ }
34
+ }
35
+ get json() {
36
+ return this.gltf.json;
37
+ }
38
+ getApplicationData(key) {
39
+ const data = this.json[key];
40
+ return data;
41
+ }
42
+ getExtraData(key) {
43
+ const extras = this.json.extras || {};
44
+ return extras[key];
45
+ }
46
+ hasExtension(extensionName) {
47
+ const isUsedExtension = this.getUsedExtensions().find(name => name === extensionName);
48
+ const isRequiredExtension = this.getRequiredExtensions().find(name => name === extensionName);
49
+ return typeof isUsedExtension === 'string' || typeof isRequiredExtension === 'string';
50
+ }
51
+ getExtension(extensionName) {
52
+ const isExtension = this.getUsedExtensions().find(name => name === extensionName);
53
+ const extensions = this.json.extensions || {};
54
+ return isExtension ? extensions[extensionName] : null;
55
+ }
56
+ getRequiredExtension(extensionName) {
57
+ const isRequired = this.getRequiredExtensions().find(name => name === extensionName);
58
+ return isRequired ? this.getExtension(extensionName) : null;
59
+ }
60
+ getRequiredExtensions() {
61
+ return this.json.extensionsRequired || [];
62
+ }
63
+ getUsedExtensions() {
64
+ return this.json.extensionsUsed || [];
65
+ }
66
+ getRemovedExtensions() {
67
+ return this.json.extensionsRemoved || [];
68
+ }
69
+ getObjectExtension(object, extensionName) {
70
+ const extensions = object.extensions || {};
71
+ return extensions[extensionName];
72
+ }
73
+ getScene(index) {
74
+ return this.getObject('scenes', index);
75
+ }
76
+ getNode(index) {
77
+ return this.getObject('nodes', index);
78
+ }
79
+ getSkin(index) {
80
+ return this.getObject('skins', index);
81
+ }
82
+ getMesh(index) {
83
+ return this.getObject('meshes', index);
84
+ }
85
+ getMaterial(index) {
86
+ return this.getObject('materials', index);
87
+ }
88
+ getAccessor(index) {
89
+ return this.getObject('accessors', index);
90
+ }
91
+ getTexture(index) {
92
+ return this.getObject('textures', index);
93
+ }
94
+ getSampler(index) {
95
+ return this.getObject('samplers', index);
96
+ }
97
+ getImage(index) {
98
+ return this.getObject('images', index);
99
+ }
100
+ getBufferView(index) {
101
+ return this.getObject('bufferViews', index);
102
+ }
103
+ getBuffer(index) {
104
+ return this.getObject('buffers', index);
105
+ }
106
+ getObject(array, index) {
107
+ if (typeof index === 'object') {
108
+ return index;
109
+ }
110
+ const object = this.json[array] && this.json[array][index];
111
+ if (!object) {
112
+ throw new Error("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
113
+ }
114
+ return object;
115
+ }
116
+ getTypedArrayForBufferView(bufferView) {
117
+ bufferView = this.getBufferView(bufferView);
118
+ const bufferIndex = bufferView.buffer;
119
+ const binChunk = this.gltf.buffers[bufferIndex];
120
+ assert(binChunk);
121
+ const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;
122
+ return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
123
+ }
124
+ getTypedArrayForAccessor(accessor) {
125
+ accessor = this.getAccessor(accessor);
126
+ const bufferView = this.getBufferView(accessor.bufferView);
127
+ const buffer = this.getBuffer(bufferView.buffer);
128
+ const arrayBuffer = buffer.data;
129
+ const {
130
+ ArrayType,
131
+ length
132
+ } = getAccessorArrayTypeAndLength(accessor, bufferView);
133
+ const byteOffset = bufferView.byteOffset + accessor.byteOffset;
134
+ return new ArrayType(arrayBuffer, byteOffset, length);
135
+ }
136
+ getTypedArrayForImageData(image) {
137
+ image = this.getAccessor(image);
138
+ const bufferView = this.getBufferView(image.bufferView);
139
+ const buffer = this.getBuffer(bufferView.buffer);
140
+ const arrayBuffer = buffer.data;
141
+ const byteOffset = bufferView.byteOffset || 0;
142
+ return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
143
+ }
144
+ addApplicationData(key, data) {
145
+ this.json[key] = data;
146
+ return this;
147
+ }
148
+ addExtraData(key, data) {
149
+ this.json.extras = this.json.extras || {};
150
+ this.json.extras[key] = data;
151
+ return this;
152
+ }
153
+ addObjectExtension(object, extensionName, data) {
154
+ object.extensions = object.extensions || {};
155
+ object.extensions[extensionName] = data;
156
+ this.registerUsedExtension(extensionName);
157
+ return this;
158
+ }
159
+ setObjectExtension(object, extensionName, data) {
160
+ const extensions = object.extensions || {};
161
+ extensions[extensionName] = data;
162
+ }
163
+ removeObjectExtension(object, extensionName) {
164
+ const extensions = (object === null || object === void 0 ? void 0 : object.extensions) || {};
165
+ if (extensions[extensionName]) {
166
+ this.json.extensionsRemoved = this.json.extensionsRemoved || [];
167
+ const extensionsRemoved = this.json.extensionsRemoved;
168
+ if (!extensionsRemoved.includes(extensionName)) {
169
+ extensionsRemoved.push(extensionName);
170
+ }
171
+ }
172
+ delete extensions[extensionName];
173
+ }
174
+ addExtension(extensionName) {
175
+ let extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
176
+ assert(extensionData);
177
+ this.json.extensions = this.json.extensions || {};
178
+ this.json.extensions[extensionName] = extensionData;
179
+ this.registerUsedExtension(extensionName);
180
+ return extensionData;
181
+ }
182
+ addRequiredExtension(extensionName) {
183
+ let extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
184
+ assert(extensionData);
185
+ this.addExtension(extensionName, extensionData);
186
+ this.registerRequiredExtension(extensionName);
187
+ return extensionData;
188
+ }
189
+ registerUsedExtension(extensionName) {
190
+ this.json.extensionsUsed = this.json.extensionsUsed || [];
191
+ if (!this.json.extensionsUsed.find(ext => ext === extensionName)) {
192
+ this.json.extensionsUsed.push(extensionName);
193
+ }
194
+ }
195
+ registerRequiredExtension(extensionName) {
196
+ this.registerUsedExtension(extensionName);
197
+ this.json.extensionsRequired = this.json.extensionsRequired || [];
198
+ if (!this.json.extensionsRequired.find(ext => ext === extensionName)) {
199
+ this.json.extensionsRequired.push(extensionName);
200
+ }
201
+ }
202
+ removeExtension(extensionName) {
203
+ var _this$json$extensions;
204
+ if ((_this$json$extensions = this.json.extensions) !== null && _this$json$extensions !== void 0 && _this$json$extensions[extensionName]) {
205
+ this.json.extensionsRemoved = this.json.extensionsRemoved || [];
206
+ const extensionsRemoved = this.json.extensionsRemoved;
207
+ if (!extensionsRemoved.includes(extensionName)) {
208
+ extensionsRemoved.push(extensionName);
209
+ }
210
+ }
211
+ if (this.json.extensions) {
212
+ delete this.json.extensions[extensionName];
213
+ }
214
+ if (this.json.extensionsRequired) {
215
+ this._removeStringFromArray(this.json.extensionsRequired, extensionName);
216
+ }
217
+ if (this.json.extensionsUsed) {
218
+ this._removeStringFromArray(this.json.extensionsUsed, extensionName);
219
+ }
220
+ }
221
+ setDefaultScene(sceneIndex) {
222
+ this.json.scene = sceneIndex;
223
+ }
224
+ addScene(scene) {
225
+ const {
226
+ nodeIndices
227
+ } = scene;
228
+ this.json.scenes = this.json.scenes || [];
229
+ this.json.scenes.push({
230
+ nodes: nodeIndices
231
+ });
232
+ return this.json.scenes.length - 1;
233
+ }
234
+ addNode(node) {
235
+ const {
236
+ meshIndex,
237
+ matrix
238
+ } = node;
239
+ this.json.nodes = this.json.nodes || [];
240
+ const nodeData = {
241
+ mesh: meshIndex
242
+ };
243
+ if (matrix) {
244
+ nodeData.matrix = matrix;
245
+ }
246
+ this.json.nodes.push(nodeData);
247
+ return this.json.nodes.length - 1;
248
+ }
249
+ addMesh(mesh) {
250
+ const {
251
+ attributes,
252
+ indices,
253
+ material,
254
+ mode = 4
255
+ } = mesh;
256
+ const accessors = this._addAttributes(attributes);
257
+ const glTFMesh = {
258
+ primitives: [{
259
+ attributes: accessors,
260
+ mode
261
+ }]
262
+ };
263
+ if (indices) {
264
+ const indicesAccessor = this._addIndices(indices);
265
+ glTFMesh.primitives[0].indices = indicesAccessor;
266
+ }
267
+ if (Number.isFinite(material)) {
268
+ glTFMesh.primitives[0].material = material;
269
+ }
270
+ this.json.meshes = this.json.meshes || [];
271
+ this.json.meshes.push(glTFMesh);
272
+ return this.json.meshes.length - 1;
273
+ }
274
+ addPointCloud(attributes) {
275
+ const accessorIndices = this._addAttributes(attributes);
276
+ const glTFMesh = {
277
+ primitives: [{
278
+ attributes: accessorIndices,
279
+ mode: 0
280
+ }]
281
+ };
282
+ this.json.meshes = this.json.meshes || [];
283
+ this.json.meshes.push(glTFMesh);
284
+ return this.json.meshes.length - 1;
285
+ }
286
+ addImage(imageData, mimeTypeOpt) {
287
+ const metadata = getBinaryImageMetadata(imageData);
288
+ const mimeType = mimeTypeOpt || (metadata === null || metadata === void 0 ? void 0 : metadata.mimeType);
289
+ const bufferViewIndex = this.addBufferView(imageData);
290
+ const glTFImage = {
291
+ bufferView: bufferViewIndex,
292
+ mimeType
293
+ };
294
+ this.json.images = this.json.images || [];
295
+ this.json.images.push(glTFImage);
296
+ return this.json.images.length - 1;
297
+ }
298
+ addBufferView(buffer) {
299
+ let bufferIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
300
+ let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.byteLength;
301
+ const byteLength = buffer.byteLength;
302
+ assert(Number.isFinite(byteLength));
303
+ this.sourceBuffers = this.sourceBuffers || [];
304
+ this.sourceBuffers.push(buffer);
305
+ const glTFBufferView = {
306
+ buffer: bufferIndex,
307
+ byteOffset,
308
+ byteLength
309
+ };
310
+ this.byteLength += padToNBytes(byteLength, 4);
311
+ this.json.bufferViews = this.json.bufferViews || [];
312
+ this.json.bufferViews.push(glTFBufferView);
313
+ return this.json.bufferViews.length - 1;
314
+ }
315
+ addAccessor(bufferViewIndex, accessor) {
316
+ const glTFAccessor = {
317
+ bufferView: bufferViewIndex,
318
+ type: getAccessorTypeFromSize(accessor.size),
319
+ componentType: accessor.componentType,
320
+ count: accessor.count,
321
+ max: accessor.max,
322
+ min: accessor.min
323
+ };
324
+ this.json.accessors = this.json.accessors || [];
325
+ this.json.accessors.push(glTFAccessor);
326
+ return this.json.accessors.length - 1;
327
+ }
328
+ addBinaryBuffer(sourceBuffer) {
329
+ let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
330
+ size: 3
331
+ };
332
+ const bufferViewIndex = this.addBufferView(sourceBuffer);
333
+ let minMax = {
334
+ min: accessor.min,
335
+ max: accessor.max
336
+ };
337
+ if (!minMax.min || !minMax.max) {
338
+ minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);
339
+ }
340
+ const accessorDefaults = {
341
+ size: accessor.size,
342
+ componentType: getComponentTypeFromArray(sourceBuffer),
343
+ count: Math.round(sourceBuffer.length / accessor.size),
344
+ min: minMax.min,
345
+ max: minMax.max
346
+ };
347
+ return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));
348
+ }
349
+ addTexture(texture) {
350
+ const {
351
+ imageIndex
352
+ } = texture;
353
+ const glTFTexture = {
354
+ source: imageIndex
355
+ };
356
+ this.json.textures = this.json.textures || [];
357
+ this.json.textures.push(glTFTexture);
358
+ return this.json.textures.length - 1;
359
+ }
360
+ addMaterial(pbrMaterialInfo) {
361
+ this.json.materials = this.json.materials || [];
362
+ this.json.materials.push(pbrMaterialInfo);
363
+ return this.json.materials.length - 1;
364
+ }
365
+ createBinaryChunk() {
366
+ var _this$json, _this$json$buffers;
367
+ this.gltf.buffers = [];
368
+ const totalByteLength = this.byteLength;
369
+ const arrayBuffer = new ArrayBuffer(totalByteLength);
370
+ const targetArray = new Uint8Array(arrayBuffer);
371
+ let dstByteOffset = 0;
372
+ for (const sourceBuffer of this.sourceBuffers || []) {
373
+ dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);
374
+ }
375
+ if ((_this$json = this.json) !== null && _this$json !== void 0 && (_this$json$buffers = _this$json.buffers) !== null && _this$json$buffers !== void 0 && _this$json$buffers[0]) {
376
+ this.json.buffers[0].byteLength = totalByteLength;
377
+ } else {
378
+ this.json.buffers = [{
379
+ byteLength: totalByteLength
380
+ }];
381
+ }
382
+ this.gltf.binary = arrayBuffer;
383
+ this.sourceBuffers = [arrayBuffer];
384
+ }
385
+ _removeStringFromArray(array, string) {
386
+ let found = true;
387
+ while (found) {
388
+ const index = array.indexOf(string);
389
+ if (index > -1) {
390
+ array.splice(index, 1);
391
+ } else {
392
+ found = false;
393
+ }
394
+ }
395
+ }
396
+ _addAttributes() {
397
+ let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
398
+ const result = {};
399
+ for (const attributeKey in attributes) {
400
+ const attributeData = attributes[attributeKey];
401
+ const attrName = this._getGltfAttributeName(attributeKey);
402
+ const accessor = this.addBinaryBuffer(attributeData.value, attributeData);
403
+ result[attrName] = accessor;
404
+ }
405
+ return result;
406
+ }
407
+ _addIndices(indices) {
408
+ return this.addBinaryBuffer(indices, {
409
+ size: 1
410
+ });
411
+ }
412
+ _getGltfAttributeName(attributeName) {
413
+ switch (attributeName.toLowerCase()) {
414
+ case 'position':
415
+ case 'positions':
416
+ case 'vertices':
417
+ return 'POSITION';
418
+ case 'normal':
419
+ case 'normals':
420
+ return 'NORMAL';
421
+ case 'color':
422
+ case 'colors':
423
+ return 'COLOR_0';
424
+ case 'texcoord':
425
+ case 'texcoords':
426
+ return 'TEXCOORD_0';
427
+ default:
428
+ return attributeName;
429
+ }
430
+ }
431
+ _getAccessorMinMax(buffer, size) {
432
+ const result = {
433
+ min: null,
434
+ max: null
435
+ };
436
+ if (buffer.length < size) {
437
+ return result;
438
+ }
439
+ result.min = [];
440
+ result.max = [];
441
+ const initValues = buffer.subarray(0, size);
442
+ for (const value of initValues) {
443
+ result.min.push(value);
444
+ result.max.push(value);
445
+ }
446
+ for (let index = size; index < buffer.length; index += size) {
447
+ for (let componentIndex = 0; componentIndex < size; componentIndex++) {
448
+ result.min[0 + componentIndex] = Math.min(result.min[0 + componentIndex], buffer[index + componentIndex]);
449
+ result.max[0 + componentIndex] = Math.max(result.max[0 + componentIndex], buffer[index + componentIndex]);
450
+ }
451
+ }
452
+ return result;
453
+ }
454
+ }
455
+ //# sourceMappingURL=gltf-scenegraph.js.map