@loaders.gl/tile-converter 4.0.0-alpha.17 → 4.0.0-alpha.19

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 (69) hide show
  1. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +5 -4
  2. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  3. package/dist/3d-tiles-converter/3d-tiles-converter.js +39 -37
  4. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +3 -1
  5. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  6. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +4 -2
  7. package/dist/3d-tiles-converter/helpers/load-i3s.d.ts +10 -0
  8. package/dist/3d-tiles-converter/helpers/load-i3s.d.ts.map +1 -0
  9. package/dist/3d-tiles-converter/helpers/load-i3s.js +42 -0
  10. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +2 -1
  11. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -1
  12. package/dist/3d-tiles-converter/helpers/texture-atlas.js +2 -0
  13. package/dist/converter.min.js +71 -71
  14. package/dist/deps-installer/deps-installer.d.ts +3 -2
  15. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  16. package/dist/deps-installer/deps-installer.js +36 -10
  17. package/dist/dist.min.js +824 -3079
  18. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +94 -81
  19. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  20. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +6 -4
  21. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  22. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js +63 -0
  23. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
  24. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  25. package/dist/es5/deps-installer/deps-installer.js +112 -38
  26. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  27. package/dist/es5/i3s-converter/helpers/geometry-converter.js +12 -9
  28. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  29. package/dist/es5/i3s-converter/i3s-converter.js +32 -87
  30. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  31. package/dist/es5/lib/utils/lod-conversion-utils.js +10 -4
  32. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  33. package/dist/es5/pgm-loader.js +1 -1
  34. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +46 -43
  35. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  36. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +4 -3
  37. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  38. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js +32 -0
  39. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
  40. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  41. package/dist/esm/deps-installer/deps-installer.js +37 -11
  42. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  43. package/dist/esm/i3s-converter/helpers/geometry-converter.js +10 -6
  44. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  45. package/dist/esm/i3s-converter/i3s-converter.js +11 -28
  46. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  47. package/dist/esm/i3s-server/bin/i3s-server.min.js +72 -72
  48. package/dist/esm/lib/utils/lod-conversion-utils.js +6 -4
  49. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  50. package/dist/esm/pgm-loader.js +1 -1
  51. package/dist/i3s-converter/helpers/geometry-converter.d.ts +2 -4
  52. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  53. package/dist/i3s-converter/helpers/geometry-converter.js +18 -13
  54. package/dist/i3s-converter/i3s-converter.d.ts +0 -1
  55. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  56. package/dist/i3s-converter/i3s-converter.js +10 -22
  57. package/dist/lib/utils/lod-conversion-utils.d.ts +2 -2
  58. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  59. package/dist/lib/utils/lod-conversion-utils.js +4 -4
  60. package/dist/slpk-extractor.min.js +38 -38
  61. package/package.json +14 -14
  62. package/src/3d-tiles-converter/3d-tiles-converter.ts +60 -46
  63. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +11 -10
  64. package/src/3d-tiles-converter/helpers/load-i3s.ts +51 -0
  65. package/src/3d-tiles-converter/helpers/texture-atlas.ts +6 -2
  66. package/src/deps-installer/deps-installer.ts +55 -10
  67. package/src/i3s-converter/helpers/geometry-converter.ts +19 -14
  68. package/src/i3s-converter/i3s-converter.ts +12 -28
  69. package/src/lib/utils/lod-conversion-utils.ts +10 -6
@@ -14,7 +14,7 @@ import type {
14
14
  MaxScreenThresholdSQ,
15
15
  NodeInPage
16
16
  } from '@loaders.gl/i3s';
17
- import {load, encode, fetchFile, getLoaderOptions, isBrowser} from '@loaders.gl/core';
17
+ import {load, encode, isBrowser} from '@loaders.gl/core';
18
18
  import {CesiumIonLoader, Tiles3DLoader} from '@loaders.gl/3d-tiles';
19
19
  import {Geoid} from '@math.gl/geoid';
20
20
  import {join} from 'path';
@@ -56,8 +56,7 @@ import {
56
56
  PreprocessData,
57
57
  SharedResourcesArrays
58
58
  } from './types';
59
- import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
60
- import {DracoWriterWorker} from '@loaders.gl/draco';
59
+ import {WorkerFarm} from '@loaders.gl/worker-utils';
61
60
  import WriteQueue from '../lib/utils/write-queue';
62
61
  import {BROWSER_ERROR_MESSAGE} from '../constants';
