@loaders.gl/tile-converter 3.2.3 → 3.3.0-alpha.1

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 (64) hide show
  1. package/dist/3d-tiles-attributes-worker.js +3 -3
  2. package/dist/3d-tiles-attributes-worker.js.map +1 -1
  3. package/dist/converter-cli.js +30 -7
  4. package/dist/converter.min.js +1 -1
  5. package/dist/dist.min.js +820 -517
  6. package/dist/es5/3d-tiles-attributes-worker.js +1 -1
  7. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  8. package/dist/es5/converter-cli.js +42 -12
  9. package/dist/es5/converter-cli.js.map +1 -1
  10. package/dist/es5/i3s-attributes-worker.js +1 -1
  11. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  12. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +135 -0
  13. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  14. package/dist/es5/i3s-converter/helpers/geometry-converter.js +16 -10
  15. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  16. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +15 -1
  17. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  18. package/dist/es5/i3s-converter/i3s-converter.js +19 -15
  19. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  20. package/dist/es5/lib/utils/write-queue.js +3 -5
  21. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  22. package/dist/es5/pgm-loader.js +1 -1
  23. package/dist/es5/pgm-loader.js.map +1 -1
  24. package/dist/esm/3d-tiles-attributes-worker.js +1 -1
  25. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  26. package/dist/esm/converter-cli.js +37 -7
  27. package/dist/esm/converter-cli.js.map +1 -1
  28. package/dist/esm/i3s-attributes-worker.js +1 -1
  29. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  30. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +117 -0
  31. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  32. package/dist/esm/i3s-converter/helpers/geometry-converter.js +13 -8
  33. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  34. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +15 -1
  35. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  36. package/dist/esm/i3s-converter/i3s-converter.js +5 -1
  37. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  38. package/dist/esm/lib/utils/write-queue.js +3 -5
  39. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  40. package/dist/esm/pgm-loader.js +1 -1
  41. package/dist/esm/pgm-loader.js.map +1 -1
  42. package/dist/i3s-attributes-worker.js +3 -3
  43. package/dist/i3s-attributes-worker.js.map +3 -3
  44. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +12 -0
  45. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  46. package/dist/i3s-converter/helpers/batch-ids-extensions.js +127 -0
  47. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  48. package/dist/i3s-converter/helpers/geometry-converter.js +16 -11
  49. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  50. package/dist/i3s-converter/helpers/gltf-attributes.js +13 -0
  51. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  52. package/dist/i3s-converter/i3s-converter.js +4 -1
  53. package/dist/i3s-converter/types.d.ts +48 -0
  54. package/dist/i3s-converter/types.d.ts.map +1 -1
  55. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  56. package/dist/lib/utils/write-queue.js +3 -4
  57. package/package.json +16 -16
  58. package/src/converter-cli.ts +33 -7
  59. package/src/i3s-converter/helpers/batch-ids-extensions.ts +182 -0
  60. package/src/i3s-converter/helpers/geometry-converter.ts +26 -11
  61. package/src/i3s-converter/helpers/gltf-attributes.ts +15 -0
  62. package/src/i3s-converter/i3s-converter.ts +13 -6
  63. package/src/i3s-converter/types.ts +51 -0
  64. package/src/lib/utils/write-queue.ts +7 -5
