@loaders.gl/tile-converter 4.0.0-alpha.6 → 4.0.0-alpha.8
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/bin/converter.js +1 -1
- package/dist/3d-tiles-attributes-worker.js +2 -2
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js +4 -3
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -8
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +2 -15
- package/dist/converter.min.js +75 -76
- package/dist/deps-installer/deps-installer.js +4 -4
- package/dist/dist.min.js +2529 -1884
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +0 -3
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +2 -10
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +5 -5
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +4 -4
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +6 -7
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +49 -30
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +46 -16
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js +74 -45
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/es5/i3s-converter/i3s-converter.js +545 -523
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +16 -0
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/README.md +19 -0
- package/dist/es5/i3s-server/app.js +10 -1
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
- package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/es5/lib/utils/file-utils.js +1 -1
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/geometry-utils.js +15 -0
- package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +0 -3
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +2 -8
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +5 -5
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +4 -4
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +6 -7
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +37 -18
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +50 -16
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js +14 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/esm/i3s-converter/i3s-converter.js +134 -127
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +10 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/README.md +19 -0
- package/dist/esm/i3s-server/app.js +11 -1
- package/dist/esm/i3s-server/app.js.map +1 -1
- package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
- package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/esm/lib/utils/file-utils.js +1 -1
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/geometry-utils.js +8 -0
- package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-attributes-worker.d.ts +10 -2
- package/dist/i3s-attributes-worker.d.ts.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -2
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +4 -2
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +4 -7
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +3 -4
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js +8 -9
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +9 -4
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +84 -54
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +22 -3
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.js +62 -22
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts +8 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-index-document.js +20 -2
- package/dist/i3s-converter/helpers/node-pages.js +1 -1
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +23 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +76 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
- package/dist/i3s-converter/i3s-converter.d.ts +40 -40
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +150 -125
- package/dist/i3s-converter/types.d.ts +18 -0
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-converter/types.js +15 -0
- package/dist/i3s-server/app.d.ts.map +1 -1
- package/dist/i3s-server/app.js +9 -1
- package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
- package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/slpk-controller.js +32 -0
- package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
- package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
- package/dist/i3s-server/routes/slpk-router.js +33 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
- package/dist/i3s-server/utils/create-scene-server.js +14 -0
- package/dist/lib/utils/file-utils.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.js +2 -1
- package/dist/lib/utils/geometry-utils.d.ts +9 -0
- package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
- package/dist/lib/utils/geometry-utils.js +18 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts +3 -2
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
- package/dist/lib/utils/lod-conversion-utils.js +1 -1
- package/package.json +15 -16
- package/src/3d-tiles-converter/3d-tiles-converter.ts +9 -8
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +2 -16
- package/src/deps-installer/deps-installer.ts +4 -4
- package/src/i3s-attributes-worker.ts +11 -2
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +15 -19
- package/src/i3s-converter/helpers/coordinate-converter.ts +11 -10
- package/src/i3s-converter/helpers/geometry-converter.ts +154 -95
- package/src/i3s-converter/helpers/gltf-attributes.ts +85 -25
- package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
- package/src/i3s-converter/helpers/node-index-document.ts +22 -2
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +81 -0
- package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
- package/src/i3s-converter/i3s-converter.ts +229 -178
- package/src/i3s-converter/types.ts +20 -0
- package/src/i3s-server/README.md +19 -0
- package/src/i3s-server/app.js +8 -1
- package/src/i3s-server/controllers/slpk-controller.js +38 -0
- package/src/i3s-server/routes/slpk-router.js +33 -0
- package/src/i3s-server/utils/create-scene-server.js +15 -0
- package/src/lib/utils/file-utils.ts +2 -1
- package/src/lib/utils/geometry-utils.ts +14 -0
- package/src/lib/utils/lod-conversion-utils.ts +6 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
var _process$env;
|
|
3
3
|
import { load, encode, fetchFile, getLoaderOptions, isBrowser } from '@loaders.gl/core';
|
|
4
|
-
import { Tileset3D } from '@loaders.gl/tiles';
|
|
5
4
|
import { CesiumIonLoader, Tiles3DLoader } from '@loaders.gl/3d-tiles';
|
|
6
5
|
import { join } from 'path';
|
|
7
6
|
import { v4 as uuidv4 } from 'uuid';
|
|
@@ -23,6 +22,7 @@ import { SHARED_RESOURCES as sharedResourcesTemplate } from './json-templates/sh
|
|
|
23
22
|
import { validateNodeBoundingVolumes } from './helpers/node-debug';
|
|
24
23
|
import { KTX2BasisWriterWorker } from '@loaders.gl/textures';
|
|
25
24
|
import { ImageWriter } from '@loaders.gl/images';
|
|
25
|
+
import { GltfPrimitiveModeString } from './types';
|
|
26
26
|
import { getWorkerURL, WorkerFarm } from '@loaders.gl/worker-utils';
|
|
27
27
|
import { DracoWriterWorker } from '@loaders.gl/draco';
|
|
28
28
|
import WriteQueue from '../lib/utils/write-queue';
|
|
@@ -30,6 +30,11 @@ import { I3SAttributesWorker } from '../i3s-attributes-worker';
|
|
|
30
30
|
import { BROWSER_ERROR_MESSAGE } from '../constants';
|
|
31
31
|
import { createdStorageAttribute, createFieldAttribute, createPopupInfo, getAttributeType, getFieldAttributeType } from './helpers/feature-attributes';
|
|
32
32
|
import { NodeIndexDocument } from './helpers/node-index-document';
|
|
33
|
+
import { loadNestedTileset, loadTile3DContent } from './helpers/load-3d-tiles';
|
|
34
|
+
import { Matrix4 } from '@math.gl/core';
|
|
35
|
+
import { createBoundingVolume } from '@loaders.gl/tiles';
|
|
36
|
+
import { traverseDatasetWith } from './helpers/tileset-traversal';
|
|
37
|
+
import { analyzeTileContent, mergePreprocessData } from './helpers/preprocess-3d-tiles';
|
|
33
38
|
const ION_DEFAULT_TOKEN = ((_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken) || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ';
|
|
34
39
|
const HARDCODED_NODES_PER_PAGE = 64;
|
|
35
40
|
const _3D_TILES = '3DTILES';
|
|
@@ -54,6 +59,18 @@ export default class I3SConverter {
|
|
|
54
59
|
_defineProperty(this, "conversionStartTime", [0, 0]);
|
|
55
60
|
_defineProperty(this, "refreshTokenTime", [0, 0]);
|
|
56
61
|
_defineProperty(this, "sourceTileset", null);
|
|
62
|
+
_defineProperty(this, "loadOptions", {
|
|
63
|
+
_nodeWorkers: true,
|
|
64
|
+
reuseWorkers: true,
|
|
65
|
+
basis: {
|
|
66
|
+
format: 'rgba32',
|
|
67
|
+
workerUrl: './modules/textures/dist/basis-worker-node.js'
|
|
68
|
+
},
|
|
69
|
+
draco: {
|
|
70
|
+
workerUrl: './modules/draco/dist/draco-worker-node.js'
|
|
71
|
+
},
|
|
72
|
+
fetch: {}
|
|
73
|
+
});
|
|
57
74
|
_defineProperty(this, "geoidHeightModel", null);
|
|
58
75
|
_defineProperty(this, "Loader", Tiles3DLoader);
|
|
59
76
|
_defineProperty(this, "generateTextures", void 0);
|
|
@@ -62,6 +79,9 @@ export default class I3SConverter {
|
|
|
62
79
|
_defineProperty(this, "workerSource", {});
|
|
63
80
|
_defineProperty(this, "writeQueue", new WriteQueue());
|
|
64
81
|
_defineProperty(this, "compressList", null);
|
|
82
|
+
_defineProperty(this, "preprocessData", {
|
|
83
|
+
meshTopologyTypes: new Set()
|
|
84
|
+
});
|
|
65
85
|
this.nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE, this);
|
|
66
86
|
this.options = {};
|
|
67
87
|
this.layers0Path = '';
|
|
@@ -130,57 +150,81 @@ export default class I3SConverter {
|
|
|
130
150
|
}
|
|
131
151
|
await this.loadWorkers();
|
|
132
152
|
try {
|
|
133
|
-
var _sourceTilesetJson$ro, _sourceTilesetJson$ro2;
|
|
134
153
|
const preloadOptions = await this._fetchPreloadOptions();
|
|
135
|
-
const tilesetOptions = {
|
|
136
|
-
loadOptions: {
|
|
137
|
-
_nodeWorkers: true,
|
|
138
|
-
reuseWorkers: true,
|
|
139
|
-
basis: {
|
|
140
|
-
format: 'rgba32'
|
|
141
|
-
},
|
|
142
|
-
'basis-nodejs': {
|
|
143
|
-
format: 'rgba32',
|
|
144
|
-
workerUrl: './modules/textures/dist/basis-nodejs-worker.js'
|
|
145
|
-
},
|
|
146
|
-
'draco-nodejs': {
|
|
147
|
-
workerUrl: './modules/draco/dist/draco-nodejs-worker.js'
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
154
|
if (preloadOptions.headers) {
|
|
152
|
-
|
|
155
|
+
this.loadOptions.fetch = {
|
|
153
156
|
headers: preloadOptions.headers
|
|
154
157
|
};
|
|
155
158
|
}
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
this.sourceTileset = await load(inputUrl, this.Loader, this.loadOptions);
|
|
160
|
+
const preprocessResult = await this.preprocessConversion();
|
|
161
|
+
if (preprocessResult) {
|
|
162
|
+
await this._createAndSaveTileset(outputPath, tilesetName);
|
|
163
|
+
await this._finishConversion({
|
|
164
|
+
slpk: Boolean(slpk),
|
|
165
|
+
outputPath,
|
|
166
|
+
tilesetName
|
|
167
|
+
});
|
|
168
|
+
}
|
|
166
169
|
} catch (error) {
|
|
167
170
|
throw error;
|
|
168
171
|
} finally {
|
|
172
|
+
await this.writeQueue.finalize();
|
|
169
173
|
const workerFarm = WorkerFarm.getWorkerFarm({});
|
|
170
174
|
workerFarm.destroy();
|
|
171
175
|
}
|
|
176
|
+
return 'success';
|
|
177
|
+
}
|
|
178
|
+
async preprocessConversion() {
|
|
179
|
+
console.log("Analyze source tileset");
|
|
180
|
+
const sourceRootTile = this.sourceTileset.root;
|
|
181
|
+
await traverseDatasetWith(sourceRootTile, null, this.analyzeTile.bind(this), undefined, this.options.maxDepth);
|
|
182
|
+
const {
|
|
183
|
+
meshTopologyTypes
|
|
184
|
+
} = this.preprocessData;
|
|
185
|
+
console.log("------------------------------------------------");
|
|
186
|
+
console.log("Preprocess results:");
|
|
187
|
+
console.log("glTF mesh topology types: ".concat(Array.from(meshTopologyTypes).join(', ')));
|
|
188
|
+
console.log("------------------------------------------------");
|
|
189
|
+
if (!meshTopologyTypes.has(GltfPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(GltfPrimitiveModeString.TRIANGLE_STRIP)) {
|
|
190
|
+
console.log('The tileset is of unsupported mesh topology types. The conversion will be interrupted.');
|
|
191
|
+
console.log("------------------------------------------------");
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
return true;
|
|
172
195
|
}
|
|
173
|
-
async
|
|
196
|
+
async analyzeTile(sourceTile, traversalProps) {
|
|
197
|
+
if (sourceTile.type === 'json') {
|
|
198
|
+
await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
if (sourceTile.id) {
|
|
202
|
+
console.log("[analyze]: ".concat(sourceTile.id));
|
|
203
|
+
}
|
|
204
|
+
const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, {
|
|
205
|
+
...this.loadOptions,
|
|
206
|
+
'3d-tiles': {
|
|
207
|
+
...this.loadOptions['3d-tiles'],
|
|
208
|
+
loadGLTF: false
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
const tilePreprocessData = await analyzeTileContent(sourceTile, tileContent);
|
|
212
|
+
mergePreprocessData(this.preprocessData, tilePreprocessData);
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
async _createAndSaveTileset(outputPath, tilesetName) {
|
|
216
|
+
var _this$sourceTileset, _this$sourceTileset$r, _this$sourceTileset$r2;
|
|
174
217
|
const tilesetPath = join("".concat(outputPath), "".concat(tilesetName));
|
|
175
218
|
try {
|
|
176
219
|
await removeDir(tilesetPath);
|
|
177
220
|
} catch (e) {}
|
|
178
221
|
this.layers0Path = join(tilesetPath, 'SceneServer', 'layers', '0');
|
|
179
|
-
this._formLayers0(tilesetName, boundingVolumeRegion);
|
|
180
222
|
this.materialDefinitions = [];
|
|
181
223
|
this.materialMap = new Map();
|
|
182
224
|
const sourceRootTile = this.sourceTileset.root;
|
|
183
|
-
const
|
|
225
|
+
const sourceBoundingVolume = createBoundingVolume(sourceRootTile.boundingVolume, new Matrix4(sourceRootTile.transform), null);
|
|
226
|
+
this._formLayers0(tilesetName, sourceBoundingVolume, (_this$sourceTileset = this.sourceTileset) === null || _this$sourceTileset === void 0 ? void 0 : (_this$sourceTileset$r = _this$sourceTileset.root) === null || _this$sourceTileset$r === void 0 ? void 0 : (_this$sourceTileset$r2 = _this$sourceTileset$r.boundingVolume) === null || _this$sourceTileset$r2 === void 0 ? void 0 : _this$sourceTileset$r2.region);
|
|
227
|
+
const boundingVolumes = createBoundingVolumes(sourceBoundingVolume, this.geoidHeightModel);
|
|
184
228
|
await this.nodePages.push({
|
|
185
229
|
index: 0,
|
|
186
230
|
lodThreshold: 0,
|
|
@@ -188,7 +232,10 @@ export default class I3SConverter {
|
|
|
188
232
|
children: []
|
|
189
233
|
});
|
|
190
234
|
const rootNode = await NodeIndexDocument.createRootNode(boundingVolumes, this);
|
|
191
|
-
await
|
|
235
|
+
await traverseDatasetWith(sourceRootTile, {
|
|
236
|
+
transform: new Matrix4(sourceRootTile.transform),
|
|
237
|
+
parentNodes: [rootNode]
|
|
238
|
+
}, this.convertTile.bind(this), this.finalizeTile.bind(this), this.options.maxDepth);
|
|
192
239
|
this.layers0.materialDefinitions = this.materialDefinitions;
|
|
193
240
|
this.layers0.geometryDefinitions = transform(this.geometryConfigs.map(config => ({
|
|
194
241
|
geometryConfig: {
|
|
@@ -209,9 +256,12 @@ export default class I3SConverter {
|
|
|
209
256
|
await this.writeQueue.finalize();
|
|
210
257
|
await this._createSlpk(tilesetPath);
|
|
211
258
|
}
|
|
212
|
-
_formLayers0(tilesetName, boundingVolumeRegion) {
|
|
213
|
-
var _this$
|
|
214
|
-
|
|
259
|
+
_formLayers0(tilesetName, sourceBoundingVolume, boundingVolumeRegion) {
|
|
260
|
+
var _this$sourceTileset2;
|
|
261
|
+
if (!((_this$sourceTileset2 = this.sourceTileset) !== null && _this$sourceTileset2 !== void 0 && _this$sourceTileset2.root)) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const fullExtent = convertBoundingVolumeToI3SFullExtent(sourceBoundingVolume);
|
|
215
265
|
if (boundingVolumeRegion) {
|
|
216
266
|
fullExtent.zmin = boundingVolumeRegion[4];
|
|
217
267
|
fullExtent.zmax = boundingVolumeRegion[5];
|
|
@@ -234,24 +284,6 @@ export default class I3SConverter {
|
|
|
234
284
|
};
|
|
235
285
|
this.layers0 = transform(layers0data, layersTemplate());
|
|
236
286
|
}
|
|
237
|
-
async _convertNodesTree(rootNode, sourceRootTile) {
|
|
238
|
-
await this.sourceTileset._loadTile(sourceRootTile);
|
|
239
|
-
if (this.isContentSupported(sourceRootTile)) {
|
|
240
|
-
const childNodes = await this._createNode(rootNode, sourceRootTile, 0);
|
|
241
|
-
for (const childNode of childNodes) {
|
|
242
|
-
await childNode.save();
|
|
243
|
-
}
|
|
244
|
-
await rootNode.addChildren(childNodes);
|
|
245
|
-
} else {
|
|
246
|
-
await this._addChildrenWithNeighborsAndWriteFile({
|
|
247
|
-
parentNode: rootNode,
|
|
248
|
-
sourceTiles: sourceRootTile.children,
|
|
249
|
-
level: 1
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
await sourceRootTile.unloadContent();
|
|
253
|
-
await rootNode.save();
|
|
254
|
-
}
|
|
255
287
|
async _writeLayers0() {
|
|
256
288
|
if (this.options.slpk) {
|
|
257
289
|
await this.writeQueue.enqueue({
|
|
@@ -274,72 +306,58 @@ export default class I3SConverter {
|
|
|
274
306
|
} catch (e) {}
|
|
275
307
|
}
|
|
276
308
|
}
|
|
277
|
-
async
|
|
278
|
-
|
|
279
|
-
await data.parentNode.addNeighbors();
|
|
280
|
-
}
|
|
281
|
-
async convertNestedTileset(_ref) {
|
|
282
|
-
let {
|
|
283
|
-
parentNode,
|
|
284
|
-
sourceTile,
|
|
285
|
-
level
|
|
286
|
-
} = _ref;
|
|
287
|
-
await this.sourceTileset._loadTile(sourceTile);
|
|
288
|
-
await this._addChildren({
|
|
289
|
-
parentNode,
|
|
290
|
-
sourceTiles: sourceTile.children,
|
|
291
|
-
level: level + 1
|
|
292
|
-
});
|
|
293
|
-
await sourceTile.unloadContent();
|
|
294
|
-
}
|
|
295
|
-
async convertNode(_ref2) {
|
|
296
|
-
let {
|
|
297
|
-
parentNode,
|
|
298
|
-
sourceTile,
|
|
299
|
-
level
|
|
300
|
-
} = _ref2;
|
|
301
|
-
const childNodes = await this._createNode(parentNode, sourceTile, level);
|
|
302
|
-
await parentNode.addChildren(childNodes);
|
|
303
|
-
}
|
|
304
|
-
async _addChildren(data) {
|
|
305
|
-
const {
|
|
306
|
-
sourceTiles,
|
|
307
|
-
parentNode,
|
|
308
|
-
level
|
|
309
|
-
} = data;
|
|
310
|
-
if (this.options.maxDepth && level > this.options.maxDepth) {
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
for (const sourceTile of sourceTiles) {
|
|
309
|
+
async convertTile(sourceTile, traversalProps) {
|
|
310
|
+
if (sourceTile.type === 'json' || sourceTile.type === 'empty') {
|
|
314
311
|
if (sourceTile.type === 'json') {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
});
|
|
320
|
-
} else {
|
|
321
|
-
await this.convertNode({
|
|
322
|
-
parentNode,
|
|
323
|
-
sourceTile,
|
|
324
|
-
level
|
|
325
|
-
});
|
|
312
|
+
if (sourceTile.id) {
|
|
313
|
+
console.log("[load]: ".concat(sourceTile.id));
|
|
314
|
+
}
|
|
315
|
+
await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);
|
|
326
316
|
}
|
|
327
|
-
|
|
328
|
-
|
|
317
|
+
return traversalProps;
|
|
318
|
+
}
|
|
319
|
+
if (sourceTile.id) {
|
|
320
|
+
console.log("[convert]: ".concat(sourceTile.id));
|
|
321
|
+
}
|
|
322
|
+
const {
|
|
323
|
+
parentNodes,
|
|
324
|
+
transform
|
|
325
|
+
} = traversalProps;
|
|
326
|
+
let transformationMatrix = transform.clone();
|
|
327
|
+
if (sourceTile.transform) {
|
|
328
|
+
transformationMatrix = transformationMatrix.multiplyRight(sourceTile.transform);
|
|
329
|
+
}
|
|
330
|
+
const parentNode = parentNodes[0];
|
|
331
|
+
const childNodes = await this._createNode(parentNode, sourceTile, transformationMatrix);
|
|
332
|
+
await parentNode.addChildren(childNodes);
|
|
333
|
+
const newTraversalProps = {
|
|
334
|
+
transform: transformationMatrix,
|
|
335
|
+
parentNodes: childNodes
|
|
336
|
+
};
|
|
337
|
+
return newTraversalProps;
|
|
338
|
+
}
|
|
339
|
+
async finalizeTile(conversionResults, currentTraversalProps) {
|
|
340
|
+
for (const result of conversionResults) {
|
|
341
|
+
for (const node of result.parentNodes) {
|
|
342
|
+
await node.addNeighbors();
|
|
329
343
|
}
|
|
330
344
|
}
|
|
345
|
+
for (const node of currentTraversalProps.parentNodes) {
|
|
346
|
+
await node.save();
|
|
347
|
+
}
|
|
331
348
|
}
|
|
332
|
-
async _createNode(parentNode, sourceTile,
|
|
349
|
+
async _createNode(parentNode, sourceTile, transformationMatrix) {
|
|
333
350
|
var _this$layers, _this$layers$attribut;
|
|
334
351
|
this._checkAddRefinementTypeForTile(sourceTile);
|
|
335
352
|
await this._updateTilesetOptions();
|
|
336
|
-
await this.sourceTileset.
|
|
337
|
-
|
|
338
|
-
|
|
353
|
+
const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, this.loadOptions);
|
|
354
|
+
const sourceBoundingVolume = createBoundingVolume(sourceTile.boundingVolume, transformationMatrix, null);
|
|
355
|
+
let boundingVolumes = createBoundingVolumes(sourceBoundingVolume, this.geoidHeightModel);
|
|
356
|
+
const propertyTable = getPropertyTable(tileContent);
|
|
339
357
|
if (propertyTable && !((_this$layers = this.layers0) !== null && _this$layers !== void 0 && (_this$layers$attribut = _this$layers.attributeStorageInfo) !== null && _this$layers$attribut !== void 0 && _this$layers$attribut.length)) {
|
|
340
358
|
this._convertPropertyTableToNodeAttributes(propertyTable);
|
|
341
359
|
}
|
|
342
|
-
const resourcesData = await this._convertResources(sourceTile, parentNode.inPageId, propertyTable);
|
|
360
|
+
const resourcesData = await this._convertResources(sourceTile, transformationMatrix, sourceBoundingVolume, tileContent, parentNode.inPageId, propertyTable);
|
|
343
361
|
const nodes = [];
|
|
344
362
|
const nodeIds = [];
|
|
345
363
|
const nodesInPage = [];
|
|
@@ -380,17 +398,11 @@ export default class I3SConverter {
|
|
|
380
398
|
nodeIds.push(nodeInPage.index);
|
|
381
399
|
nodesInPage.push(nodeInPage);
|
|
382
400
|
}
|
|
383
|
-
sourceTile.unloadContent();
|
|
384
|
-
await this._addChildrenWithNeighborsAndWriteFile({
|
|
385
|
-
parentNode: nodes[0],
|
|
386
|
-
sourceTiles: sourceTile.children,
|
|
387
|
-
level: level + 1
|
|
388
|
-
});
|
|
389
401
|
return nodes;
|
|
390
402
|
}
|
|
391
|
-
async _convertResources(sourceTile, parentId, propertyTable) {
|
|
403
|
+
async _convertResources(sourceTile, transformationMatrix, boundingVolume, tileContent, parentId, propertyTable) {
|
|
392
404
|
var _this$layers2;
|
|
393
|
-
if (!this.isContentSupported(sourceTile)) {
|
|
405
|
+
if (!this.isContentSupported(sourceTile) || !tileContent) {
|
|
394
406
|
return null;
|
|
395
407
|
}
|
|
396
408
|
const draftObb = {
|
|
@@ -398,7 +410,7 @@ export default class I3SConverter {
|
|
|
398
410
|
halfSize: [],
|
|
399
411
|
quaternion: []
|
|
400
412
|
};
|
|
401
|
-
const resourcesData = await convertB3dmToI3sGeometry(
|
|
413
|
+
const resourcesData = await convertB3dmToI3sGeometry(tileContent, transformationMatrix, boundingVolume, async () => (await this.nodePages.push({
|
|
402
414
|
index: 0,
|
|
403
415
|
obb: draftObb
|
|
404
416
|
}, parentId)).index, propertyTable, this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.workerSource);
|
|
@@ -717,13 +729,9 @@ export default class I3SConverter {
|
|
|
717
729
|
}
|
|
718
730
|
this.refreshTokenTime = process.hrtime();
|
|
719
731
|
const preloadOptions = await this._fetchPreloadOptions();
|
|
720
|
-
this.sourceTileset.options = {
|
|
721
|
-
...this.sourceTileset.options,
|
|
722
|
-
...preloadOptions
|
|
723
|
-
};
|
|
724
732
|
if (preloadOptions.headers) {
|
|
725
|
-
this.
|
|
726
|
-
...this.
|
|
733
|
+
this.loadOptions.fetch = {
|
|
734
|
+
...this.loadOptions.fetch,
|
|
727
735
|
headers: preloadOptions.headers
|
|
728
736
|
};
|
|
729
737
|
console.log('Authorization Bearer token has been updated');
|
|
@@ -737,9 +745,8 @@ export default class I3SConverter {
|
|
|
737
745
|
}
|
|
738
746
|
this.refinementCounter.tilesCount += 1;
|
|
739
747
|
}
|
|
740
|
-
isContentSupported(
|
|
741
|
-
|
|
742
|
-
return ['b3dm', 'glTF'].includes(sourceRootTile === null || sourceRootTile === void 0 ? void 0 : (_sourceRootTile$conte = sourceRootTile.content) === null || _sourceRootTile$conte === void 0 ? void 0 : _sourceRootTile$conte.type);
|
|
748
|
+
isContentSupported(sourceTile) {
|
|
749
|
+
return ['b3dm', 'glTF', 'scenegraph'].includes(sourceTile.type || '');
|
|
743
750
|
}
|
|
744
751
|
async loadWorkers() {
|
|
745
752
|
console.log("Loading workers source...");
|