@loaders.gl/tile-converter 4.0.0-alpha.11 → 4.0.0-alpha.13

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 (32) hide show
  1. package/dist/3d-tiles-attributes-worker.js +2 -2
  2. package/dist/converter.min.js +65 -65
  3. package/dist/dist.min.js +778 -231
  4. package/dist/es5/3d-tiles-attributes-worker.js +1 -1
  5. package/dist/es5/deps-installer/deps-installer.js +1 -1
  6. package/dist/es5/i3s-attributes-worker.js +1 -1
  7. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  8. package/dist/es5/i3s-converter/helpers/geometry-converter.js +6 -0
  9. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  10. package/dist/es5/i3s-converter/i3s-converter.js +58 -37
  11. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  12. package/dist/es5/pgm-loader.js +1 -1
  13. package/dist/esm/3d-tiles-attributes-worker.js +1 -1
  14. package/dist/esm/deps-installer/deps-installer.js +1 -1
  15. package/dist/esm/i3s-attributes-worker.js +1 -1
  16. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  17. package/dist/esm/i3s-converter/helpers/geometry-converter.js +6 -0
  18. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  19. package/dist/esm/i3s-converter/i3s-converter.js +21 -8
  20. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  21. package/dist/esm/pgm-loader.js +1 -1
  22. package/dist/i3s-attributes-worker.js +2 -2
  23. package/dist/i3s-attributes-worker.js.map +2 -2
  24. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  25. package/dist/i3s-converter/helpers/geometry-converter.js +3 -0
  26. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  27. package/dist/i3s-converter/i3s-converter.js +20 -5
  28. package/dist/i3s-converter/types.js +1 -1
  29. package/package.json +14 -14
  30. package/src/i3s-converter/helpers/batch-ids-extensions.ts +5 -5
  31. package/src/i3s-converter/helpers/geometry-converter.ts +15 -10
  32. package/src/i3s-converter/i3s-converter.ts +23 -6
@@ -1 +1 @@
1
- {"version":3,"file":"geometry-converter.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/geometry-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAY/E,OAAO,EAAU,OAAO,EAAU,MAAM,eAAe,CAAC;AAUxD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EAGvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,+DAA+D;AAC/D,OAAO,EACL,kBAAkB,EAEnB,MAAM,6BAA6B,CAAC;AAarC,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AA0BrE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAA8B,wBAAwB,CACpD,WAAW,EAAE,kBAAkB,EAC/B,aAAa,EAAE,OAAO,EACtB,kBAAkB,EAAE,mBAAmB,GAAG,cAAc,EACxD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACxC,aAAa,EAAE,gBAAgB,GAAG,IAAI,EACtC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,SAAS,EACxD,KAAK,EAAE,OAAO,EACd,uBAAuB,EAAE,OAAO,EAChC,oBAAoB,EAAE,OAAO,EAC7B,gBAAgB,EAAE,KAAK,EACvB,YAAY,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GACpC,OAAO,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,CA8DzC;AA6ID;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,kBAAkB,EAClC,sBAAsB,EAAE,sBAAsB,EAAE,EAChD,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAgD3C;AA4pCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAwBhG"}
1
+ {"version":3,"file":"geometry-converter.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/geometry-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAW/E,OAAO,EAAU,OAAO,EAAU,MAAM,eAAe,CAAC;AAUxD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EAGvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,+DAA+D;AAC/D,OAAO,EACL,kBAAkB,EAEnB,MAAM,6BAA6B,CAAC;AAarC,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AA0BrE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAA8B,wBAAwB,CACpD,WAAW,EAAE,kBAAkB,EAC/B,aAAa,EAAE,OAAO,EACtB,kBAAkB,EAAE,mBAAmB,GAAG,cAAc,EACxD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACxC,aAAa,EAAE,gBAAgB,GAAG,IAAI,EACtC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,SAAS,EACxD,KAAK,EAAE,OAAO,EACd,uBAAuB,EAAE,OAAO,EAChC,oBAAoB,EAAE,OAAO,EAC7B,gBAAgB,EAAE,KAAK,EACvB,YAAY,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GACpC,OAAO,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,CA8DzC;AA6ID;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,kBAAkB,EAClC,sBAAsB,EAAE,sBAAsB,EAAE,EAChD,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAgD3C;AA4pCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAwBhG"}
@@ -1178,6 +1178,9 @@ function getPropertyTableExtension(tileContent) {
1178
1178
  break;
1179
1179
  }
