@loaders.gl/tile-converter 4.1.0-alpha.1 → 4.1.0-alpha.11
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/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +8 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/converter-cli.js +41 -4
- package/dist/converter-cli.js.map +1 -1
- package/dist/converter.min.cjs +131 -220
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/deps-installer/deps-installer.js +4 -3
- package/dist/deps-installer/deps-installer.js.map +1 -1
- package/dist/i3s-converter/i3s-converter.d.ts +14 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +73 -19
- package/dist/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/i3s-converter/types.d.ts +7 -0
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-converter/types.js +8 -0
- package/dist/i3s-converter/types.js.map +1 -1
- package/dist/i3s-server/bin/i3s-server.min.cjs +80 -80
- package/dist/index.cjs +365 -93
- package/dist/lib/utils/compress-util.d.ts +0 -37
- package/dist/lib/utils/compress-util.d.ts.map +1 -1
- package/dist/lib/utils/compress-util.js +1 -149
- package/dist/lib/utils/compress-util.js.map +1 -1
- package/dist/lib/utils/conversion-dump.d.ts +81 -0
- package/dist/lib/utils/conversion-dump.d.ts.map +1 -0
- package/dist/lib/utils/conversion-dump.js +131 -0
- package/dist/lib/utils/conversion-dump.js.map +1 -0
- package/dist/lib/utils/statistic-utills.d.ts +23 -6
- package/dist/lib/utils/write-queue.d.ts +6 -1
- package/dist/lib/utils/write-queue.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.js +15 -3
- package/dist/lib/utils/write-queue.js.map +1 -1
- package/dist/pgm-loader.js +1 -1
- package/dist/pgm-loader.js.map +1 -1
- package/dist/slpk-extractor.min.cjs +46 -46
- package/package.json +16 -16
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +19 -0
- package/src/constants.ts +1 -0
- package/src/converter-cli.ts +58 -4
- package/src/deps-installer/deps-installer.ts +3 -2
- package/src/i3s-converter/i3s-converter.ts +191 -51
- package/src/i3s-converter/types.ts +8 -0
- package/src/lib/utils/compress-util.ts +1 -264
- package/src/lib/utils/conversion-dump.ts +203 -0
- package/src/lib/utils/write-queue.ts +15 -2
- package/dist/lib/utils/statistic-utills.d.js +0 -2
- package/dist/lib/utils/statistic-utills.d.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps-installer.d.ts","sourceRoot":"","sources":["../../src/deps-installer/deps-installer.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"deps-installer.d.ts","sourceRoot":"","sources":["../../src/deps-installer/deps-installer.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAqEjC,cAAc;YAYd,cAAc;CAS7B"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { load, fetchFile } from '@loaders.gl/core';
|
|
2
2
|
import { ZipLoader } from '@loaders.gl/zip';
|
|
3
3
|
import { writeFile } from "../lib/utils/file-utils.js";
|
|
4
|
-
import { join } from 'path';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
5
|
import { ChildProcessProxy } from '@loaders.gl/worker-utils';
|
|
6
6
|
import { DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS } from '@loaders.gl/draco';
|
|
7
7
|
import { BASIS_EXTERNAL_LIBRARIES } from '@loaders.gl/textures';
|
|
8
|
-
const VERSION = typeof
|
|
8
|
+
const VERSION = typeof "4.1.0-alpha.11" !== 'undefined' ? "4.1.0-alpha.11" : 'latest';
|
|
9
9
|
const PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
|
|
10
10
|
export class DepsInstaller {
|
|
11
11
|
async install() {
|
|
@@ -40,8 +40,9 @@ export class DepsInstaller {
|
|
|
40
40
|
await this.installFromNpm('textures', BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'libs');
|
|
41
41
|
console.log('Installing "join-images" npm package');
|
|
42
42
|
const childProcess = new ChildProcessProxy();
|
|
43
|
+
const nodeDir = dirname(process.execPath);
|
|
43
44
|
await childProcess.start({
|
|
44
|
-
command: process.platform === 'win32' ? 'npm.cmd' : 'npm'
|
|
45
|
+
command: `${nodeDir}/${process.platform === 'win32' ? 'npm.cmd' : 'npm'}`,
|
|
45
46
|
arguments: ['install', 'sharp@0.30.4', 'join-images@1.1.3'],
|
|
46
47
|
wait: 0,
|
|
47
48
|
ignoreStderr: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps-installer.js","names":["load","fetchFile","ZipLoader","writeFile","join","ChildProcessProxy","DRACO_EXTERNAL_LIBRARIES","DRACO_EXTERNAL_LIBRARY_URLS","BASIS_EXTERNAL_LIBRARIES","VERSION","
|
|
1
|
+
{"version":3,"file":"deps-installer.js","names":["load","fetchFile","ZipLoader","writeFile","join","dirname","ChildProcessProxy","DRACO_EXTERNAL_LIBRARIES","DRACO_EXTERNAL_LIBRARY_URLS","BASIS_EXTERNAL_LIBRARIES","VERSION","PGM_LINK","DepsInstaller","install","path","arguments","length","undefined","console","log","fileMap","depsPath","process","cwd","Uint8Array","installFromNpm","installFromUrl","DECODER","DECODER_WASM","ENCODER","TRANSCODER","TRANSCODER_WASM","ENCODER_WASM","childProcess","nodeDir","execPath","start","command","platform","wait","ignoreStderr","module","name","extraPath","fileResponse","fileData","arrayBuffer","url"],"sources":["../../src/deps-installer/deps-installer.ts"],"sourcesContent":["import {load, fetchFile} from '@loaders.gl/core';\nimport {ZipLoader} from '@loaders.gl/zip';\nimport {writeFile} from '../lib/utils/file-utils';\nimport {join, dirname} from 'path';\nimport {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport {DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS} from '@loaders.gl/draco';\nimport {BASIS_EXTERNAL_LIBRARIES} from '@loaders.gl/textures';\n\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';\n\n/**\n * Install external dependencies for converter:\n * * PGM file (implemented);\n * * Draco library (not implemented);\n * * 7z archiver (not implemented);\n */\nexport class DepsInstaller {\n /**\n * Run instalation\n * @param path destination folder\n * @param workersPath destination folder for workers.\n * This path is '' by default and is not used by tile-converter.\n * It is used in tests to prevent rewriting actual workers during tests running\n */\n async install(path: string = ''): Promise<void> {\n console.log('Installing \"EGM2008-5\" model...'); // eslint-disable-line no-console\n const fileMap = await load(PGM_LINK, ZipLoader, {});\n\n let depsPath = process.cwd();\n if (path) {\n depsPath = join(depsPath, path);\n }\n\n await writeFile(depsPath, new Uint8Array(fileMap['geoids/egm2008-5.pgm']), 'egm2008-5.pgm');\n\n console.log('Installing \"I3S Content Loader\" worker'); // eslint-disable-line no-console\n await this.installFromNpm('i3s', 'i3s-content-worker-node.js');\n\n console.log('Installing \"Draco Loader\" worker'); // eslint-disable-line no-console\n await this.installFromNpm('draco', 'draco-worker-node.js');\n\n console.log('Installing \"Draco Writer\" worker'); // eslint-disable-line no-console\n await this.installFromNpm('draco', 'draco-writer-worker-node.js');\n\n console.log('Installing \"Basis Loader\" worker'); // eslint-disable-line no-console\n await this.installFromNpm('textures', 'basis-worker-node.js');\n\n console.log('Installing \"KTX2 Basis Writer\" worker'); // eslint-disable-line no-console\n await this.installFromNpm('textures', 'ktx2-basis-writer-worker-node.js');\n\n console.log('Installing \"Draco decoder\" library'); // eslint-disable-line no-console\n await this.installFromUrl(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],\n 'draco',\n DRACO_EXTERNAL_LIBRARIES.DECODER\n );\n await this.installFromUrl(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],\n 'draco',\n DRACO_EXTERNAL_LIBRARIES.DECODER_WASM\n );\n\n console.log('Installing \"Draco encoder\" library'); // eslint-disable-line no-console\n await this.installFromUrl(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER],\n 'draco',\n DRACO_EXTERNAL_LIBRARIES.ENCODER\n );\n\n console.log('Installing \"Basis transcoder\" library'); // eslint-disable-line no-console\n await this.installFromNpm('textures', BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'libs');\n await this.installFromNpm('textures', BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'libs');\n\n console.log('Installing \"Basis encoder\" library'); // eslint-disable-line no-console\n await this.installFromNpm('textures', BASIS_EXTERNAL_LIBRARIES.ENCODER, 'libs');\n await this.installFromNpm('textures', BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'libs');\n\n console.log('Installing \"join-images\" npm package');\n const childProcess = new ChildProcessProxy();\n const nodeDir = dirname(process.execPath);\n await childProcess.start({\n command: `${nodeDir}/${process.platform === 'win32' ? 'npm.cmd' : 'npm'}`,\n // `npm install sharp join-images` works unstable. It fails because installed `sharp` version\n // may be different from the version required by `join-images`. Pointing to specific versions\n // resolve this issue\n arguments: ['install', 'sharp@0.30.4', 'join-images@1.1.3'],\n wait: 0,\n ignoreStderr: true\n });\n\n console.log('All dependencies were installed succesfully.'); // eslint-disable-line no-console\n }\n\n private async installFromNpm(module: string, name: string, extraPath: string = '') {\n const fileResponse = await fetchFile(\n `https://unpkg.com/@loaders.gl/${module}@${VERSION}/dist/${extraPath}/${name}`\n );\n const fileData = await fileResponse.arrayBuffer();\n if (!fileData) {\n return;\n }\n const path = join(process.cwd(), 'modules', module, 'dist', extraPath);\n await writeFile(path, fileData, name);\n }\n\n private async installFromUrl(url: string, module: string, name: string) {\n const fileResponse = await fetchFile(url);\n const fileData = await fileResponse.arrayBuffer();\n if (!fileData) {\n return;\n }\n const path = join(process.cwd(), 'modules', module, 'dist', 'libs');\n await writeFile(path, fileData, name);\n }\n}\n"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { I3SMaterialDefinition } from '@loaders.gl/i3s';
|
|
|
9
9
|
import { PreprocessData } from './types';
|
|
10
10
|
import WriteQueue from '../lib/utils/write-queue';
|
|
11
11
|
import { Progress } from './helpers/progress';
|
|
12
|
+
import { ConversionDump } from '../lib/utils/conversion-dump';
|
|
12
13
|
/**
|
|
13
14
|
* Converter from 3d-tiles tileset to i3s layer
|
|
14
15
|
*/
|
|
@@ -49,6 +50,7 @@ export default class I3SConverter {
|
|
|
49
50
|
compressList: string[] | null;
|
|
50
51
|
preprocessData: PreprocessData;
|
|
51
52
|
progresses: Record<string, Progress>;
|
|
53
|
+
conversionDump: ConversionDump;
|
|
52
54
|
constructor();
|
|
53
55
|
/**
|
|
54
56
|
* Convert a 3d tileset
|
|
@@ -185,6 +187,8 @@ export default class I3SConverter {
|
|
|
185
187
|
* @param resources.texture - texture image
|
|
186
188
|
* @param resources.sharedResources - shared resource data object
|
|
187
189
|
* @param resources.attributes - feature attributes
|
|
190
|
+
* @param nodePath - node path
|
|
191
|
+
* @param sourceTile - source tile (3DTile)
|
|
188
192
|
* @return {Promise<void>}
|
|
189
193
|
*/
|
|
190
194
|
private _writeResources;
|
|
@@ -194,6 +198,8 @@ export default class I3SConverter {
|
|
|
194
198
|
* @param compressedGeometry - Uint8Array with compressed (draco) geometry
|
|
195
199
|
* @param childPath - a child path to write resources
|
|
196
200
|
* @param slpkChildPath - resource path inside *slpk file
|
|
201
|
+
* @param sourceId - source filename
|
|
202
|
+
* @param nodeId - nodeId of a converted node for the writing
|
|
197
203
|
*/
|
|
198
204
|
private _writeGeometries;
|
|
199
205
|
/**
|
|
@@ -202,6 +208,8 @@ export default class I3SConverter {
|
|
|
202
208
|
* @param childPath - a child path to write resources
|
|
203
209
|
* @param slpkChildPath - resource path inside *slpk file
|
|
204
210
|
* @param nodePath - a node path
|
|
211
|
+
* @param sourceId - source filename
|
|
212
|
+
* @param nodeId - nodeId of a converted node for the writing
|
|
205
213
|
*/
|
|
206
214
|
private _writeShared;
|
|
207
215
|
/**
|
|
@@ -209,6 +217,8 @@ export default class I3SConverter {
|
|
|
209
217
|
* @param texture - the texture image
|
|
210
218
|
* @param childPath - a child path to write resources
|
|
211
219
|
* @param slpkChildPath - the resource path inside *slpk file
|
|
220
|
+
* @param sourceId - source filename
|
|
221
|
+
* @param nodeId - nodeId of a converted node for the writing
|
|
212
222
|
*/
|
|
213
223
|
private _writeTexture;
|
|
214
224
|
/**
|
|
@@ -218,6 +228,8 @@ export default class I3SConverter {
|
|
|
218
228
|
* @param format
|
|
219
229
|
* @param childPath
|
|
220
230
|
* @param slpkChildPath
|
|
231
|
+
* @param sourceId
|
|
232
|
+
* @param nodeId
|
|
221
233
|
*/
|
|
222
234
|
private writeTextureFile;
|
|
223
235
|
/**
|
|
@@ -225,6 +237,8 @@ export default class I3SConverter {
|
|
|
225
237
|
* @param attributes - feature attributes
|
|
226
238
|
* @param childPath - a child path to write resources
|
|
227
239
|
* @param slpkChildPath - the resource path inside *slpk file
|
|
240
|
+
* @param sourceId - source filename
|
|
241
|
+
* @param nodeId - nodeId of a converted node for the writing
|
|
228
242
|
*/
|
|
229
243
|
private _writeAttributes;
|
|
230
244
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import transform from 'json-map-transform';
|
|
|
9
9
|
import md5 from 'md5';
|
|
10
10
|
import NodePages from "./helpers/node-pages.js";
|
|
11
11
|
import { writeFile, removeDir, writeFileForSlpk, removeFile } from "../lib/utils/file-utils.js";
|
|
12
|
-
import { compressFileWithGzip
|
|
12
|
+
import { compressFileWithGzip } from "../lib/utils/compress-util.js";
|
|
13
13
|
import { calculateFilesSize, timeConverter } from "../lib/utils/statistic-utills.js";
|
|
14
14
|
import convertB3dmToI3sGeometry, { getPropertyTable } from "./helpers/geometry-converter.js";
|
|
15
15
|
import { createBoundingVolumes, convertBoundingVolumeToI3SFullExtent } from "./helpers/coordinate-converter.js";
|
|
@@ -22,7 +22,7 @@ import { SHARED_RESOURCES as sharedResourcesTemplate } from "./json-templates/sh
|
|
|
22
22
|
import { validateNodeBoundingVolumes } from "./helpers/node-debug.js";
|
|
23
23
|
import { KTX2BasisWriterWorker } from '@loaders.gl/textures';
|
|
24
24
|
import { ImageWriter } from '@loaders.gl/images';
|
|
25
|
-
import { GLTFPrimitiveModeString } from "./types.js";
|
|
25
|
+
import { GLTFPrimitiveModeString, ResourceType } from "./types.js";
|
|
26
26
|
import { WorkerFarm } from '@loaders.gl/worker-utils';
|
|
27
27
|
import WriteQueue from "../lib/utils/write-queue.js";
|
|
28
28
|
import { BROWSER_ERROR_MESSAGE } from "../constants.js";
|
|
@@ -34,6 +34,8 @@ import { createBoundingVolume } from '@loaders.gl/tiles';
|
|
|
34
34
|
import { traverseDatasetWith } from "./helpers/tileset-traversal.js";
|
|
35
35
|
import { analyzeTileContent, mergePreprocessData } from "./helpers/preprocess-3d-tiles.js";
|
|
36
36
|
import { Progress } from "./helpers/progress.js";
|
|
37
|
+
import { composeHashFile, createZip } from '@loaders.gl/zip';
|
|
38
|
+
import { ConversionDump } from "../lib/utils/conversion-dump.js";
|
|
37
39
|
const ION_DEFAULT_TOKEN = (_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken;
|
|
38
40
|
const HARDCODED_NODES_PER_PAGE = 64;
|
|
39
41
|
const _3D_TILES = '3DTILES';
|
|
@@ -80,13 +82,14 @@ export default class I3SConverter {
|
|
|
80
82
|
this.generateBoundingVolumes = void 0;
|
|
81
83
|
this.layersHasTexture = void 0;
|
|
82
84
|
this.workerSource = {};
|
|
83
|
-
this.writeQueue = new WriteQueue();
|
|
85
|
+
this.writeQueue = new WriteQueue(new ConversionDump());
|
|
84
86
|
this.compressList = null;
|
|
85
87
|
this.preprocessData = {
|
|
86
88
|
meshTopologyTypes: new Set(),
|
|
87
89
|
metadataClasses: new Set()
|
|
88
90
|
};
|
|
89
91
|
this.progresses = {};
|
|
92
|
+
this.conversionDump = void 0;
|
|
90
93
|
this.attributeMetadataInfo = new AttributeMetadataInfo();
|
|
91
94
|
this.nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE, this);
|
|
92
95
|
this.options = {};
|
|
@@ -107,6 +110,7 @@ export default class I3SConverter {
|
|
|
107
110
|
this.generateBoundingVolumes = false;
|
|
108
111
|
this.layersHasTexture = false;
|
|
109
112
|
this.compressList = null;
|
|
113
|
+
this.conversionDump = new ConversionDump();
|
|
110
114
|
}
|
|
111
115
|
async convert(options) {
|
|
112
116
|
if (isBrowser) {
|
|
@@ -134,6 +138,8 @@ export default class I3SConverter {
|
|
|
134
138
|
analyze = false
|
|
135
139
|
} = options;
|
|
136
140
|
this.options = {
|
|
141
|
+
outputPath,
|
|
142
|
+
tilesetName,
|
|
137
143
|
maxDepth,
|
|
138
144
|
slpk,
|
|
139
145
|
sevenZipExe,
|
|
@@ -152,7 +158,7 @@ export default class I3SConverter {
|
|
|
152
158
|
this.Loader = inputUrl.indexOf(CESIUM_DATASET_PREFIX) !== -1 ? CesiumIonLoader : Tiles3DLoader;
|
|
153
159
|
this.generateTextures = Boolean(generateTextures);
|
|
154
160
|
this.generateBoundingVolumes = Boolean(generateBoundingVolumes);
|
|
155
|
-
this.writeQueue = new WriteQueue();
|
|
161
|
+
this.writeQueue = new WriteQueue(this.conversionDump);
|
|
156
162
|
this.writeQueue.startListening();
|
|
157
163
|
console.log('Loading egm file...');
|
|
158
164
|
this.geoidHeightModel = await load(egmFilePath, PGMLoader);
|
|
@@ -160,6 +166,7 @@ export default class I3SConverter {
|
|
|
160
166
|
if (slpk) {
|
|
161
167
|
this.nodePages.useWriteFunction(writeFileForSlpk);
|
|
162
168
|
}
|
|
169
|
+
await this.conversionDump.createDumpFile(options);
|
|
163
170
|
try {
|
|
164
171
|
const preloadOptions = await this._fetchPreloadOptions();
|
|
165
172
|
let tilesetUrl = inputUrl;
|
|
@@ -363,10 +370,14 @@ export default class I3SConverter {
|
|
|
363
370
|
}
|
|
364
371
|
}
|
|
365
372
|
async _createSlpk(tilesetPath) {
|
|
373
|
+
await this.conversionDump.deleteDumpFile();
|
|
366
374
|
if (this.options.slpk) {
|
|
367
375
|
const slpkTilesetPath = join(tilesetPath, 'SceneServer', 'layers', '0');
|
|
368
376
|
const slpkFileName = `${tilesetPath}.slpk`;
|
|
369
|
-
await
|
|
377
|
+
await createZip(slpkTilesetPath, slpkFileName, async fileList => ({
|
|
378
|
+
path: '@specialIndexFileHASH128@',
|
|
379
|
+
file: await composeHashFile(fileList)
|
|
380
|
+
}));
|
|
370
381
|
try {
|
|
371
382
|
await removeDir(tilesetPath);
|
|
372
383
|
} catch (e) {}
|
|
@@ -466,7 +477,10 @@ export default class I3SConverter {
|
|
|
466
477
|
const node = await new NodeIndexDocument(nodeInPage.index, this).addData(nodeData);
|
|
467
478
|
nodes.push(node);
|
|
468
479
|
if (nodeInPage.mesh) {
|
|
469
|
-
|
|
480
|
+
if (sourceTile.id) {
|
|
481
|
+
await this.conversionDump.addNode(sourceTile.id, nodeInPage.index);
|
|
482
|
+
}
|
|
483
|
+
await this._writeResources(resources, node.id, sourceTile);
|
|
470
484
|
}
|
|
471
485
|
if (this.validate) {
|
|
472
486
|
this.boundingVolumeWarnings = validateNodeBoundingVolumes(nodeData);
|
|
@@ -552,7 +566,7 @@ export default class I3SConverter {
|
|
|
552
566
|
this.nodePages.saveNode(node);
|
|
553
567
|
return node;
|
|
554
568
|
}
|
|
555
|
-
async _writeResources(resources, nodePath) {
|
|
569
|
+
async _writeResources(resources, nodePath, sourceTile) {
|
|
556
570
|
const {
|
|
557
571
|
geometry: geometryBuffer,
|
|
558
572
|
compressedGeometry,
|
|
@@ -562,60 +576,81 @@ export default class I3SConverter {
|
|
|
562
576
|
} = resources;
|
|
563
577
|
const childPath = join(this.layers0Path, 'nodes', nodePath);
|
|
564
578
|
const slpkChildPath = join('nodes', nodePath);
|
|
565
|
-
await this._writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath);
|
|
566
|
-
await this._writeShared(sharedResources, childPath, slpkChildPath, nodePath);
|
|
567
|
-
await this._writeTexture(texture, childPath, slpkChildPath);
|
|
568
|
-
await this._writeAttributes(attributes, childPath, slpkChildPath);
|
|
579
|
+
await this._writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath, sourceTile.id || '', parseInt(nodePath));
|
|
580
|
+
await this._writeShared(sharedResources, childPath, slpkChildPath, nodePath, sourceTile.id || '', parseInt(nodePath));
|
|
581
|
+
await this._writeTexture(texture, childPath, slpkChildPath, sourceTile.id || '', parseInt(nodePath));
|
|
582
|
+
await this._writeAttributes(attributes, childPath, slpkChildPath, sourceTile.id || '', parseInt(nodePath));
|
|
569
583
|
}
|
|
570
|
-
async _writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath) {
|
|
584
|
+
async _writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath, sourceId, nodeId) {
|
|
585
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, ResourceType.GEOMETRY, false);
|
|
571
586
|
if (this.options.slpk) {
|
|
572
587
|
const slpkGeometryPath = join(childPath, 'geometries');
|
|
573
588
|
await this.writeQueue.enqueue({
|
|
574
589
|
archiveKey: `${slpkChildPath}/geometries/0.bin.gz`,
|
|
590
|
+
sourceId,
|
|
591
|
+
outputId: nodeId,
|
|
592
|
+
resourceType: ResourceType.GEOMETRY,
|
|
575
593
|
writePromise: () => writeFileForSlpk(slpkGeometryPath, geometryBuffer, '0.bin')
|
|
576
594
|
});
|
|
577
595
|
} else {
|
|
578
596
|
const geometryPath = join(childPath, 'geometries/0/');
|
|
579
597
|
await this.writeQueue.enqueue({
|
|
598
|
+
sourceId,
|
|
599
|
+
outputId: nodeId,
|
|
600
|
+
resourceType: ResourceType.GEOMETRY,
|
|
580
601
|
writePromise: () => writeFile(geometryPath, geometryBuffer, 'index.bin')
|
|
581
602
|
});
|
|
582
603
|
}
|
|
583
604
|
if (this.options.draco) {
|
|
605
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, ResourceType.DRACO_GEOMETRY, false);
|
|
584
606
|
if (this.options.slpk) {
|
|
585
607
|
const slpkCompressedGeometryPath = join(childPath, 'geometries');
|
|
586
608
|
await this.writeQueue.enqueue({
|
|
587
609
|
archiveKey: `${slpkChildPath}/geometries/1.bin.gz`,
|
|
610
|
+
sourceId,
|
|
611
|
+
outputId: nodeId,
|
|
612
|
+
resourceType: ResourceType.DRACO_GEOMETRY,
|
|
588
613
|
writePromise: () => writeFileForSlpk(slpkCompressedGeometryPath, compressedGeometry, '1.bin')
|
|
589
614
|
});
|
|
590
615
|
} else {
|
|
591
616
|
const compressedGeometryPath = join(childPath, 'geometries/1/');
|
|
592
617
|
await this.writeQueue.enqueue({
|
|
618
|
+
sourceId,
|
|
619
|
+
outputId: nodeId,
|
|
620
|
+
resourceType: ResourceType.DRACO_GEOMETRY,
|
|
593
621
|
writePromise: () => writeFile(compressedGeometryPath, compressedGeometry, 'index.bin')
|
|
594
622
|
});
|
|
595
623
|
}
|
|
596
624
|
}
|
|
597
625
|
}
|
|
598
|
-
async _writeShared(sharedResources, childPath, slpkChildPath, nodePath) {
|
|
626
|
+
async _writeShared(sharedResources, childPath, slpkChildPath, nodePath, sourceId, nodeId) {
|
|
599
627
|
if (!sharedResources) {
|
|
600
628
|
return;
|
|
601
629
|
}
|
|
602
630
|
sharedResources.nodePath = nodePath;
|
|
603
631
|
const sharedData = transform(sharedResources, sharedResourcesTemplate());
|
|
604
632
|
const sharedDataStr = JSON.stringify(sharedData);
|
|
633
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, ResourceType.SHARED, false);
|
|
605
634
|
if (this.options.slpk) {
|
|
606
635
|
const slpkSharedPath = join(childPath, 'shared');
|
|
607
636
|
await this.writeQueue.enqueue({
|
|
608
637
|
archiveKey: `${slpkChildPath}/shared/sharedResource.json.gz`,
|
|
638
|
+
sourceId,
|
|
639
|
+
outputId: nodeId,
|
|
640
|
+
resourceType: ResourceType.SHARED,
|
|
609
641
|
writePromise: () => writeFileForSlpk(slpkSharedPath, sharedDataStr, 'sharedResource.json')
|
|
610
642
|
});
|
|
611
643
|
} else {
|
|
612
644
|
const sharedPath = join(childPath, 'shared/');
|
|
613
645
|
await this.writeQueue.enqueue({
|
|
646
|
+
sourceId,
|
|
647
|
+
outputId: nodeId,
|
|
648
|
+
resourceType: ResourceType.SHARED,
|
|
614
649
|
writePromise: () => writeFile(sharedPath, sharedDataStr)
|
|
615
650
|
});
|
|
616
651
|
}
|
|
617
652
|
}
|
|
618
|
-
async _writeTexture(texture, childPath, slpkChildPath) {
|
|
653
|
+
async _writeTexture(texture, childPath, slpkChildPath, sourceId, nodeId) {
|
|
619
654
|
if (texture) {
|
|
620
655
|
const format = this._getFormatByMimeType(texture === null || texture === void 0 ? void 0 : texture.mimeType);
|
|
621
656
|
const formats = [];
|
|
@@ -628,7 +663,8 @@ export default class I3SConverter {
|
|
|
628
663
|
name: '0',
|
|
629
664
|
format
|
|
630
665
|
});
|
|
631
|
-
|
|
666
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, `${ResourceType.TEXTURE}/${format}`, false);
|
|
667
|
+
await this.writeTextureFile(textureData, '0', format, childPath, slpkChildPath, sourceId, nodeId);
|
|
632
668
|
if (this.generateTextures) {
|
|
633
669
|
formats.push({
|
|
634
670
|
name: '1',
|
|
@@ -648,7 +684,8 @@ export default class I3SConverter {
|
|
|
648
684
|
_nodeWorkers: true,
|
|
649
685
|
useLocalLibraries: true
|
|
650
686
|
});
|
|
651
|
-
|
|
687
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, `${ResourceType.TEXTURE}/ktx2`, false);
|
|
688
|
+
await this.writeTextureFile(ktx2TextureData, '1', 'ktx2', childPath, slpkChildPath, sourceId, nodeId);
|
|
652
689
|
}
|
|
653
690
|
break;
|
|
654
691
|
}
|
|
@@ -658,14 +695,16 @@ export default class I3SConverter {
|
|
|
658
695
|
name: '1',
|
|
659
696
|
format
|
|
660
697
|
});
|
|
661
|
-
|
|
698
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, `${ResourceType.TEXTURE}/${format}`, false);
|
|
699
|
+
await this.writeTextureFile(textureData, '1', format, childPath, slpkChildPath, sourceId, nodeId);
|
|
662
700
|
if (this.generateTextures) {
|
|
663
701
|
formats.push({
|
|
664
702
|
name: '0',
|
|
665
703
|
format: 'jpg'
|
|
666
704
|
});
|
|
667
705
|
const decodedFromKTX2TextureData = encode(texture.image.data[0], ImageWriter);
|
|
668
|
-
|
|
706
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, `${ResourceType.TEXTURE}/jpg`, false);
|
|
707
|
+
await this.writeTextureFile(decodedFromKTX2TextureData, '0', 'jpg', childPath, slpkChildPath, sourceId, nodeId);
|
|
669
708
|
}
|
|
670
709
|
}
|
|
671
710
|
}
|
|
@@ -680,17 +719,23 @@ export default class I3SConverter {
|
|
|
680
719
|
}
|
|
681
720
|
}
|
|
682
721
|
}
|
|
683
|
-
async writeTextureFile(textureData, name, format, childPath, slpkChildPath) {
|
|
722
|
+
async writeTextureFile(textureData, name, format, childPath, slpkChildPath, sourceId, nodeId) {
|
|
684
723
|
if (this.options.slpk) {
|
|
685
724
|
const slpkTexturePath = join(childPath, 'textures');
|
|
686
725
|
const compress = false;
|
|
687
726
|
await this.writeQueue.enqueue({
|
|
688
727
|
archiveKey: `${slpkChildPath}/textures/${name}.${format}`,
|
|
728
|
+
sourceId,
|
|
729
|
+
outputId: nodeId,
|
|
730
|
+
resourceType: `${ResourceType.TEXTURE}/${format}`,
|
|
689
731
|
writePromise: () => writeFileForSlpk(slpkTexturePath, textureData, `${name}.${format}`, compress)
|
|
690
732
|
});
|
|
691
733
|
} else {
|
|
692
734
|
const texturePath = join(childPath, `textures/${name}/`);
|
|
693
735
|
await this.writeQueue.enqueue({
|
|
736
|
+
sourceId,
|
|
737
|
+
outputId: nodeId,
|
|
738
|
+
resourceType: `${ResourceType.TEXTURE}/${format}`,
|
|
694
739
|
writePromise: () => writeFile(texturePath, textureData, `index.${format}`)
|
|
695
740
|
});
|
|
696
741
|
}
|
|
@@ -699,20 +744,29 @@ export default class I3SConverter {
|
|
|
699
744
|
let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
700
745
|
let childPath = arguments.length > 1 ? arguments[1] : undefined;
|
|
701
746
|
let slpkChildPath = arguments.length > 2 ? arguments[2] : undefined;
|
|
747
|
+
let sourceId = arguments.length > 3 ? arguments[3] : undefined;
|
|
748
|
+
let nodeId = arguments.length > 4 ? arguments[4] : undefined;
|
|
702
749
|
if (attributes !== null && attributes !== void 0 && attributes.length && this.attributeMetadataInfo.attributeStorageInfo.length) {
|
|
703
750
|
const minimumLength = attributes.length < this.attributeMetadataInfo.attributeStorageInfo.length ? attributes.length : this.attributeMetadataInfo.attributeStorageInfo.length;
|
|
704
751
|
for (let index = 0; index < minimumLength; index++) {
|
|
705
752
|
const folderName = this.attributeMetadataInfo.attributeStorageInfo[index].key;
|
|
706
753
|
const fileBuffer = new Uint8Array(attributes[index]);
|
|
754
|
+
this.conversionDump.updateDoneStatus(sourceId, nodeId, `${ResourceType.ATTRIBUTES}/${folderName}`, false);
|
|
707
755
|
if (this.options.slpk) {
|
|
708
756
|
const slpkAttributesPath = join(childPath, 'attributes', folderName);
|
|
709
757
|
await this.writeQueue.enqueue({
|
|
710
758
|
archiveKey: `${slpkChildPath}/attributes/${folderName}.bin.gz`,
|
|
759
|
+
sourceId,
|
|
760
|
+
outputId: nodeId,
|
|
761
|
+
resourceType: `${ResourceType.ATTRIBUTES}/${folderName}`,
|
|
711
762
|
writePromise: () => writeFileForSlpk(slpkAttributesPath, fileBuffer, '0.bin')
|
|
712
763
|
});
|
|
713
764
|
} else {
|
|
714
765
|
const attributesPath = join(childPath, `attributes/${folderName}/0`);
|
|
715
766
|
await this.writeQueue.enqueue({
|
|
767
|
+
sourceId,
|
|
768
|
+
outputId: nodeId,
|
|
769
|
+
resourceType: `${ResourceType.ATTRIBUTES}/${folderName}`,
|
|
716
770
|
writePromise: () => writeFile(attributesPath, fileBuffer, 'index.bin')
|
|
717
771
|
});
|
|
718
772
|
}
|