@loaders.gl/gltf 3.1.0-alpha.3 → 3.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +4482 -4
  4. package/dist/es5/bundle.js +7 -0
  5. package/dist/es5/bundle.js.map +1 -0
  6. package/dist/es5/glb-loader.js +47 -0
  7. package/dist/es5/glb-loader.js.map +1 -0
  8. package/dist/es5/glb-writer.js +42 -0
  9. package/dist/es5/glb-writer.js.map +1 -0
  10. package/dist/es5/gltf-loader.js +59 -0
  11. package/dist/es5/gltf-loader.js.map +1 -0
  12. package/dist/es5/gltf-writer.js +40 -0
  13. package/dist/es5/gltf-writer.js.map +1 -0
  14. package/dist/es5/index.js +56 -0
  15. package/dist/es5/index.js.map +1 -0
  16. package/dist/es5/lib/api/gltf-extensions.js +58 -0
  17. package/dist/es5/lib/api/gltf-extensions.js.map +1 -0
  18. package/dist/es5/lib/api/gltf-scenegraph.js +529 -0
  19. package/dist/{lib → es5/lib}/api/gltf-scenegraph.js.map +1 -1
  20. package/dist/es5/lib/api/normalize-gltf-v1.js +264 -0
  21. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -0
  22. package/dist/es5/lib/api/post-process-gltf.js +412 -0
  23. package/dist/es5/lib/api/post-process-gltf.js.map +1 -0
  24. package/dist/es5/lib/encoders/encode-glb.js +72 -0
  25. package/dist/es5/lib/encoders/encode-glb.js.map +1 -0
  26. package/dist/es5/lib/encoders/encode-gltf.js +24 -0
  27. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -0
  28. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +72 -0
  29. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  30. package/dist/es5/lib/extensions/EXT_texture_webp.js +46 -0
  31. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -0
  32. package/dist/es5/lib/extensions/KHR_binary_gltf.js +39 -0
  33. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -0
  34. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +146 -0
  35. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  36. package/dist/es5/lib/extensions/KHR_texture_basisu.js +35 -0
  37. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -0
  38. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +65 -0
  39. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  40. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +52 -0
  41. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  42. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +83 -0
  43. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  44. package/dist/es5/lib/gltf-utils/get-typed-array.js +26 -0
  45. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -0
  46. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +83 -0
  47. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  48. package/dist/es5/lib/gltf-utils/gltf-constants.js +48 -0
  49. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -0
  50. package/dist/es5/lib/gltf-utils/gltf-utils.js +69 -0
  51. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -0
  52. package/dist/es5/lib/gltf-utils/resolve-url.js +23 -0
  53. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -0
  54. package/dist/es5/lib/parsers/parse-glb.js +138 -0
  55. package/dist/es5/lib/parsers/parse-glb.js.map +1 -0
  56. package/dist/es5/lib/parsers/parse-gltf.js +193 -0
  57. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -0
  58. package/dist/es5/lib/types/glb-types.js +2 -0
  59. package/dist/{lib → es5/lib}/types/glb-types.js.map +0 -0
  60. package/dist/es5/lib/types/gltf-json-schema.js +2 -0
  61. package/dist/{lib → es5/lib}/types/gltf-json-schema.js.map +0 -0
  62. package/dist/es5/lib/types/gltf-postprocessed-schema.js +2 -0
  63. package/dist/{lib → es5/lib}/types/gltf-postprocessed-schema.js.map +0 -0
  64. package/dist/es5/lib/types/gltf-types.js +2 -0
  65. package/dist/{lib → es5/lib}/types/gltf-types.js.map +0 -0
  66. package/dist/es5/lib/utils/assert.js +13 -0
  67. package/dist/es5/lib/utils/assert.js.map +1 -0
  68. package/dist/es5/lib/utils/version.js +9 -0
  69. package/dist/es5/lib/utils/version.js.map +1 -0
  70. package/dist/es5/meshopt/meshopt-decoder.js +119 -0
  71. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -0
  72. package/dist/{meshopt → es5/meshopt}/meshopt-encoder.ts.disabled +0 -0
  73. package/dist/es5/webp/webp.js +36 -0
  74. package/dist/es5/webp/webp.js.map +1 -0
  75. package/dist/esm/bundle.js +5 -0
  76. package/dist/esm/bundle.js.map +1 -0
  77. package/dist/esm/glb-loader.js +34 -0
  78. package/dist/esm/glb-loader.js.map +1 -0
  79. package/dist/esm/glb-writer.js +29 -0
  80. package/dist/esm/glb-writer.js.map +1 -0
  81. package/dist/esm/gltf-loader.js +47 -0
  82. package/dist/esm/gltf-loader.js.map +1 -0
  83. package/dist/esm/gltf-writer.js +29 -0
  84. package/dist/esm/gltf-writer.js.map +1 -0
  85. package/dist/esm/index.js +7 -0
  86. package/dist/esm/index.js.map +1 -0
  87. package/dist/esm/lib/api/gltf-extensions.js +35 -0
  88. package/dist/esm/lib/api/gltf-extensions.js.map +1 -0
  89. package/dist/esm/lib/api/gltf-scenegraph.js +515 -0
  90. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -0
  91. package/dist/esm/lib/api/normalize-gltf-v1.js +250 -0
  92. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -0
  93. package/dist/esm/lib/api/post-process-gltf.js +403 -0
  94. package/dist/esm/lib/api/post-process-gltf.js.map +1 -0
  95. package/dist/esm/lib/encoders/encode-glb.js +63 -0
  96. package/dist/esm/lib/encoders/encode-glb.js.map +1 -0
  97. package/dist/esm/lib/encoders/encode-gltf.js +14 -0
  98. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -0
  99. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +56 -0
  100. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  101. package/dist/esm/lib/extensions/EXT_texture_webp.js +32 -0
  102. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -0
  103. package/dist/esm/lib/extensions/KHR_binary_gltf.js +26 -0
  104. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -0
  105. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +126 -0
  106. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  107. package/dist/esm/lib/extensions/KHR_texture_basisu.js +22 -0
  108. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -0
  109. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +49 -0
  110. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  111. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +37 -0
  112. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  113. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +68 -0
  114. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  115. package/dist/esm/lib/gltf-utils/get-typed-array.js +16 -0
  116. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -0
  117. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +73 -0
  118. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  119. package/dist/esm/lib/gltf-utils/gltf-constants.js +37 -0
  120. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -0
  121. package/dist/esm/lib/gltf-utils/gltf-utils.js +56 -0
  122. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -0
  123. package/dist/esm/lib/gltf-utils/resolve-url.js +16 -0
  124. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -0
  125. package/dist/esm/lib/parsers/parse-glb.js +128 -0
  126. package/dist/esm/lib/parsers/parse-glb.js.map +1 -0
  127. package/dist/esm/lib/parsers/parse-gltf.js +170 -0
  128. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -0
  129. package/dist/esm/lib/types/glb-types.js +2 -0
  130. package/dist/esm/lib/types/glb-types.js.map +1 -0
  131. package/dist/esm/lib/types/gltf-json-schema.js +2 -0
  132. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -0
  133. package/dist/esm/lib/types/gltf-postprocessed-schema.js +2 -0
  134. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -0
  135. package/dist/esm/lib/types/gltf-types.js +2 -0
  136. package/dist/esm/lib/types/gltf-types.js.map +1 -0
  137. package/dist/esm/lib/utils/assert.js +6 -0
  138. package/dist/esm/lib/utils/assert.js.map +1 -0
  139. package/dist/esm/lib/utils/version.js +2 -0
  140. package/dist/esm/lib/utils/version.js.map +1 -0
  141. package/dist/esm/meshopt/meshopt-decoder.js +103 -0
  142. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -0
  143. package/dist/esm/meshopt/meshopt-encoder.ts.disabled +409 -0
  144. package/dist/esm/webp/webp.js +29 -0
  145. package/dist/esm/webp/webp.js.map +1 -0
  146. package/dist/glb-loader.d.ts +13 -0
  147. package/dist/glb-loader.d.ts.map +1 -0
  148. package/dist/glb-loader.js +33 -28
  149. package/dist/glb-writer.d.ts +22 -0
  150. package/dist/glb-writer.d.ts.map +1 -0
  151. package/dist/glb-writer.js +34 -26
  152. package/dist/gltf-loader.d.ts +18 -0
  153. package/dist/gltf-loader.d.ts.map +1 -0
  154. package/dist/gltf-loader.js +46 -43
  155. package/dist/gltf-writer.d.ts +25 -0
  156. package/dist/gltf-writer.d.ts.map +1 -0
  157. package/dist/gltf-writer.js +29 -26
  158. package/dist/index.d.ts +11 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +21 -7
  161. package/dist/lib/api/gltf-extensions.d.ts +26 -0
  162. package/dist/lib/api/gltf-extensions.d.ts.map +1 -0
  163. package/dist/lib/api/gltf-extensions.js +71 -31
  164. package/dist/lib/api/gltf-scenegraph.d.ts +183 -0
  165. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -0
  166. package/dist/lib/api/gltf-scenegraph.js +550 -512
  167. package/dist/lib/api/normalize-gltf-v1.d.ts +2 -0
  168. package/dist/lib/api/normalize-gltf-v1.d.ts.map +1 -0
  169. package/dist/lib/api/normalize-gltf-v1.js +274 -226
  170. package/dist/lib/api/post-process-gltf.d.ts +2 -0
  171. package/dist/lib/api/post-process-gltf.d.ts.map +1 -0
  172. package/dist/lib/api/post-process-gltf.js +301 -347
  173. package/dist/lib/encoders/encode-glb.d.ts +2 -0
  174. package/dist/lib/encoders/encode-glb.d.ts.map +1 -0
  175. package/dist/lib/encoders/encode-glb.js +56 -58
  176. package/dist/lib/encoders/encode-gltf.d.ts +2 -0
  177. package/dist/lib/encoders/encode-gltf.d.ts.map +1 -0
  178. package/dist/lib/encoders/encode-gltf.js +25 -12
  179. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +10 -0
  180. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -0
  181. package/dist/lib/extensions/EXT_meshopt_compression.js +47 -49
  182. package/dist/lib/extensions/EXT_texture_webp.d.ts +12 -0
  183. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -0
  184. package/dist/lib/extensions/EXT_texture_webp.js +34 -28
  185. package/dist/lib/extensions/KHR_binary_gltf.d.ts +7 -0
  186. package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -0
  187. package/dist/lib/extensions/KHR_binary_gltf.js +39 -23
  188. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +13 -0
  189. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -0
  190. package/dist/lib/extensions/KHR_draco_mesh_compression.js +126 -111
  191. package/dist/lib/extensions/KHR_texture_basisu.d.ts +12 -0
  192. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -0
  193. package/dist/lib/extensions/KHR_texture_basisu.js +28 -19
  194. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +7 -0
  195. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -0
  196. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +57 -44
  197. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +7 -0
  198. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -0
  199. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +42 -32
  200. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +7 -0
  201. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -0
  202. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +75 -62
  203. package/dist/lib/gltf-utils/get-typed-array.d.ts +3 -0
  204. package/dist/lib/gltf-utils/get-typed-array.d.ts.map +1 -0
  205. package/dist/lib/gltf-utils/get-typed-array.js +39 -14
  206. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +6 -0
  207. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -0
  208. package/dist/lib/gltf-utils/gltf-attribute-utils.js +65 -65
  209. package/dist/lib/gltf-utils/gltf-constants.d.ts +4 -0
  210. package/dist/lib/gltf-utils/gltf-constants.d.ts.map +1 -0
  211. package/dist/lib/gltf-utils/gltf-constants.js +36 -30
  212. package/dist/lib/gltf-utils/gltf-utils.d.ts +8 -0
  213. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -0
  214. package/dist/lib/gltf-utils/gltf-utils.js +52 -45
  215. package/dist/lib/gltf-utils/resolve-url.d.ts +2 -0
  216. package/dist/lib/gltf-utils/resolve-url.d.ts.map +1 -0
  217. package/dist/lib/gltf-utils/resolve-url.js +17 -15
  218. package/dist/lib/parsers/parse-glb.d.ts +8 -0
  219. package/dist/lib/parsers/parse-glb.d.ts.map +1 -0
  220. package/dist/lib/parsers/parse-glb.js +116 -107
  221. package/dist/lib/parsers/parse-gltf.d.ts +14 -0
  222. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -0
  223. package/dist/lib/parsers/parse-gltf.js +174 -138
  224. package/dist/lib/types/glb-types.d.ts +17 -0
  225. package/dist/lib/types/glb-types.d.ts.map +1 -0
  226. package/dist/lib/types/glb-types.js +2 -2
  227. package/dist/lib/types/gltf-json-schema.d.ts +720 -0
  228. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -0
  229. package/dist/lib/types/gltf-json-schema.js +4 -2
  230. package/dist/lib/types/gltf-postprocessed-schema.d.ts +685 -0
  231. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -0
  232. package/dist/lib/types/gltf-postprocessed-schema.js +4 -2
  233. package/dist/lib/types/gltf-types.d.ts +10 -0
  234. package/dist/lib/types/gltf-types.d.ts.map +1 -0
  235. package/dist/lib/types/gltf-types.js +3 -2
  236. package/dist/lib/utils/assert.d.ts +2 -0
  237. package/dist/lib/utils/assert.d.ts.map +1 -0
  238. package/dist/lib/utils/assert.js +11 -5
  239. package/dist/lib/utils/version.d.ts +2 -0
  240. package/dist/lib/utils/version.d.ts.map +1 -0
  241. package/dist/lib/utils/version.js +7 -2
  242. package/dist/meshopt/meshopt-decoder.d.ts +6 -0
  243. package/dist/meshopt/meshopt-decoder.d.ts.map +1 -0
  244. package/dist/meshopt/meshopt-decoder.js +97 -82
  245. package/dist/webp/webp.d.ts +7 -0
  246. package/dist/webp/webp.d.ts.map +1 -0
  247. package/dist/webp/webp.js +32 -23
  248. package/package.json +13 -10
  249. package/src/lib/api/{normalize-gltf-v1.js → normalize-gltf-v1.ts} +18 -16
  250. package/src/lib/api/{post-process-gltf.js → post-process-gltf.ts} +8 -1
  251. package/src/lib/encoders/{encode-glb.js → encode-glb.ts} +0 -0
  252. package/src/lib/encoders/{encode-gltf.js → encode-gltf.ts} +0 -0
  253. package/src/lib/extensions/KHR_texture_basisu.ts +2 -2
  254. package/src/lib/parsers/parse-gltf.ts +17 -1
  255. package/src/lib/utils/{assert.js → assert.ts} +1 -1
  256. package/src/lib/utils/{version.js → version.ts} +0 -0
  257. package/dist/bundle.js.map +0 -1
  258. package/dist/dist.min.js +0 -2
  259. package/dist/dist.min.js.map +0 -1
  260. package/dist/glb-loader.js.map +0 -1
  261. package/dist/glb-writer.js.map +0 -1
  262. package/dist/gltf-loader.js.map +0 -1
  263. package/dist/gltf-writer.js.map +0 -1
  264. package/dist/index.js.map +0 -1
  265. package/dist/lib/api/gltf-extensions.js.map +0 -1
  266. package/dist/lib/api/normalize-gltf-v1.js.map +0 -1
  267. package/dist/lib/api/post-process-gltf.js.map +0 -1
  268. package/dist/lib/encoders/encode-glb.js.map +0 -1
  269. package/dist/lib/encoders/encode-gltf.js.map +0 -1
  270. package/dist/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  271. package/dist/lib/extensions/EXT_texture_webp.js.map +0 -1
  272. package/dist/lib/extensions/KHR_binary_gltf.js.map +0 -1
  273. package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  274. package/dist/lib/extensions/KHR_texture_basisu.js.map +0 -1
  275. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  276. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  277. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  278. package/dist/lib/gltf-utils/get-typed-array.js.map +0 -1
  279. package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  280. package/dist/lib/gltf-utils/gltf-constants.js.map +0 -1
  281. package/dist/lib/gltf-utils/gltf-utils.js.map +0 -1
  282. package/dist/lib/gltf-utils/resolve-url.js.map +0 -1
  283. package/dist/lib/parsers/parse-glb.js.map +0 -1
  284. package/dist/lib/parsers/parse-gltf.js.map +0 -1
  285. package/dist/lib/utils/assert.js.map +0 -1
  286. package/dist/lib/utils/version.js.map +0 -1
  287. package/dist/meshopt/meshopt-decoder.js.map +0 -1
  288. package/dist/webp/webp.js.map +0 -1
