@loaders.gl/gltf 4.0.0-beta.1 → 4.0.0-beta.3

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 (247) hide show
  1. package/dist/{dist.min.js → dist.dev.js} +3448 -3448
  2. package/dist/{esm/glb-loader.js → glb-loader.js} +2 -2
  3. package/dist/glb-loader.js.map +1 -0
  4. package/dist/{esm/glb-writer.js → glb-writer.js} +2 -2
  5. package/dist/glb-writer.js.map +1 -0
  6. package/dist/{esm/gltf-loader.js → gltf-loader.js} +2 -2
  7. package/dist/gltf-loader.js.map +1 -0
  8. package/dist/{esm/gltf-writer.js → gltf-writer.js} +2 -2
  9. package/dist/gltf-writer.js.map +1 -0
  10. package/dist/index.cjs +3558 -0
  11. package/dist/index.js +13 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/{esm/lib → lib}/api/gltf-extensions.js +11 -11
  14. package/dist/lib/api/gltf-extensions.js.map +1 -0
  15. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  16. package/dist/{esm/lib → lib}/api/gltf-scenegraph.js +9 -17
  17. package/dist/lib/api/gltf-scenegraph.js.map +1 -0
  18. package/dist/{esm/lib → lib}/api/normalize-gltf-v1.js +7 -8
  19. package/dist/lib/api/normalize-gltf-v1.js.map +1 -0
  20. package/dist/{esm/lib → lib}/api/post-process-gltf.js +19 -20
  21. package/dist/lib/api/post-process-gltf.js.map +1 -0
  22. package/dist/lib/encoders/encode-glb.js.map +1 -0
  23. package/dist/{esm/lib → lib}/encoders/encode-gltf.js +1 -1
  24. package/dist/lib/encoders/encode-gltf.js.map +1 -0
  25. package/dist/lib/extensions/EXT_mesh_features.d.ts.map +1 -1
  26. package/dist/{esm/lib → lib}/extensions/EXT_mesh_features.js +7 -5
  27. package/dist/lib/extensions/EXT_mesh_features.js.map +1 -0
  28. package/dist/{esm/lib → lib}/extensions/EXT_meshopt_compression.js +2 -2
  29. package/dist/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  30. package/dist/{esm/lib → lib}/extensions/EXT_structural_metadata.js +7 -7
  31. package/dist/lib/extensions/EXT_structural_metadata.js.map +1 -0
  32. package/dist/{esm/lib → lib}/extensions/EXT_texture_webp.js +2 -2
  33. package/dist/lib/extensions/EXT_texture_webp.js.map +1 -0
  34. package/dist/{esm/lib → lib}/extensions/KHR_binary_gltf.js +1 -1
  35. package/dist/lib/extensions/KHR_binary_gltf.js.map +1 -0
  36. package/dist/{esm/lib → lib}/extensions/KHR_draco_mesh_compression.js +2 -2
  37. package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  38. package/dist/{esm/lib → lib}/extensions/KHR_texture_basisu.js +1 -1
  39. package/dist/lib/extensions/KHR_texture_basisu.js.map +1 -0
  40. package/dist/{esm/lib → lib}/extensions/KHR_texture_transform.js +6 -6
  41. package/dist/lib/extensions/KHR_texture_transform.js.map +1 -0
  42. package/dist/{esm/lib → lib}/extensions/deprecated/EXT_feature_metadata.js +3 -3
  43. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  44. package/dist/{esm/lib → lib}/extensions/deprecated/KHR_lights_punctual.js +2 -2
  45. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  46. package/dist/{esm/lib → lib}/extensions/deprecated/KHR_materials_unlit.js +1 -1
  47. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  48. package/dist/{esm/lib → lib}/extensions/deprecated/KHR_techniques_webgl.js +1 -1
  49. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  50. package/dist/lib/extensions/utils/3d-tiles-utils.d.ts +1 -1
  51. package/dist/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  52. package/dist/{esm/lib → lib}/extensions/utils/3d-tiles-utils.js +6 -9
  53. package/dist/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
  54. package/dist/lib/gltf-utils/get-typed-array.d.ts +10 -0
  55. package/dist/lib/gltf-utils/get-typed-array.d.ts.map +1 -1
  56. package/dist/lib/gltf-utils/get-typed-array.js +51 -0
  57. package/dist/lib/gltf-utils/get-typed-array.js.map +1 -0
  58. package/dist/{esm/lib → lib}/gltf-utils/gltf-attribute-utils.js +1 -1
  59. package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  60. package/dist/lib/gltf-utils/gltf-constants.js.map +1 -0
  61. package/dist/lib/gltf-utils/gltf-utils.d.ts +2 -2
  62. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  63. package/dist/{esm/lib → lib}/gltf-utils/gltf-utils.js +7 -32
  64. package/dist/lib/gltf-utils/gltf-utils.js.map +1 -0
  65. package/dist/{esm/lib → lib}/gltf-utils/resolve-url.js +1 -1
  66. package/dist/lib/gltf-utils/resolve-url.js.map +1 -0
  67. package/dist/{esm/lib → lib}/parsers/parse-glb.js +6 -2
  68. package/dist/lib/parsers/parse-glb.js.map +1 -0
  69. package/dist/{esm/lib → lib}/parsers/parse-gltf.js +7 -7
  70. package/dist/lib/parsers/parse-gltf.js.map +1 -0
  71. package/dist/lib/types/glb-types.js.map +1 -0
  72. package/dist/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  73. package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts +3 -1
  74. package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts.map +1 -1
  75. package/dist/lib/types/gltf-ext-mesh-features-schema.js.map +1 -0
  76. package/dist/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -0
  77. package/dist/lib/types/gltf-json-schema.d.ts +7 -0
  78. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  79. package/dist/lib/types/gltf-json-schema.js.map +1 -0
  80. package/dist/lib/types/gltf-postprocessed-schema.js.map +1 -0
  81. package/dist/lib/types/gltf-types.d.ts +1 -1
  82. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  83. package/dist/lib/types/gltf-types.js.map +1 -0
  84. package/dist/lib/utils/assert.js.map +1 -0
  85. package/dist/lib/utils/version.js +2 -0
  86. package/dist/lib/utils/version.js.map +1 -0
  87. package/dist/{esm/meshopt → meshopt}/meshopt-decoder.js +1 -1
  88. package/dist/meshopt/meshopt-decoder.js.map +1 -0
  89. package/dist/{esm/webp → webp}/webp.js +1 -1
  90. package/dist/webp/webp.js.map +1 -0
  91. package/package.json +19 -11
  92. package/src/lib/api/gltf-scenegraph.ts +5 -17
  93. package/src/lib/extensions/EXT_mesh_features.ts +4 -2
  94. package/src/lib/extensions/utils/3d-tiles-utils.ts +17 -17
  95. package/src/lib/gltf-utils/get-typed-array.ts +53 -14
  96. package/src/lib/gltf-utils/gltf-utils.ts +3 -39
  97. package/src/lib/types/gltf-ext-mesh-features-schema.ts +3 -1
  98. package/src/lib/types/gltf-json-schema.ts +7 -0
  99. package/src/lib/types/gltf-types.ts +1 -1
  100. package/dist/bundle.d.ts +0 -2
  101. package/dist/bundle.d.ts.map +0 -1
  102. package/dist/es5/bundle.js +0 -6
  103. package/dist/es5/bundle.js.map +0 -1
  104. package/dist/es5/glb-loader.js +0 -54
  105. package/dist/es5/glb-loader.js.map +0 -1
  106. package/dist/es5/glb-writer.js +0 -34
  107. package/dist/es5/glb-writer.js.map +0 -1
  108. package/dist/es5/gltf-loader.js +0 -81
  109. package/dist/es5/gltf-loader.js.map +0 -1
  110. package/dist/es5/gltf-writer.js +0 -35
  111. package/dist/es5/gltf-writer.js.map +0 -1
  112. package/dist/es5/index.js +0 -88
  113. package/dist/es5/index.js.map +0 -1
  114. package/dist/es5/lib/api/gltf-extensions.js +0 -111
  115. package/dist/es5/lib/api/gltf-extensions.js.map +0 -1
  116. package/dist/es5/lib/api/gltf-scenegraph.js +0 -598
  117. package/dist/es5/lib/api/gltf-scenegraph.js.map +0 -1
  118. package/dist/es5/lib/api/normalize-gltf-v1.js +0 -331
  119. package/dist/es5/lib/api/normalize-gltf-v1.js.map +0 -1
  120. package/dist/es5/lib/api/post-process-gltf.js +0 -470
  121. package/dist/es5/lib/api/post-process-gltf.js.map +0 -1
  122. package/dist/es5/lib/encoders/encode-glb.js +0 -61
  123. package/dist/es5/lib/encoders/encode-glb.js.map +0 -1
  124. package/dist/es5/lib/encoders/encode-gltf.js +0 -20
  125. package/dist/es5/lib/encoders/encode-gltf.js.map +0 -1
  126. package/dist/es5/lib/extensions/EXT_mesh_features.js +0 -99
  127. package/dist/es5/lib/extensions/EXT_mesh_features.js.map +0 -1
  128. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +0 -94
  129. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  130. package/dist/es5/lib/extensions/EXT_structural_metadata.js +0 -375
  131. package/dist/es5/lib/extensions/EXT_structural_metadata.js.map +0 -1
  132. package/dist/es5/lib/extensions/EXT_texture_webp.js +0 -43
  133. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +0 -1
  134. package/dist/es5/lib/extensions/KHR_binary_gltf.js +0 -39
  135. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +0 -1
  136. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +0 -246
  137. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  138. package/dist/es5/lib/extensions/KHR_texture_basisu.js +0 -36
  139. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +0 -1
  140. package/dist/es5/lib/extensions/KHR_texture_transform.js +0 -231
  141. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +0 -1
  142. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +0 -260
  143. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +0 -1
  144. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +0 -99
  145. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  146. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +0 -76
  147. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  148. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +0 -113
  149. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  150. package/dist/es5/lib/extensions/utils/3d-tiles-utils.js +0 -254
  151. package/dist/es5/lib/extensions/utils/3d-tiles-utils.js.map +0 -1
  152. package/dist/es5/lib/gltf-utils/get-typed-array.js +0 -23
  153. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +0 -1
  154. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +0 -68
  155. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  156. package/dist/es5/lib/gltf-utils/gltf-constants.js +0 -48
  157. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +0 -1
  158. package/dist/es5/lib/gltf-utils/gltf-utils.js +0 -115
  159. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +0 -1
  160. package/dist/es5/lib/gltf-utils/resolve-url.js +0 -18
  161. package/dist/es5/lib/gltf-utils/resolve-url.js.map +0 -1
  162. package/dist/es5/lib/parsers/parse-glb.js +0 -120
  163. package/dist/es5/lib/parsers/parse-glb.js.map +0 -1
  164. package/dist/es5/lib/parsers/parse-gltf.js +0 -283
  165. package/dist/es5/lib/parsers/parse-gltf.js.map +0 -1
  166. package/dist/es5/lib/types/glb-types.js +0 -2
  167. package/dist/es5/lib/types/glb-types.js.map +0 -1
  168. package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js +0 -2
  169. package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js.map +0 -1
  170. package/dist/es5/lib/types/gltf-ext-mesh-features-schema.js +0 -2
  171. package/dist/es5/lib/types/gltf-ext-mesh-features-schema.js.map +0 -1
  172. package/dist/es5/lib/types/gltf-ext-structural-metadata-schema.js +0 -2
  173. package/dist/es5/lib/types/gltf-ext-structural-metadata-schema.js.map +0 -1
  174. package/dist/es5/lib/types/gltf-json-schema.js +0 -2
  175. package/dist/es5/lib/types/gltf-json-schema.js.map +0 -1
  176. package/dist/es5/lib/types/gltf-postprocessed-schema.js +0 -2
  177. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +0 -1
  178. package/dist/es5/lib/types/gltf-types.js +0 -2
  179. package/dist/es5/lib/types/gltf-types.js.map +0 -1
  180. package/dist/es5/lib/utils/assert.js +0 -12
  181. package/dist/es5/lib/utils/assert.js.map +0 -1
  182. package/dist/es5/lib/utils/version.js +0 -9
  183. package/dist/es5/lib/utils/version.js.map +0 -1
  184. package/dist/es5/meshopt/meshopt-decoder.js +0 -215
  185. package/dist/es5/meshopt/meshopt-decoder.js.map +0 -1
  186. package/dist/es5/webp/webp.js +0 -83
  187. package/dist/es5/webp/webp.js.map +0 -1
  188. package/dist/esm/bundle.js +0 -4
  189. package/dist/esm/bundle.js.map +0 -1
  190. package/dist/esm/glb-loader.js.map +0 -1
  191. package/dist/esm/glb-writer.js.map +0 -1
  192. package/dist/esm/gltf-loader.js.map +0 -1
  193. package/dist/esm/gltf-writer.js.map +0 -1
  194. package/dist/esm/index.js +0 -13
  195. package/dist/esm/index.js.map +0 -1
  196. package/dist/esm/lib/api/gltf-extensions.js.map +0 -1
  197. package/dist/esm/lib/api/gltf-scenegraph.js.map +0 -1
  198. package/dist/esm/lib/api/normalize-gltf-v1.js.map +0 -1
  199. package/dist/esm/lib/api/post-process-gltf.js.map +0 -1
  200. package/dist/esm/lib/encoders/encode-glb.js.map +0 -1
  201. package/dist/esm/lib/encoders/encode-gltf.js.map +0 -1
  202. package/dist/esm/lib/extensions/EXT_mesh_features.js.map +0 -1
  203. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  204. package/dist/esm/lib/extensions/EXT_structural_metadata.js.map +0 -1
  205. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +0 -1
  206. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +0 -1
  207. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  208. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +0 -1
  209. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +0 -1
  210. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +0 -1
  211. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  212. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  213. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  214. package/dist/esm/lib/extensions/utils/3d-tiles-utils.js.map +0 -1
  215. package/dist/esm/lib/gltf-utils/get-typed-array.js +0 -16
  216. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +0 -1
  217. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  218. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +0 -1
  219. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +0 -1
  220. package/dist/esm/lib/gltf-utils/resolve-url.js.map +0 -1
  221. package/dist/esm/lib/parsers/parse-glb.js.map +0 -1
  222. package/dist/esm/lib/parsers/parse-gltf.js.map +0 -1
  223. package/dist/esm/lib/types/glb-types.js.map +0 -1
  224. package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js.map +0 -1
  225. package/dist/esm/lib/types/gltf-ext-mesh-features-schema.js.map +0 -1
  226. package/dist/esm/lib/types/gltf-ext-structural-metadata-schema.js.map +0 -1
  227. package/dist/esm/lib/types/gltf-json-schema.js.map +0 -1
  228. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +0 -1
  229. package/dist/esm/lib/types/gltf-types.js.map +0 -1
  230. package/dist/esm/lib/utils/assert.js.map +0 -1
  231. package/dist/esm/lib/utils/version.js +0 -2
  232. package/dist/esm/lib/utils/version.js.map +0 -1
  233. package/dist/esm/meshopt/meshopt-decoder.js.map +0 -1
  234. package/dist/esm/meshopt/meshopt-encoder.ts.disabled +0 -409
  235. package/dist/esm/webp/webp.js.map +0 -1
  236. package/src/bundle.ts +0 -4
  237. /package/dist/{esm/lib → lib}/encoders/encode-glb.js +0 -0
  238. /package/dist/{esm/lib → lib}/gltf-utils/gltf-constants.js +0 -0
  239. /package/dist/{esm/lib → lib}/types/glb-types.js +0 -0
  240. /package/dist/{esm/lib → lib}/types/gltf-ext-feature-metadata-schema.js +0 -0
  241. /package/dist/{esm/lib → lib}/types/gltf-ext-mesh-features-schema.js +0 -0
  242. /package/dist/{esm/lib → lib}/types/gltf-ext-structural-metadata-schema.js +0 -0
  243. /package/dist/{esm/lib → lib}/types/gltf-json-schema.js +0 -0
  244. /package/dist/{esm/lib → lib}/types/gltf-postprocessed-schema.js +0 -0
  245. /package/dist/{esm/lib → lib}/types/gltf-types.js +0 -0
  246. /package/dist/{esm/lib → lib}/utils/assert.js +0 -0
  247. /package/dist/{es5/meshopt → meshopt}/meshopt-encoder.ts.disabled +0 -0
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export { name as EXT_MESH_FEATURES } from "./lib/extensions/EXT_mesh_features.js";
2
+ export { name as EXT_STRUCTURAL_METADATA } from "./lib/extensions/EXT_structural_metadata.js";
3
+ export { name as EXT_FEATURE_METADATA } from "./lib/extensions/deprecated/EXT_feature_metadata.js";
4
+ export { getPropertyTableFromExtFeatureMetadata } from "./lib/extensions/deprecated/EXT_feature_metadata.js";
5
+ export { getPropertyTableFromExtStructuralMetadata } from "./lib/extensions/EXT_structural_metadata.js";
6
+ export { GLTFLoader } from "./gltf-loader.js";
7
+ export { GLTFWriter } from "./gltf-writer.js";
8
+ export { GLBLoader } from "./glb-loader.js";
9
+ export { GLBWriter } from "./glb-writer.js";
10
+ export { GLTFScenegraph } from "./lib/api/gltf-scenegraph.js";
11
+ export { postProcessGLTF } from "./lib/api/post-process-gltf.js";
12
+ export { getMemoryUsageGLTF as _getMemoryUsageGLTF } from "./lib/gltf-utils/gltf-utils.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["name","EXT_MESH_FEATURES","EXT_STRUCTURAL_METADATA","EXT_FEATURE_METADATA","getPropertyTableFromExtFeatureMetadata","getPropertyTableFromExtStructuralMetadata","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} from './lib/types/gltf-json-schema';\n\n// 3DTiles extensions\nexport type {\n GLTF_EXT_feature_metadata_GLTF,\n GLTF_EXT_feature_metadata_Schema,\n GLTF_EXT_feature_metadata_Class,\n GLTF_EXT_feature_metadata_ClassProperty,\n GLTF_EXT_feature_metadata_Enum,\n GLTF_EXT_feature_metadata_EnumValue,\n GLTF_EXT_feature_metadata_FeatureTable,\n GLTF_EXT_feature_metadata_FeatureTableProperty,\n GLTF_EXT_feature_metadata_FeatureTexture,\n GLTF_EXT_feature_metadata_TextureAccessor,\n GLTF_EXT_feature_metadata_Statistics,\n GLTF_EXT_feature_metadata_StatisticsClass,\n GLTF_EXT_feature_metadata_StatisticsClassProperty,\n GLTF_EXT_feature_metadata_Primitive,\n GLTF_EXT_feature_metadata_FeatureIdAttribute,\n GLTF_EXT_feature_metadata_FeatureIdAttributeFeatureIds,\n GLTF_EXT_feature_metadata_FeatureIdTexture,\n GLTF_EXT_feature_metadata_FeatureIdTextureAccessor\n} from './lib/types/gltf-ext-feature-metadata-schema';\n\nexport type {GLTF_EXT_structural_metadata_GLTF} from './lib/types/gltf-ext-structural-metadata-schema';\n\nexport type {\n GLTF_EXT_mesh_features,\n GLTF_EXT_mesh_features_featureId\n} from './lib/types/gltf-ext-mesh-features-schema';\n\nexport {name as EXT_MESH_FEATURES} from './lib/extensions/EXT_mesh_features';\nexport {name as EXT_STRUCTURAL_METADATA} from './lib/extensions/EXT_structural_metadata';\nexport {name as EXT_FEATURE_METADATA} from './lib/extensions/deprecated/EXT_feature_metadata';\nexport {getPropertyTableFromExtFeatureMetadata} from './lib/extensions/deprecated/EXT_feature_metadata';\nexport {getPropertyTableFromExtStructuralMetadata} from './lib/extensions/EXT_structural_metadata';\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, FeatureTableJson} 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":"SAwDQA,IAAI,IAAIC,iBAAiB;AAAA,SACzBD,IAAI,IAAIE,uBAAuB;AAAA,SAC/BF,IAAI,IAAIG,oBAAoB;AAAA,SAC5BC,sCAAsC;AAAA,SACtCC,yCAAyC;AAAA,SAiBzCC,UAAU;AAAA,SACVC,UAAU;AAAA,SAGVC,SAAS;AAAA,SACTC,SAAS;AAAA,SAGTC,cAAc;AAAA,SACdC,eAAe;AAAA,SACfC,kBAAkB,IAAIC,mBAAmB"}
@@ -1,14 +1,14 @@
1
- import * as EXT_mesh_features from '../extensions/EXT_mesh_features';
2
- import * as EXT_structural_metadata from '../extensions/EXT_structural_metadata';
3
- import * as EXT_meshopt_compression from '../extensions/EXT_meshopt_compression';
4
- import * as EXT_texture_webp from '../extensions/EXT_texture_webp';
5
- import * as KHR_texture_basisu from '../extensions/KHR_texture_basisu';
6
- import * as KHR_draco_mesh_compression from '../extensions/KHR_draco_mesh_compression';
7
- import * as KHR_texture_transform from '../extensions/KHR_texture_transform';
8
- import * as KHR_lights_punctual from '../extensions/deprecated/KHR_lights_punctual';
9
- import * as KHR_materials_unlit from '../extensions/deprecated/KHR_materials_unlit';
10
- import * as KHR_techniques_webgl from '../extensions/deprecated/KHR_techniques_webgl';
11
- import * as EXT_feature_metadata from '../extensions/deprecated/EXT_feature_metadata';
1
+ import * as EXT_mesh_features from "../extensions/EXT_mesh_features.js";
2
+ import * as EXT_structural_metadata from "../extensions/EXT_structural_metadata.js";
3
+ import * as EXT_meshopt_compression from "../extensions/EXT_meshopt_compression.js";
4
+ import * as EXT_texture_webp from "../extensions/EXT_texture_webp.js";
5
+ import * as KHR_texture_basisu from "../extensions/KHR_texture_basisu.js";
6
+ import * as KHR_draco_mesh_compression from "../extensions/KHR_draco_mesh_compression.js";
7
+ import * as KHR_texture_transform from "../extensions/KHR_texture_transform.js";
8
+ import * as KHR_lights_punctual from "../extensions/deprecated/KHR_lights_punctual.js";
9
+ import * as KHR_materials_unlit from "../extensions/deprecated/KHR_materials_unlit.js";
10
+ import * as KHR_techniques_webgl from "../extensions/deprecated/KHR_techniques_webgl.js";
11
+ import * as EXT_feature_metadata from "../extensions/deprecated/EXT_feature_metadata.js";
12
12
  export const EXTENSIONS = [EXT_structural_metadata, EXT_mesh_features, 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];
