@loaders.gl/gltf 4.0.0-beta.2 → 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
@@ -1,5 +1,8 @@
1
1
  // TODO - GLTFScenegraph should use these
2
2
  import {assert} from '../utils/assert';
3
+ import type {TypedArray} from '@loaders.gl/schema';
4
+ import type {GLTF, GLTFExternalBuffer, GLTFAccessor} from '../types/gltf-types';
5
+ import {getAccessorArrayTypeAndLength} from './gltf-utils';
3
6
 
4
7
  // accepts buffer view index or buffer view object
5
8
  // returns a `Uint8Array`
@@ -24,18 +27,54 @@ export function getTypedArrayForImageData(json, buffers, imageIndex) {
24
27
  return getTypedArrayForBufferView(json, buffers, bufferViewIndex);
25
28
  }
26
29
 
27
- /*
28
- // accepts accessor index or accessor object
29
- // returns a typed array with type that matches the types
30
- export function getTypedArrayForAccessor(accessor) {
31
- accessor = this.getAccessor(accessor);
32
- const bufferView = this.getBufferView(accessor.bufferView);
33
- const buffer = this.getBuffer(bufferView.buffer);
34
- const arrayBuffer = buffer.data;
35
-
36
- // Create a new typed array as a view into the combined buffer
37
- const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);
38
- const byteOffset = bufferView.byteOffset + accessor.byteOffset;
39
- return new ArrayType(arrayBuffer, byteOffset, length);
30
+ /**
31
+ * Gets data pointed by the accessor.
32
+ * @param json - json part of gltf content of a GLTF tile.
33
+ * @param buffers - Array containing buffers of data.
34
+ * @param accessor - accepts accessor index or accessor object.
35
+ * @returns {TypedArray} Typed array with type matching the type of data poited by the accessor.
36
+ */
37
+ // eslint-disable-next-line complexity
38
+ export function getTypedArrayForAccessor(
39
+ json: GLTF,
40
+ buffers: GLTFExternalBuffer[],
41
+ accessor: GLTFAccessor | number
42
+ ): TypedArray {
43
+ const gltfAccessor = typeof accessor === 'number' ? json.accessors?.[accessor] : accessor;
44
+ if (!gltfAccessor) {
45
+ throw new Error(`No gltf accessor ${accessor}`);
46
+ }
47
+ const bufferView = json.bufferViews?.[gltfAccessor.bufferView || 0];
48
+ if (!bufferView) {
49
+ throw new Error(`No gltf buffer view for accessor ${bufferView}`);
50
+ }
51
+ // Get `arrayBuffer` the `bufferView` looks at
52
+ const {arrayBuffer, byteOffset: bufferByteOffset} = buffers[bufferView.buffer];
53
+ // Resulting byteOffset is sum of the buffer, accessor and bufferView byte offsets
54
+ const byteOffset =
55
+ (bufferByteOffset || 0) + (gltfAccessor.byteOffset || 0) + (bufferView.byteOffset || 0);
56
+ // Deduce TypedArray type and its length from `accessor` and `bufferView` data
57
+ const {ArrayType, length, componentByteSize, numberOfComponentsInElement} =
58
+ getAccessorArrayTypeAndLength(gltfAccessor, bufferView);
59
+ // 'length' is a whole number of components of all elements in the buffer pointed by the accessor
60
+ // Multiplier to calculate the address of the element in the arrayBuffer
61
+ const elementByteSize = componentByteSize * numberOfComponentsInElement;
62
+ const elementAddressScale = bufferView.byteStride || elementByteSize;
63
+ // Creare an array of component's type where all components (not just elements) will reside
64
+ if (typeof bufferView.byteStride === 'undefined' || bufferView.byteStride === elementByteSize) {
65
+ // No iterleaving
66
+ const result: TypedArray = new ArrayType(arrayBuffer, byteOffset, length);
67
+ return result;
68
+ }
69
+ // Iterleaving
70
+ const result: TypedArray = new ArrayType(length);
71
+ for (let i = 0; i < gltfAccessor.count; i++) {
72
+ const values = new ArrayType(
73
+ arrayBuffer,
74
+ byteOffset + i * elementAddressScale,
75
+ numberOfComponentsInElement
76
+ );
77
+ result.set(values, i * numberOfComponentsInElement);
78
+ }
79
+ return result;
40
80
  }
