@loaders.gl/tile-converter 3.1.0-alpha.4 → 3.1.0-beta.5

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 (109) hide show
  1. package/bin/converter.js +1 -1
  2. package/dist/bundle.js +86025 -0
  3. package/dist/converter.min.js +292 -0
  4. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +189 -421
  5. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  6. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +214 -296
  7. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  8. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +4 -8
  9. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  10. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +40 -0
  11. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  12. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +7 -17
  13. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  14. package/dist/es5/bundle.js +1 -1
  15. package/dist/es5/bundle.js.map +1 -1
  16. package/dist/es5/deps-installer/deps-installer.js +17 -65
  17. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  18. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +16 -16
  19. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  20. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +9 -33
  21. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  22. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +93 -103
  23. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  24. package/dist/es5/i3s-converter/helpers/geometry-converter.js +348 -511
  25. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  26. package/dist/es5/i3s-converter/helpers/node-debug.js +30 -26
  27. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
  28. package/dist/es5/i3s-converter/helpers/node-pages.js +102 -203
  29. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  30. package/dist/es5/i3s-converter/i3s-converter.js +701 -1501
  31. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  32. package/dist/es5/i3s-converter/json-templates/layers.js +15 -25
  33. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  34. package/dist/es5/i3s-converter/json-templates/metadata.js +2 -2
  35. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
  36. package/dist/es5/i3s-converter/json-templates/node.js +12 -21
  37. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
  38. package/dist/es5/i3s-converter/json-templates/scene-server.js +3 -5
  39. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
  40. package/dist/es5/i3s-converter/json-templates/shared-resources.js +15 -55
  41. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  42. package/dist/es5/i3s-converter/json-templates/store.js +4 -6
  43. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
  44. package/dist/es5/i3s-server/app.js +6 -6
  45. package/dist/es5/i3s-server/app.js.map +1 -1
  46. package/dist/es5/i3s-server/controllers/index-controller.js +20 -60
  47. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  48. package/dist/es5/i3s-server/routes/index.js +14 -41
  49. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  50. package/dist/es5/index.js +4 -4
  51. package/dist/es5/lib/geoid-height-model.js +100 -114
  52. package/dist/es5/lib/geoid-height-model.js.map +1 -1
  53. package/dist/es5/lib/pgm-parser.js +68 -122
  54. package/dist/es5/lib/pgm-parser.js.map +1 -1
  55. package/dist/es5/lib/utils/compress-util.js +123 -345
  56. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  57. package/dist/es5/lib/utils/file-utils.js +20 -98
  58. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  59. package/dist/es5/lib/utils/lod-conversion-utils.js +9 -9
  60. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  61. package/dist/es5/lib/utils/statistic-utills.js +41 -152
  62. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  63. package/dist/es5/pgm-loader.js +3 -5
  64. package/dist/es5/pgm-loader.js.map +1 -1
  65. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +19 -13
  66. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  67. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +19 -8
  68. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  69. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  70. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  71. package/dist/esm/i3s-converter/helpers/geometry-converter.js +29 -31
  72. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  73. package/dist/esm/i3s-converter/helpers/node-debug.js +2 -2
  74. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
  75. package/dist/esm/i3s-converter/helpers/node-pages.js +2 -2
  76. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  77. package/dist/esm/i3s-converter/i3s-converter.js +50 -31
  78. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  79. package/dist/esm/i3s-converter/json-templates/metadata.js +1 -1
  80. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
  81. package/dist/esm/i3s-converter/json-templates/scene-server.js +1 -1
  82. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
  83. package/dist/esm/i3s-converter/json-templates/shared-resources.js +2 -2
  84. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  85. package/dist/esm/i3s-converter/json-templates/store.js +2 -2
  86. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
  87. package/dist/esm/i3s-server/controllers/index-controller.js +2 -2
  88. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
  89. package/dist/esm/lib/utils/compress-util.js +13 -13
  90. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  91. package/dist/esm/lib/utils/file-utils.js +1 -1
  92. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  93. package/dist/esm/lib/utils/statistic-utills.js +5 -5
  94. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  95. package/dist/esm/pgm-loader.js +1 -1
  96. package/dist/esm/pgm-loader.js.map +1 -1
  97. package/package.json +22 -19
  98. package/src/3d-tiles-converter/3d-tiles-converter.ts +4 -2
  99. package/src/3d-tiles-converter/helpers/b3dm-converter.js +35 -7
  100. package/src/3d-tiles-converter/helpers/texture-atlas.ts +55 -0
  101. package/src/i3s-converter/helpers/geometry-converter.js +21 -22
  102. package/src/i3s-converter/i3s-converter.ts +32 -7
  103. package/src/i3s-converter/json-templates/metadata.js +1 -1
  104. package/src/i3s-converter/json-templates/scene-server.js +1 -1
  105. package/src/i3s-converter/json-templates/store.js +2 -2
  106. package/src/i3s-server/controllers/index-controller.js +1 -1
  107. package/dist/dist.min.js +0 -94
  108. package/dist/dist.min.js.map +0 -1
  109. package/dist/scripts/converter.js +0 -274
