@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
@@ -1,392 +1,433 @@
1
- import { assert } from '../utils/assert';
2
- import { getAccessorArrayTypeAndLength } from '../gltf-utils/gltf-utils';
1
+ "use strict";
2
+ // loaders.gl, MIT license
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.postProcessGLTF = void 0;
5
+ const assert_1 = require("../utils/assert");
6
+ const gltf_utils_1 = require("../gltf-utils/gltf-utils");
7
+ // This is a post processor for loaded glTF files
8
+ // The goal is to make the loaded data easier to use in WebGL applications
9
+ //
10
+ // Functions:
11
+ // * Resolve indexed arrays structure of glTF into a linked tree.
12
+ // * Translate stringified enum keys and values into WebGL constants.
13
+ // * Load images (optional)
14
+ // ENUM LOOKUP
3
15
  const COMPONENTS = {
4
- SCALAR: 1,
5
- VEC2: 2,
6
- VEC3: 3,
7
- VEC4: 4,
8
- MAT2: 4,
9
- MAT3: 9,
10
- MAT4: 16
16
+ SCALAR: 1,
17
+ VEC2: 2,
18
+ VEC3: 3,
19
+ VEC4: 4,
20
+ MAT2: 4,
21
+ MAT3: 9,
22
+ MAT4: 16
11
23
  };
12
24
  const BYTES = {
13
- 5120: 1,
14
- 5121: 1,
15
- 5122: 2,
16
- 5123: 2,
17
- 5125: 4,
18
- 5126: 4
25
+ 5120: 1,
26
+ 5121: 1,
27
+ 5122: 2,
28
+ 5123: 2,
29
+ 5125: 4,
30
+ 5126: 4 // FLOAT
19
31
  };
20
32
  const GL_SAMPLER = {
21
- TEXTURE_MAG_FILTER: 0x2800,
22
- TEXTURE_MIN_FILTER: 0x2801,
23
- TEXTURE_WRAP_S: 0x2802,
24
- TEXTURE_WRAP_T: 0x2803,
25
- REPEAT: 0x2901,
26
- LINEAR: 0x2601,
27
- NEAREST_MIPMAP_LINEAR: 0x2702
33
+ // Sampler parameters
34
+ TEXTURE_MAG_FILTER: 0x2800,
35
+ TEXTURE_MIN_FILTER: 0x2801,
36
+ TEXTURE_WRAP_S: 0x2802,
37
+ TEXTURE_WRAP_T: 0x2803,
38
+ // Sampler default values
39
+ REPEAT: 0x2901,
40
+ LINEAR: 0x2601,
41
+ NEAREST_MIPMAP_LINEAR: 0x2702
28
42
  };
29
43
  const SAMPLER_PARAMETER_GLTF_TO_GL = {
30
- magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,
31
- minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,
32
- wrapS: GL_SAMPLER.TEXTURE_WRAP_S,
33
- wrapT: GL_SAMPLER.TEXTURE_WRAP_T
44
+ magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,
45
+ minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,
46
+ wrapS: GL_SAMPLER.TEXTURE_WRAP_S,
47
+ wrapT: GL_SAMPLER.TEXTURE_WRAP_T
34
48
  };