1180
1180
  }
1181
+ if (!extensionName) {
1182
+ return { extensionName: null, extension: null };
1183
+ }
1181
1184
  const extension = tileContent?.gltf?.extensions?.[extensionName];
1182
1185
  return { extensionName, extension };
1183
1186
  }
@@ -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":"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"}
@@ -227,10 +227,16 @@ class I3SConverter {
227
227
  if (sourceTile.id) {
228
228
  console.log(`[analyze]: ${sourceTile.id}`); // eslint-disable-line
229
229
  }
230
- const tileContent = await (0, load_3d_tiles_1.loadTile3DContent)(this.sourceTileset, sourceTile, {
231
- ...this.loadOptions,
232
- '3d-tiles': { ...this.loadOptions['3d-tiles'], loadGLTF: false }
233
- });
230
+ let tileContent = null;
231
+ try {
232
+ tileContent = await (0, load_3d_tiles_1.loadTile3DContent)(this.sourceTileset, sourceTile, {
233
+ ...this.loadOptions,
234
+ '3d-tiles': { ...this.loadOptions['3d-tiles'], loadGLTF: false }
235
+ });
236
+ }
237
+ catch (error) {
238
+ console.log(`[warning]: Failed to load ${sourceTile.contentUrl}. An I3S tile with empty content will be added to the output tileset`);
239
+ }
234
240
  const tilePreprocessData = await (0, preprocess_3d_tiles_1.analyzeTileContent)(tileContent);
235
241
  (0, preprocess_3d_tiles_1.mergePreprocessData)(this.preprocessData, tilePreprocessData);
236
242
  return null;
@@ -430,7 +436,13 @@ class I3SConverter {
430
436
  async _createNode(parentNode, sourceTile, transformationMatrix) {
431
437
  this._checkAddRefinementTypeForTile(sourceTile);
432
438
  await this._updateTilesetOptions();
433
- const tileContent = await (0, load_3d_tiles_1.loadTile3DContent)(this.sourceTileset, sourceTile, this.loadOptions);
439
+ let tileContent = null;
440
+ try {
441
+ tileContent = await (0, load_3d_tiles_1.loadTile3DContent)(this.sourceTileset, sourceTile, this.loadOptions);
442
+ }
443
+ catch (error) {
444
+ console.log(`[warning]: Failed to load ${sourceTile.contentUrl}`);
445
+ }
434
446
  const sourceBoundingVolume = (0, tiles_1.createBoundingVolume)(sourceTile.boundingVolume, transformationMatrix, null);
435
447
  let boundingVolumes = (0, coordinate_converter_1.createBoundingVolumes)(sourceBoundingVolume, this.geoidHeightModel);
436
448
  const propertyTable = (0, geometry_converter_1.getPropertyTable)(tileContent);
@@ -546,6 +558,9 @@ class I3SConverter {
546
558
  else {
547
559
  node = await this.nodePages.getNodeById(nodeId);
548
560
  }
561
+ if (!nodeInPage.mesh) {
562
+ console.log(`[warning]: node ${node.index} is created with empty content`);
563
+ }
549
564
  node_pages_1.default.updateAll(node, nodeInPage);
550
565
  if (meshMaterial) {
551
566
  node_pages_1.default.updateMaterialByNodeId(node, this._findOrCreateMaterial(meshMaterial));
@@ -14,4 +14,4 @@ var GltfPrimitiveModeString;
14
14
  GltfPrimitiveModeString["TRIANGLES"] = "TRIANGLES";
15
15
  GltfPrimitiveModeString["TRIANGLE_STRIP"] = "TRIANGLE_STRIP";
16
16
  GltfPrimitiveModeString["TRIANGLE_FAN"] = "TRIANGLE_FAN";
17
- })(GltfPrimitiveModeString = exports.GltfPrimitiveModeString || (exports.GltfPrimitiveModeString = {}));
17
+ })(GltfPrimitiveModeString || (exports.GltfPrimitiveModeString = GltfPrimitiveModeString = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "4.0.0-alpha.11",
3
+ "version": "4.0.0-alpha.13",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -46,18 +46,18 @@
46
46
  "build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
47
47
  },
48
48
  "dependencies": {
49
- "@loaders.gl/3d-tiles": "4.0.0-alpha.11",
50
- "@loaders.gl/crypto": "4.0.0-alpha.11",
51
- "@loaders.gl/draco": "4.0.0-alpha.11",
52
- "@loaders.gl/gltf": "4.0.0-alpha.11",
53
- "@loaders.gl/i3s": "4.0.0-alpha.11",
54
- "@loaders.gl/images": "4.0.0-alpha.11",
55
- "@loaders.gl/loader-utils": "4.0.0-alpha.11",
56
- "@loaders.gl/polyfills": "4.0.0-alpha.11",
57
- "@loaders.gl/textures": "4.0.0-alpha.11",
58
- "@loaders.gl/tiles": "4.0.0-alpha.11",
59
- "@loaders.gl/worker-utils": "4.0.0-alpha.11",
60
- "@loaders.gl/zip": "4.0.0-alpha.11",
49
+ "@loaders.gl/3d-tiles": "4.0.0-alpha.13",
50
+ "@loaders.gl/crypto": "4.0.0-alpha.13",
51
+ "@loaders.gl/draco": "4.0.0-alpha.13",
52
+ "@loaders.gl/gltf": "4.0.0-alpha.13",
53
+ "@loaders.gl/i3s": "4.0.0-alpha.13",
54
+ "@loaders.gl/images": "4.0.0-alpha.13",
55
+ "@loaders.gl/loader-utils": "4.0.0-alpha.13",
56
+ "@loaders.gl/polyfills": "4.0.0-alpha.13",
57
+ "@loaders.gl/textures": "4.0.0-alpha.13",
58
+ "@loaders.gl/tiles": "4.0.0-alpha.13",
59
+ "@loaders.gl/worker-utils": "4.0.0-alpha.13",
60
+ "@loaders.gl/zip": "4.0.0-alpha.13",
61
61
  "@math.gl/core": "^3.5.1",
62
62
  "@math.gl/culling": "^3.5.1",
63
63
  "@math.gl/geoid": "^3.5.1",
@@ -80,5 +80,5 @@
80
80
  "join-images": "^1.1.3",
81
81
  "sharp": "^0.31.3"
82
82
  },
83
- "gitHead": "bc680098cfea790c67b7fb95bab96e8d9288d34f"
83
+ "gitHead": "32421ea66db35040f1026be734a7ec9f905ecab7"
84
84
  }
@@ -1,8 +1,8 @@
1
1
  import {GLTFAccessorPostprocessed, GLTFMeshPrimitivePostprocessed} from '@loaders.gl/gltf';
2
2
  import type {NumericArray} from '@loaders.gl/loader-utils';
3
3
  import type {
4
- GLTF_EXT_feature_metadata_attribute,
5
- GLTF_EXT_feature_metadata_primitive
4
+ GLTF_EXT_feature_metadata_FeatureIdTexture,
5
+ GLTF_EXT_feature_metadata_Primitive
6
6
  } from '@loaders.gl/gltf';
7
7
  import {TypedArray} from '@math.gl/core';
8
8
  import {TextureImageProperties} from '../../i3s-attributes-worker';
@@ -34,7 +34,7 @@ export function handleBatchIdsExtensions(
34
34
  case EXT_FEATURE_METADATA:
35
35
  return handleExtFeatureMetadataExtension(
36
36
  attributes,
37
- extensionData as GLTF_EXT_feature_metadata_primitive,
37
+ extensionData as GLTF_EXT_feature_metadata_Primitive,
38
38
  images
39
39
  );
40
40
  case EXT_MESH_FEATURES:
@@ -59,7 +59,7 @@ function handleExtFeatureMetadataExtension(
59
59
  attributes: {
60
60
  [key: string]: GLTFAccessorPostprocessed;
61
61
  },
62
- extFeatureMetadata: GLTF_EXT_feature_metadata_primitive,
62
+ extFeatureMetadata: GLTF_EXT_feature_metadata_Primitive,
63
63
  images: (TextureImageProperties | null)[]
64
64
  ): NumericArray {
65
65
  // Take only first extension object to get batchIds attribute name.
@@ -146,7 +146,7 @@ function generateImplicitFeatureIds(
146
146
  * @param featureIdTextures
147
147
  */
148
148
  function generateBatchIdsFromTexture(
149
- featureIdTexture: GLTF_EXT_feature_metadata_attribute,
149
+ featureIdTexture: GLTF_EXT_feature_metadata_FeatureIdTexture,
150
150
  textureCoordinates: TypedArray,
151
151
  images: (TextureImageProperties | null)[]
152
152
  ) {
@@ -1,13 +1,12 @@
1
1
  import type {FeatureTableJson, Tiles3DTileContent} from '@loaders.gl/3d-tiles';
2
2
  import type {
3
- GLTF_EXT_feature_metadata,
4
- GLTF_EXT_mesh_features,
5
3
  GLTFAccessorPostprocessed,
6
4
  GLTFMaterialPostprocessed,
7
5
  GLTFNodePostprocessed,
8
6
  GLTFMeshPrimitivePostprocessed,
9
7
  GLTFMeshPostprocessed,
10
- GLTFTexturePostprocessed
8
+ GLTFTexturePostprocessed,
9
+ GLTF_EXT_feature_metadata_GLTF
11
10
  } from '@loaders.gl/gltf';
12
11
 
13
12
  import {Vector3, Matrix4, Vector4} from '@math.gl/core';
@@ -1577,7 +1576,7 @@ export function getPropertyTable(tileContent: Tiles3DTileContent | null): Featur
1577
1576
  return null;
1578
1577
  }
1579
1578
  case EXT_FEATURE_METADATA: {
1580
- return getPropertyTableFromExtFeatureMetadata(extension as GLTF_EXT_feature_metadata);
1579
+ return getPropertyTableFromExtFeatureMetadata(extension as GLTF_EXT_feature_metadata_GLTF);
1581
1580
  }
1582
1581
  default:
1583
1582
  return null;
@@ -1588,9 +1587,10 @@ export function getPropertyTable(tileContent: Tiles3DTileContent | null): Featur
1588
1587
  * Check extensions which can be with property table inside.
1589
1588
  * @param tileContent - 3DTiles tile content
1590
1589
  */
1591
- function getPropertyTableExtension(
1592
- tileContent: Tiles3DTileContent
1593
- ): GLTF_EXT_feature_metadata | GLTF_EXT_mesh_features {
1590
+ function getPropertyTableExtension(tileContent: Tiles3DTileContent): {
1591
+ extensionName: null | string;
1592
+ extension: string | GLTF_EXT_feature_metadata_GLTF | null;
1593
+ } {
1594
1594
  const extensionsWithPropertyTables = [EXT_FEATURE_METADATA, EXT_MESH_FEATURES];
1595
1595
  const extensionsUsed = tileContent?.gltf?.extensionsUsed;
1596
1596
 
@@ -1599,7 +1599,6 @@ function getPropertyTableExtension(
1599
1599
  }
1600
1600
 
1601
1601
  let extensionName: string = '';
1602
-
1603
1602
  for (const extensionItem of tileContent?.gltf?.extensionsUsed || []) {
1604
1603
  if (extensionsWithPropertyTables.includes(extensionItem)) {
1605
1604
  extensionName = extensionItem;
@@ -1607,7 +1606,13 @@ function getPropertyTableExtension(
1607
1606
  }
1608
1607
  }
1609
1608
 
1610
- const extension = tileContent?.gltf?.extensions?.[extensionName];
1609
+ if (!extensionName) {
1610
+ return {extensionName: null, extension: null};
1611
+ }
1612
+
1613
+ const extension = tileContent?.gltf?.extensions?.[extensionName] as
1614
+ | string // EXT_mesh_features doesn't have global metadata
1615
+ | GLTF_EXT_feature_metadata_GLTF;
1611
1616
 
1612
1617
  return {extensionName, extension};
1613
1618
  }
@@ -1617,7 +1622,7 @@ function getPropertyTableExtension(
1617
1622
  * @param extension
1618
1623
  */
1619
1624
  function getPropertyTableFromExtFeatureMetadata(
1620
- extension: GLTF_EXT_feature_metadata
1625
+ extension: GLTF_EXT_feature_metadata_GLTF
1621
1626
  ): FeatureTableJson | null {
1622
1627
  if (extension?.featureTables) {
1623
1628
  /**
@@ -313,10 +313,18 @@ export default class I3SConverter {
313
313
  if (sourceTile.id) {
314
314
  console.log(`[analyze]: ${sourceTile.id}`); // eslint-disable-line
315
315
  }
316
- const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, {
317
- ...this.loadOptions,
318
- '3d-tiles': {...this.loadOptions['3d-tiles'], loadGLTF: false}
319
- });
316
+
317
+ let tileContent: Tiles3DTileContent | null = null;
318
+ try {
319
+ tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, {
320
+ ...this.loadOptions,
321
+ '3d-tiles': {...this.loadOptions['3d-tiles'], loadGLTF: false}
322
+ });
323
+ } catch (error) {
324
+ console.log(
325
+ `[warning]: Failed to load ${sourceTile.contentUrl}. An I3S tile with empty content will be added to the output tileset`
326
+ );
327
+ }
320
328
  const tilePreprocessData = await analyzeTileContent(tileContent);
321
329
  mergePreprocessData(this.preprocessData, tilePreprocessData);
322
330
 
@@ -576,7 +584,12 @@ export default class I3SConverter {
576
584
 
577
585
  await this._updateTilesetOptions();
578
586
 
579
- const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, this.loadOptions);
587
+ let tileContent: Tiles3DTileContent | null = null;
588
+ try {
589
+ tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, this.loadOptions);
590
+ } catch (error) {
591
+ console.log(`[warning]: Failed to load ${sourceTile.contentUrl}`);
592
+ }
580
593
  const sourceBoundingVolume = createBoundingVolume(
581
594
  sourceTile.boundingVolume,
582
595
  transformationMatrix,
@@ -753,13 +766,17 @@ export default class I3SConverter {
753
766
  }
754
767
 
755
768
  let nodeId = resources.nodeId;
756
- let node;
769
+ let node: NodeInPage;
757
770
  if (!nodeId) {
758
771
  node = await this.nodePages.push(nodeInPage, parentId);
759
772
  } else {
760
773
  node = await this.nodePages.getNodeById(nodeId);
761
774
  }
762
775
 
776
+ if (!nodeInPage.mesh) {
777
+ console.log(`[warning]: node ${node.index} is created with empty content`);
778
+ }
779
+
763
780
  NodePages.updateAll(node, nodeInPage);
764
781
  if (meshMaterial) {
765
782
  NodePages.updateMaterialByNodeId(node, this._findOrCreateMaterial(meshMaterial));