@@ -0,0 +1,12 @@
1
+ import type { GLTFAccessorPostprocessed } from 'modules/gltf/src/lib/types/gltf-types';
2
+ import type { Image, MeshPrimitive } from 'modules/gltf/src/lib/types/gltf-postprocessed-schema';
3
+ /**
4
+ * Getting batchIds from 3DTilesNext extensions.
5
+ * @param attributes
6
+ * @param primitive
7
+ * @param textures
8
+ */
9
+ export declare function handleBatchIdsExtensions(attributes: {
10
+ [key: string]: GLTFAccessorPostprocessed;
11
+ }, primitive: MeshPrimitive, images: Image[]): number[];
12
+ //# sourceMappingURL=batch-ids-extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-ids-extensions.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/batch-ids-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,uCAAuC,CAAC;AACrF,OAAO,KAAK,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,sDAAsD,CAAC;AAM/F;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAC;CAC1C,EACD,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,KAAK,EAAE,GACd,MAAM,EAAE,CAwBV"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleBatchIdsExtensions = void 0;
4
+ const EXT_MESH_FEATURES = 'EXT_mesh_features';
5
+ const EXT_FEATURE_METADATA = 'EXT_feature_metadata';
6
+ /**
7
+ * Getting batchIds from 3DTilesNext extensions.
8
+ * @param attributes
9
+ * @param primitive
10
+ * @param textures
11
+ */
12
+ function handleBatchIdsExtensions(attributes, primitive, images) {
13
+ const extensions = primitive?.extensions;
14
+ if (!extensions) {
15
+ return [];
16
+ }
17
+ for (const [extensionName, extensionData] of Object.entries(extensions || {})) {
18
+ switch (extensionName) {
19
+ case EXT_FEATURE_METADATA:
20
+ return handleExtFeatureMetadataExtension(attributes, extensionData, images);
21
+ case EXT_MESH_FEATURES:
22
+ console.warn('EXT_mesh_features extension is not supported yet');
23
+ return [];
24
+ default:
25
+ return [];
26
+ }
27
+ }
28
+ return [];
29
+ }
30
+ exports.handleBatchIdsExtensions = handleBatchIdsExtensions;
31
+ /**
32
+ * Get batchIds from EXT_feature_metadata extension.
33
+ * Docs - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata
34
+ * @param attributes
35
+ * @param extFeatureMetadata
36
+ * @param textures
37
+ */
38
+ function handleExtFeatureMetadataExtension(attributes, extFeatureMetadata, images) {
39
+ // Take only first extension object to get batchIds attribute name.
40
+ const featureIdAttribute = extFeatureMetadata?.featureIdAttributes?.[0];
41
+ if (featureIdAttribute?.featureIds?.attribute) {
42
+ const batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];
43
+ return batchIdsAttribute.value;
44
+ }
45
+ if (featureIdAttribute?.featureIds?.hasOwnProperty('constant') &&
46
+ featureIdAttribute?.featureIds?.hasOwnProperty('divisor')) {
47
+ const featuresCount = attributes?.POSITIONS?.value.length / 3 || 0;
48
+ return generateImplicitFeatureIds(featuresCount, featureIdAttribute.featureIds.constant, featureIdAttribute.featureIds.divisor);
49
+ }
50
+ // Take only first extension object to get batchIds attribute name.
51
+ const featureIdTexture = extFeatureMetadata?.featureIdTextures && extFeatureMetadata?.featureIdTextures[0];
52
+ if (featureIdTexture) {
53
+ const textureCoordinates = attributes.TEXCOORD_0.value;
54
+ return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);
55
+ }
56
+ return [];
57
+ }
58
+ /**
59
+ * Generates implicit feature ids
60
+ * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#implicit-feature-ids
61
+ * @param featuresCount
62
+ * @param constant
63
+ * @param devisor
64
+ */
65
+ function generateImplicitFeatureIds(featuresCount, constant = 0, divisor = 0) {
66
+ let featureIds = [];
67
+ if (divisor > 0) {
68
+ let currentValue = constant;
69
+ let devisorCounter = divisor;
70
+ for (let index = 0; index < featuresCount; index++) {
71
+ featureIds.push(currentValue);
72
+ devisorCounter -= 1;
73
+ if (devisorCounter === 0) {
74
+ currentValue++;
75
+ devisorCounter = divisor;
76
+ }
77
+ }
78
+ }
79
+ else {
80
+ featureIds = Array(featuresCount).fill(constant, 0, featuresCount);
81
+ }
82
+ return featureIds;
83
+ }
84
+ /**
85
+ * Get batchIds from texture.
86
+ * @param primitive
87
+ * @param featureIdTextures
88
+ */
89
+ function generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images) {
90
+ const CHANNELS_MAP = {
91
+ r: 0,
92
+ g: 1,
93
+ b: 2,
94
+ a: 3
95
+ };
96
+ const textureIndex = featureIdTexture?.featureIds?.texture?.index;
97
+ const featureChannel = featureIdTexture?.featureIds?.channels;
98
+ if (!featureChannel || textureIndex === undefined) {
99
+ return [];
100
+ }
101
+ const image = images[textureIndex];
102
+ const batchIds = [];
103
+ const channels = CHANNELS_MAP[featureChannel];
104
+ if (!image.compressed) {
105
+ for (let index = 0; index < textureCoordinates.length; index += 2) {
106
+ const u = textureCoordinates[index];
107
+ const v = textureCoordinates[index + 1];
108
+ const tx = Math.min((emod(u) * image.width) | 0, image.width - 1);
109
+ const ty = Math.min((emod(v) * image.height) | 0, image.height - 1);
110
+ const offset = (ty * image.width + tx) * image.components + channels;
111
+ const batchId = new Uint8Array(image.data)[offset];
112
+ batchIds.push(batchId);
113
+ }
114
+ }
115
+ else {
116
+ console.warn(`Can't get batch Ids from ${image.mimeType} compressed texture`);
117
+ }
118
+ return batchIds;
119
+ }
120
+ /**
121
+ * Handle UVs if they are out of range [0,1].
122
+ * @param n
123
+ * @param m
124
+ */
125
+ function emod(n) {
126
+ return ((n % 1) + 1) % 1;
127
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"geometry-converter.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/geometry-converter.ts"],"names":[],"mappings":"AASA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAGtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EACL,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAMrC,OAAO,EAAC,kBAAkB,EAAqC,MAAM,6BAA6B,CAAC;AAwBnG;;;;;;;;;;;GAWG;AACH,wBAA8B,wBAAwB,CACpD,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EAAE,EAC3B,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,SAAS,EACxD,KAAK,EAAE,OAAO,EACd,uBAAuB,EAAE,OAAO,EAChC,gBAAgB,EAAE,KAAK,EACvB,YAAY,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,2CAoEtC;AAiID;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,kBAAkB,EAClC,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CA0C3C"}
1
+ {"version":3,"file":"geometry-converter.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/geometry-converter.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAGtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EACL,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAMrC,OAAO,EAAC,kBAAkB,EAAqC,MAAM,6BAA6B,CAAC;AAyBnG;;;;;;;;;;;GAWG;AACH,wBAA8B,wBAAwB,CACpD,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EAAE,EAC3B,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,SAAS,EACxD,KAAK,EAAE,OAAO,EACd,uBAAuB,EAAE,OAAO,EAChC,gBAAgB,EAAE,KAAK,EACvB,YAAY,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,2CAoEtC;AAiID;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,kBAAkB,EAClC,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CA0C3C"}
@@ -13,6 +13,7 @@ const md5_1 = __importDefault(require("md5"));
13
13
  const geometry_attributes_1 = require("./geometry-attributes");