@@ -19,9 +19,9 @@ import type {
19
19
  Field,
20
20
  PopupInfo
21
21
  } from '@loaders.gl/i3s';
22
- import {load} from '@loaders.gl/core';
22
+ import {load, encode} from '@loaders.gl/core';
23
23
  import {Tileset3D} from '@loaders.gl/tiles';
24
- import {CesiumIonLoader} from '@loaders.gl/3d-tiles';
24
+ import {CesiumIonLoader, Tiles3DLoader} from '@loaders.gl/3d-tiles';
25
25
  import {join} from 'path';
26
26
  import {v4 as uuidv4} from 'uuid';
27
27
  import process from 'process';
@@ -51,6 +51,8 @@ import {SHARED_RESOURCES_TEMPLATE} from './json-templates/shared-resources';
51
51
  import {validateNodeBoundingVolumes} from './helpers/node-debug';
52
52
  import {GeoidHeightModel} from '../lib/geoid-height-model';
53
53
  import TileHeader from '@loaders.gl/tiles/src/tileset/tile-3d';
54
+ import {KTX2BasisUniversalTextureWriter} from '@loaders.gl/textures';
55
+ import {LoaderWithParser} from '@loaders.gl/loader-utils';
54
56
 
55
57
  const ION_DEFAULT_TOKEN =
56
58
  process.env.IonToken || // eslint-disable-line
@@ -63,6 +65,7 @@ const SHORT_INT_TYPE = 'Int32';
63
65
  const DOUBLE_TYPE = 'double';
64
66
  const OBJECT_ID_TYPE = 'OBJECTID';
65
67
  const REFRESH_TOKEN_TIMEOUT = 1800; // 30 minutes in seconds
68
+ const CESIUM_DATASET_PREFIX = 'https://';
66
69
  // const FS_FILE_TOO_LARGE = 'ERR_FS_FILE_TOO_LARGE';
67
70
 