35
- const DEFAULT_SAMPLER = {
36
- [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,
37
- [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,
38
- [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,
39
- [GL_SAMPLER.TEXTURE_WRAP_]: GL_SAMPLER.REPEAT
49
+ // When undefined, a sampler with repeat wrapping and auto filtering should be used.
50
+ // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture
51
+ const DEFAULT_SAMPLER_PARAMETERS = {
52
+ [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,
53
+ [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,
54
+ [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,
55
+ [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT
40
56
  };
41
-
57
+ function makeDefaultSampler() {
58
+ return {
59
+ id: 'default-sampler',
60
+ parameters: DEFAULT_SAMPLER_PARAMETERS
61
+ };
62
+ }
42
63
  function getBytesFromComponentType(componentType) {
43
- return BYTES[componentType];
64
+ return BYTES[componentType];
44
65
  }
45
-
46
66
  function getSizeFromAccessorType(type) {
47
- return COMPONENTS[type];
67
+ return COMPONENTS[type];
48
68
  }
49
-
50
69
  class GLTFPostProcessor {
51
- postProcess(gltf, options = {}) {
52
- const {
53
- json,
54
- buffers = [],
55
- images = [],
56
- baseUri = ''
57
- } = gltf;
58
- assert(json);
59
- this.baseUri = baseUri;
60
- this.json = json;
61
- this.buffers = buffers;
62
- this.images = images;
63
-
64
- this._resolveTree(this.json, options);
65
-
66
- return this.json;
67
- }
68
-
69
- _resolveTree(json, options = {}) {
70
- if (json.bufferViews) {
71
- json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));
72
- }
73
-
74
- if (json.images) {
75
- json.images = json.images.map((image, i) => this._resolveImage(image, i));
70
+ constructor() {
71
+ this.baseUri = '';
72
+ this.buffers = [];
73
+ this.images = [];
76
74
  }
77
-
78
- if (json.samplers) {
79
- json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));
75
+ postProcess(gltf, options = {}) {
76
+ const { json, buffers = [], images = [] } = gltf;
77
+ // @ts-expect-error
78
+ const { baseUri = '' } = gltf;
79
+ (0, assert_1.assert)(json);
80
+ this.baseUri = baseUri;
81
+ this.buffers = buffers;
82
+ this.images = images;
83
+ this.jsonUnprocessed = json;
84
+ this.json = this._resolveTree(gltf.json, options);
85
+ return this.json;
80
86
  }
81
-
82
- if (json.textures) {
83
- json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));
87
+ // Convert indexed glTF structure into tree structure
88
+ // cross-link index resolution, enum lookup, convenience calculations
89
+ // eslint-disable-next-line complexity, max-statements
90
+ _resolveTree(gltf, options = {}) {
91
+ // @ts-expect-error
92
+ const json = { ...gltf };
93
+ this.json = json;
94
+ if (gltf.bufferViews) {
95
+ json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));
96
+ }
97
+ if (gltf.images) {
98
+ json.images = gltf.images.map((image, i) => this._resolveImage(image, i));
99
+ }
100
+ if (gltf.samplers) {
101
+ json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));
102
+ }
103
+ if (gltf.textures) {
104
+ json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));
105
+ }
106
+ if (gltf.accessors) {
107
+ json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));
108
+ }
109
+ if (gltf.materials) {
110
+ json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));
111
+ }
112
+ if (gltf.meshes) {
113
+ json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));
114
+ }
115
+ if (gltf.nodes) {
116
+ json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));
117
+ json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));
118
+ }
119
+ if (gltf.skins) {
120
+ json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));
121
+ }
122
+ if (gltf.scenes) {
123
+ json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));
124
+ }
125
+ if (typeof this.json.scene === 'number' && json.scenes) {
126
+ json.scene = json.scenes[this.json.scene];
127
+ }
128
+ return json;
84
129
  }
85
-
86
- if (json.accessors) {
87
- json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));
130
+ getScene(index) {
131
+ return this._get(this.json.scenes, index);
88
132
  }
89
-
90
- if (json.materials) {
91
- json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));
133
+ getNode(index) {
134
+ return this._get(this.json.nodes, index);
92
135
  }
93
-
94
- if (json.meshes) {
95
- json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));
136
+ getSkin(index) {
137
+ return this._get(this.json.skins, index);
96
138
  }
97
-
98
- if (json.nodes) {
99
- json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));
139
+ getMesh(index) {
140
+ return this._get(this.json.meshes, index);
100
141
  }
101
-
102
- if (json.skins) {
103
- json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));
142
+ getMaterial(index) {
143
+ return this._get(this.json.materials, index);
104
144
  }
105
-
106
- if (json.scenes) {
107
- json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));
145
+ getAccessor(index) {
146
+ return this._get(this.json.accessors, index);
108
147
  }