63
62
  import {
@@ -111,6 +110,7 @@ export default class I3SConverter {
111
110
  loadOptions: Tiles3DLoaderOptions = {
112
111
  _nodeWorkers: true,
113
112
  reuseWorkers: true,
113
+ useLocalLibraries: true,
114
114
  basis: {
115
115
  format: 'rgba32',
116
116
  // We need to load local fs workers because nodejs can't load workers from the Internet
@@ -118,7 +118,8 @@ export default class I3SConverter {
118
118
  },
119
119
  // We need to load local fs workers because nodejs can't load workers from the Internet
120
120
  draco: {workerUrl: './modules/draco/dist/draco-worker-node.js'},
121
- fetch: {}
121
+ fetch: {},
122
+ modules: {}
122
123
  };
123
124
  geoidHeightModel: Geoid | null = null;
124
125
  Loader: LoaderWithParser = Tiles3DLoader;
@@ -236,8 +237,6 @@ export default class I3SConverter {
236
237
  this.nodePages.useWriteFunction(writeFileForSlpk);
237
238
  }
238
239
 
239
- await this.loadWorkers();
240
-
241
240
  try {
242
241
  const preloadOptions = await this._fetchPreloadOptions();
243
242
  let tilesetUrl = inputUrl;
@@ -719,7 +718,7 @@ export default class I3SConverter {
719
718
  this.generateBoundingVolumes,
720
719
  this.options.mergeMaterials,
721
720
  this.geoidHeightModel!,
722
- this.workerSource
721
+ this.loadOptions.modules as Record<string, string>
723
722
  );
724
723
  return resourcesData;
725
724
  }
@@ -935,9 +934,13 @@ export default class I3SConverter {
935
934
  KTX2BasisWriterWorker,
936
935
  {
937
936
  ...KTX2BasisWriterWorker.options,
938
- source: this.workerSource.ktx2,
937
+ ['ktx2-basis-writer']: {
938
+ // We need to load local fs workers because nodejs can't load workers from the Internet
939
+ workerUrl: './modules/textures/dist/ktx2-basis-writer-worker-node.js'
940
+ },
939
941
  reuseWorkers: true,
940
- _nodeWorkers: true
942
+ _nodeWorkers: true,
943
+ useLocalLibraries: true
941
944
  }
942
945
  );
943
946
 
@@ -1197,23 +1200,4 @@ export default class I3SConverter {
1197
1200
  private isContentSupported(sourceTile: Tiles3DTileJSONPostprocessed): boolean {
1198
1201
  return ['b3dm', 'glTF', 'scenegraph'].includes(sourceTile.type || '');
1199
1202
  }
1200
-
1201
- private async loadWorkers(): Promise<void> {
1202
- console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console
1203
- if (this.options.draco) {
1204
- const url = getWorkerURL(DracoWriterWorker, {...getLoaderOptions()});
1205
- const sourceResponse = await fetchFile(url);
1206
- const source = await sourceResponse.text();
1207
- this.workerSource.draco = source;
1208
- }
1209
-
1210
- if (this.generateTextures) {
1211
- const url = getWorkerURL(KTX2BasisWriterWorker, {...getLoaderOptions()});
1212
- const sourceResponse = await fetchFile(url);
1213
- const source = await sourceResponse.text();
1214
- this.workerSource.ktx2 = source;
1215
- }
1216
-
1217
- console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console
1218
- }
1219
1203
  }
@@ -1,6 +1,6 @@
1
1
  import {Tiles3DTileJSONPostprocessed} from '@loaders.gl/3d-tiles';
2
2
  import {BoundingVolumes} from '@loaders.gl/i3s';
3
- import {Tile3D} from '@loaders.gl/tiles';
3
+ import {I3STileHeader} from '@loaders.gl/i3s/src/types';
4
4
 
5
5
  // https://cesium.com/docs/cesiumjs-ref-doc/Cesium3DTileset.html
6
6
  const DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR = 16;
@@ -64,11 +64,15 @@ export function convertGeometricErrorToScreenThreshold(
64
64
  * @param node - i3s node data
65
65
  * @returns lod metric in 3d-tiles format
66
66
  */
67
- export function convertScreenThresholdToGeometricError(node: Tile3D): number {
68
- const metricData = node.header.lodSelection.maxScreenThreshold || {};
69
- let maxError = metricData.maxError;
67
+ export function convertScreenThresholdToGeometricError(node: I3STileHeader): number {
68
+ const metricData = node.lodSelection?.find(
69
+ (metric) => metric.metricType === 'maxScreenThreshold'
70
+ );
71
+ let maxError = metricData?.maxError;
70
72
  if (!maxError) {
71
- const sqMetricData = node.header.lodSelection.maxScreenThresholdSQ;
73
+ const sqMetricData = node.lodSelection?.find(
74
+ (metric) => metric.metricType === 'maxScreenThresholdSQ'
75
+ );
72
76
  if (sqMetricData) {
73
77
  maxError = Math.sqrt(sqMetricData.maxError / (Math.PI * 0.25));
74
78
  }
@@ -78,5 +82,5 @@ export function convertScreenThresholdToGeometricError(node: Tile3D): number {
78
82
  maxError = DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR;
79
83
  }
80
84
 
81
- return (node.header.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR) / maxError;
85
+ return (node.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR) / maxError;
82
86
  }