41
- */
@@ -1,6 +1,5 @@
1
1
  import {assert} from '../utils/assert';
2
2
 
3
- import type {GLTFWithBuffers} from '../types/gltf-types';
4
3
  import type {GLTFPostprocessed} from '../types/gltf-postprocessed-schema';
5
4
  import {BYTES, COMPONENTS} from '../gltf-utils/gltf-constants';
6
5
 
@@ -19,8 +18,6 @@ type TypedArrayConstructor =
19
18
  | Uint16ArrayConstructor
20
19
  | Int32ArrayConstructor
21
20
  | Uint32ArrayConstructor
22
- | Int32ArrayConstructor
23
- | Uint32ArrayConstructor
24
21
  | Float32ArrayConstructor
25
22
  | Float64ArrayConstructor;
26
23
 
@@ -85,42 +82,9 @@ export function getAccessorArrayTypeAndLength(accessor, bufferView) {
85
82
  const length = accessor.count * components;
86
83
  const byteLength = accessor.count * components * bytesPerComponent;
87
84
  assert(byteLength >= 0 && byteLength <= bufferView.byteLength);
88
- return {ArrayType, length, byteLength};
89
- }
90
-
91
- export function getFloat32ArrayForAccessor(
92
- gltfData: GLTFWithBuffers,
93
- texCoordAccessor: number
94
- ): Float32Array | null {
95
- const accessor = gltfData.json.accessors?.[texCoordAccessor];
96
- if (accessor && typeof accessor.bufferView !== 'undefined') {
97
- // Get `bufferView` of the `accessor`
98
- const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
99
- if (bufferView) {
100
- // Get `arrayBuffer` the `bufferView` look at
101
- const {arrayBuffer, byteOffset: bufferByteOffset} = gltfData.buffers[bufferView.buffer];
102
- // Resulting byteOffset is sum of the buffer, accessor and bufferView byte offsets
103
- const byteOffset =
104
- (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);
105
- // Deduce TypedArray type and its length from `accessor` and `bufferView` data
106
- const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);
107
- // Number of bytes each component occupies
108
- const bytes = BYTES[accessor.componentType];
109
- // Number of components. For the `TEXCOORD_0` with `VEC2` type, it must return 2
110
- const components = COMPONENTS[accessor.type];
111
- // Multiplier to calculate the address of the `TEXCOORD_0` element in the arrayBuffer
112
- const elementAddressScale = bufferView.byteStride || bytes * components;
113
- // Data transform to Float32Array
114
- const result = new Float32Array(length);
115
- for (let i = 0; i < accessor.count; i++) {
116
- // Take [u, v] couple from the arrayBuffer
117
- const uv = new ArrayType(arrayBuffer, byteOffset + i * elementAddressScale, 2);
118
- result.set(uv, i * components);
119
- }
120
- return result;
121
- }
122
- }
123
- return null;
85
+ const componentByteSize = BYTES[accessor.componentType];
86
+ const numberOfComponentsInElement = COMPONENTS[accessor.type];
87
+ return {ArrayType, length, byteLength, componentByteSize, numberOfComponentsInElement};
124
88
  }
125
89
 
126
90
  /**
@@ -34,7 +34,9 @@ export type GLTF_EXT_mesh_features_featureId = {
34
34
  * (e.g. a value of `0` corresponds to `_FEATURE_ID_0`).
35
35
  */
36
36
  attribute?: number;
37
- /** A texture containing feature IDs. */
37
+ /** A texture containing feature IDs.
38
+ * @see https://github.com/CesiumGS/glTF/blob/c38f7f37e894004353c15cd0481bc5b7381ce841/extensions/2.0/Vendor/EXT_mesh_features/schema/featureIdTexture.schema.json
39
+ */
38
40
  texture?: GLTFTextureInfoMetadata;
39
41
  /** The index of the property table containing per-feature property values. Only applicable when using the `EXT_structural_metadata` extension. */
40
42
  propertyTable?: number;