13
13
  export function preprocessExtensions(gltf) {
14
14
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gltf-extensions.js","names":["EXT_mesh_features","EXT_structural_metadata","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 Vendor extensions\nimport * as EXT_mesh_features from '../extensions/EXT_mesh_features';\nimport * as EXT_structural_metadata from '../extensions/EXT_structural_metadata';\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\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_structural_metadata,\n EXT_mesh_features,\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":"OAQO,KAAKA,iBAAiB;AAAA,OACtB,KAAKC,uBAAuB;AAAA,OAG5B,KAAKC,uBAAuB;AAAA,OAC5B,KAAKC,gBAAgB;AAAA,OACrB,KAAKC,kBAAkB;AAAA,OACvB,KAAKC,0BAA0B;AAAA,OAC/B,KAAKC,qBAAqB;AAAA,OAG1B,KAAKC,mBAAmB;AAAA,OACxB,KAAKC,mBAAmB;AAAA,OACxB,KAAKC,oBAAoB;AAAA,OACzB,KAAKC,oBAAoB;AAqBhC,OAAO,MAAMC,UAAiC,GAAG,CAM/CV,uBAAuB,EACvBD,iBAAiB,EACjBE,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-scenegraph.d.ts","sourceRoot":"","sources":["../../../src/lib/api/gltf-scenegraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gltf-scenegraph.d.ts","sourceRoot":"","sources":["../../../src/lib/api/gltf-scenegraph.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import { getBinaryImageMetadata } from '@loaders.gl/images';
3
2
  import { padToNBytes, copyToArray } from '@loaders.gl/loader-utils';
4
- import { assert } from '../utils/assert';
5
- import { getAccessorArrayTypeAndLength, getAccessorTypeFromSize, getComponentTypeFromArray } from '../gltf-utils/gltf-utils';
3
+ import { assert } from "../utils/assert.js";
4
+ import { getAccessorTypeFromSize, getComponentTypeFromArray } from "../gltf-utils/gltf-utils.js";
5
+ import { getTypedArrayForAccessor as _getTypedArrayForAccessor } from "../gltf-utils/get-typed-array.js";
6
6
  function makeDefaultGLTFJson() {
7
7
  return {
8
8
  asset: {
@@ -17,9 +17,9 @@ function makeDefaultGLTFJson() {
17
17
  }
18
18
  export class GLTFScenegraph {
19
19
  constructor(gltf) {
20
- _defineProperty(this, "gltf", void 0);
21
- _defineProperty(this, "sourceBuffers", void 0);
22
- _defineProperty(this, "byteLength", void 0);
20
+ this.gltf = void 0;
21
+ this.sourceBuffers = void 0;
22
+ this.byteLength = void 0;
23
23
  this.gltf = {
24
24
  json: (gltf === null || gltf === void 0 ? void 0 : gltf.json) || makeDefaultGLTFJson(),
25
25
  buffers: (gltf === null || gltf === void 0 ? void 0 : gltf.buffers) || [],
@@ -109,7 +109,7 @@ export class GLTFScenegraph {
109
109
  }
110
110
  const object = this.json[array] && this.json[array][index];
111
111
  if (!object) {
112
- throw new Error("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
112
+ throw new Error(`glTF file error: Could not find ${array}[${index}]`);
113
113
  }
114
114
  return object;
115
115
  }
@@ -122,16 +122,8 @@ export class GLTFScenegraph {
122
122
  return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
123
123
  }
124
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);
125
+ const gltfAccessor = this.getAccessor(accessor);
126
+ return _getTypedArrayForAccessor(this.gltf.json, this.gltf.buffers, gltfAccessor);
135
127
  }
136
128
  getTypedArrayForImageData(image) {
137
129
  image = this.getAccessor(image);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gltf-scenegraph.js","names":["getBinaryImageMetadata","padToNBytes","copyToArray","assert","getAccessorTypeFromSize","getComponentTypeFromArray","getTypedArrayForAccessor","_getTypedArrayForAccessor","makeDefaultGLTFJson","asset","version","generator","buffers","extensions","extensionsRequired","extensionsUsed","GLTFScenegraph","constructor","gltf","sourceBuffers","byteLength","json","images","getApplicationData","key","data","getExtraData","extras","hasExtension","extensionName","isUsedExtension","getUsedExtensions","find","name","isRequiredExtension","getRequiredExtensions","getExtension","isExtension","getRequiredExtension","isRequired","getRemovedExtensions","extensionsRemoved","getObjectExtension","object","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","Error","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","byteOffset","Uint8Array","arrayBuffer","accessor","gltfAccessor","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","includes","push","addExtension","extensionData","arguments","length","undefined","addRequiredExtension","registerRequiredExtension","ext","removeExtension","_this$json$extensions","_removeStringFromArray","setDefaultScene","sceneIndex","scene","addScene","nodeIndices","scenes","nodes","addNode","node","meshIndex","matrix","nodeData","mesh","addMesh","attributes","indices","material","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","mimeType","bufferViewIndex","addBufferView","glTFImage","glTFBufferView","bufferViews","addAccessor","glTFAccessor","type","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","Math","round","Object","assign","addTexture","texture","imageIndex","glTFTexture","source","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","value","attributeName","toLowerCase","initValues","subarray","componentIndex"],"sources":["../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView\n} from '../types/gltf-json-schema';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {getAccessorTypeFromSize, getComponentTypeFromArray} from '../gltf-utils/gltf-utils';\n\nimport {getTypedArrayForAccessor as _getTypedArrayForAccessor} from '../gltf-utils/get-typed-array';\n\ntype Extension = {[key: string]: any};\n\nfunction makeDefaultGLTFJson(): GLTF {\n return {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: [],\n extensions: {},\n extensionsRequired: [],\n extensionsUsed: []\n };\n}\n\n/**\n * Class for structured access to GLTF data\n */\nexport class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n // TODO - why is this not GLTFWithBuffers - what happens to images?\n constructor(gltf?: {json: GLTF; buffers?: any[]; images?: any[]}) {\n // Declare locally so\n\n this.gltf = {\n json: gltf?.json || makeDefaultGLTFJson(),\n buffers: gltf?.buffers || [],\n images: gltf?.images || []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n hasExtension(extensionName: string): boolean {\n const isUsedExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const isRequiredExtension = this.getRequiredExtensions().find((name) => name === extensionName);\n return typeof isUsedExtension === 'string' || typeof isRequiredExtension === 'string';\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? (extensions[extensionName] as T) : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n const gltfAccessor = this.getAccessor(accessor);\n return _getTypedArrayForAccessor(this.gltf.json, this.gltf.buffers, gltfAccessor);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: any, extensionName: string, data: object): void {\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: any, extensionName: string): void {\n const extensions = object?.extensions || {};\n\n if (extensions[extensionName]) {\n this.json.extensionsRemoved = this.json.extensionsRemoved || [];\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n delete extensions[extensionName];\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n this.json.extensions[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (this.json.extensions?.[extensionName]) {\n this.json.extensionsRemoved = this.json.extensionsRemoved || [];\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any, bufferIndex = 0, byteOffset = this.byteLength): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: bufferIndex,\n // Write offset from the start of the binary body\n byteOffset,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import * as KHR_binary_glTF from '../extensions/KHR_binary_gltf';
1
+ import * as KHR_binary_glTF from "../extensions/KHR_binary_gltf.js";
3
2
  const GLTF_ARRAYS = {
4
3
  accessors: 'accessor',
5
4
  animations: 'animation',
@@ -30,7 +29,7 @@ const GLTF_KEYS = {
30
29
  };
31
30
  class GLTFV1Normalizer {
32
31
  constructor() {
33
- _defineProperty(this, "idToIndexMap", {
32
+ this.idToIndexMap = {
34
33
  animations: {},
35
34
  accessors: {},
36
35
  buffers: {},
@@ -43,8 +42,8 @@ class GLTFV1Normalizer {
43
42
  scenes: {},
44
43
  skins: {},
45
44
  textures: {}
46
- });
47
- _defineProperty(this, "json", void 0);
45
+ };
46
+ this.json = void 0;
48
47
  }
49
48
  normalize(gltf, options) {
50
49
  this.json = gltf.json;
@@ -56,7 +55,7 @@ class GLTFV1Normalizer {
56
55
  case '1.0':
57
56
  break;
58
57
  default:
59
- console.warn("glTF: Unknown version ".concat(json.asset.version));
58
+ console.warn(`glTF: Unknown version ${json.asset.version}`);
60
59
  return;
61
60
  }
62
61
  if (!options.normalize) {
@@ -152,7 +151,7 @@ class GLTFV1Normalizer {
152
151
  }
153
152
  _convertIdsToIndices(json, topLevelArrayName) {
154
153
  if (!json[topLevelArrayName]) {
155
- console.warn("gltf v1: json doesn't contain attribute ".concat(topLevelArrayName));
154
+ console.warn(`gltf v1: json doesn't contain attribute ${topLevelArrayName}`);
156
155
  json[topLevelArrayName] = [];
157
156
  }
158
157
  for (const object of json[topLevelArrayName]) {
@@ -168,7 +167,7 @@ class GLTFV1Normalizer {
168
167
  if (arrayName in this.idToIndexMap) {
169
168
  const index = this.idToIndexMap[arrayName][id];
170
169
  if (!Number.isFinite(index)) {
171
- throw new Error("gltf v1: failed to resolve ".concat(key, " with id ").concat(id));
170
+ throw new Error(`gltf v1: failed to resolve ${key} with id ${id}`);
172
171
  }
173
172
  return index;
174
173
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-gltf-v1.js","names":["KHR_binary_glTF","GLTF_ARRAYS","accessors","animations","buffers","bufferViews","images","materials","meshes","nodes","samplers","scenes","skins","textures","GLTF_KEYS","accessor","buffer","bufferView","image","material","mesh","node","sampler","scene","skin","texture","GLTFV1Normalizer","constructor","idToIndexMap","json","normalize","gltf","options","asset","version","undefined","console","warn","Error","_addAsset","_convertTopLevelObjectsToArrays","preprocess","_convertObjectIdsToArrayIndices","_updateObjects","_updateMaterial","generator","arrayName","_convertTopLevelObjectToArray","mapName","objectMap","Array","isArray","id","object","index","length","push","_convertIdsToIndices","_convertIdToIndex","_convertTextureIds","_convertMeshIds","_convertNodeIds","_convertSceneIds","source","primitive","primitives","attributes","indices","attributeName","children","map","child","topLevelArrayName","key","Number","isFinite","type","_material$values","_material$values2","_material$values3","pbrMetallicRoughness","baseColorFactor","metallicFactor","roughnessFactor","textureId","values","tex","texture2d_0","diffuseTex","textureIndex","findIndex","baseColorTexture","normalizeGLTFV1","arguments"],"sources":["../../../src/lib/api/normalize-gltf-v1.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport * as KHR_binary_glTF from '../extensions/KHR_binary_gltf';\n\n// Binary format changes (mainly implemented by GLBLoader)\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n\n// JSON format changes:\n// https://github.com/khronosgroup/gltf/issues/605\n\n// - [x] Top-level JSON objects are arrays now\n// - [ ] Removed indirection from animation: sampler now refers directly to accessors, #712\n// - [ ] material.parameter.value and technique.parameter.value must be an array, #690\n// - [ ] Node can have only one mesh #821\n// - [ ] Added reqs on JSON encoding\n// - [ ] Added reqs on binary data alignment #802 (comment)\n\n// Additions:\n// - [ ] Added accessor.normalized, #691, #706\n// - [ ] Added glExtensionsUsed property and 5125 (UNSIGNED_INT) accessor.componentType value, #619\n// - [ ] Added extensionsRequired property, #720, #721\n// - [ ] Added \"STEP\" as valid animation.sampler.interpolation value, #712\n\n// Removals:\n// - [x] Removed buffer.type, #786, #629\n// - [ ] Removed revision number from profile.version, #709\n// - [ ] Removed technique.functions.scissor and removed 3089 (SCISSOR_TEST) as a valid value for technique.states.enable, #681\n// - [ ] Techniques, programs, and shaders were moved out to KHR_technique_webgl extension.\n\n// Other edits:\n// - [x] asset is now required, #642\n// - [ ] buffer.byteLength and bufferView.byteLength are now required, #560.\n// - [ ] accessor.min and accessor.max are now required, #593, and clarified that the JSON value and binary data must be the same, #628.\n// - [ ] Clarified animation.sampler and animation.channel restrictions, #712\n// - [ ] skin.inverseBindMatrices is now optional, #461.\n// - [ ] Attribute parameters can't have a value defined in the technique or parameter, #563 (comment).\n// - [ ] Only TEXCOORD and COLOR attribute semantics can be written in the form [semantic]_[set_index], #563 (comment).\n// - [ ] TEXCOORD and COLOR attribute semantics must be written in the form [semantic]_[set_index], e.g., just TEXCOORD should be TEXCOORD_0, and just COLOR should be COLOR_0, #649\n// - [ ] camera.perspective.aspectRatio and camera.perspective.yfov must now be > 0, not >= 0, #563 (comment).\n// - [ ] Application-specific parameter semantics must start with an underscore, e.g., _TEMPERATURE and _SIMULATION_TIME, #563 (comment).\n// - [ ] Properties in technique.parameters must be defined in technique.uniforms or technique.attributes,\n\n// #563 (comment).\n// - [ ] technique.parameter.count can only be defined when the semantic is JOINTMATRIX or an application-specific semantic is used. It can never be defined for attribute parameters; only uniforms, d2f6945\n// - [ ] technique.parameter.semantic is required when the parameter is an attribute, 28e113d\n// - [ ] Mesh-only models are allowed, e.g., without materials, #642\n// - [ ] Skeleton hierarchies (nodes containing jointName) must be separated from non-skeleton hierarchies., #647\n// - [ ] technique.states.functions.blendColor and technique.states.functions.depthRange parameters now must match WebGL function min/max, #707\n\nconst GLTF_ARRAYS = {\n accessors: 'accessor',\n animations: 'animation',\n buffers: 'buffer',\n bufferViews: 'bufferView',\n images: 'image',\n materials: 'material',\n meshes: 'mesh',\n nodes: 'node',\n samplers: 'sampler',\n scenes: 'scene',\n skins: 'skin',\n textures: 'texture'\n};\n\nconst GLTF_KEYS = {\n accessor: 'accessors',\n animations: 'animation',\n buffer: 'buffers',\n bufferView: 'bufferViews',\n image: 'images',\n material: 'materials',\n mesh: 'meshes',\n node: 'nodes',\n sampler: 'samplers',\n scene: 'scenes',\n skin: 'skins',\n texture: 'textures'\n};\n\n/**\n * Converts (normalizes) glTF v1 to v2\n */\nclass GLTFV1Normalizer {\n idToIndexMap = {\n animations: {},\n accessors: {},\n buffers: {},\n bufferViews: {},\n images: {},\n materials: {},\n meshes: {},\n nodes: {},\n samplers: {},\n scenes: {},\n skins: {},\n textures: {}\n };\n\n json;\n\n // constructor() {}\n\n /**\n * Convert (normalize) glTF < 2.0 to glTF 2.0\n * @param gltf - object with json and binChunks\n * @param options\n * @param options normalize Whether to actually normalize\n */\n normalize(gltf, options) {\n this.json = gltf.json;\n const json = gltf.json;\n\n // Check version\n switch (json.asset && json.asset.version) {\n // We are converting to v2 format. Return if there is nothing to do\n case '2.0':\n return;\n\n // This class is written to convert 1.0\n case undefined:\n case '1.0':\n break;\n\n default:\n // eslint-disable-next-line no-undef, no-console\n console.warn(`glTF: Unknown version ${json.asset.version}`);\n return;\n }\n\n if (!options.normalize) {\n // We are still missing a few conversion tricks, remove once addressed\n throw new Error('glTF v1 is not supported.');\n }\n\n // eslint-disable-next-line no-undef, no-console\n console.warn('Converting glTF v1 to glTF v2 format. This is experimental and may fail.');\n\n this._addAsset(json);\n\n // In glTF2 top-level fields are Arrays not Object maps\n this._convertTopLevelObjectsToArrays(json);\n\n // Extract bufferView indices for images\n // (this extension needs to be invoked early in the normalization process)\n // TODO can this be handled by standard extension processing instead of called explicitly?\n KHR_binary_glTF.preprocess(gltf);\n\n // Convert object references from ids to indices\n this._convertObjectIdsToArrayIndices(json);\n\n this._updateObjects(json);\n\n this._updateMaterial(json);\n }\n\n // asset is now required, #642 https://github.com/KhronosGroup/glTF/issues/639\n _addAsset(json) {\n json.asset = json.asset || {};\n // We are normalizing to glTF v2, so change version to \"2.0\"\n json.asset.version = '2.0';\n json.asset.generator = json.asset.generator || 'Normalized to glTF 2.0 by loaders.gl';\n }\n\n _convertTopLevelObjectsToArrays(json) {\n // TODO check that all arrays are covered\n for (const arrayName in GLTF_ARRAYS) {\n this._convertTopLevelObjectToArray(json, arrayName);\n }\n }\n\n /** Convert one top level object to array */\n _convertTopLevelObjectToArray(json, mapName) {\n const objectMap = json[mapName];\n if (!objectMap || Array.isArray(objectMap)) {\n return;\n }\n\n // Rewrite the top-level field as an array\n json[mapName] = [];\n // Copy the map key into object.id\n for (const id in objectMap) {\n const object = objectMap[id];\n object.id = object.id || id; // Mutates the loaded object\n const index = json[mapName].length;\n json[mapName].push(object);\n this.idToIndexMap[mapName][id] = index;\n }\n }\n\n /** Go through all objects in all top-level arrays and replace ids with indices */\n _convertObjectIdsToArrayIndices(json) {\n for (const arrayName in GLTF_ARRAYS) {\n this._convertIdsToIndices(json, arrayName);\n }\n if ('scene' in json) {\n json.scene = this._convertIdToIndex(json.scene, 'scene');\n }\n\n // Convert any index references that are not using array names\n\n // texture.source (image)\n for (const texture of json.textures) {\n this._convertTextureIds(texture);\n }\n for (const mesh of json.meshes) {\n this._convertMeshIds(mesh);\n }\n for (const node of json.nodes) {\n this._convertNodeIds(node);\n }\n for (const node of json.scenes) {\n this._convertSceneIds(node);\n }\n }\n\n _convertTextureIds(texture) {\n if (texture.source) {\n texture.source = this._convertIdToIndex(texture.source, 'image');\n }\n }\n\n _convertMeshIds(mesh) {\n for (const primitive of mesh.primitives) {\n const {attributes, indices, material} = primitive;\n for (const attributeName in attributes) {\n attributes[attributeName] = this._convertIdToIndex(attributes[attributeName], 'accessor');\n }\n if (indices) {\n primitive.indices = this._convertIdToIndex(indices, 'accessor');\n }\n if (material) {\n primitive.material = this._convertIdToIndex(material, 'material');\n }\n }\n }\n\n _convertNodeIds(node) {\n if (node.children) {\n node.children = node.children.map((child) => this._convertIdToIndex(child, 'node'));\n }\n if (node.meshes) {\n node.meshes = node.meshes.map((mesh) => this._convertIdToIndex(mesh, 'mesh'));\n }\n }\n\n _convertSceneIds(scene) {\n if (scene.nodes) {\n scene.nodes = scene.nodes.map((node) => this._convertIdToIndex(node, 'node'));\n }\n }\n\n /** Go through all objects in a top-level array and replace ids with indices */\n _convertIdsToIndices(json, topLevelArrayName) {\n if (!json[topLevelArrayName]) {\n console.warn(`gltf v1: json doesn't contain attribute ${topLevelArrayName}`); // eslint-disable-line no-console, no-undef\n json[topLevelArrayName] = [];\n }\n for (const object of json[topLevelArrayName]) {\n for (const key in object) {\n const id = object[key];\n const index = this._convertIdToIndex(id, key);\n object[key] = index;\n }\n }\n }\n\n _convertIdToIndex(id, key) {\n const arrayName = GLTF_KEYS[key];\n if (arrayName in this.idToIndexMap) {\n const index = this.idToIndexMap[arrayName][id];\n if (!Number.isFinite(index)) {\n throw new Error(`gltf v1: failed to resolve ${key} with id ${id}`);\n }\n return index;\n }\n return id;\n }\n\n /**\n *\n * @param {*} json\n */\n _updateObjects(json) {\n for (const buffer of this.json.buffers) {\n // - [x] Removed buffer.type, #786, #629\n delete buffer.type;\n }\n }\n\n /**\n * Update material (set pbrMetallicRoughness)\n * @param {*} json\n */\n _updateMaterial(json) {\n for (const material of json.materials) {\n material.pbrMetallicRoughness = {\n baseColorFactor: [1, 1, 1, 1],\n metallicFactor: 1,\n roughnessFactor: 1\n };\n\n const textureId =\n material.values?.tex || material.values?.texture2d_0 || material.values?.diffuseTex;\n const textureIndex = json.textures.findIndex((texture) => texture.id === textureId);\n if (textureIndex !== -1) {\n material.pbrMetallicRoughness.baseColorTexture = {index: textureIndex};\n }\n }\n }\n}\n\nexport function normalizeGLTFV1(gltf, options = {}) {\n return new GLTFV1Normalizer().normalize(gltf, options);\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert } from '../utils/assert';
3
- import { getAccessorArrayTypeAndLength } from '../gltf-utils/gltf-utils';
1
+ import { assert } from "../utils/assert.js";
2
+ import { getAccessorArrayTypeAndLength } from "../gltf-utils/gltf-utils.js";
4
3
  const COMPONENTS = {
5
4
  SCALAR: 1,
6
5
  VEC2: 2,
@@ -53,11 +52,11 @@ function getSizeFromAccessorType(type) {
53
52
  }
54
53
  class GLTFPostProcessor {
55
54
  constructor() {
56
- _defineProperty(this, "baseUri", '');
57
- _defineProperty(this, "jsonUnprocessed", void 0);
58
- _defineProperty(this, "json", void 0);
59
- _defineProperty(this, "buffers", []);
60
- _defineProperty(this, "images", []);
55
+ this.baseUri = '';
56
+ this.jsonUnprocessed = void 0;
57
+ this.json = void 0;
58
+ this.buffers = [];
59
+ this.images = [];
61
60
  }
62
61
  postProcess(gltf) {
63
62
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -161,21 +160,21 @@ class GLTFPostProcessor {
161
160
  }
162
161
  const object = array && array[index];
163
162
  if (!object) {
164
- console.warn("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
163
+ console.warn(`glTF file error: Could not find ${array}[${index}]`);
165
164
  }
166
165
  return object;
167
166
  }
168
167
  _resolveScene(scene, index) {
169
168
  return {
170
169
  ...scene,
171
- id: scene.id || "scene-".concat(index),
170
+ id: scene.id || `scene-${index}`,
172
171
  nodes: (scene.nodes || []).map(node => this.getNode(node))
173
172
  };
174
173
  }
175
174
  _resolveNode(gltfNode, index) {
176
175
  const node = {
177
176
  ...gltfNode,
178
- id: (gltfNode === null || gltfNode === void 0 ? void 0 : gltfNode.id) || "node-".concat(index)
177
+ id: (gltfNode === null || gltfNode === void 0 ? void 0 : gltfNode.id) || `node-${index}`
179
178
  };
180
179
  if (gltfNode.mesh !== undefined) {
181
180
  node.mesh = this.getMesh(gltfNode.mesh);
@@ -208,14 +207,14 @@ class GLTFPostProcessor {
208
207
  const inverseBindMatrices = typeof gltfSkin.inverseBindMatrices === 'number' ? this.getAccessor(gltfSkin.inverseBindMatrices) : undefined;
209
208
  return {
210
209
  ...gltfSkin,
211
- id: gltfSkin.id || "skin-".concat(index),
210
+ id: gltfSkin.id || `skin-${index}`,
212
211
  inverseBindMatrices
213
212
  };
214
213
  }
215
214
  _resolveMesh(gltfMesh, index) {
216
215
  const mesh = {
217
216
  ...gltfMesh,
218
- id: gltfMesh.id || "mesh-".concat(index),
217
+ id: gltfMesh.id || `mesh-${index}`,
219
218
  primitives: []
220
219
  };
221
220
  if (gltfMesh.primitives) {
@@ -244,7 +243,7 @@ class GLTFPostProcessor {
244
243
  _resolveMaterial(gltfMaterial, index) {
245
244
  const material = {
246
245
  ...gltfMaterial,
247
- id: gltfMaterial.id || "material-".concat(index)
246
+ id: gltfMaterial.id || `material-${index}`
248
247
  };
249
248
  if (material.normalTexture) {
250
249
  material.normalTexture = {
@@ -293,7 +292,7 @@ class GLTFPostProcessor {
293
292
  const bytesPerElement = bytesPerComponent * components;
294
293
  const accessor = {
295
294
  ...gltfAccessor,
296
- id: gltfAccessor.id || "accessor-".concat(index),
295
+ id: gltfAccessor.id || `accessor-${index}`,
297
296
  bytesPerComponent,
298
297
  components,
299
298
  bytesPerElement,
@@ -330,14 +329,14 @@ class GLTFPostProcessor {
330
329
  _resolveTexture(gltfTexture, index) {
331
330
  return {
332
331
  ...gltfTexture,
333
- id: gltfTexture.id || "texture-".concat(index),
332
+ id: gltfTexture.id || `texture-${index}`,
334
333
  sampler: typeof gltfTexture.sampler === 'number' ? this.getSampler(gltfTexture.sampler) : makeDefaultSampler(),
335
334
  source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined
336
335
  };
337
336
  }
338
337
  _resolveSampler(gltfSampler, index) {
339
338
  const sampler = {
340
- id: gltfSampler.id || "sampler-".concat(index),
339
+ id: gltfSampler.id || `sampler-${index}`,
341
340
  ...gltfSampler,
342
341
  parameters: {}
343
342
  };
@@ -355,7 +354,7 @@ class GLTFPostProcessor {
355
354
  _resolveImage(gltfImage, index) {
356
355
  const image = {
357
356
  ...gltfImage,
358
- id: gltfImage.id || "image-".concat(index),
357
+ id: gltfImage.id || `image-${index}`,
359
358
  image: null,
360
359
  bufferView: gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined
361
360
  };
@@ -373,7 +372,7 @@ class GLTFPostProcessor {
373
372
  byteOffset += gltfBufferView.byteOffset;
374
373
  }
375
374
  const bufferView = {
376
- id: "bufferView-".concat(index),
375
+ id: `bufferView-${index}`,
377
376
  ...gltfBufferView,
378
377
  buffer: this.buffers[bufferIndex],
379
378
  data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)
@@ -383,7 +382,7 @@ class GLTFPostProcessor {
383
382
  _resolveCamera(gltfCamera, index) {
384
383
  const camera = {
385
384
  ...gltfCamera,
386
- id: gltfCamera.id || "camera-".concat(index)
385
+ id: gltfCamera.id || `camera-${index}`
387
386
  };
388
387
  if (camera.perspective) {}
389
388
  if (camera.orthographic) {}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-process-gltf.js","names":["assert","getAccessorArrayTypeAndLength","COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER_PARAMETERS","makeDefaultSampler","id","parameters","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","constructor","baseUri","jsonUnprocessed","json","buffers","images","postProcess","gltf","options","arguments","length","undefined","_resolveTree","bufferViews","map","bufView","i","_resolveBufferView","image","_resolveImage","samplers","sampler","_resolveSampler","textures","texture","_resolveTexture","accessors","accessor","_resolveAccessor","materials","material","_resolveMaterial","meshes","mesh","_resolveMesh","nodes","node","_resolveNode","_resolveNodeChildren","skins","skin","_resolveSkin","scenes","scene","_resolveScene","getScene","index","_get","getNode","getSkin","getMesh","getMaterial","getAccessor","getCamera","cameras","getTexture","getSampler","getImage","getBufferView","getBuffer","array","object","console","warn","gltfNode","camera","reduce","accum","meshIndex","primitives","concat","children","child","gltfSkin","inverseBindMatrices","gltfMesh","gltfPrimitive","primitive","attributes","indices","attribute","gltfMaterial","normalTexture","occlusionTexture","emissiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","gltfAccessor","bytesPerComponent","components","bytesPerElement","value","bufferView","sparse","buffer","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","result","Uint8Array","elementOffset","set","gltfTexture","source","gltfSampler","key","glEnum","_enumSamplerParameter","gltfImage","preloadedImage","gltfBufferView","bufferIndex","data","_resolveCamera","gltfCamera","perspective","orthographic","postProcessGLTF"],"sources":["../../../src/lib/api/post-process-gltf.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {ParseGLTFOptions} from '../parsers/parse-gltf';\n\nimport type {\n GLTF,\n GLTFAccessor,\n GLTFBufferView,\n GLTFCamera,\n GLTFImage,\n GLTFMaterial,\n GLTFMesh,\n GLTFNode,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture\n} from '../types/gltf-json-schema';\n\nimport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFBufferPostprocessed,\n GLTFBufferViewPostprocessed,\n GLTFCameraPostprocessed,\n GLTFImagePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFNodePostprocessed,\n GLTFSamplerPostprocessed,\n GLTFScenePostprocessed,\n GLTFSkinPostprocessed,\n GLTFTexturePostprocessed,\n GLTFMeshPrimitivePostprocessed\n} from '../types/gltf-postprocessed-schema';\n\nimport {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER_PARAMETERS = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction makeDefaultSampler(): GLTFSamplerPostprocessed {\n return {\n id: 'default-sampler',\n parameters: DEFAULT_SAMPLER_PARAMETERS\n };\n}\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n // @ts-expect-error\n jsonUnprocessed: GLTF;\n // @ts-expect-error\n json: GLTFPostprocessed;\n buffers: {\n arrayBuffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n }[] = [];\n images: any[] = [];\n\n postProcess(gltf: GLTFWithBuffers, options = {}) {\n const {json, buffers = [], images = []} = gltf;\n // @ts-expect-error\n const {baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.buffers = buffers;\n this.images = images;\n this.jsonUnprocessed = json;\n\n this.json = this._resolveTree(gltf.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity, max-statements\n _resolveTree(gltf: GLTF, options = {}): GLTFPostprocessed {\n // @ts-expect-error\n const json: GLTFPostprocessed = {...gltf};\n this.json = json;\n\n if (gltf.bufferViews) {\n json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (gltf.images) {\n json.images = gltf.images.map((image, i) => this._resolveImage(image, i));\n }\n if (gltf.samplers) {\n json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (gltf.textures) {\n json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (gltf.accessors) {\n json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (gltf.materials) {\n json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (gltf.meshes) {\n json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (gltf.nodes) {\n json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));\n json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));\n }\n if (gltf.skins) {\n json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (gltf.scenes) {\n json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (typeof this.json.scene === 'number' && json.scenes) {\n json.scene = json.scenes[this.json.scene];\n }\n\n return json;\n }\n\n getScene(index: number): GLTFScenePostprocessed {\n return this._get(this.json.scenes, index);\n }\n\n getNode(index: number): GLTFNodePostprocessed {\n return this._get(this.json.nodes, index);\n }\n\n getSkin(index: number): GLTFSkinPostprocessed {\n return this._get(this.json.skins, index);\n }\n\n getMesh(index: number): GLTFMeshPostprocessed {\n return this._get(this.json.meshes, index);\n }\n\n getMaterial(index: number): GLTFMaterialPostprocessed {\n return this._get(this.json.materials, index);\n }\n\n getAccessor(index: number): GLTFAccessorPostprocessed {\n return this._get(this.json.accessors, index);\n }\n\n getCamera(index: number): GLTFCameraPostprocessed {\n return this._get(this.json.cameras, index);\n }\n\n getTexture(index: number): GLTFTexturePostprocessed {\n return this._get(this.json.textures, index);\n }\n\n getSampler(index: number): GLTFSamplerPostprocessed {\n return this._get(this.json.samplers, index);\n }\n\n getImage(index: number): GLTFImagePostprocessed {\n return this._get(this.json.images, index);\n }\n\n getBufferView(index: number): GLTFBufferViewPostprocessed {\n return this._get(this.json.bufferViews, index);\n }\n\n getBuffer(index: number): GLTFBufferPostprocessed {\n return this._get(this.json.buffers, index);\n }\n\n _get<T>(array: T[] | undefined, index: number): T {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = array && array[index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object as T;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene: GLTFScene, index: number): GLTFScenePostprocessed {\n return {\n ...scene,\n // @ts-ignore\n id: scene.id || `scene-${index}`,\n nodes: (scene.nodes || []).map((node) => this.getNode(node))\n };\n }\n\n _resolveNode(gltfNode: GLTFNode, index: number): GLTFNodePostprocessed {\n // @ts-expect-error\n const node: GLTFNodePostprocessed = {\n ...gltfNode,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfNode?.id || `node-${index}`\n };\n if (gltfNode.mesh !== undefined) {\n node.mesh = this.getMesh(gltfNode.mesh);\n }\n if (gltfNode.camera !== undefined) {\n node.camera = this.getCamera(gltfNode.camera);\n }\n if (gltfNode.skin !== undefined) {\n node.skin = this.getSkin(gltfNode.skin);\n }\n\n // TODO deprecated - Delete in v4.0?\n // @ts-expect-error node.meshes does not seem to be part of the GLTF standard\n if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {\n // @ts-expect-error\n node.mesh = gltfNode.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n\n return node;\n }\n\n _resolveNodeChildren(node: GLTFNodePostprocessed): GLTFNodePostprocessed {\n if (node.children) {\n // @ts-expect-error node.children are numbers at this stage\n node.children = node.children.map((child) => this.getNode(child));\n }\n return node;\n }\n\n _resolveSkin(gltfSkin: GLTFSkin, index: number): GLTFSkinPostprocessed {\n const inverseBindMatrices =\n typeof gltfSkin.inverseBindMatrices === 'number'\n ? this.getAccessor(gltfSkin.inverseBindMatrices)\n : undefined;\n\n return {\n ...gltfSkin,\n id: gltfSkin.id || `skin-${index}`,\n inverseBindMatrices\n };\n }\n\n _resolveMesh(gltfMesh: GLTFMesh, index: number): GLTFMeshPostprocessed {\n const mesh: GLTFMeshPostprocessed = {\n ...gltfMesh,\n id: gltfMesh.id || `mesh-${index}`,\n primitives: []\n };\n if (gltfMesh.primitives) {\n mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {\n const primitive: GLTFMeshPrimitivePostprocessed = {\n ...gltfPrimitive,\n attributes: {},\n indices: undefined,\n material: undefined\n };\n const attributes = gltfPrimitive.attributes;\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (gltfPrimitive.indices !== undefined) {\n primitive.indices = this.getAccessor(gltfPrimitive.indices);\n }\n if (gltfPrimitive.material !== undefined) {\n primitive.material = this.getMaterial(gltfPrimitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(gltfMaterial: GLTFMaterial, index: number): GLTFMaterialPostprocessed {\n // @ts-expect-error\n const material: GLTFMaterialPostprocessed = {\n ...gltfMaterial,\n // @ts-expect-error\n id: gltfMaterial.id || `material-${index}`\n };\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlusionTexture = {...material.occlusionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emissiveTexture = {...material.emissiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(gltfAccessor: GLTFAccessor, index: number): GLTFAccessorPostprocessed {\n // Look up enums\n const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);\n const components = getSizeFromAccessorType(gltfAccessor.type);\n const bytesPerElement = bytesPerComponent * components;\n\n const accessor: GLTFAccessorPostprocessed = {\n ...gltfAccessor,\n // @ts-expect-error\n id: gltfAccessor.id || `accessor-${index}`,\n bytesPerComponent,\n components,\n bytesPerElement,\n value: undefined!,\n bufferView: undefined!,\n sparse: undefined!\n };\n if (gltfAccessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);\n }\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(\n buffer,\n byteOffset: number,\n byteStride: number,\n bytesPerElement: number,\n count: number\n ): ArrayBufferLike {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(gltfTexture: GLTFTexture, index: number): GLTFTexturePostprocessed {\n return {\n ...gltfTexture,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfTexture.id || `texture-${index}`,\n sampler:\n typeof gltfTexture.sampler === 'number'\n ? this.getSampler(gltfTexture.sampler)\n : makeDefaultSampler(),\n source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined\n };\n }\n\n _resolveSampler(gltfSampler: GLTFSampler, index: number): GLTFSamplerPostprocessed {\n const sampler: GLTFSamplerPostprocessed = {\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfSampler.id || `sampler-${index}`,\n ...gltfSampler,\n parameters: {}\n };\n // Map textual parameters to GL parameter values\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key: string): number {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(gltfImage: GLTFImage, index: number): GLTFImagePostprocessed {\n const image: GLTFImagePostprocessed = {\n ...gltfImage,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfImage.id || `image-${index}`,\n image: null!,\n bufferView:\n gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined\n };\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(gltfBufferView: GLTFBufferView, index: number): GLTFBufferViewPostprocessed {\n const bufferIndex = gltfBufferView.buffer;\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // Add offset of buffer, then offset of buffer view\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n if (gltfBufferView.byteOffset) {\n byteOffset += gltfBufferView.byteOffset;\n }\n\n const bufferView: GLTFBufferViewPostprocessed = {\n // // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: `bufferView-${index}`,\n ...gltfBufferView,\n // ...this.buffers[bufferIndex],\n buffer: this.buffers[bufferIndex],\n data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)\n };\n\n return bufferView;\n }\n\n _resolveCamera(gltfCamera: GLTFCamera, index): GLTFCameraPostprocessed {\n const camera: GLTFCameraPostprocessed = {\n ...gltfCamera,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfCamera.id || `camera-${index}`\n };\n\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(\n gltf: GLTFWithBuffers,\n options?: ParseGLTFOptions\n): GLTFPostprocessed {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-glb.js","names":["copyPaddedStringToDataView","copyPaddedArrayBufferToDataView","MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","arguments","length","undefined","options","magic","version","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","jsonByteLength","byteOffsetBinHeader","binByteLength","fileByteLength"],"sources":["../../../src/lib/encoders/encode-glb.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements */\nimport {\n copyPaddedStringToDataView,\n copyPaddedArrayBufferToDataView\n} from '@loaders.gl/loader-utils';\n// import type {GLB} from '../types/glb-types';\n\nconst MAGIC_glTF = 0x46546c67; // glTF in ASCII\nconst MAGIC_JSON = 0x4e4f534a; // JSON in ASCII\nconst MAGIC_BIN = 0x004e4942; // BIN\\0 in ASCII\n\nconst LE = true; // Binary GLTF is little endian.\n\nexport type GLBEncodeOptions = {};\n\n/**\n * Encode the full GLB buffer with header etc\n *\n * @param glb\n * @param dataView - if `null`, does not encode but just calculates length\n * @param byteOffset\n * @param options\n * @returns\n *\n * @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#glb-file-format-specification\n * @todo type GLB argument\n */\nexport function encodeGLBSync(\n glb,\n dataView: DataView | null,\n byteOffset = 0,\n options: GLBEncodeOptions = {}\n) {\n const {magic = MAGIC_glTF, version = 2, json = {}, binary} = glb;\n\n const byteOffsetStart = byteOffset;\n\n // Write GLB Header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, magic, LE); // Magic number (the ASCII string 'glTF').\n dataView.setUint32(byteOffset + 4, version, LE); // Version 2 of binary glTF container format uint32\n dataView.setUint32(byteOffset + 8, 0, LE); // Total byte length of generated file (uint32), will be set last\n }\n const byteOffsetFileLength = byteOffset + 8;\n byteOffset += 12; // GLB_FILE_HEADER_SIZE\n\n // Write the JSON chunk header\n const byteOffsetJsonHeader = byteOffset;\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length of json chunk (will be written later)\n dataView.setUint32(byteOffset + 4, MAGIC_JSON, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n // Write the JSON chunk\n const jsonString = JSON.stringify(json);\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, jsonString, 4);\n\n // Now we know the JSON chunk length so we can write it.\n if (dataView) {\n const jsonByteLength = byteOffset - byteOffsetJsonHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetJsonHeader + 0, jsonByteLength, LE); // Byte length of json chunk (uint32)\n }\n\n // Write the BIN chunk if present. The BIN chunk is optional.\n if (binary) {\n const byteOffsetBinHeader = byteOffset;\n\n // Write the BIN chunk header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length BIN (uint32)\n dataView.setUint32(byteOffset + 4, MAGIC_BIN, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n byteOffset = copyPaddedArrayBufferToDataView(dataView, byteOffset, binary, 4);\n\n // Now we know the BIN chunk length so we can write it.\n if (dataView) {\n const binByteLength = byteOffset - byteOffsetBinHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetBinHeader + 0, binByteLength, LE); // Byte length BIN (uint32)\n }\n }\n\n // Now we know the glb file length so we can write it.\n if (dataView) {\n const fileByteLength = byteOffset - byteOffsetStart;\n dataView.setUint32(byteOffsetFileLength, fileByteLength, LE); // Total byte length of generated file (uint32)\n }\n\n return byteOffset;\n}\n"],"mappings":"AACA,SACEA,0BAA0B,EAC1BC,+BAA+B,QAC1B,0BAA0B;AAGjC,MAAMC,UAAU,GAAG,UAAU;AAC7B,MAAMC,UAAU,GAAG,UAAU;AAC7B,MAAMC,SAAS,GAAG,UAAU;AAE5B,MAAMC,EAAE,GAAG,IAAI;AAgBf,OAAO,SAASC,aAAaA,CAC3BC,GAAG,EACHC,QAAyB,EAGzB;EAAA,IAFAC,UAAU,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAAA,IACdG,OAAyB,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAE9B,MAAM;IAACI,KAAK,GAAGZ,UAAU;IAAEa,OAAO,GAAG,CAAC;IAAEC,IAAI,GAAG,CAAC,CAAC;IAAEC;EAAM,CAAC,GAAGV,GAAG;EAEhE,MAAMW,eAAe,GAAGT,UAAU;EAGlC,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAEK,KAAK,EAAET,EAAE,CAAC;IAC7CG,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAEM,OAAO,EAAEV,EAAE,CAAC;IAC/CG,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAE,CAAC,EAAEJ,EAAE,CAAC;EAC3C;EACA,MAAMe,oBAAoB,GAAGX,UAAU,GAAG,CAAC;EAC3CA,UAAU,IAAI,EAAE;EAGhB,MAAMY,oBAAoB,GAAGZ,UAAU;EACvC,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAE,CAAC,EAAEJ,EAAE,CAAC;IACzCG,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAEN,UAAU,EAAEE,EAAE,CAAC;EACpD;EACAI,UAAU,IAAI,CAAC;EAGf,MAAMa,UAAU,GAAGC,IAAI,CAACC,SAAS,CAACR,IAAI,CAAC;EACvCP,UAAU,GAAGT,0BAA0B,CAACQ,QAAQ,EAAEC,UAAU,EAAEa,UAAU,EAAE,CAAC,CAAC;EAG5E,IAAId,QAAQ,EAAE;IACZ,MAAMiB,cAAc,GAAGhB,UAAU,GAAGY,oBAAoB,GAAG,CAAC;IAC5Db,QAAQ,CAACW,SAAS,CAACE,oBAAoB,GAAG,CAAC,EAAEI,cAAc,EAAEpB,EAAE,CAAC;EAClE;EAGA,IAAIY,MAAM,EAAE;IACV,MAAMS,mBAAmB,GAAGjB,UAAU;IAGtC,IAAID,QAAQ,EAAE;MACZA,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAE,CAAC,EAAEJ,EAAE,CAAC;MACzCG,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAEL,SAAS,EAAEC,EAAE,CAAC;IACnD;IACAI,UAAU,IAAI,CAAC;IAEfA,UAAU,GAAGR,+BAA+B,CAACO,QAAQ,EAAEC,UAAU,EAAEQ,MAAM,EAAE,CAAC,CAAC;IAG7E,IAAIT,QAAQ,EAAE;MACZ,MAAMmB,aAAa,GAAGlB,UAAU,GAAGiB,mBAAmB,GAAG,CAAC;MAC1DlB,QAAQ,CAACW,SAAS,CAACO,mBAAmB,GAAG,CAAC,EAAEC,aAAa,EAAEtB,EAAE,CAAC;IAChE;EACF;EAGA,IAAIG,QAAQ,EAAE;IACZ,MAAMoB,cAAc,GAAGnB,UAAU,GAAGS,eAAe;IACnDV,QAAQ,CAACW,SAAS,CAACC,oBAAoB,EAAEQ,cAAc,EAAEvB,EAAE,CAAC;EAC9D;EAEA,OAAOI,UAAU;AACnB"}
@@ -1,4 +1,4 @@
1
- import { encodeGLBSync } from './encode-glb';
1
+ import { encodeGLBSync } from "./encode-glb.js";
2
2
  export function encodeGLTFSync(gltf, arrayBuffer, byteOffset, options) {
3
3
  convertBuffersToBase64(gltf);
4
4
  return encodeGLBSync(gltf, arrayBuffer, byteOffset, options);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-gltf.js","names":["encodeGLBSync","encodeGLTFSync","gltf","arrayBuffer","byteOffset","options","convertBuffersToBase64","firstBuffer","arguments","length","undefined","buffers","Error"],"sources":["../../../src/lib/encoders/encode-gltf.ts"],"sourcesContent":["import {encodeGLBSync} from './encode-glb';\n\nexport type GLTFEncodeOptions = Record<string, any>;\n\n/**\n * Encode the full glTF file as a binary GLB file\n * Returns an ArrayBuffer that represents the complete GLB image that can be saved to file\n *\n * @todo - Does not support encoding to non-GLB versions of glTF format. Other formats\n * - Encode as a textual JSON file with binary data in base64 data URLs.\n * - Encode as a JSON with all images (and buffers?) in separate binary files\n *\n * glb-file-format-specification\n * @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\n *\n * @param gltf\n * @param arrayBuffer\n * @param byteOffset\n * @param options\n * @returns\n */\nexport function encodeGLTFSync(gltf, arrayBuffer, byteOffset, options) {\n convertBuffersToBase64(gltf);\n\n // TODO: Copy buffers to binary\n\n return encodeGLBSync(gltf, arrayBuffer, byteOffset, options);\n}\n\nfunction convertBuffersToBase64(gltf, {firstBuffer = 0} = {}) {\n if (gltf.buffers && gltf.buffers.length > firstBuffer) {\n throw new Error('encodeGLTF: multiple buffers not yet implemented');\n }\n}\n"],"mappings":"SAAQA,aAAa;AAqBrB,OAAO,SAASC,cAAcA,CAACC,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAE;EACrEC,sBAAsB,CAACJ,IAAI,CAAC;EAI5B,OAAOF,aAAa,CAACE,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,CAAC;AAC9D;AAEA,SAASC,sBAAsBA,CAACJ,IAAI,EAA0B;EAAA,IAAxB;IAACK,WAAW,GAAG;EAAC,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC1D,IAAIN,IAAI,CAACS,OAAO,IAAIT,IAAI,CAACS,OAAO,CAACF,MAAM,GAAGF,WAAW,EAAE;IACrD,MAAM,IAAIK,KAAK,CAAC,kDAAkD,CAAC;EACrE;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"EXT_mesh_features.d.ts","sourceRoot":"","sources":["../../../src/lib/extensions/EXT_mesh_features.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,IAAI,EAAoB,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAUpD,eAAO,MAAM,IAAI,sBAAyB,CAAC;AAE3C,wBAAsB,MAAM,CAAC,QAAQ,EAAE;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9F"}
1
+ {"version":3,"file":"EXT_mesh_features.d.ts","sourceRoot":"","sources":["../../../src/lib/extensions/EXT_mesh_features.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,IAAI,EAAoB,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAUpD,eAAO,MAAM,IAAI,sBAAyB,CAAC;AAE3C,wBAAsB,MAAM,CAAC,QAAQ,EAAE;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9F"}