109
-
110
- if (json.scene !== undefined) {
111
- json.scene = json.scenes[this.json.scene];
148
+ getCamera(index) {
149
+ return this._get(this.json.cameras, index);
112
150
  }
113
- }
114
-
115
- getScene(index) {
116
- return this._get('scenes', index);
117
- }
118
-
119
- getNode(index) {
120
- return this._get('nodes', index);
121
- }
122
-
123
- getSkin(index) {
124
- return this._get('skins', index);
125
- }
126
-
127
- getMesh(index) {
128
- return this._get('meshes', index);
129
- }
130
-
131
- getMaterial(index) {
132
- return this._get('materials', index);
133
- }
134
-
135
- getAccessor(index) {
136
- return this._get('accessors', index);
137
- }
138
-
139
- getCamera(index) {
140
- return null;
141
- }
142
-
143
- getTexture(index) {
144
- return this._get('textures', index);
145
- }
146
-
147
- getSampler(index) {
148
- return this._get('samplers', index);
149
- }
150
-
151
- getImage(index) {
152
- return this._get('images', index);
153
- }
154
-
155
- getBufferView(index) {
156
- return this._get('bufferViews', index);
157
- }
158
-
159
- getBuffer(index) {
160
- return this._get('buffers', index);
161
- }
162
-
163
- _get(array, index) {
164
- if (typeof index === 'object') {
165
- return index;
151
+ getTexture(index) {
152
+ return this._get(this.json.textures, index);
166
153
  }
167
-
168
- const object = this.json[array] && this.json[array][index];
169
-
170
- if (!object) {
171
- console.warn("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
154
+ getSampler(index) {
155
+ return this._get(this.json.samplers, index);
172
156
  }
173
-
174
- return object;
175
- }
176
-
177
- _resolveScene(scene, index) {
178
- scene.id = scene.id || "scene-".concat(index);
179
- scene.nodes = (scene.nodes || []).map(node => this.getNode(node));
180
- return scene;
181
- }
182
-
183
- _resolveNode(node, index) {
184
- node.id = node.id || "node-".concat(index);
185
-
186
- if (node.children) {
187
- node.children = node.children.map(child => this.getNode(child));
157
+ getImage(index) {
158
+ return this._get(this.json.images, index);
188
159
  }
189
-
190
- if (node.mesh !== undefined) {
191
- node.mesh = this.getMesh(node.mesh);
192
- } else if (node.meshes !== undefined && node.meshes.length) {
193
- node.mesh = node.meshes.reduce((accum, meshIndex) => {
194
- const mesh = this.getMesh(meshIndex);
195
- accum.id = mesh.id;
196
- accum.primitives = accum.primitives.concat(mesh.primitives);
197
- return accum;
198
- }, {
199
- primitives: []
200
- });
160
+ getBufferView(index) {
161
+ return this._get(this.json.bufferViews, index);
201
162
  }
202
-
203
- if (node.camera !== undefined) {
204
- node.camera = this.getCamera(node.camera);
163
+ getBuffer(index) {
164
+ return this._get(this.json.buffers, index);
205
165
  }
206
-
207
- if (node.skin !== undefined) {
208
- node.skin = this.getSkin(node.skin);
166
+ _get(array, index) {
167
+ // check if already resolved
168
+ if (typeof index === 'object') {
169
+ return index;
170
+ }
171
+ const object = array && array[index];
172
+ if (!object) {
173
+ console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line
174
+ }
175
+ return object;
209
176
  }
210
-
211
- return node;
212
- }
213
-
214
- _resolveSkin(skin, index) {
215
- skin.id = skin.id || "skin-".concat(index);
216
- skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);
217
- return skin;
218
- }
219
-
220
- _resolveMesh(mesh, index) {
221
- mesh.id = mesh.id || "mesh-".concat(index);
222
-
223
- if (mesh.primitives) {
224
- mesh.primitives = mesh.primitives.map(primitive => {
225
- primitive = { ...primitive
177
+ // PARSING HELPERS
178
+ _resolveScene(scene, index) {
179
+ return {
180
+ ...scene,
181
+ // @ts-ignore
182
+ id: scene.id || `scene-${index}`,
183
+ nodes: (scene.nodes || []).map((node) => this.getNode(node))
226
184
  };
227
- const attributes = primitive.attributes;
228
- primitive.attributes = {};
229
-
230
- for (const attribute in attributes) {
231
- primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);
232
- }
233
-
234
- if (primitive.indices !== undefined) {
235
- primitive.indices = this.getAccessor(primitive.indices);
236
- }
237
-
238
- if (primitive.material !== undefined) {
239
- primitive.material = this.getMaterial(primitive.material);
240
- }
241
-
242
- return primitive;
243
- });
244
185
  }
245
-
246
- return mesh;
247
- }
248
-
249
- _resolveMaterial(material, index) {
250
- material.id = material.id || "material-".concat(index);
251
-
252
- if (material.normalTexture) {
253
- material.normalTexture = { ...material.normalTexture
254
- };
255
- material.normalTexture.texture = this.getTexture(material.normalTexture.index);
186
+ _resolveNode(gltfNode, index) {
187
+ // @ts-expect-error
188
+ const node = {
189
+ ...gltfNode,
190
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
191
+ id: gltfNode?.id || `node-${index}`
192
+ };
193
+ if (gltfNode.mesh !== undefined) {
194
+ node.mesh = this.getMesh(gltfNode.mesh);
195
+ }
196
+ if (gltfNode.camera !== undefined) {
197
+ node.camera = this.getCamera(gltfNode.camera);
198
+ }
199
+ if (gltfNode.skin !== undefined) {
200
+ node.skin = this.getSkin(gltfNode.skin);
201
+ }
202
+ // TODO deprecated - Delete in v4.0?
203
+ // @ts-expect-error node.meshes does not seem to be part of the GLTF standard
204
+ if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {
205
+ // @ts-expect-error
206
+ node.mesh = gltfNode.meshes.reduce((accum, meshIndex) => {
207
+ const mesh = this.getMesh(meshIndex);
208
+ accum.id = mesh.id;
209
+ accum.primitives = accum.primitives.concat(mesh.primitives);
210
+ return accum;
211
+ }, { primitives: [] });
212
+ }
213
+ return node;
256
214
  }
257
-
258
- if (material.occlusionTexture) {
259
- material.occlustionTexture = { ...material.occlustionTexture
260
- };
261
- material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
215
+ _resolveNodeChildren(node) {
216
+ if (node.children) {
217
+ // @ts-expect-error node.children are numbers at this stage
218
+ node.children = node.children.map((child) => this.getNode(child));
219
+ }
220
+ return node;
262
221
  }
263
-
264
- if (material.emissiveTexture) {
265
- material.emmisiveTexture = { ...material.emmisiveTexture
266
- };
267
- material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
222
+ _resolveSkin(gltfSkin, index) {
223
+ const inverseBindMatrices = typeof gltfSkin.inverseBindMatrices === 'number'
224
+ ? this.getAccessor(gltfSkin.inverseBindMatrices)
225
+ : undefined;
226
+ return {
227
+ ...gltfSkin,
228
+ id: gltfSkin.id || `skin-${index}`,
229
+ inverseBindMatrices
230
+ };
268
231
  }
269
-
270
- if (!material.emissiveFactor) {
271
- material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];
232
+ _resolveMesh(gltfMesh, index) {
233
+ const mesh = {
234
+ ...gltfMesh,
235
+ id: gltfMesh.id || `mesh-${index}`,
236
+ primitives: []
237
+ };
238
+ if (gltfMesh.primitives) {
239
+ mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {
240
+ const primitive = {
241
+ ...gltfPrimitive,
242
+ attributes: {},
243
+ indices: undefined,
244
+ material: undefined
245
+ };
246
+ const attributes = gltfPrimitive.attributes;
247
+ for (const attribute in attributes) {
248
+ primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);
249
+ }
250
+ if (gltfPrimitive.indices !== undefined) {
251
+ primitive.indices = this.getAccessor(gltfPrimitive.indices);
252
+ }
253
+ if (gltfPrimitive.material !== undefined) {
254
+ primitive.material = this.getMaterial(gltfPrimitive.material);
255
+ }
256
+ return primitive;
257
+ });
258
+ }
259
+ return mesh;
272
260
  }
273
-
274
- if (material.pbrMetallicRoughness) {
275
- material.pbrMetallicRoughness = { ...material.pbrMetallicRoughness
276
- };
277
- const mr = material.pbrMetallicRoughness;
278
-
279
- if (mr.baseColorTexture) {
280
- mr.baseColorTexture = { ...mr.baseColorTexture
261
+ _resolveMaterial(gltfMaterial, index) {
262
+ // @ts-expect-error
263
+ const material = {
264
+ ...gltfMaterial,
265
+ // @ts-expect-error
266
+ id: gltfMaterial.id || `material-${index}`
281
267
  };
282
- mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);
283
- }
284
-
285
- if (mr.metallicRoughnessTexture) {
286
- mr.metallicRoughnessTexture = { ...mr.metallicRoughnessTexture
268
+ if (material.normalTexture) {
269
+ material.normalTexture = { ...material.normalTexture };
270
+ material.normalTexture.texture = this.getTexture(material.normalTexture.index);
271
+ }
272
+ if (material.occlusionTexture) {
273
+ material.occlusionTexture = { ...material.occlusionTexture };
274
+ material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
275
+ }
276
+ if (material.emissiveTexture) {
277
+ material.emissiveTexture = { ...material.emissiveTexture };
278
+ material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
279
+ }
280
+ if (!material.emissiveFactor) {
281
+ material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];
282
+ }
283
+ if (material.pbrMetallicRoughness) {
284
+ material.pbrMetallicRoughness = { ...material.pbrMetallicRoughness };
285
+ const mr = material.pbrMetallicRoughness;
286
+ if (mr.baseColorTexture) {
287
+ mr.baseColorTexture = { ...mr.baseColorTexture };
288
+ mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);
289
+ }
290
+ if (mr.metallicRoughnessTexture) {
291
+ mr.metallicRoughnessTexture = { ...mr.metallicRoughnessTexture };
292
+ mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);
293
+ }
294
+ }
295
+ return material;
296
+ }
297
+ _resolveAccessor(gltfAccessor, index) {
298
+ // Look up enums
299
+ const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);
300
+ const components = getSizeFromAccessorType(gltfAccessor.type);
301
+ const bytesPerElement = bytesPerComponent * components;
302
+ const accessor = {
303
+ ...gltfAccessor,
304
+ // @ts-expect-error
305
+ id: gltfAccessor.id || `accessor-${index}`,
306
+ bytesPerComponent,
307
+ components,
308
+ bytesPerElement,
309
+ value: undefined,
310
+ bufferView: undefined,
311
+ sparse: undefined
287
312
  };
288
- mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);
289
- }
313
+ if (gltfAccessor.bufferView !== undefined) {
314
+ // Draco encoded meshes don't have bufferView
315
+ accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);
316
+ }
317
+ // Create TypedArray for the accessor
318
+ // Note: The canonical way to instantiate is to ignore this array and create
319
+ // WebGLBuffer's using the bufferViews.
320
+ if (accessor.bufferView) {
321
+ const buffer = accessor.bufferView.buffer;
322
+ const { ArrayType, byteLength } = (0, gltf_utils_1.getAccessorArrayTypeAndLength)(accessor, accessor.bufferView);
323
+ const byteOffset = (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;
324
+ let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);
325
+ if (accessor.bufferView.byteStride) {
326
+ cutBuffer = this._getValueFromInterleavedBuffer(buffer, byteOffset, accessor.bufferView.byteStride, accessor.bytesPerElement, accessor.count);
327
+ }
328
+ accessor.value = new ArrayType(cutBuffer);
329
+ }
330
+ return accessor;
331
+ }
332
+ /**
333
+ * Take values of particular accessor from interleaved buffer
334
+ * various parts of the buffer
335
+ * @param buffer
336
+ * @param byteOffset
337
+ * @param byteStride
338
+ * @param bytesPerElement
339
+ * @param count
340
+ * @returns
341
+ */
342
+ _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {
343
+ const result = new Uint8Array(count * bytesPerElement);
344
+ for (let i = 0; i < count; i++) {
345
+ const elementOffset = byteOffset + i * byteStride;
346
+ result.set(new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)), i * bytesPerElement);
347
+ }
348
+ return result.buffer;
290
349
  }
291
-
292
- return material;
293
- }
294
-
295
- _resolveAccessor(accessor, index) {
296
- accessor.id = accessor.id || "accessor-".concat(index);
297
-
298
- if (accessor.bufferView !== undefined) {
299
- accessor.bufferView = this.getBufferView(accessor.bufferView);
350
+ _resolveTexture(gltfTexture, index) {
351
+ return {
352
+ ...gltfTexture,
353
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
354
+ id: gltfTexture.id || `texture-${index}`,
355
+ sampler: typeof gltfTexture.sampler === 'number'
356
+ ? this.getSampler(gltfTexture.sampler)
357
+ : makeDefaultSampler(),
358
+ source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined
359
+ };
300
360
  }
301
-
302
- accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);
303
- accessor.components = getSizeFromAccessorType(accessor.type);
304
- accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;
305
-
306
- if (accessor.bufferView) {
307
- const buffer = accessor.bufferView.buffer;
308
- const {
309
- ArrayType,
310
- byteLength
311
- } = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);
312
- const byteOffset = (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;
313
- const cutBufffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);
314
- accessor.value = new ArrayType(cutBufffer);
361
+ _resolveSampler(gltfSampler, index) {
362
+ const sampler = {
363
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
364
+ id: gltfSampler.id || `sampler-${index}`,
365
+ ...gltfSampler,
366
+ parameters: {}
367
+ };
368
+ // Map textual parameters to GL parameter values
369
+ for (const key in sampler) {
370
+ const glEnum = this._enumSamplerParameter(key);
371
+ if (glEnum !== undefined) {
372
+ sampler.parameters[glEnum] = sampler[key];
373
+ }
374
+ }
375
+ return sampler;
315
376
  }
316
-
317
- return accessor;
318
- }
319
-
320
- _resolveTexture(texture, index) {
321
- texture.id = texture.id || "texture-".concat(index);
322
- texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;
323
- texture.source = this.getImage(texture.source);
324
- return texture;
325
- }
326
-
327
- _resolveSampler(sampler, index) {
328
- sampler.id = sampler.id || "sampler-".concat(index);
329
- sampler.parameters = {};
330
-
331
- for (const key in sampler) {
332
- const glEnum = this._enumSamplerParameter(key);
333
-
334
- if (glEnum !== undefined) {
335
- sampler.parameters[glEnum] = sampler[key];
336
- }
377
+ _enumSamplerParameter(key) {
378
+ return SAMPLER_PARAMETER_GLTF_TO_GL[key];
337
379
  }
338
-
339
- return sampler;
340
- }
341
-
342
- _enumSamplerParameter(key) {
343
- return SAMPLER_PARAMETER_GLTF_TO_GL[key];
344
- }
345
-
346
- _resolveImage(image, index) {
347
- image.id = image.id || "image-".concat(index);
348
-
349
- if (image.bufferView !== undefined) {
350
- image.bufferView = this.getBufferView(image.bufferView);
380
+ _resolveImage(gltfImage, index) {
381
+ const image = {
382
+ ...gltfImage,
383
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
384
+ id: gltfImage.id || `image-${index}`,
385
+ image: null,
386
+ bufferView: gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined
387
+ };
388
+ // Check if image has been preloaded by the GLTFLoader
389
+ // If so, link it into the JSON and drop the URI
390
+ const preloadedImage = this.images[index];
391
+ if (preloadedImage) {
392
+ image.image = preloadedImage;
393
+ }
394
+ return image;
351
395
  }
352
-
353
- const preloadedImage = this.images[index];
354
-
355
- if (preloadedImage) {
356
- image.image = preloadedImage;
396
+ _resolveBufferView(gltfBufferView, index) {
397
+ const bufferIndex = gltfBufferView.buffer;
398
+ const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
399
+ // Add offset of buffer, then offset of buffer view
400
+ let byteOffset = this.buffers[bufferIndex].byteOffset || 0;
401
+ if (gltfBufferView.byteOffset) {
402
+ byteOffset += gltfBufferView.byteOffset;
403
+ }
404
+ const bufferView = {
405
+ // // @ts-expect-error id could already be present, glTF standard does not prevent it
406
+ id: `bufferView-${index}`,
407
+ ...gltfBufferView,
408
+ // ...this.buffers[bufferIndex],
409
+ buffer: this.buffers[bufferIndex],
410
+ data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)
411
+ };
412
+ return bufferView;
357
413
  }
358
-
359
- return image;
360
- }
361
-
362
- _resolveBufferView(bufferView, index) {
363
- bufferView.id = bufferView.id || "bufferView-".concat(index);
364
- const bufferIndex = bufferView.buffer;
365
- bufferView.buffer = this.buffers[bufferIndex];
366
- const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
367
- let byteOffset = this.buffers[bufferIndex].byteOffset || 0;
368
-
369
- if ('byteOffset' in bufferView) {
370
- byteOffset += bufferView.byteOffset;
414
+ _resolveCamera(gltfCamera, index) {
415
+ const camera = {
416
+ ...gltfCamera,
417
+ // @ts-expect-error id could already be present, glTF standard does not prevent it
418
+ id: gltfCamera.id || `camera-${index}`
419
+ };
420
+ // TODO - create 4x4 matrices
421
+ if (camera.perspective) {
422
+ // camera.matrix = createPerspectiveMatrix(camera.perspective);
423
+ }
424
+ if (camera.orthographic) {
425
+ // camera.matrix = createOrthographicMatrix(camera.orthographic);
426
+ }
427
+ return camera;
371
428
  }
372
-
373
- bufferView.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
374
- return bufferView;
375
- }
376
-
377
- _resolveCamera(camera, index) {
378
- camera.id = camera.id || "camera-".concat(index);
379
-
380
- if (camera.perspective) {}
381
-
382
- if (camera.orthographic) {}
383
-
384
- return camera;
385
- }
386
-
387
429
  }
388
-
389
- export function postProcessGLTF(gltf, options) {
390
- return new GLTFPostProcessor().postProcess(gltf, options);
430
+ function postProcessGLTF(gltf, options) {
431
+ return new GLTFPostProcessor().postProcess(gltf, options);
391
432
  }
392
- //# sourceMappingURL=post-process-gltf.js.map
433
+ exports.postProcessGLTF = postProcessGLTF;