68
71
  /**
@@ -88,6 +91,7 @@ export default class I3SConverter {
88
91
  refreshTokenTime: [number, number];
89
92
  sourceTileset: Tileset3D | null;
90
93
  geoidHeightModel: GeoidHeightModel | null;
94
+ Loader: LoaderWithParser = Tiles3DLoader;
91
95
 
92
96
  constructor() {
93
97
  this.nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);
@@ -148,6 +152,7 @@ export default class I3SConverter {
148
152
  } = options;
149
153
  this.options = {maxDepth, slpk, sevenZipExe, egmFilePath, draco, token, inputUrl};
150
154
  this.validate = validate;
155
+ this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? CesiumIonLoader : Tiles3DLoader;
151
156
 
152
157
  console.log('Loading egm file...'); // eslint-disable-line
153
158
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
@@ -163,7 +168,7 @@ export default class I3SConverter {
163
168
  tilesetOptions.loadOptions.fetch = {headers: preloadOptions.headers};
164
169
  }
165
170
  Object.assign(tilesetOptions, preloadOptions);
166
- const sourceTilesetJson = await load(inputUrl, CesiumIonLoader, tilesetOptions.loadOptions);
171
+ const sourceTilesetJson = await load(inputUrl, this.Loader, tilesetOptions.loadOptions);
167
172
  // console.log(tilesetJson); // eslint-disable-line
168
173
  this.sourceTileset = new Tileset3D(sourceTilesetJson, tilesetOptions);
169
174
 
@@ -636,14 +641,14 @@ export default class I3SConverter {
636
641
  parentId: number,
637
642
  resources: I3SGeometry
638
643
  ): NodeInPage {
639
- const {meshMaterial, texture, vertexCount, featureCount} = resources;
644
+ const {meshMaterial, texture, vertexCount, featureCount, geometry} = resources;
640
645
  const nodeInPage = {
641
646
  lodThreshold: maxScreenThresholdSQ.maxError,
642
647
  obb: boundingVolumes.obb,
643
648
  children: [],
644
649
  mesh: null
645
650
  };
646
- if (sourceTile.content && sourceTile.content.type === 'b3dm') {
651
+ if (geometry && sourceTile.content && sourceTile.content.type === 'b3dm') {
647
652
  nodeInPage.mesh = {
648
653
  geometry: {
649
654
  definition: texture ? 0 : 1
@@ -717,7 +722,7 @@ export default class I3SConverter {
717
722
  node.sharedResource = {href: './shared'};
718
723
 
719
724
  if (texture) {
720
- node.textureData = [{href: './textures/0'}];
725
+ node.textureData = [{href: './textures/0'}, {href: './textures/1'}];
721
726
  }
722
727
 
723
728
  if (
@@ -852,24 +857,41 @@ export default class I3SConverter {
852
857
  {
853
858
  name: '0',
854
859
  format
860
+ },
861
+ {
862
+ name: '1',
863
+ format: 'ktx2'
855
864
  }
856
865
  ]
857
866
  });
858
867
  }
859
868
 
860
869
  const textureData = texture.bufferView.data;
870
+ const ktx2TextureData = await encode(texture.image, KTX2BasisUniversalTextureWriter);
871
+
861
872
  if (this.options.slpk) {
862
873
  const slpkTexturePath = join(childPath, 'textures');
863
874
  const compress = false;
875
+
864
876
  this.fileMap[`${slpkChildPath}/textures/0.${format}`] = await writeFileForSlpk(
865
877
  slpkTexturePath,
866
878
  textureData,
867
879
  `0.${format}`,
868
880
  compress
869
881
  );
882
+
883
+ this.fileMap[`${slpkChildPath}/textures/1.ktx2`] = await writeFileForSlpk(
884
+ slpkTexturePath,
885
+ ktx2TextureData,
886
+ `1.ktx2`,
887
+ compress
888
+ );
870
889
  } else {
871
890
  const texturePath = join(childPath, 'textures/0/');
872
891
  await writeFile(texturePath, textureData, `index.${format}`);
892
+
893
+ const ktx2TexturePath = join(childPath, 'textures/1/');
894
+ await writeFile(ktx2TexturePath, ktx2TextureData, `index.ktx2`);
873
895
  }
874
896
  }
875
897
  }
@@ -1159,10 +1181,13 @@ export default class I3SConverter {
1159
1181
  * Fetch preload options for ION tileset
1160
1182
  */
1161
1183
  private async _fetchPreloadOptions(): Promise<any> {
1184
+ if (!this.Loader.preload) {
1185
+ return {};
1186
+ }
1162
1187
  const options = {
1163
1188
  'cesium-ion': {accessToken: this.options.token || ION_DEFAULT_TOKEN}
1164
1189
  };
1165
- const preloadOptions = await CesiumIonLoader.preload(this.options.inputUrl, options);
1190
+ const preloadOptions = await this.Loader.preload(this.options.inputUrl, options);
1166
1191
  this.refreshTokenTime = process.hrtime();
1167
1192
  return {...options, ...preloadOptions};
1168
1193
  }
@@ -13,7 +13,7 @@ export const METADATA = {
13
13
  },
14
14
  I3SVersion: {
15
15
  path: 'I3SVersion',
16
- default: '1.7'
16
+ default: '1.8'
17
17
  },
18
18
  nodeCount: {
19
19
  path: 'nodeCount'
@@ -14,7 +14,7 @@ export const SCENE_SERVER_TEMPLATE = {
14
14
  },
15
15
  serviceVersion: {
16
16
  path: 'serviceVersion',
17
- default: '1.7'
17
+ default: '1.8'
18
18
  },
19
19
  supportedBindings: {
20
20
  path: 'supportedBindings',
@@ -9,7 +9,7 @@ export const STORE = {
9
9
  },
10
10
  version: {
11
11
  path: 'version',
12
- default: '1.7'
12
+ default: '1.8'
13
13
  },
14
14
  resourcePattern: {
15
15
  path: 'resourcePattern',
@@ -40,7 +40,7 @@ export const STORE = {
40
40
  },
41
41
  textureEncoding: {
42
42
  path: 'textureEncoding',
43
- default: ['image/jpeg']
43
+ default: ['image/jpeg', 'image/ktx2']
44
44
  },
45
45
  lodType: {
46
46
  path: 'lodType',
@@ -7,7 +7,7 @@ const I3S_LAYER_PATH = process.env.I3sLayerPath || ''; // eslint-disable-line no
7
7
  const FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH); // eslint-disable-line no-undef
8
8
 
9
9
  async function getFileNameByUrl(url) {
10
- const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds'];
10
+ const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];
11
11
  for (const ext of extensions) {
12
12
  const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;
13
13
  try {