@@ -0,0 +1,529 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _images = require("@loaders.gl/images");
13
+
14
+ var _loaderUtils = require("@loaders.gl/loader-utils");
15
+
16
+ var _assert = require("../utils/assert");
17
+
18
+ var _gltfUtils = require("../gltf-utils/gltf-utils");
19
+
20
+ const DEFAULT_GLTF_JSON = {
21
+ asset: {
22
+ version: '2.0',
23
+ generator: 'loaders.gl'
24
+ },
25
+ buffers: []
26
+ };
27
+
28
+ class GLTFScenegraph {
29
+ constructor(gltf) {
30
+ (0, _defineProperty2.default)(this, "gltf", void 0);
31
+ (0, _defineProperty2.default)(this, "sourceBuffers", void 0);
32
+ (0, _defineProperty2.default)(this, "byteLength", void 0);
33
+ this.gltf = gltf || {
34
+ json: { ...DEFAULT_GLTF_JSON
35
+ },
36
+ buffers: []
37
+ };
38
+ this.sourceBuffers = [];
39
+ this.byteLength = 0;
40
+
41
+ if (this.gltf.buffers && this.gltf.buffers[0]) {
42
+ this.byteLength = this.gltf.buffers[0].byteLength;
43
+ this.sourceBuffers = [this.gltf.buffers[0]];
44
+ }
45
+ }
46
+
47
+ get json() {
48
+ return this.gltf.json;
49
+ }
50
+
51
+ getApplicationData(key) {
52
+ const data = this.json[key];
53
+ return data;
54
+ }
55
+
56
+ getExtraData(key) {
57
+ const extras = this.json.extras || {};
58
+ return extras[key];
59
+ }
60
+
61
+ getExtension(extensionName) {
62
+ const isExtension = this.getUsedExtensions().find(name => name === extensionName);
63
+ const extensions = this.json.extensions || {};
64
+ return isExtension ? extensions[extensionName] || true : null;
65
+ }
66
+
67
+ getRequiredExtension(extensionName) {
68
+ const isRequired = this.getRequiredExtensions().find(name => name === extensionName);
69
+ return isRequired ? this.getExtension(extensionName) : null;
70
+ }
71
+
72
+ getRequiredExtensions() {
73
+ return this.json.extensionsRequired || [];
74
+ }
75
+
76
+ getUsedExtensions() {
77
+ return this.json.extensionsUsed || [];
78
+ }
79
+
80
+ getObjectExtension(object, extensionName) {
81
+ const extensions = object.extensions || {};
82
+ return extensions[extensionName];
83
+ }
84
+
85
+ getScene(index) {
86
+ return this.getObject('scenes', index);
87
+ }
88
+
89
+ getNode(index) {
90
+ return this.getObject('nodes', index);
91
+ }
92
+
93
+ getSkin(index) {
94
+ return this.getObject('skins', index);
95
+ }
96
+
97
+ getMesh(index) {
98
+ return this.getObject('meshes', index);
99
+ }
100
+
101
+ getMaterial(index) {
102
+ return this.getObject('materials', index);
103
+ }
104
+
105
+ getAccessor(index) {
106
+ return this.getObject('accessors', index);
107
+ }
108
+
109
+ getTexture(index) {
110
+ return this.getObject('textures', index);
111
+ }
112
+
113
+ getSampler(index) {
114
+ return this.getObject('samplers', index);
115
+ }
116
+
117
+ getImage(index) {
118
+ return this.getObject('images', index);
119
+ }
120
+
121
+ getBufferView(index) {
122
+ return this.getObject('bufferViews', index);
123
+ }
124
+
125
+ getBuffer(index) {
126
+ return this.getObject('buffers', index);
127
+ }
128
+
129
+ getObject(array, index) {
130
+ if (typeof index === 'object') {
131
+ return index;
132
+ }
133
+
134
+ const object = this.json[array] && this.json[array][index];
135
+
136
+ if (!object) {
137
+ throw new Error("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
138
+ }
139
+
140
+ return object;
141
+ }
142
+
143
+ getTypedArrayForBufferView(bufferView) {
144
+ bufferView = this.getBufferView(bufferView);
145
+ const bufferIndex = bufferView.buffer;
146
+ const binChunk = this.gltf.buffers[bufferIndex];
147
+ (0, _assert.assert)(binChunk);
148
+ const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;
149
+ return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
150
+ }
151
+
152
+ getTypedArrayForAccessor(accessor) {
153
+ accessor = this.getAccessor(accessor);
154
+ const bufferView = this.getBufferView(accessor.bufferView);
155
+ const buffer = this.getBuffer(bufferView.buffer);
156
+ const arrayBuffer = buffer.data;
157
+ const {
158
+ ArrayType,
159
+ length
160
+ } = (0, _gltfUtils.getAccessorArrayTypeAndLength)(accessor, bufferView);
161
+ const byteOffset = bufferView.byteOffset + accessor.byteOffset;
162
+ return new ArrayType(arrayBuffer, byteOffset, length);
163
+ }
164
+
165
+ getTypedArrayForImageData(image) {
166
+ image = this.getAccessor(image);
167
+ const bufferView = this.getBufferView(image.bufferView);
168
+ const buffer = this.getBuffer(bufferView.buffer);
169
+ const arrayBuffer = buffer.data;
170
+ const byteOffset = bufferView.byteOffset || 0;
171
+ return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
172
+ }
173
+
174
+ addApplicationData(key, data) {
175
+ this.json[key] = data;
176
+ return this;
177
+ }
178
+
179
+ addExtraData(key, data) {
180
+ this.json.extras = this.json.extras || {};
181
+ this.json.extras[key] = data;
182
+ return this;
183
+ }
184
+
185
+ addObjectExtension(object, extensionName, data) {
186
+ object.extensions = object.extensions || {};
187
+ object.extensions[extensionName] = data;
188
+ this.registerUsedExtension(extensionName);
189
+ return this;
190
+ }
191
+
192
+ setObjectExtension(object, extensionName, data) {
193
+ const extensions = object.extensions || {};
194
+ extensions[extensionName] = data;
195
+ }
196
+
197
+ removeObjectExtension(object, extensionName) {
198
+ const extensions = object.extensions || {};
199
+ const extension = extensions[extensionName];
200
+ delete extensions[extensionName];
201
+ return extension;
202
+ }
203
+
204
+ addExtension(extensionName, extensionData = {}) {
205
+ (0, _assert.assert)(extensionData);
206
+ this.json.extensions = this.json.extensions || {};
207
+ this.json.extensions[extensionName] = extensionData;
208
+ this.registerUsedExtension(extensionName);
209
+ return extensionData;
210
+ }
211
+
212
+ addRequiredExtension(extensionName, extensionData = {}) {
213
+ (0, _assert.assert)(extensionData);
214
+ this.addExtension(extensionName, extensionData);
215
+ this.registerRequiredExtension(extensionName);
216
+ return extensionData;
217
+ }
218
+
219
+ registerUsedExtension(extensionName) {
220
+ this.json.extensionsUsed = this.json.extensionsUsed || [];
221
+
222
+ if (!this.json.extensionsUsed.find(ext => ext === extensionName)) {
223
+ this.json.extensionsUsed.push(extensionName);
224
+ }
225
+ }
226
+
227
+ registerRequiredExtension(extensionName) {
228
+ this.registerUsedExtension(extensionName);
229
+ this.json.extensionsRequired = this.json.extensionsRequired || [];
230
+
231
+ if (!this.json.extensionsRequired.find(ext => ext === extensionName)) {
232
+ this.json.extensionsRequired.push(extensionName);
233
+ }
234
+ }
235
+
236
+ removeExtension(extensionName) {
237
+ if (this.json.extensionsRequired) {
238
+ this._removeStringFromArray(this.json.extensionsRequired, extensionName);
239
+ }
240
+
241
+ if (this.json.extensionsUsed) {
242
+ this._removeStringFromArray(this.json.extensionsUsed, extensionName);
243
+ }
244
+
245
+ if (this.json.extensions) {
246
+ delete this.json.extensions[extensionName];
247
+ }
248
+ }
249
+
250
+ setDefaultScene(sceneIndex) {
251
+ this.json.scene = sceneIndex;
252
+ }
253
+
254
+ addScene(scene) {
255
+ const {
256
+ nodeIndices
257
+ } = scene;
258
+ this.json.scenes = this.json.scenes || [];
259
+ this.json.scenes.push({
260
+ nodes: nodeIndices
261
+ });
262
+ return this.json.scenes.length - 1;
263
+ }
264
+
265
+ addNode(node) {
266
+ const {
267
+ meshIndex,
268
+ matrix
269
+ } = node;
270
+ this.json.nodes = this.json.nodes || [];
271
+ const nodeData = {
272
+ mesh: meshIndex
273
+ };
274
+
275
+ if (matrix) {
276
+ nodeData.matrix = matrix;
277
+ }
278
+
279
+ this.json.nodes.push(nodeData);
280
+ return this.json.nodes.length - 1;
281
+ }
282
+
283
+ addMesh(mesh) {
284
+ const {
285
+ attributes,
286
+ indices,
287
+ material,
288
+ mode = 4
289
+ } = mesh;
290
+
291
+ const accessors = this._addAttributes(attributes);
292
+
293
+ const glTFMesh = {
294
+ primitives: [{
295
+ attributes: accessors,
296
+ mode
297
+ }]
298
+ };
299
+
300
+ if (indices) {
301
+ const indicesAccessor = this._addIndices(indices);
302
+
303
+ glTFMesh.primitives[0].indices = indicesAccessor;
304
+ }
305
+
306
+ if (Number.isFinite(material)) {
307
+ glTFMesh.primitives[0].material = material;
308
+ }
309
+
310
+ this.json.meshes = this.json.meshes || [];
311
+ this.json.meshes.push(glTFMesh);
312
+ return this.json.meshes.length - 1;
313
+ }
314
+
315
+ addPointCloud(attributes) {
316
+ const accessorIndices = this._addAttributes(attributes);
317
+
318
+ const glTFMesh = {
319
+ primitives: [{
320
+ attributes: accessorIndices,
321
+ mode: 0
322
+ }]
323
+ };
324
+ this.json.meshes = this.json.meshes || [];
325
+ this.json.meshes.push(glTFMesh);
326
+ return this.json.meshes.length - 1;
327
+ }
328
+
329
+ addImage(imageData, mimeTypeOpt) {
330
+ const metadata = (0, _images.getBinaryImageMetadata)(imageData);
331
+ const mimeType = mimeTypeOpt || (metadata === null || metadata === void 0 ? void 0 : metadata.mimeType);
332
+ const bufferViewIndex = this.addBufferView(imageData);
333
+ const glTFImage = {
334
+ bufferView: bufferViewIndex,
335
+ mimeType
336
+ };
337
+ this.json.images = this.json.images || [];
338
+ this.json.images.push(glTFImage);
339
+ return this.json.images.length - 1;
340
+ }
341
+
342
+ addBufferView(buffer) {
343
+ const byteLength = buffer.byteLength;
344
+ (0, _assert.assert)(Number.isFinite(byteLength));
345
+ this.sourceBuffers = this.sourceBuffers || [];
346
+ this.sourceBuffers.push(buffer);
347
+ const glTFBufferView = {
348
+ buffer: 0,
349
+ byteOffset: this.byteLength,
350
+ byteLength
351
+ };
352
+ this.byteLength += (0, _loaderUtils.padToNBytes)(byteLength, 4);
353
+ this.json.bufferViews = this.json.bufferViews || [];
354
+ this.json.bufferViews.push(glTFBufferView);
355
+ return this.json.bufferViews.length - 1;
356
+ }
357
+
358
+ addAccessor(bufferViewIndex, accessor) {
359
+ const glTFAccessor = {
360
+ bufferView: bufferViewIndex,
361
+ type: (0, _gltfUtils.getAccessorTypeFromSize)(accessor.size),
362
+ componentType: accessor.componentType,
363
+ count: accessor.count,
364
+ max: accessor.max,
365
+ min: accessor.min
366
+ };
367
+ this.json.accessors = this.json.accessors || [];
368
+ this.json.accessors.push(glTFAccessor);
369
+ return this.json.accessors.length - 1;
370
+ }
371
+
372
+ addBinaryBuffer(sourceBuffer, accessor = {
373
+ size: 3
374
+ }) {
375
+ const bufferViewIndex = this.addBufferView(sourceBuffer);
376
+ let minMax = {
377
+ min: accessor.min,
378
+ max: accessor.max
379
+ };
380
+
381
+ if (!minMax.min || !minMax.max) {
382
+ minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);
383
+ }
384
+
385
+ const accessorDefaults = {
386
+ size: accessor.size,
387
+ componentType: (0, _gltfUtils.getComponentTypeFromArray)(sourceBuffer),
388
+ count: Math.round(sourceBuffer.length / accessor.size),
389
+ min: minMax.min,
390
+ max: minMax.max
391
+ };
392
+ return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));
393
+ }
394
+
395
+ addTexture(texture) {
396
+ const {
397
+ imageIndex
398
+ } = texture;
399
+ const glTFTexture = {
400
+ source: imageIndex
401
+ };
402
+ this.json.textures = this.json.textures || [];
403
+ this.json.textures.push(glTFTexture);
404
+ return this.json.textures.length - 1;
405
+ }
406
+
407
+ addMaterial(pbrMaterialInfo) {
408
+ this.json.materials = this.json.materials || [];
409
+ this.json.materials.push(pbrMaterialInfo);
410
+ return this.json.materials.length - 1;
411
+ }
412
+
413
+ createBinaryChunk() {
414
+ var _this$json, _this$json$buffers;
415
+
416
+ this.gltf.buffers = [];
417
+ const totalByteLength = this.byteLength;
418
+ const arrayBuffer = new ArrayBuffer(totalByteLength);
419
+ const targetArray = new Uint8Array(arrayBuffer);
420
+ let dstByteOffset = 0;
421
+
422
+ for (const sourceBuffer of this.sourceBuffers || []) {
423
+ dstByteOffset = (0, _loaderUtils.copyToArray)(sourceBuffer, targetArray, dstByteOffset);
424
+ }
425
+
426
+ 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]) {
427
+ this.json.buffers[0].byteLength = totalByteLength;
428
+ } else {
429
+ this.json.buffers = [{
430
+ byteLength: totalByteLength
431
+ }];
432
+ }
433
+
434
+ this.gltf.binary = arrayBuffer;
435
+ this.sourceBuffers = [arrayBuffer];
436
+ }
437
+
438
+ _removeStringFromArray(array, string) {
439
+ let found = true;
440
+
441
+ while (found) {
442
+ const index = array.indexOf(string);
443
+
444
+ if (index > -1) {
445
+ array.splice(index, 1);
446
+ } else {
447
+ found = false;
448
+ }
449
+ }
450
+ }
451
+
452
+ _addAttributes(attributes = {}) {
453
+ const result = {};
454
+
455
+ for (const attributeKey in attributes) {
456
+ const attributeData = attributes[attributeKey];
457
+
458
+ const attrName = this._getGltfAttributeName(attributeKey);
459
+
460
+ const accessor = this.addBinaryBuffer(attributeData.value, attributeData);
461
+ result[attrName] = accessor;
462
+ }
463
+
464
+ return result;
465
+ }
466
+
467
+ _addIndices(indices) {
468
+ return this.addBinaryBuffer(indices, {
469
+ size: 1
470
+ });
471
+ }
472
+
473
+ _getGltfAttributeName(attributeName) {
474
+ switch (attributeName.toLowerCase()) {
475
+ case 'position':
476
+ case 'positions':
477
+ case 'vertices':
478
+ return 'POSITION';
479
+
480
+ case 'normal':
481
+ case 'normals':
482
+ return 'NORMAL';
483
+
484
+ case 'color':
485
+ case 'colors':
486
+ return 'COLOR_0';
487
+
488
+ case 'texcoord':
489
+ case 'texcoords':
490
+ return 'TEXCOORD_0';
491
+
492
+ default:
493
+ return attributeName;
494
+ }
495
+ }
496
+
497
+ _getAccessorMinMax(buffer, size) {
498
+ const result = {
499
+ min: null,
500
+ max: null
501
+ };
502
+
503
+ if (buffer.length < size) {
504
+ return result;
505
+ }
506
+
507
+ result.min = [];
508
+ result.max = [];
509
+ const initValues = buffer.subarray(0, size);
510
+
511
+ for (const value of initValues) {
512
+ result.min.push(value);
513
+ result.max.push(value);
514
+ }
515
+
516
+ for (let index = size; index < buffer.length; index += size) {
517
+ for (let componentIndex = 0; componentIndex < size; componentIndex++) {
518
+ result.min[0 + componentIndex] = Math.min(result.min[0 + componentIndex], buffer[index + componentIndex]);
519
+ result.max[0 + componentIndex] = Math.max(result.max[0 + componentIndex], buffer[index + componentIndex]);
520
+ }
521
+ }
522
+
523
+ return result;
524
+ }
525
+
526
+ }
527
+
528
+ exports.default = GLTFScenegraph;
529
+ //# sourceMappingURL=gltf-scenegraph.js.map