@loaders.gl/tile-converter 4.0.0-alpha.21 → 4.0.0-alpha.22
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.
- package/dist/converter.min.js +112 -112
- package/dist/dist.min.js +856 -195
- package/dist/es5/deps-installer/deps-installer.js +1 -1
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +70 -4
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +34 -32
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/esm/deps-installer/deps-installer.js +1 -1
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +33 -4
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +7 -5
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-server/bin/i3s-server.min.js +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +15 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/load-3d-tiles.js +51 -5
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +6 -4
- package/dist/slpk-extractor.min.js +1 -1
- package/package.json +14 -14
- package/src/i3s-converter/helpers/load-3d-tiles.ts +61 -5
- package/src/i3s-converter/i3s-converter.ts +12 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tile-converter",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.22",
|
|
4
4
|
"description": "Converter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -45,18 +45,18 @@
|
|
|
45
45
|
"build-i3s-server-bundle": "esbuild src/i3s-server/bin/www.ts --outfile=dist/esm/i3s-server/bin/i3s-server.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@loaders.gl/3d-tiles": "4.0.0-alpha.
|
|
49
|
-
"@loaders.gl/crypto": "4.0.0-alpha.
|
|
50
|
-
"@loaders.gl/draco": "4.0.0-alpha.
|
|
51
|
-
"@loaders.gl/gltf": "4.0.0-alpha.
|
|
52
|
-
"@loaders.gl/i3s": "4.0.0-alpha.
|
|
53
|
-
"@loaders.gl/images": "4.0.0-alpha.
|
|
54
|
-
"@loaders.gl/loader-utils": "4.0.0-alpha.
|
|
55
|
-
"@loaders.gl/polyfills": "4.0.0-alpha.
|
|
56
|
-
"@loaders.gl/textures": "4.0.0-alpha.
|
|
57
|
-
"@loaders.gl/tiles": "4.0.0-alpha.
|
|
58
|
-
"@loaders.gl/worker-utils": "4.0.0-alpha.
|
|
59
|
-
"@loaders.gl/zip": "4.0.0-alpha.
|
|
48
|
+
"@loaders.gl/3d-tiles": "4.0.0-alpha.22",
|
|
49
|
+
"@loaders.gl/crypto": "4.0.0-alpha.22",
|
|
50
|
+
"@loaders.gl/draco": "4.0.0-alpha.22",
|
|
51
|
+
"@loaders.gl/gltf": "4.0.0-alpha.22",
|
|
52
|
+
"@loaders.gl/i3s": "4.0.0-alpha.22",
|
|
53
|
+
"@loaders.gl/images": "4.0.0-alpha.22",
|
|
54
|
+
"@loaders.gl/loader-utils": "4.0.0-alpha.22",
|
|
55
|
+
"@loaders.gl/polyfills": "4.0.0-alpha.22",
|
|
56
|
+
"@loaders.gl/textures": "4.0.0-alpha.22",
|
|
57
|
+
"@loaders.gl/tiles": "4.0.0-alpha.22",
|
|
58
|
+
"@loaders.gl/worker-utils": "4.0.0-alpha.22",
|
|
59
|
+
"@loaders.gl/zip": "4.0.0-alpha.22",
|
|
60
60
|
"@math.gl/core": "^3.5.1",
|
|
61
61
|
"@math.gl/culling": "^3.5.1",
|
|
62
62
|
"@math.gl/geoid": "^3.5.1",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"join-images": "^1.1.3",
|
|
81
81
|
"sharp": "^0.31.3"
|
|
82
82
|
},
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "0da838c506d1275383f2fd3d244d9c72b25397d2",
|
|
84
84
|
"devDependencies": {
|
|
85
85
|
"@types/express": "^4.17.17",
|
|
86
86
|
"@types/node": "^20.4.2"
|
|
@@ -4,7 +4,8 @@ import type {
|
|
|
4
4
|
Tiles3DTileJSONPostprocessed,
|
|
5
5
|
Tiles3DTilesetJSONPostprocessed
|
|
6
6
|
} from '@loaders.gl/3d-tiles';
|
|
7
|
-
import {
|
|
7
|
+
import {Tiles3DArchiveFileSystem} from '@loaders.gl/3d-tiles';
|
|
8
|
+
import {LoaderWithParser, load} from '@loaders.gl/core';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Load nested 3DTiles tileset. If the sourceTile is not nested tileset - do nothing
|
|
@@ -18,7 +19,7 @@ export const loadNestedTileset = async (
|
|
|
18
19
|
sourceTile: Tiles3DTileJSONPostprocessed,
|
|
19
20
|
tilesetLoadOptions: Tiles3DLoaderOptions
|
|
20
21
|
): Promise<void> => {
|
|
21
|
-
const isTileset = sourceTile
|
|
22
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
22
23
|
if (!sourceTileset || !sourceTile.contentUrl || !isTileset) {
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
@@ -30,7 +31,11 @@ export const loadNestedTileset = async (
|
|
|
30
31
|
assetGltfUpAxis: (sourceTileset.asset && sourceTileset.asset.gltfUpAxis) || 'Y'
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
|
-
const tileContent = await
|
|
34
|
+
const tileContent = await loadFromArchive(
|
|
35
|
+
sourceTile.contentUrl,
|
|
36
|
+
sourceTileset.loader,
|
|
37
|
+
loadOptions
|
|
38
|
+
);
|
|
34
39
|
|
|
35
40
|
if (tileContent.root) {
|
|
36
41
|
sourceTile.children = [tileContent.root];
|
|
@@ -49,7 +54,7 @@ export const loadTile3DContent = async (
|
|
|
49
54
|
sourceTile: Tiles3DTileJSONPostprocessed,
|
|
50
55
|
tilesetLoadOptions: Tiles3DLoaderOptions
|
|
51
56
|
): Promise<Tiles3DTileContent | null> => {
|
|
52
|
-
const isTileset = sourceTile
|
|
57
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
53
58
|
if (!sourceTileset || !sourceTile.contentUrl || isTileset) {
|
|
54
59
|
return null;
|
|
55
60
|
}
|
|
@@ -62,7 +67,58 @@ export const loadTile3DContent = async (
|
|
|
62
67
|
assetGltfUpAxis: (sourceTileset.asset && sourceTileset.asset.gltfUpAxis) || 'Y'
|
|
63
68
|
}
|
|
64
69
|
};
|
|
65
|
-
const tileContent = await
|
|
70
|
+
const tileContent = await loadFromArchive(
|
|
71
|
+
sourceTile.contentUrl,
|
|
72
|
+
sourceTileset.loader,
|
|
73
|
+
loadOptions
|
|
74
|
+
);
|
|
66
75
|
|
|
67
76
|
return tileContent;
|
|
68
77
|
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Load a resource with load options and .3tz format support
|
|
81
|
+
* @param url - resource URL
|
|
82
|
+
* @param loader - loader to parse data (Tiles3DLoader / CesiumIonLoader)
|
|
83
|
+
* @param loadOptions - 3d-tiles loader options
|
|
84
|
+
* @returns 3d-tiles resource
|
|
85
|
+
*/
|
|
86
|
+
export async function loadFromArchive(
|
|
87
|
+
url: string,
|
|
88
|
+
loader: LoaderWithParser,
|
|
89
|
+
loadOptions: Tiles3DLoaderOptions
|
|
90
|
+
) {
|
|
91
|
+
const tz3UrlParts = url.split('.3tz');
|
|
92
|
+
let filename: string | null;
|
|
93
|
+
// No '.3tz'. The file will be loaded with global fetch function
|
|
94
|
+
if (tz3UrlParts.length === 1) {
|
|
95
|
+
filename = null;
|
|
96
|
+
} else if (tz3UrlParts.length === 2) {
|
|
97
|
+
filename = tz3UrlParts[1].slice(1);
|
|
98
|
+
if (filename === '') {
|
|
99
|
+
filename = 'tileset.json';
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
throw new Error('Unexpected URL format');
|
|
103
|
+
}
|
|
104
|
+
if (filename) {
|
|
105
|
+
const tz3Path = `${tz3UrlParts[0]}.3tz`;
|
|
106
|
+
const fileSystem = new Tiles3DArchiveFileSystem(tz3Path);
|
|
107
|
+
const content = await load(filename, loader, {
|
|
108
|
+
...loadOptions,
|
|
109
|
+
fetch: fileSystem.fetch.bind(fileSystem)
|
|
110
|
+
});
|
|
111
|
+
await fileSystem.destroy();
|
|
112
|
+
return content;
|
|
113
|
+
}
|
|
114
|
+
return await load(url, loader, loadOptions);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Check if tile is nested tileset
|
|
119
|
+
* @param tile - 3DTiles header data
|
|
120
|
+
* @returns true if tile is nested tileset
|
|
121
|
+
*/
|
|
122
|
+
export function isNestedTileset(tile: Tiles3DTileJSONPostprocessed) {
|
|
123
|
+
return tile?.type === 'json' || tile?.type === '3tz';
|
|
124
|
+
}
|
|
@@ -67,7 +67,12 @@ import {
|
|
|
67
67
|
getFieldAttributeType
|
|
68
68
|
} from './helpers/feature-attributes';
|
|
69
69
|
import {NodeIndexDocument} from './helpers/node-index-document';
|
|
70
|
-
import {
|
|
70
|
+
import {
|
|
71
|
+
isNestedTileset,
|
|
72
|
+
loadNestedTileset,
|
|
73
|
+
loadTile3DContent,
|
|
74
|
+
loadFromArchive
|
|
75
|
+
} from './helpers/load-3d-tiles';
|
|
71
76
|
import {Matrix4} from '@math.gl/core';
|
|
72
77
|
import {BoundingSphere, OrientedBoundingBox} from '@math.gl/culling';
|
|
73
78
|
import {createBoundingVolume} from '@loaders.gl/tiles';
|
|
@@ -251,7 +256,7 @@ export default class I3SConverter {
|
|
|
251
256
|
if (preloadOptions.headers) {
|
|
252
257
|
this.loadOptions.fetch = {headers: preloadOptions.headers};
|
|
253
258
|
}
|
|
254
|
-
this.sourceTileset = await
|
|
259
|
+
this.sourceTileset = await loadFromArchive(tilesetUrl, this.Loader, this.loadOptions);
|
|
255
260
|
|
|
256
261
|
const preprocessResult = await this.preprocessConversion();
|
|
257
262
|
|
|
@@ -349,7 +354,8 @@ export default class I3SConverter {
|
|
|
349
354
|
sourceTile: Tiles3DTileJSONPostprocessed,
|
|
350
355
|
traversalProps: null
|
|
351
356
|
): Promise<null> {
|
|
352
|
-
|
|
357
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
358
|
+
if (isTileset) {
|
|
353
359
|
await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);
|
|
354
360
|
return null;
|
|
355
361
|
}
|
|
@@ -562,8 +568,9 @@ export default class I3SConverter {
|
|
|
562
568
|
sourceTile: Tiles3DTileJSONPostprocessed,
|
|
563
569
|
traversalProps: TraversalConversionProps
|
|
564
570
|
): Promise<TraversalConversionProps> {
|
|
565
|
-
|
|
566
|
-
|
|
571
|
+
const isTileset = isNestedTileset(sourceTile);
|
|
572
|
+
if (isTileset || sourceTile.type === 'empty') {
|
|
573
|
+
if (isTileset) {
|
|
567
574
|
if (sourceTile.id) {
|
|
568
575
|
console.log(`[load]: ${sourceTile.id}`); // eslint-disable-line
|
|
569
576
|
}
|