14
14
  const coordinate_converter_1 = require("./coordinate-converter");
15
15
  const gltf_attributes_1 = require("./gltf-attributes");
16
+ const batch_ids_extensions_1 = require("./batch-ids-extensions");
16
17
  // Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/pbrMetallicRoughness.cmn.md
17
18
  const DEFAULT_ROUGHNESS_FACTOR = 1;
18
19
  const DEFAULT_METALLIC_FACTOR = 1;
@@ -258,8 +259,9 @@ function getCompositeTransformationMatrix(node, matrix) {
258
259
  function convertNode(node, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix = new core_1.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
259
260
  const transformationMatrix = getCompositeTransformationMatrix(node, matrix);
260
261
  const mesh = node.mesh;
262
+ const images = node.images;
261
263
  if (mesh) {
262
- convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
264
+ convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
263
265
  }
264
266
  convertNodes(node.children || [], cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
265
267
  }
@@ -274,7 +276,7 @@ function convertNode(node, cartographicOrigin, cartesianModelMatrix, attributesM
274
276
 
275
277
  * @param {Matrix4} matrix - transformation matrix - cumulative transformation matrix formed from all parent node matrices
276
278
  */
277
- function convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions = false, matrix = new core_1.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
279
+ function convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions = false, matrix = new core_1.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
278
280
  for (const primitive of mesh.primitives) {
279
281
  let outputAttributes = null;
280
282
  if (primitive.material) {
@@ -309,7 +311,7 @@ function convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesM
309
311
  outputAttributes.texCoords = (0, loader_utils_1.concatenateTypedArrays)(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, primitive.indices?.value));
310
312
  outputAttributes.colors = (0, loader_utils_1.concatenateTypedArrays)(outputAttributes.colors, flattenColors(attributes.COLOR_0, primitive.indices?.value));
311
313
  outputAttributes.featureIndicesGroups = outputAttributes.featureIndicesGroups || [];
312
- outputAttributes.featureIndicesGroups.push(flattenBatchIds(getBatchIdsByAttributeName(attributes), primitive.indices?.value));
314
+ outputAttributes.featureIndicesGroups.push(flattenBatchIds(getBatchIds(attributes, primitive, images), primitive.indices?.value));
313
315
  }
314
316
  }
315
317
  /**
@@ -446,21 +448,24 @@ function flattenBatchIds(batchedIds, indices) {
446
448
  return newBatchIds;
447
449
  }
448
450
  /**
449
- * Return batchIds based on possible attribute names for different kind of maps.
450
- * @param attributes - the gltf primitive attributes
451
- * @returns batch ids attribute
451
+ * Get batchIds for featureIds creation
452
+ * @param attributes
453
+ * @param primitive
454
+ * @param textures
452
455
  */
453
- function getBatchIdsByAttributeName(attributes) {
454
- let batchIds = [];
456
+ function getBatchIds(attributes, primitive, images) {
457
+ const batchIds = (0, batch_ids_extensions_1.handleBatchIdsExtensions)(attributes, primitive, images);
458
+ if (batchIds.length) {
459
+ return batchIds;
460
+ }
455
461
  for (let index = 0; index < BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES.length; index++) {
456
462
  const possibleBatchIdAttributeName = BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES[index];
457
463
  if (attributes[possibleBatchIdAttributeName] &&
458
464
  attributes[possibleBatchIdAttributeName].value) {
459
- batchIds = attributes[possibleBatchIdAttributeName].value;
460
- break;
465
+ return attributes[possibleBatchIdAttributeName].value;
461
466
  }
462
467
  }
463
- return batchIds;
468
+ return [];
464
469
  }
465
470
  /**
466
471
  * Convert GLTF material to I3S material definitions and textures
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-attributes.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/gltf-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAsBpE;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,CAsC/F"}
1
+ {"version":3,"file":"gltf-attributes.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/gltf-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAsBpE;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,CAqD/F"}
@@ -25,12 +25,25 @@ function prepareDataForAttributesConversion(tileContent) {
25
25
  tileContent.gltf?.scenes?.[0]?.nodes ||
26
26
  tileContent.gltf?.nodes ||
27
27
  [];
28
+ const images = tileContent.gltf?.images?.map((imageObject) => {
29
+ // Need data only for uncompressed images because we can't get batchIds from compressed textures.
30
+ const data = imageObject?.image?.compressed ? null : imageObject?.image?.data.subarray();
31
+ return {
32
+ data,
33
+ compressed: Boolean(imageObject?.image?.compressed),
34
+ height: imageObject.image.height,
35
+ width: imageObject.image.width,
36
+ components: imageObject.image.components,
37
+ mimeType: imageObject.mimeType
38
+ };
39
+ }) || [];
28
40
  const prepearedNodes = nodes.map((node) => {
29
41
  if (!node.mesh) {
30
42
  return node;
31
43
  }
32
44
  return {
33
45
  ...node,
46
+ images,
34
47
  mesh: {
35
48
  ...node.mesh,
36
49
  primitives: node.mesh?.primitives.map((primitive) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAEV,YAAY,EAYb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAOrC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAuB7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAA8B,MAAM,2BAA2B,CAAC;AAM7F,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAkBlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAM;IACvC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAU;IAC/C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAU;IAC5C,aAAa,EAAE,SAAS,GAAG,IAAI,CAAQ;IACvC,gBAAgB,EAAE,KAAK,GAAG,IAAI,CAAQ;IACtC,MAAM,EAAE,gBAAgB,CAAiB;IACzC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAM;IAC3C,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,CAAoB;;IAqB1D;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;KACnC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8DhB;;;;OAIG;YACW,qBAAqB;IA+CnC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAuBpB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAqBlC;;;;;;OAMG;YACW,iBAAiB;IAwC/B;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,uBAAuB;IAerC;;;OAGG;YACW,WAAW;IAsCzB;;;;;;;OAOG;YACW,qCAAqC;IAWnD;;;;;;;;OAQG;YACW,YAAY;IAyC1B;;;;OAIG;YACW,yBAAyB;IAiCvC;;;;;;OAMG;YACW,WAAW;IA2FzB;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAQpC;;;;;;;;;;;OAWG;YACW,iBAAiB;IAiB/B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IAmD9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,wBAAwB;IA+ChC;;;;;;;;;OASG;YACW,eAAe;IAiB7B;;;;;;OAMG;YACW,gBAAgB;IAmC9B;;;;;;OAMG;YACW,YAAY;IAwB1B;;;;;OAKG;YACW,aAAa;IA8D3B;;;;;;;OAOG;YACW,gBAAgB;IAuB9B;;;;;OAKG;YACW,gBAAgB;IA0B9B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAgChC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;OAGG;IACH,OAAO,CAAC,sCAAsC;IAyB9C;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;OAGG;YACW,iBAAiB;IAqB/B;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,qBAAqB;IAkBnC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAUtC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;YAIZ,WAAW;CAsB1B"}
@@ -707,7 +707,10 @@ class I3SConverter {
707
707
  await this.writeTextureFile(textureData, '0', format, childPath, slpkChildPath);
708
708
  if (this.generateTextures) {
709
709
  formats.push({ name: '1', format: 'ktx2' });
710
- const ktx2TextureData = (0, core_1.encode)(texture.image, textures_1.KTX2BasisWriterWorker, {
710
+ // For Node.js texture.image.data is type of Buffer
711
+ const copyArrayBuffer = texture.image.data.subarray();
712
+ const arrayToEncode = new Uint8Array(copyArrayBuffer);
713
+ const ktx2TextureData = (0, core_1.encode)({ ...texture.image, data: arrayToEncode }, textures_1.KTX2BasisWriterWorker, {
711
714
  ...textures_1.KTX2BasisWriterWorker.options,
712
715
  source: this.workerSource.ktx2,
713
716
  reuseWorkers: true,
@@ -111,4 +111,52 @@ export declare type I3SMaterialWithTexture = {
111
111
  /** Texture content (image) */
112
112
  texture?: ImageDataType;
113
113
  };
114
+ /**
115
+ * 3DTilesNext EXT_feature_metadata extension
116
+ * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata
117
+ */
118
+ export declare type ExtFeatureMetadata = {
119
+ /** Feature ids definition in attributes */
120
+ featureIdAttributes?: ExtFeatureMetadataAttribute[];
121
+ /** Feature ids definition in textures */
122
+ featureIdTextures?: ExtFeatureMetadataAttribute[];
123
+ };
124
+ /**
125
+ * Attribute which described featureIds definition.
126
+ */
127
+ export declare type ExtFeatureMetadataAttribute = {
128
+ /** Name of feature table */
129
+ featureTable: string;
130
+ /** Described how feature ids are defined */
131
+ featureIds: ExtFeatureMetadataFeatureIds;
132
+ };
133
+ /**
134
+ * Defining featureIds by attributes or implicitly.
135
+ */
136
+ declare type ExtFeatureMetadataFeatureIds = {
137
+ /** Name of attribute where featureIds are defined */
138
+ attribute?: string;
139
+ /** Sets a constant feature ID for each vertex. The default is 0. */
140
+ constant?: number;
141
+ /** Sets the rate at which feature IDs increment.
142
+ * If divisor is zero then constant is used.
143
+ * If divisor is greater than zero the feature ID increments once per divisor sets of vertices, starting at constant.
144
+ * The default is 0
145
+ */
146
+ divisor?: number;
147
+ /** gLTF textureInfo object - https://github.com/CesiumGS/glTF/blob/3d-tiles-next/specification/2.0/schema/textureInfo.schema.json */
148
+ texture?: ExtFeatureMetadataTexture;
149
+ /** Must be a single channel ("r", "g", "b", or "a") */
150
+ channels?: 'r' | 'g' | 'b' | 'a';
151
+ };
152
+ /**
153
+ * Reference to a texture.
154
+ */
155
+ declare type ExtFeatureMetadataTexture = {
156
+ /** The set index of texture's TEXCOORD attribute used for texture coordinate mapping.*/
157
+ texCoord: number;
158
+ /** The index of the texture. */
159
+ index: number;
160
+ };
161
+ export {};
114
162
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,4CAA4C;AAC5C,oBAAY,qBAAqB,GAAG;IAClC;;;OAGG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACjD;;OAEG;IACH,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,eAAe,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C;;OAEG;IACH,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;OAEG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB,GAAG;IAChC,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,iDAAiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,eAAe,EAAE,IAAI,GAAG,eAAe,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,kBAAkB,GAAG;IAC/B,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,WAAW,CAAC;IACvB,kCAAkC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,8DAA8D;AAC9D,oBAAY,4BAA4B,GAAG;IACzC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,+CAA+C;AAC/C,oBAAY,qBAAqB,GAAG;IAClC,oHAAoH;IACpH,uBAAuB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnD,kHAAkH;IAClH,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjD,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,2EAA2E;AAC3E,oBAAY,sBAAsB,GAAG;IACnC,2GAA2G;IAC3G,QAAQ,EAAE,qBAAqB,CAAC;IAChC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,4CAA4C;AAC5C,oBAAY,qBAAqB,GAAG;IAClC;;;OAGG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACjD;;OAEG;IACH,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,eAAe,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C;;OAEG;IACH,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;OAEG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB,GAAG;IAChC,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,iDAAiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,eAAe,EAAE,IAAI,GAAG,eAAe,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,kBAAkB,GAAG;IAC/B,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,WAAW,CAAC;IACvB,kCAAkC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,8DAA8D;AAC9D,oBAAY,4BAA4B,GAAG;IACzC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,+CAA+C;AAC/C,oBAAY,qBAAqB,GAAG;IAClC,oHAAoH;IACpH,uBAAuB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnD,kHAAkH;IAClH,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjD,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,2EAA2E;AAC3E,oBAAY,sBAAsB,GAAG;IACnC,2GAA2G;IAC3G,QAAQ,EAAE,qBAAqB,CAAC;IAChC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,oBAAY,kBAAkB,GAAG;IAC/B,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACpD,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,2BAA2B,EAAE,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,oBAAY,2BAA2B,GAAG;IACxC,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE,4BAA4B,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,aAAK,4BAA4B,GAAG;IAClC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qIAAqI;IACrI,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,aAAK,yBAAyB,GAAG;IAC/B,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/write-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,oBAAY,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,UAAU,CAAC,CAAiB;IAC7B,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAM;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;gBAEpB,iBAAiB,GAAE,MAAa,EAAE,gBAAgB,GAAE,MAAY;IAM5E,cAAc;IAId,aAAa;IAMP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAKjB,OAAO;IAmBrB,OAAO,CAAC,aAAa;CAStB"}
1
+ {"version":3,"file":"write-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/write-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,oBAAY,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,UAAU,CAAC,CAAiB;IAC7B,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAM;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;gBAEpB,iBAAiB,GAAE,MAAa,EAAE,gBAAgB,GAAE,MAAY;IAM5E,cAAc;IAId,aAAa;IAMP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAKjB,OAAO;IAmBrB,OAAO,CAAC,aAAa;CAWtB"}
@@ -44,7 +44,7 @@ class WriteQueue extends queue_1.Queue {
44
44
  archiveKeys.push(archiveKey);
45
45
  promises.push(writePromise);
46
46
  }
47
- const writeResults = await Promise.all(promises);
47
+ const writeResults = await Promise.allSettled(promises);
48
48
  this.updateFileMap(archiveKeys, writeResults);
49
49
  }
50
50
  this.writePromise = null;
@@ -52,10 +52,9 @@ class WriteQueue extends queue_1.Queue {
52
52
  updateFileMap(archiveKeys, writeResults) {
53
53
  for (let i = 0; i < archiveKeys.length; i++) {
54
54
  const archiveKey = archiveKeys[i];
55
- if (!archiveKey) {
56
- continue;
55
+ if (archiveKey && 'value' in writeResults[i]) {
56
+ this.fileMap[archiveKey] = writeResults[i].value;
57
57
  }
58
- this.fileMap[archiveKey] = writeResults[i];
59
58
  }
60
59
  }
61
60
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "3.2.3",
3
+ "version": "3.3.0-alpha.1",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -43,19 +43,19 @@
43
43
  "build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node12 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
44
44
  },
45
45
  "dependencies": {
46
- "@loaders.gl/3d-tiles": "3.2.3",
47
- "@loaders.gl/crypto": "3.2.3",
48
- "@loaders.gl/draco": "3.2.3",
49
- "@loaders.gl/gltf": "3.2.3",
50
- "@loaders.gl/i3s": "3.2.3",
51
- "@loaders.gl/images": "3.2.3",
52
- "@loaders.gl/loader-utils": "3.2.3",
53
- "@loaders.gl/polyfills": "3.2.3",
54
- "@loaders.gl/schema": "3.2.3",
55
- "@loaders.gl/textures": "3.2.3",
56
- "@loaders.gl/tiles": "3.2.3",
57
- "@loaders.gl/worker-utils": "3.2.3",
58
- "@loaders.gl/zip": "3.2.3",
46
+ "@loaders.gl/3d-tiles": "3.3.0-alpha.1",
47
+ "@loaders.gl/crypto": "3.3.0-alpha.1",
48
+ "@loaders.gl/draco": "3.3.0-alpha.1",
49
+ "@loaders.gl/gltf": "3.3.0-alpha.1",
50
+ "@loaders.gl/i3s": "3.3.0-alpha.1",
51
+ "@loaders.gl/images": "3.3.0-alpha.1",
52
+ "@loaders.gl/loader-utils": "3.3.0-alpha.1",
53
+ "@loaders.gl/polyfills": "3.3.0-alpha.1",
54
+ "@loaders.gl/schema": "3.3.0-alpha.1",
55
+ "@loaders.gl/textures": "3.3.0-alpha.1",
56
+ "@loaders.gl/tiles": "3.3.0-alpha.1",
57
+ "@loaders.gl/worker-utils": "3.3.0-alpha.1",
58
+ "@loaders.gl/zip": "3.3.0-alpha.1",
59
59
  "@luma.gl/engine": "^8.5.4",
60
60
  "@math.gl/core": "^3.5.1",
61
61
  "@math.gl/culling": "^3.5.1",
@@ -73,7 +73,7 @@
73
73
  "uuid": "^8.1.0"
74
74
  },
75
75
  "peerDependencies": {
76
- "@loaders.gl/core": "3.2.0"
76
+ "@loaders.gl/core": "^3.2.0"
77
77
  },
78
- "gitHead": "ddb4a1f3c0bd948135fd3c3b83481e0a7809f4d7"
78
+ "gitHead": "85ed2df7d17dd0d204c8bd8feb44779f70bc693b"
79
79
  }
@@ -66,7 +66,9 @@ async function main() {
66
66
  printHelp();
67
67
  }
68
68
 
69
- const options: TileConversionOptions = parseOptions(args);
69
+ const validatedOptionsArr = validateOptionsWithEqual(args);
70
+
71
+ const options: TileConversionOptions = parseOptions(validatedOptionsArr);
70
72
 
71
73
  if (options.installDependencies) {
72
74
  const depthInstaller = new DepsInstaller();
@@ -199,6 +201,19 @@ function validateOptions(options: TileConversionOptions): ValidatedTileConversio
199
201
  return <ValidatedTileConversionOptions>options;
200
202
  }
201
203
 
204
+ function validateOptionsWithEqual(args: string[]): string[] {
205
+ return args.reduce((acc: string[], curr) => {
206
+ const equalSignIndex = curr.indexOf('=');
207
+ const beforeEqual = curr.slice(0, equalSignIndex);
208
+ const afterEqual = curr.slice(equalSignIndex + 1, curr.length);
209
+ const condition = curr.includes('=') && curr.startsWith('--') && afterEqual;
210
+ if (condition) {
211
+ return acc.concat(beforeEqual, afterEqual);
212
+ }
213
+ return acc.concat(curr);
214
+ }, []);
215
+ }
216
+
202
217
  /**
203
218
  * Parse option from the cli arguments array
204
219
  * @param args
@@ -237,7 +252,7 @@ function parseOptions(args: string[]): TileConversionOptions {
237
252
  opts.maxDepth = getIntegerValue(index, args);
238
253
  break;
239
254
  case '--slpk':
240
- opts.slpk = true;
255
+ opts.slpk = getBooleanValue(index, args);
241
256
  break;
242
257
  case '--7zExe':
243
258
  opts.sevenZipExe = getStringValue(index, args);
@@ -249,19 +264,19 @@ function parseOptions(args: string[]): TileConversionOptions {
249
264
  opts.token = getStringValue(index, args);
250
265
  break;
251
266
  case '--no-draco':
252
- opts.draco = false;
267
+ opts.draco = getBooleanValue(index, args);
253
268
  break;
254
269
  case '--validate':
255
- opts.validate = true;
270
+ opts.validate = getBooleanValue(index, args);
256
271
  break;
257
272
  case '--install-dependencies':
258
- opts.installDependencies = true;
273
+ opts.installDependencies = getBooleanValue(index, args);
259
274
  break;
260
275
  case '--generate-textures':
261
- opts.generateTextures = true;
276
+ opts.generateTextures = getBooleanValue(index, args);
262
277
  break;
263
278
  case '--generate-bounding-volumes':
264
- opts.generateBoundingVolumes = true;
279
+ opts.generateBoundingVolumes = getBooleanValue(index, args);
265
280
  break;
266
281
  case '--help':
267
282
  printHelp();
@@ -308,3 +323,14 @@ function getIntegerValue(index: number, args: string[]): number {
308
323
  }
309
324
  return NaN;
310
325
  }
326
+
327
+ function getBooleanValue(index: number, args: string[]): boolean {
328
+ const stringValue: string = getStringValue(index, args).toLowerCase().trim();
329
+ if (args[index] === '--no-draco' && !stringValue) {
330
+ return false;
331
+ }
332
+ if (!stringValue || stringValue === 'true') {
333
+ return true;
334
+ }
335
+ return false;
336
+ }