@@ -358,6 +358,8 @@ export type GLTFTextureInfo = {
358
358
  index: GLTFId;
359
359
  /**
360
360
  * The set index of texture's TEXCOORD attribute used for texture coordinate mapping.
361
+ * Default is 0
362
+ * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/specification/2.0/schema/textureInfo.schema.json
361
363
  */
362
364
  texCoord?: number;
363
365
  extensions?: Record<string, any>;
@@ -371,6 +373,11 @@ export type GLTFTextureInfo = {
371
373
  * https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features
372
374
  */
373
375
  export type GLTFTextureInfoMetadata = GLTFTextureInfo & {
376
+ /**
377
+ * For EXT_structural_metadata and Ext_mesh_features the channels default is [0]
378
+ * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features/schema/featureIdTexture.schema.json
379
+ * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_structural_metadata/schema/propertyTexture.property.schema.json
380
+ */
374
381
  channels: number[] | string;
375
382
  /** For internal usage */
376
383
  data?: unknown;
@@ -13,7 +13,7 @@ export type GLTFWithBuffers = {
13
13
  images?: GLTFExternalImage[];
14
14
  };
15
15
 
16
- type GLTFExternalBuffer = {
16
+ export type GLTFExternalBuffer = {
17
17
  arrayBuffer: ArrayBuffer;
18
18
  byteOffset: number;
19
19
  byteLength: number;
package/dist/bundle.d.ts DELETED
@@ -1,2 +0,0 @@
1
- declare const moduleExports: any;
2
- //# sourceMappingURL=bundle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,KAAqB,CAAC"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- var moduleExports = require('./index');
4
- globalThis.loaders = globalThis.loaders || {};
5
- module.exports = Object.assign(globalThis.loaders, moduleExports);
6
- //# sourceMappingURL=bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
@@ -1,54 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.GLBLoader = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _version = require("./lib/utils/version");
11
- var _parseGlb = require("./lib/parsers/parse-glb");
12
- var GLBLoader = {
13
- name: 'GLB',
14
- id: 'glb',
15
- module: 'gltf',
16
- version: _version.VERSION,
17
- extensions: ['glb'],
18
- mimeTypes: ['model/gltf-binary'],
19
- binary: true,
20
- parse: parse,
21
- parseSync: parseSync,
22
- options: {
23
- glb: {
24
- strict: false
25
- }
26
- }
27
- };
28
- exports.GLBLoader = GLBLoader;
29
- function parse(_x, _x2) {
30
- return _parse.apply(this, arguments);
31
- }
32
- function _parse() {
33
- _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
34
- return _regenerator.default.wrap(function _callee$(_context) {
35
- while (1) switch (_context.prev = _context.next) {
36
- case 0:
37
- return _context.abrupt("return", parseSync(arrayBuffer, options));
38
- case 1:
39
- case "end":
40
- return _context.stop();
41
- }
42
- }, _callee);
43
- }));
44
- return _parse.apply(this, arguments);
45
- }
46
- function parseSync(arrayBuffer, options) {
47
- var _ref = options || {},
48
- _ref$byteOffset = _ref.byteOffset,
49
- byteOffset = _ref$byteOffset === void 0 ? 0 : _ref$byteOffset;
50
- var glb = {};
51
- (0, _parseGlb.parseGLBSync)(glb, arrayBuffer, byteOffset, options === null || options === void 0 ? void 0 : options.glb);
52
- return glb;
53
- }
54
- //# sourceMappingURL=glb-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glb-loader.js","names":["_version","require","_parseGlb","GLBLoader","name","id","module","version","VERSION","extensions","mimeTypes","binary","parse","parseSync","options","glb","strict","exports","_x","_x2","_parse","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","stop","_ref","_ref$byteOffset","byteOffset","parseGLBSync"],"sources":["../../src/glb-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {GLB} from './lib/types/glb-types';\nimport type {ParseGLBOptions} from './lib/parsers/parse-glb';\nimport {VERSION} from './lib/utils/version';\nimport {parseGLBSync} from './lib/parsers/parse-glb';\n\n/** GLB loader options */\nexport type GLBLoaderOptions = LoaderOptions & {\n /** GLB Parser Options */\n glb?: ParseGLBOptions;\n /** GLB specific: byteOffset to start parsing from */\n byteOffset?: number;\n};\n\n/**\n * GLB Loader -\n * GLB is the binary container format for GLTF\n */\nexport const GLBLoader: LoaderWithParser<GLB, never, GLBLoaderOptions> = {\n name: 'GLB',\n id: 'glb',\n module: 'gltf',\n version: VERSION,\n extensions: ['glb'],\n mimeTypes: ['model/gltf-binary'],\n binary: true,\n parse,\n parseSync,\n options: {\n glb: {\n strict: false // Enables deprecated XVIZ support (illegal CHUNK formats)\n }\n }\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: GLBLoaderOptions): Promise<GLB> {\n return parseSync(arrayBuffer, options);\n}\n\nfunction parseSync(arrayBuffer: ArrayBuffer, options?: GLBLoaderOptions): GLB {\n const {byteOffset = 0} = options || {};\n const glb: GLB = {} as GLB;\n parseGLBSync(glb, arrayBuffer, byteOffset, options?.glb);\n return glb;\n}\n"],"mappings":";;;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAcO,IAAME,SAAyD,GAAG;EACvEC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,mBAAmB,CAAC;EAChCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAALA,KAAK;EACLC,SAAS,EAATA,SAAS;EACTC,OAAO,EAAE;IACPC,GAAG,EAAE;MACHC,MAAM,EAAE;IACV;EACF;AACF,CAAC;AAACC,OAAA,CAAAd,SAAA,GAAAA,SAAA;AAAA,SAEaS,KAAKA,CAAAM,EAAA,EAAAC,GAAA;EAAA,OAAAC,MAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,OAAA;EAAAA,MAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAApB,SAAAC,QAAqBC,WAAwB,EAAEd,OAA0B;IAAA,OAAAW,YAAA,CAAAD,OAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,OAAAF,QAAA,CAAAG,MAAA,WAChErB,SAAS,CAACe,WAAW,EAAEd,OAAO,CAAC;QAAA;QAAA;UAAA,OAAAiB,QAAA,CAAAI,IAAA;MAAA;IAAA,GAAAR,OAAA;EAAA,CACvC;EAAA,OAAAP,MAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAAST,SAASA,CAACe,WAAwB,EAAEd,OAA0B,EAAO;EAC5E,IAAAsB,IAAA,GAAyBtB,OAAO,IAAI,CAAC,CAAC;IAAAuB,eAAA,GAAAD,IAAA,CAA/BE,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,CAAC,GAAAA,eAAA;EACrB,IAAMtB,GAAQ,GAAG,CAAC,CAAQ;EAC1B,IAAAwB,sBAAY,EAACxB,GAAG,EAAEa,WAAW,EAAEU,UAAU,EAAExB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,GAAG,CAAC;EACxD,OAAOA,GAAG;AACZ"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports._TypecheckGLBLoader = exports.GLBWriter = void 0;
7
- var _encodeGlb = require("./lib/encoders/encode-glb");
8
- var _version = require("./lib/utils/version");
9
- var GLBWriter = {
10
- name: 'GLB',
11
- id: 'glb',
12
- module: 'gltf',
13
- version: _version.VERSION,
14
- extensions: ['glb'],
15
- mimeTypes: ['model/gltf-binary'],
16
- binary: true,
17
- encodeSync: encodeSync,
18
- options: {
19
- glb: {}
20
- }
21
- };
22
- exports.GLBWriter = GLBWriter;
23
- function encodeSync(glb, options) {
24
- var _options$byteOffset = options.byteOffset,
25
- byteOffset = _options$byteOffset === void 0 ? 0 : _options$byteOffset;
26
- var byteLength = (0, _encodeGlb.encodeGLBSync)(glb, null, byteOffset, options);
27
- var arrayBuffer = new ArrayBuffer(byteLength);
28
- var dataView = new DataView(arrayBuffer);
29
- (0, _encodeGlb.encodeGLBSync)(glb, dataView, byteOffset, options);
30
- return arrayBuffer;
31
- }
32
- var _TypecheckGLBLoader = GLBWriter;
33
- exports._TypecheckGLBLoader = _TypecheckGLBLoader;
34
- //# sourceMappingURL=glb-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glb-writer.js","names":["_encodeGlb","require","_version","GLBWriter","name","id","module","version","VERSION","extensions","mimeTypes","binary","encodeSync","options","glb","exports","_options$byteOffset","byteOffset","byteLength","encodeGLBSync","arrayBuffer","ArrayBuffer","dataView","DataView","_TypecheckGLBLoader"],"sources":["../../src/glb-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {GLB} from './lib/types/glb-types';\nimport type {GLBEncodeOptions} from './lib/encoders/encode-glb';\nimport {encodeGLBSync} from './lib/encoders/encode-glb';\nimport {VERSION} from './lib/utils/version';\n\nexport type GLBWriterOptions = WriterOptions & {\n glb?: GLBEncodeOptions;\n};\n\n/**\n * GLB exporter\n * GLB is the binary container format for GLTF\n */\nexport const GLBWriter: Writer<GLB, never, GLBWriterOptions> = {\n name: 'GLB',\n id: 'glb',\n module: 'gltf',\n version: VERSION,\n\n extensions: ['glb'],\n mimeTypes: ['model/gltf-binary'],\n binary: true,\n\n encodeSync,\n\n options: {\n glb: {}\n }\n};\n\nfunction encodeSync(glb, options) {\n const {byteOffset = 0} = options;\n\n // Calculate length and allocate buffer\n const byteLength = encodeGLBSync(glb, null, byteOffset, options);\n const arrayBuffer = new ArrayBuffer(byteLength);\n\n // Encode into buffer\n const dataView = new DataView(arrayBuffer);\n encodeGLBSync(glb, dataView, byteOffset, options);\n\n return arrayBuffer;\n}\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckGLBLoader: Writer = GLBWriter;\n"],"mappings":";;;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAUO,IAAME,SAA+C,GAAG;EAC7DC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEC,gBAAO;EAEhBC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,mBAAmB,CAAC;EAChCC,MAAM,EAAE,IAAI;EAEZC,UAAU,EAAVA,UAAU;EAEVC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAZ,SAAA,GAAAA,SAAA;AAEF,SAASS,UAAUA,CAACE,GAAG,EAAED,OAAO,EAAE;EAChC,IAAAG,mBAAA,GAAyBH,OAAO,CAAzBI,UAAU;IAAVA,UAAU,GAAAD,mBAAA,cAAG,CAAC,GAAAA,mBAAA;EAGrB,IAAME,UAAU,GAAG,IAAAC,wBAAa,EAACL,GAAG,EAAE,IAAI,EAAEG,UAAU,EAAEJ,OAAO,CAAC;EAChE,IAAMO,WAAW,GAAG,IAAIC,WAAW,CAACH,UAAU,CAAC;EAG/C,IAAMI,QAAQ,GAAG,IAAIC,QAAQ,CAACH,WAAW,CAAC;EAC1C,IAAAD,wBAAa,EAACL,GAAG,EAAEQ,QAAQ,EAAEL,UAAU,EAAEJ,OAAO,CAAC;EAEjD,OAAOO,WAAW;AACpB;AAGO,IAAMI,mBAA2B,GAAGrB,SAAS;AAACY,OAAA,CAAAS,mBAAA,GAAAA,mBAAA"}
@@ -1,81 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.GLTFLoader = void 0;
8
- exports.parse = parse;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
- var _version = require("./lib/utils/version");
13
- var _parseGltf = require("./lib/parsers/parse-gltf");
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
- var GLTFLoader = {
17
- name: 'glTF',
18
- id: 'gltf',
19
- module: 'gltf',
20
- version: _version.VERSION,
21
- extensions: ['gltf', 'glb'],
22
- mimeTypes: ['model/gltf+json', 'model/gltf-binary'],
23
- text: true,
24
- binary: true,
25
- tests: ['glTF'],
26
- parse: parse,
27
- options: {
28
- gltf: {
29
- normalize: true,
30
- loadBuffers: true,
31
- loadImages: true,
32
- decompressMeshes: true
33
- },
34
- log: console
35
- },
36
- deprecatedOptions: {
37
- fetchImages: 'gltf.loadImages',
38
- createImages: 'gltf.loadImages',
39
- decompress: 'gltf.decompressMeshes',
40
- postProcess: 'gltf.postProcess',
41
- gltf: {
42
- decompress: 'gltf.decompressMeshes',
43
- postProcess: 'removed in v4'
44
- }
45
- }
46
- };
47
- exports.GLTFLoader = GLTFLoader;
48
- function parse(_x) {
49
- return _parse.apply(this, arguments);
50
- }
51
- function _parse() {
52
- _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
53
- var options,
54
- context,
55
- _options,
56
- _options$byteOffset,
57
- byteOffset,
58
- gltf,
59
- _args = arguments;
60
- return _regenerator.default.wrap(function _callee$(_context) {
61
- while (1) switch (_context.prev = _context.next) {
62
- case 0:
63
- options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
64
- context = _args.length > 2 ? _args[2] : undefined;
65
- options = _objectSpread(_objectSpread({}, GLTFLoader.options), options);
66
- options.gltf = _objectSpread(_objectSpread({}, GLTFLoader.options.gltf), options.gltf);
67
- _options = options, _options$byteOffset = _options.byteOffset, byteOffset = _options$byteOffset === void 0 ? 0 : _options$byteOffset;
68
- gltf = {};
69
- _context.next = 8;
70
- return (0, _parseGltf.parseGLTF)(gltf, arrayBuffer, byteOffset, options, context);
71
- case 8:
72
- return _context.abrupt("return", _context.sent);
73
- case 9:
74
- case "end":
75
- return _context.stop();
76
- }
77
- }, _callee);
78
- }));
79
- return _parse.apply(this, arguments);
80
- }
81
- //# sourceMappingURL=gltf-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gltf-loader.js","names":["_version","require","_parseGltf","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","GLTFLoader","name","id","module","version","VERSION","extensions","mimeTypes","text","binary","tests","parse","options","gltf","normalize","loadBuffers","loadImages","decompressMeshes","log","console","deprecatedOptions","fetchImages","createImages","decompress","postProcess","exports","_x","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","context","_options","_options$byteOffset","byteOffset","_args","wrap","_callee$","_context","prev","next","undefined","parseGLTF","abrupt","sent","stop"],"sources":["../../src/gltf-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {DracoLoaderOptions} from '@loaders.gl/draco';\nimport {VERSION} from './lib/utils/version';\nimport type {ImageLoaderOptions} from '@loaders.gl/images';\nimport type {TextureLoaderOptions} from '@loaders.gl/textures';\nimport type {ParseGLTFOptions} from './lib/parsers/parse-gltf';\nimport type {GLTFWithBuffers} from './lib/types/gltf-types';\nimport type {GLBLoaderOptions} from './glb-loader';\nimport {parseGLTF} from './lib/parsers/parse-gltf';\n\n/**\n * GLTF loader options\n */\nexport type GLTFLoaderOptions = LoaderOptions &\n ImageLoaderOptions &\n TextureLoaderOptions &\n GLBLoaderOptions &\n DracoLoaderOptions & {\n gltf?: ParseGLTFOptions;\n };\n\n/**\n * GLTF loader\n */\nexport const GLTFLoader: LoaderWithParser<GLTFWithBuffers, never, GLBLoaderOptions> = {\n name: 'glTF',\n id: 'gltf',\n module: 'gltf',\n version: VERSION,\n extensions: ['gltf', 'glb'],\n mimeTypes: ['model/gltf+json', 'model/gltf-binary'],\n\n text: true,\n binary: true,\n tests: ['glTF'],\n parse,\n\n options: {\n gltf: {\n normalize: true, // Normalize glTF v1 to glTF v2 format (not yet stable)\n loadBuffers: true, // Fetch any linked .BIN buffers, decode base64\n loadImages: true, // Create image objects\n decompressMeshes: true // Decompress Draco encoded meshes\n },\n\n // common?\n log: console // eslint-disable-line\n },\n deprecatedOptions: {\n fetchImages: 'gltf.loadImages',\n createImages: 'gltf.loadImages',\n decompress: 'gltf.decompressMeshes',\n postProcess: 'gltf.postProcess',\n gltf: {\n decompress: 'gltf.decompressMeshes',\n postProcess: 'removed in v4'\n }\n }\n};\n\nexport async function parse(\n arrayBuffer,\n options: GLTFLoaderOptions = {},\n context\n): Promise<GLTFWithBuffers> {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GLTFLoader.options, ...options};\n // @ts-ignore\n options.gltf = {...GLTFLoader.options.gltf, ...options.gltf};\n\n const {byteOffset = 0} = options;\n const gltf = {};\n return await parseGLTF(gltf as GLTFWithBuffers, arrayBuffer, byteOffset, options, context);\n}\n"],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports._TypecheckGLBLoader = exports.GLTFWriter = void 0;
7
- var _version = require("./lib/utils/version");
8
- var _encodeGltf = require("./lib/encoders/encode-gltf");
9
- var GLTFWriter = {
10
- name: 'glTF',
11
- id: 'gltf',
12
- module: 'gltf',
13
- version: _version.VERSION,
14
- extensions: ['glb'],
15
- mimeTypes: ['model/gltf-binary'],
16
- binary: true,
17
- encodeSync: encodeSync,
18
- options: {
19
- gltf: {}
20
- }
21
- };
22
- exports.GLTFWriter = GLTFWriter;
23
- function encodeSync(gltf) {
24
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25
- var _options$byteOffset = options.byteOffset,
26
- byteOffset = _options$byteOffset === void 0 ? 0 : _options$byteOffset;
27
- var byteLength = (0, _encodeGltf.encodeGLTFSync)(gltf, null, byteOffset, options);
28
- var arrayBuffer = new ArrayBuffer(byteLength);
29
- var dataView = new DataView(arrayBuffer);
30
- (0, _encodeGltf.encodeGLTFSync)(gltf, dataView, byteOffset, options);
31
- return arrayBuffer;
32
- }
33
- var _TypecheckGLBLoader = GLTFWriter;
34
- exports._TypecheckGLBLoader = _TypecheckGLBLoader;
35
- //# sourceMappingURL=gltf-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gltf-writer.js","names":["_version","require","_encodeGltf","GLTFWriter","name","id","module","version","VERSION","extensions","mimeTypes","binary","encodeSync","options","gltf","exports","arguments","length","undefined","_options$byteOffset","byteOffset","byteLength","encodeGLTFSync","arrayBuffer","ArrayBuffer","dataView","DataView","_TypecheckGLBLoader"],"sources":["../../src/gltf-writer.ts"],"sourcesContent":["import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport {encodeGLTFSync} from './lib/encoders/encode-gltf';\n\nexport type GLTFWriterOptions = WriterOptions & {\n gltf?: {};\n byteOffset?: number;\n};\n\n/**\n * GLTF exporter\n */\nexport const GLTFWriter = {\n name: 'glTF',\n id: 'gltf',\n module: 'gltf',\n version: VERSION,\n\n extensions: ['glb'], // We only support encoding to binary GLB, not to JSON GLTF\n mimeTypes: ['model/gltf-binary'], // 'model/gltf+json',\n binary: true,\n\n encodeSync,\n\n options: {\n gltf: {}\n }\n};\n\nfunction encodeSync(gltf, options: GLTFWriterOptions = {}) {\n const {byteOffset = 0} = options;\n\n // Calculate length, then create arraybuffer and encode\n const byteLength = encodeGLTFSync(gltf, null, byteOffset, options);\n const arrayBuffer = new ArrayBuffer(byteLength);\n const dataView = new DataView(arrayBuffer);\n encodeGLTFSync(gltf, dataView, byteOffset, options);\n\n return arrayBuffer;\n}\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckGLBLoader: Writer = GLTFWriter;\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAUO,IAAME,UAAU,GAAG;EACxBC,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEC,gBAAO;EAEhBC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,mBAAmB,CAAC;EAChCC,MAAM,EAAE,IAAI;EAEZC,UAAU,EAAVA,UAAU;EAEVC,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC;EACT;AACF,CAAC;AAACC,OAAA,CAAAZ,UAAA,GAAAA,UAAA;AAEF,SAASS,UAAUA,CAACE,IAAI,EAAmC;EAAA,IAAjCD,OAA0B,GAAAG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvD,IAAAG,mBAAA,GAAyBN,OAAO,CAAzBO,UAAU;IAAVA,UAAU,GAAAD,mBAAA,cAAG,CAAC,GAAAA,mBAAA;EAGrB,IAAME,UAAU,GAAG,IAAAC,0BAAc,EAACR,IAAI,EAAE,IAAI,EAAEM,UAAU,EAAEP,OAAO,CAAC;EAClE,IAAMU,WAAW,GAAG,IAAIC,WAAW,CAACH,UAAU,CAAC;EAC/C,IAAMI,QAAQ,GAAG,IAAIC,QAAQ,CAACH,WAAW,CAAC;EAC1C,IAAAD,0BAAc,EAACR,IAAI,EAAEW,QAAQ,EAAEL,UAAU,EAAEP,OAAO,CAAC;EAEnD,OAAOU,WAAW;AACpB;AAGO,IAAMI,mBAA2B,GAAGxB,UAAU;AAACY,OAAA,CAAAY,mBAAA,GAAAA,mBAAA"}
package/dist/es5/index.js DELETED
@@ -1,88 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "EXT_FEATURE_METADATA", {
7
- enumerable: true,
8
- get: function get() {
9
- return _EXT_feature_metadata.name;
10
- }
11
- });
12
- Object.defineProperty(exports, "EXT_MESH_FEATURES", {
13
- enumerable: true,
14
- get: function get() {
15
- return _EXT_mesh_features.name;
16
- }
17
- });
18
- Object.defineProperty(exports, "EXT_STRUCTURAL_METADATA", {
19
- enumerable: true,
20
- get: function get() {
21
- return _EXT_structural_metadata.name;
22
- }
23
- });
24
- Object.defineProperty(exports, "GLBLoader", {
25
- enumerable: true,
26
- get: function get() {
27
- return _glbLoader.GLBLoader;
28
- }
29
- });
30
- Object.defineProperty(exports, "GLBWriter", {
31
- enumerable: true,
32
- get: function get() {
33
- return _glbWriter.GLBWriter;
34
- }
35
- });
36
- Object.defineProperty(exports, "GLTFLoader", {
37
- enumerable: true,
38
- get: function get() {
39
- return _gltfLoader.GLTFLoader;
40
- }
41
- });
42
- Object.defineProperty(exports, "GLTFScenegraph", {
43
- enumerable: true,
44
- get: function get() {
45
- return _gltfScenegraph.GLTFScenegraph;
46
- }
47
- });
48
- Object.defineProperty(exports, "GLTFWriter", {
49
- enumerable: true,
50
- get: function get() {
51
- return _gltfWriter.GLTFWriter;
52
- }
53
- });
54
- Object.defineProperty(exports, "_getMemoryUsageGLTF", {
55
- enumerable: true,
56
- get: function get() {
57
- return _gltfUtils.getMemoryUsageGLTF;
58
- }
59
- });
60
- Object.defineProperty(exports, "getPropertyTableFromExtFeatureMetadata", {
61
- enumerable: true,
62
- get: function get() {
63
- return _EXT_feature_metadata.getPropertyTableFromExtFeatureMetadata;
64
- }
65
- });
66
- Object.defineProperty(exports, "getPropertyTableFromExtStructuralMetadata", {
67
- enumerable: true,
68
- get: function get() {
69
- return _EXT_structural_metadata.getPropertyTableFromExtStructuralMetadata;
70
- }
71
- });
72
- Object.defineProperty(exports, "postProcessGLTF", {
73
- enumerable: true,
74
- get: function get() {
75
- return _postProcessGltf.postProcessGLTF;
76
- }
77
- });
78
- var _EXT_mesh_features = require("./lib/extensions/EXT_mesh_features");
79
- var _EXT_structural_metadata = require("./lib/extensions/EXT_structural_metadata");
80
- var _EXT_feature_metadata = require("./lib/extensions/deprecated/EXT_feature_metadata");
81
- var _gltfLoader = require("./gltf-loader");
82
- var _gltfWriter = require("./gltf-writer");
83
- var _glbLoader = require("./glb-loader");
84
- var _glbWriter = require("./glb-writer");
85
- var _gltfScenegraph = require("./lib/api/gltf-scenegraph");
86
- var _postProcessGltf = require("./lib/api/post-process-gltf");
87
- var _gltfUtils = require("./lib/gltf-utils/gltf-utils");
88
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_EXT_mesh_features","require","_EXT_structural_metadata","_EXT_feature_metadata","_gltfLoader","_gltfWriter","_glbLoader","_glbWriter","_gltfScenegraph","_postProcessGltf","_gltfUtils"],"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAmBA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAGA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAGA,IAAAO,eAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA"}