@loaders.gl/tile-converter 3.3.0-alpha.6 → 3.3.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/dist/3d-tiles-attributes-worker.d.ts +2 -2
- package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
- package/dist/3d-tiles-attributes-worker.js +2 -2
- package/dist/3d-tiles-attributes-worker.js.map +2 -2
- package/dist/converter-cli.js +15 -2
- package/dist/converter.min.js +20 -20
- package/dist/dist.min.js +263 -415
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/converter-cli.js +9 -3
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +7 -6
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +27 -25
- package/dist/es5/i3s-converter/i3s-converter.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/converter-cli.js +9 -3
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +7 -6
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +10 -7
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/i3s-attributes-worker.d.ts +2 -2
- package/dist/i3s-attributes-worker.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js +8 -6
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +9 -7
- package/dist/i3s-converter/types.d.ts +6 -6
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.d.ts +1 -1
- package/dist/lib/utils/write-queue.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/converter-cli.ts +16 -2
- package/src/i3s-converter/helpers/coordinate-converter.ts +8 -6
- package/src/i3s-converter/i3s-converter.ts +17 -7
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports._typecheckI3SAttributesWorker = exports.Tile3dAttributesWorker = void 0;
|
|
7
7
|
exports.transform3DTilesAttributesOnWorker = transform3DTilesAttributesOnWorker;
|
|
8
8
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
9
|
-
var VERSION = typeof "3.3.0-alpha.
|
|
9
|
+
var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
|
|
10
10
|
var Tile3dAttributesWorker = {
|
|
11
11
|
id: '3d-tiles-attributes',
|
|
12
12
|
name: '3DTiles Attributes Worker',
|
|
@@ -164,9 +164,8 @@ function validateOptions(options) {
|
|
|
164
164
|
exceptions.forEach(function (exeption) {
|
|
165
165
|
return exeption();
|
|
166
166
|
});
|
|
167
|
-
process.exit(
|
|
167
|
+
process.exit(1);
|
|
168
168
|
}
|
|
169
|
-
|
|
170
169
|
return options;
|
|
171
170
|
}
|
|
172
171
|
function validateOptionsWithEqual(args) {
|
|
@@ -202,7 +201,7 @@ function parseOptions(args) {
|
|
|
202
201
|
opts.inputType = getStringValue(index, args);
|
|
203
202
|
break;
|
|
204
203
|
case '--tileset':
|
|
205
|
-
opts.tileset =
|
|
204
|
+
opts.tileset = getURLValue(index, args);
|
|
206
205
|
break;
|
|
207
206
|
case '--name':
|
|
208
207
|
opts.name = getStringValue(index, args);
|
|
@@ -264,6 +263,13 @@ function getStringValue(index, args) {
|
|
|
264
263
|
return value;
|
|
265
264
|
}
|
|
266
265
|
|
|
266
|
+
function getURLValue(index, args) {
|
|
267
|
+
var value = getStringValue(index, args);
|
|
268
|
+
console.log("Input tileset value: ".concat(value));
|
|
269
|
+
console.log("Modified tileset value: ".concat(value.replace(/\\/g, '/')));
|
|
270
|
+
return value.replace(/\\/g, '/');
|
|
271
|
+
}
|
|
272
|
+
|
|
267
273
|
function getIntegerValue(index, args) {
|
|
268
274
|
var stringValue = getStringValue(index, args);
|
|
269
275
|
var result = Number.parseInt(stringValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converter-cli.js","names":["TILESET_TYPE","I3S","_3DTILES","main","process","argv","args","length","printHelp","validatedOptionsArr","validateOptionsWithEqual","options","parseOptions","installDependencies","depthInstaller","DepsInstaller","install","validatedOptions","validateOptions","convert","catch","error","console","log","exit","inputType","toUpperCase","tiles3DConverter","Tiles3DConverter","inputUrl","tileset","outputPath","output","tilesetName","name","maxDepth","egmFilePath","egm","converter","I3SConverter","slpk","sevenZipExe","token","draco","generateTextures","generateBoundingVolumes","validate","mandatoryOptionsWithExceptions","exceptions","mandatoryOption","optionValue","isWrongInputType","Boolean","Object","values","includes","push","forEach","exeption","reduce","acc","curr","equalSignIndex","indexOf","beforeEqual","slice","afterEqual","condition","startsWith","concat","opts","join","cwd","arg","index","getStringValue","getIntegerValue","getBooleanValue","warn","value","stringValue","result","Number","parseInt","isFinite","NaN","toLowerCase","trim"],"sources":["../../src/converter-cli.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport '@loaders.gl/polyfills';\nimport {join} from 'path';\nimport {I3SConverter, Tiles3DConverter} from '@loaders.gl/tile-converter';\nimport {DepsInstaller} from './deps-installer/deps-installer';\n\ntype TileConversionOptions = {\n /** \"I3S\" - for I3S to 3DTiles conversion, \"3DTILES\" for 3DTiles to I3S conversion */\n inputType?: string;\n /** \"tileset.json\" file (3DTiles) / \"http://..../SceneServer/layers/0\" resource (I3S) */\n tileset?: string;\n /** Tileset name. This option is used for naming in resulting json resouces and for resulting path/*.slpk file naming */\n name?: string;\n /** Output folder. This folder will be created by converter if doesn't exist. It is relative to the converter path.\n * Default: \"data\" folder */\n output: string;\n /** 3DTiles->I3S only. location of 7z.exe archiver to create slpk on Windows OS, default: \"C:\\Program Files\\7-Zip\\7z.exe\" */\n sevenZipExe: string;\n /** location of the Earth Gravity Model (*.pgm) file to convert heights from ellipsoidal to gravity-related format,\n * default: \"./deps/egm2008-5.pgm\". A model file can be loaded from GeographicLib\n * https://geographiclib.sourceforge.io/html/geoid.html */\n egm: string;\n /** 3DTile->I3S only. Token for Cesium ION tileset authentication. */\n token?: string;\n /** 3DTiles->I3S only. Enable draco compression for geometry. Default: true */\n draco: boolean;\n /** Run the script for installing dependencies. Run this options separate from others. Now \"*.pgm\" file installation is\n * implemented */\n installDependencies: boolean;\n /** 3DTile->I3S only. Enable KTX2 textures generation if only one of (JPG, PNG) texture is provided or generate JPG texture\n * if only KTX2 is provided */\n generateTextures: boolean;\n /** 3DTile->I3S only. Will generate obb and mbs bounding volumes from geometry */\n generateBoundingVolumes: boolean;\n /** Validate the dataset during conversion. Validation messages will be posted in the console output */\n validate: boolean;\n /** Maximal depth of the hierarchical tiles tree traversal, default: infinite */\n maxDepth?: number;\n /** 3DTiles->I3S only. Whether the converter generates *.slpk (Scene Layer Package) I3S output file */\n slpk: boolean;\n};\n\n/* During validation we check that particular options are defined so they can't be undefined */\ntype ValidatedTileConversionOptions = TileConversionOptions & {\n /** \"I3S\" - for I3S to 3DTiles conversion, \"3DTILES\" for 3DTiles to I3S conversion */\n inputType: string;\n /** \"tileset.json\" file (3DTiles) / \"http://..../SceneServer/layers/0\" resource (I3S) */\n tileset: string;\n /** Tileset name. This option is used for naming in resulting json resouces and for resulting path/*.slpk file naming */\n name: string;\n};\n\nconst TILESET_TYPE = {\n I3S: 'I3S',\n _3DTILES: '3DTILES'\n};\n\n/**\n * CLI entry\n * @returns\n */\nasync function main() {\n const [, , ...args] = process.argv;\n\n if (args.length === 0) {\n printHelp();\n }\n\n const validatedOptionsArr = validateOptionsWithEqual(args);\n\n const options: TileConversionOptions = parseOptions(validatedOptionsArr);\n\n if (options.installDependencies) {\n const depthInstaller = new DepsInstaller();\n depthInstaller.install('deps');\n return;\n }\n\n const validatedOptions: ValidatedTileConversionOptions = validateOptions(options);\n\n await convert(validatedOptions);\n}\n\nmain().catch((error) => {\n console.log(error);\n process.exit(1); // eslint-disable-line\n});\n\n/**\n * Output for `npx tile-converter --help`\n */\nfunction printHelp(): void {\n console.log('cli: converter 3dTiles to I3S or I3S to 3dTiles...');\n console.log(\n '--install-dependencies [Run the script for installing dependencies. Run this options separate from others. Now \"*.pgm\" file installation is implemented]'\n );\n console.log(\n '--max-depth [Maximal depth of hierarchical tiles tree traversal, default: infinite]'\n );\n console.log('--name [Tileset name]');\n console.log('--output [Output folder, default: \"data\" folder]');\n console.log('--slpk [Generate slpk (Scene Layer Packages) I3S output file]');\n console.log(\n '--tileset [tileset.json file (3DTiles) / http://..../SceneServer/layers/0 resource (I3S)]'\n );\n console.log('--input-type [tileset input type: I3S or 3DTILES]');\n console.log(\n '--7zExe [location of 7z.exe archiver to create slpk on Windows, default: \"C:\\\\Program Files\\\\7-Zip\\\\7z.exe\"]'\n );\n console.log(\n '--egm [location of Earth Gravity Model *.pgm file to convert heights from ellipsoidal to gravity-related format. A model file can be loaded from GeographicLib https://geographiclib.sourceforge.io/html/geoid.html], default: \"./deps/egm2008-5.zip\"'\n );\n console.log('--token [Token for Cesium ION tilesets authentication]');\n console.log('--no-draco [Disable draco compression for geometry]');\n console.log(\n '--generate-textures [Enable KTX2 textures generation if only one of (JPG, PNG) texture is provided or generate JPG texture if only KTX2 is provided]'\n );\n console.log(\n '--generate-bounding-volumes [Will generate obb and mbs bounding volumes from geometry]'\n );\n console.log('--validate [Enable validation]');\n process.exit(0); // eslint-disable-line\n}\n\n/**\n * Run conversion process\n * @param options validated tile-converter options\n */\nasync function convert(options: ValidatedTileConversionOptions) {\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Starting conversion of ${options.inputType}`); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n const inputType = options.inputType.toUpperCase();\n switch (inputType) {\n case TILESET_TYPE.I3S:\n const tiles3DConverter = new Tiles3DConverter();\n tiles3DConverter.convert({\n inputUrl: options.tileset,\n outputPath: options.output,\n tilesetName: options.name,\n maxDepth: options.maxDepth,\n egmFilePath: options.egm\n });\n break;\n case TILESET_TYPE._3DTILES:\n const converter = new I3SConverter();\n await converter.convert({\n inputUrl: options.tileset,\n outputPath: options.output,\n tilesetName: options.name,\n maxDepth: options.maxDepth,\n slpk: options.slpk,\n sevenZipExe: options.sevenZipExe,\n egmFilePath: options.egm,\n token: options.token,\n draco: options.draco,\n generateTextures: options.generateTextures,\n generateBoundingVolumes: options.generateBoundingVolumes,\n validate: options.validate\n });\n break;\n default:\n printHelp();\n }\n}\n\n// OPTIONS\n/**\n * Validate input options of the CLI command\n * @param options - input options of the CLI command\n * @returns validated options\n */\nfunction validateOptions(options: TileConversionOptions): ValidatedTileConversionOptions {\n const mandatoryOptionsWithExceptions: {\n [key: string]: () => void;\n } = {\n name: () => console.log('Missed: --name [Tileset name]'),\n output: () => console.log('Missed: --output [Output path name]'),\n sevenZipExe: () => console.log('Missed: --7zExe [7z archiver executable path]'),\n egm: () => console.log('Missed: --egm [*.pgm earth gravity model file path]'),\n tileset: () => console.log('Missed: --tileset [tileset.json file]'),\n inputType: () =>\n console.log('Missed/Incorrect: --input-type [tileset input type: I3S or 3DTILES]')\n };\n const exceptions: (() => void)[] = [];\n for (const mandatoryOption in mandatoryOptionsWithExceptions) {\n const optionValue = options[mandatoryOption];\n const isWrongInputType =\n Boolean(optionValue) &&\n mandatoryOption === 'inputType' &&\n !Object.values(TILESET_TYPE).includes(optionValue.toUpperCase());\n\n if (!optionValue || isWrongInputType) {\n exceptions.push(mandatoryOptionsWithExceptions[mandatoryOption]);\n }\n }\n if (exceptions.length) {\n exceptions.forEach((exeption) => exeption());\n process.exit(0); // eslint-disable-line\n }\n return <ValidatedTileConversionOptions>options;\n}\n\nfunction validateOptionsWithEqual(args: string[]): string[] {\n return args.reduce((acc: string[], curr) => {\n const equalSignIndex = curr.indexOf('=');\n const beforeEqual = curr.slice(0, equalSignIndex);\n const afterEqual = curr.slice(equalSignIndex + 1, curr.length);\n const condition = curr.includes('=') && curr.startsWith('--') && afterEqual;\n if (condition) {\n return acc.concat(beforeEqual, afterEqual);\n }\n return acc.concat(curr);\n }, []);\n}\n\n/**\n * Parse option from the cli arguments array\n * @param args\n * @returns\n */\nfunction parseOptions(args: string[]): TileConversionOptions {\n const opts: TileConversionOptions = {\n output: 'data',\n sevenZipExe: 'C:\\\\Program Files\\\\7-Zip\\\\7z.exe',\n egm: join(process.cwd(), 'deps', 'egm2008-5.pgm'),\n draco: true,\n installDependencies: false,\n generateTextures: false,\n generateBoundingVolumes: false,\n validate: false,\n slpk: false\n };\n\n // eslint-disable-next-line complexity\n args.forEach((arg, index) => {\n if (arg.indexOf('--') === 0) {\n switch (arg) {\n case '--input-type':\n opts.inputType = getStringValue(index, args);\n break;\n case '--tileset':\n opts.tileset = getStringValue(index, args);\n break;\n case '--name':\n opts.name = getStringValue(index, args);\n break;\n case '--output':\n opts.output = getStringValue(index, args);\n break;\n case '--max-depth':\n opts.maxDepth = getIntegerValue(index, args);\n break;\n case '--slpk':\n opts.slpk = getBooleanValue(index, args);\n break;\n case '--7zExe':\n opts.sevenZipExe = getStringValue(index, args);\n break;\n case '--egm':\n opts.egm = getStringValue(index, args);\n break;\n case '--token':\n opts.token = getStringValue(index, args);\n break;\n case '--no-draco':\n opts.draco = getBooleanValue(index, args);\n break;\n case '--validate':\n opts.validate = getBooleanValue(index, args);\n break;\n case '--install-dependencies':\n opts.installDependencies = getBooleanValue(index, args);\n break;\n case '--generate-textures':\n opts.generateTextures = getBooleanValue(index, args);\n break;\n case '--generate-bounding-volumes':\n opts.generateBoundingVolumes = getBooleanValue(index, args);\n break;\n case '--help':\n printHelp();\n break;\n default:\n console.warn(`Unknown option ${arg}`);\n process.exit(0); // eslint-disable-line\n }\n }\n });\n return opts;\n}\n\n/**\n * Get string option value from cli arguments\n * @param index - option's name index in the argument's array.\n * The value of the option should be next to name of the option.\n * @param args - cli arguments array\n * @returns - string value of the option\n */\nfunction getStringValue(index: number, args: string[]): string {\n if (index + 1 >= args.length) {\n return '';\n }\n const value = args[index + 1];\n if (value.indexOf('--') === 0) {\n return '';\n }\n return value;\n}\n\n/**\n * Get integer option value from cli arguments\n * @param index - option's name index in the argument's array\n * The value of the option should be next to name of the option.\n * @param args - cli arguments array\n * @returns - number value of the option\n */\nfunction getIntegerValue(index: number, args: string[]): number {\n const stringValue: string = getStringValue(index, args);\n const result: number = Number.parseInt(stringValue);\n if (isFinite(result)) {\n return result;\n }\n return NaN;\n}\n\nfunction getBooleanValue(index: number, args: string[]): boolean {\n const stringValue: string = getStringValue(index, args).toLowerCase().trim();\n if (args[index] === '--no-draco' && !stringValue) {\n return false;\n }\n if (!stringValue || stringValue === 'true') {\n return true;\n }\n return false;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"converter-cli.js","names":["TILESET_TYPE","I3S","_3DTILES","main","process","argv","args","length","printHelp","validatedOptionsArr","validateOptionsWithEqual","options","parseOptions","installDependencies","depthInstaller","DepsInstaller","install","validatedOptions","validateOptions","convert","catch","error","console","log","exit","inputType","toUpperCase","tiles3DConverter","Tiles3DConverter","inputUrl","tileset","outputPath","output","tilesetName","name","maxDepth","egmFilePath","egm","converter","I3SConverter","slpk","sevenZipExe","token","draco","generateTextures","generateBoundingVolumes","validate","mandatoryOptionsWithExceptions","exceptions","mandatoryOption","optionValue","isWrongInputType","Boolean","Object","values","includes","push","forEach","exeption","reduce","acc","curr","equalSignIndex","indexOf","beforeEqual","slice","afterEqual","condition","startsWith","concat","opts","join","cwd","arg","index","getStringValue","getURLValue","getIntegerValue","getBooleanValue","warn","value","replace","stringValue","result","Number","parseInt","isFinite","NaN","toLowerCase","trim"],"sources":["../../src/converter-cli.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport '@loaders.gl/polyfills';\nimport {join} from 'path';\nimport {I3SConverter, Tiles3DConverter} from '@loaders.gl/tile-converter';\nimport {DepsInstaller} from './deps-installer/deps-installer';\n\ntype TileConversionOptions = {\n /** \"I3S\" - for I3S to 3DTiles conversion, \"3DTILES\" for 3DTiles to I3S conversion */\n inputType?: string;\n /** \"tileset.json\" file (3DTiles) / \"http://..../SceneServer/layers/0\" resource (I3S) */\n tileset?: string;\n /** Tileset name. This option is used for naming in resulting json resouces and for resulting path/*.slpk file naming */\n name?: string;\n /** Output folder. This folder will be created by converter if doesn't exist. It is relative to the converter path.\n * Default: \"data\" folder */\n output: string;\n /** 3DTiles->I3S only. location of 7z.exe archiver to create slpk on Windows OS, default: \"C:\\Program Files\\7-Zip\\7z.exe\" */\n sevenZipExe: string;\n /** location of the Earth Gravity Model (*.pgm) file to convert heights from ellipsoidal to gravity-related format,\n * default: \"./deps/egm2008-5.pgm\". A model file can be loaded from GeographicLib\n * https://geographiclib.sourceforge.io/html/geoid.html */\n egm: string;\n /** 3DTile->I3S only. Token for Cesium ION tileset authentication. */\n token?: string;\n /** 3DTiles->I3S only. Enable draco compression for geometry. Default: true */\n draco: boolean;\n /** Run the script for installing dependencies. Run this options separate from others. Now \"*.pgm\" file installation is\n * implemented */\n installDependencies: boolean;\n /** 3DTile->I3S only. Enable KTX2 textures generation if only one of (JPG, PNG) texture is provided or generate JPG texture\n * if only KTX2 is provided */\n generateTextures: boolean;\n /** 3DTile->I3S only. Will generate obb and mbs bounding volumes from geometry */\n generateBoundingVolumes: boolean;\n /** Validate the dataset during conversion. Validation messages will be posted in the console output */\n validate: boolean;\n /** Maximal depth of the hierarchical tiles tree traversal, default: infinite */\n maxDepth?: number;\n /** 3DTiles->I3S only. Whether the converter generates *.slpk (Scene Layer Package) I3S output file */\n slpk: boolean;\n};\n\n/* During validation we check that particular options are defined so they can't be undefined */\ntype ValidatedTileConversionOptions = TileConversionOptions & {\n /** \"I3S\" - for I3S to 3DTiles conversion, \"3DTILES\" for 3DTiles to I3S conversion */\n inputType: string;\n /** \"tileset.json\" file (3DTiles) / \"http://..../SceneServer/layers/0\" resource (I3S) */\n tileset: string;\n /** Tileset name. This option is used for naming in resulting json resouces and for resulting path/*.slpk file naming */\n name: string;\n};\n\nconst TILESET_TYPE = {\n I3S: 'I3S',\n _3DTILES: '3DTILES'\n};\n\n/**\n * CLI entry\n * @returns\n */\nasync function main() {\n const [, , ...args] = process.argv;\n\n if (args.length === 0) {\n printHelp();\n }\n\n const validatedOptionsArr = validateOptionsWithEqual(args);\n\n const options: TileConversionOptions = parseOptions(validatedOptionsArr);\n\n if (options.installDependencies) {\n const depthInstaller = new DepsInstaller();\n depthInstaller.install('deps');\n return;\n }\n\n const validatedOptions: ValidatedTileConversionOptions = validateOptions(options);\n\n await convert(validatedOptions);\n}\n\nmain().catch((error) => {\n console.log(error);\n process.exit(1); // eslint-disable-line\n});\n\n/**\n * Output for `npx tile-converter --help`\n */\nfunction printHelp(): void {\n console.log('cli: converter 3dTiles to I3S or I3S to 3dTiles...');\n console.log(\n '--install-dependencies [Run the script for installing dependencies. Run this options separate from others. Now \"*.pgm\" file installation is implemented]'\n );\n console.log(\n '--max-depth [Maximal depth of hierarchical tiles tree traversal, default: infinite]'\n );\n console.log('--name [Tileset name]');\n console.log('--output [Output folder, default: \"data\" folder]');\n console.log('--slpk [Generate slpk (Scene Layer Packages) I3S output file]');\n console.log(\n '--tileset [tileset.json file (3DTiles) / http://..../SceneServer/layers/0 resource (I3S)]'\n );\n console.log('--input-type [tileset input type: I3S or 3DTILES]');\n console.log(\n '--7zExe [location of 7z.exe archiver to create slpk on Windows, default: \"C:\\\\Program Files\\\\7-Zip\\\\7z.exe\"]'\n );\n console.log(\n '--egm [location of Earth Gravity Model *.pgm file to convert heights from ellipsoidal to gravity-related format. A model file can be loaded from GeographicLib https://geographiclib.sourceforge.io/html/geoid.html], default: \"./deps/egm2008-5.zip\"'\n );\n console.log('--token [Token for Cesium ION tilesets authentication]');\n console.log('--no-draco [Disable draco compression for geometry]');\n console.log(\n '--generate-textures [Enable KTX2 textures generation if only one of (JPG, PNG) texture is provided or generate JPG texture if only KTX2 is provided]'\n );\n console.log(\n '--generate-bounding-volumes [Will generate obb and mbs bounding volumes from geometry]'\n );\n console.log('--validate [Enable validation]');\n process.exit(0); // eslint-disable-line\n}\n\n/**\n * Run conversion process\n * @param options validated tile-converter options\n */\nasync function convert(options: ValidatedTileConversionOptions) {\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Starting conversion of ${options.inputType}`); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n const inputType = options.inputType.toUpperCase();\n switch (inputType) {\n case TILESET_TYPE.I3S:\n const tiles3DConverter = new Tiles3DConverter();\n tiles3DConverter.convert({\n inputUrl: options.tileset,\n outputPath: options.output,\n tilesetName: options.name,\n maxDepth: options.maxDepth,\n egmFilePath: options.egm\n });\n break;\n case TILESET_TYPE._3DTILES:\n const converter = new I3SConverter();\n await converter.convert({\n inputUrl: options.tileset,\n outputPath: options.output,\n tilesetName: options.name,\n maxDepth: options.maxDepth,\n slpk: options.slpk,\n sevenZipExe: options.sevenZipExe,\n egmFilePath: options.egm,\n token: options.token,\n draco: options.draco,\n generateTextures: options.generateTextures,\n generateBoundingVolumes: options.generateBoundingVolumes,\n validate: options.validate\n });\n break;\n default:\n printHelp();\n }\n}\n\n// OPTIONS\n/**\n * Validate input options of the CLI command\n * @param options - input options of the CLI command\n * @returns validated options\n */\nfunction validateOptions(options: TileConversionOptions): ValidatedTileConversionOptions {\n const mandatoryOptionsWithExceptions: {\n [key: string]: () => void;\n } = {\n name: () => console.log('Missed: --name [Tileset name]'),\n output: () => console.log('Missed: --output [Output path name]'),\n sevenZipExe: () => console.log('Missed: --7zExe [7z archiver executable path]'),\n egm: () => console.log('Missed: --egm [*.pgm earth gravity model file path]'),\n tileset: () => console.log('Missed: --tileset [tileset.json file]'),\n inputType: () =>\n console.log('Missed/Incorrect: --input-type [tileset input type: I3S or 3DTILES]')\n };\n const exceptions: (() => void)[] = [];\n for (const mandatoryOption in mandatoryOptionsWithExceptions) {\n const optionValue = options[mandatoryOption];\n const isWrongInputType =\n Boolean(optionValue) &&\n mandatoryOption === 'inputType' &&\n !Object.values(TILESET_TYPE).includes(optionValue.toUpperCase());\n\n if (!optionValue || isWrongInputType) {\n exceptions.push(mandatoryOptionsWithExceptions[mandatoryOption]);\n }\n }\n if (exceptions.length) {\n exceptions.forEach((exeption) => exeption());\n process.exit(1);\n }\n return <ValidatedTileConversionOptions>options;\n}\n\nfunction validateOptionsWithEqual(args: string[]): string[] {\n return args.reduce((acc: string[], curr) => {\n const equalSignIndex = curr.indexOf('=');\n const beforeEqual = curr.slice(0, equalSignIndex);\n const afterEqual = curr.slice(equalSignIndex + 1, curr.length);\n const condition = curr.includes('=') && curr.startsWith('--') && afterEqual;\n if (condition) {\n return acc.concat(beforeEqual, afterEqual);\n }\n return acc.concat(curr);\n }, []);\n}\n\n/**\n * Parse option from the cli arguments array\n * @param args\n * @returns\n */\nfunction parseOptions(args: string[]): TileConversionOptions {\n const opts: TileConversionOptions = {\n output: 'data',\n sevenZipExe: 'C:\\\\Program Files\\\\7-Zip\\\\7z.exe',\n egm: join(process.cwd(), 'deps', 'egm2008-5.pgm'),\n draco: true,\n installDependencies: false,\n generateTextures: false,\n generateBoundingVolumes: false,\n validate: false,\n slpk: false\n };\n\n // eslint-disable-next-line complexity\n args.forEach((arg, index) => {\n if (arg.indexOf('--') === 0) {\n switch (arg) {\n case '--input-type':\n opts.inputType = getStringValue(index, args);\n break;\n case '--tileset':\n opts.tileset = getURLValue(index, args);\n break;\n case '--name':\n opts.name = getStringValue(index, args);\n break;\n case '--output':\n opts.output = getStringValue(index, args);\n break;\n case '--max-depth':\n opts.maxDepth = getIntegerValue(index, args);\n break;\n case '--slpk':\n opts.slpk = getBooleanValue(index, args);\n break;\n case '--7zExe':\n opts.sevenZipExe = getStringValue(index, args);\n break;\n case '--egm':\n opts.egm = getStringValue(index, args);\n break;\n case '--token':\n opts.token = getStringValue(index, args);\n break;\n case '--no-draco':\n opts.draco = getBooleanValue(index, args);\n break;\n case '--validate':\n opts.validate = getBooleanValue(index, args);\n break;\n case '--install-dependencies':\n opts.installDependencies = getBooleanValue(index, args);\n break;\n case '--generate-textures':\n opts.generateTextures = getBooleanValue(index, args);\n break;\n case '--generate-bounding-volumes':\n opts.generateBoundingVolumes = getBooleanValue(index, args);\n break;\n case '--help':\n printHelp();\n break;\n default:\n console.warn(`Unknown option ${arg}`);\n process.exit(0); // eslint-disable-line\n }\n }\n });\n return opts;\n}\n\n/**\n * Get string option value from cli arguments\n * @param index - option's name index in the argument's array.\n * The value of the option should be next to name of the option.\n * @param args - cli arguments array\n * @returns - string value of the option\n */\nfunction getStringValue(index: number, args: string[]): string {\n if (index + 1 >= args.length) {\n return '';\n }\n const value = args[index + 1];\n if (value.indexOf('--') === 0) {\n return '';\n }\n return value;\n}\n\n/**\n * Modyfy URL path to be compatible with fetch\n * @param index - option's name index in the argument's array.\n * The value of the option should be next to name of the option.\n * @param args - cli arguments array\n * @returns - string value of the option\n */\nfunction getURLValue(index: number, args: string[]): string {\n const value = getStringValue(index, args);\n console.log(`Input tileset value: ${value}`);\n console.log(`Modified tileset value: ${value.replace(/\\\\/g, '/')}`);\n return value.replace(/\\\\/g, '/');\n}\n\n/**\n * Get integer option value from cli arguments\n * @param index - option's name index in the argument's array\n * The value of the option should be next to name of the option.\n * @param args - cli arguments array\n * @returns - number value of the option\n */\nfunction getIntegerValue(index: number, args: string[]): number {\n const stringValue: string = getStringValue(index, args);\n const result: number = Number.parseInt(stringValue);\n if (isFinite(result)) {\n return result;\n }\n return NaN;\n}\n\nfunction getBooleanValue(index: number, args: string[]): boolean {\n const stringValue: string = getStringValue(index, args).toLowerCase().trim();\n if (args[index] === '--no-draco' && !stringValue) {\n return false;\n }\n if (!stringValue || stringValue === 'true') {\n return true;\n }\n return false;\n}\n"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ var _core = require("@loaders.gl/core");
|
|
|
13
13
|
var _zip = require("@loaders.gl/zip");
|
|
14
14
|
var _fileUtils = require("../lib/utils/file-utils");
|
|
15
15
|
var _path = require("path");
|
|
16
|
-
var VERSION = typeof "3.3.0-alpha.
|
|
16
|
+
var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'beta';
|
|
17
17
|
var PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
|
|
18
18
|
|
|
19
19
|
var DepsInstaller = function () {
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports._typecheckI3SAttributesWorker = exports.I3SAttributesWorker = void 0;
|
|
7
7
|
exports.transformI3SAttributesOnWorker = transformI3SAttributesOnWorker;
|
|
8
8
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
9
|
-
var VERSION = typeof "3.3.0-alpha.
|
|
9
|
+
var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
|
|
10
10
|
var I3SAttributesWorker = {
|
|
11
11
|
id: 'i3s-attributes',
|
|
12
12
|
name: 'I3S Attributes Worker',
|
|
@@ -75,13 +75,14 @@ function convertBoundingVolumeToI3SFullExtent(boundingVolume) {
|
|
|
75
75
|
var radius = sphere.radius;
|
|
76
76
|
var vertexMax = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(new _core.Vector3(center[0] + radius, center[1] + radius, center[2] + radius), new _core.Vector3());
|
|
77
77
|
var vertexMin = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(new _core.Vector3(center[0] - radius, center[1] - radius, center[2] - radius), new _core.Vector3());
|
|
78
|
+
|
|
78
79
|
return {
|
|
79
|
-
xmin: vertexMin[0],
|
|
80
|
-
xmax: vertexMax[0],
|
|
81
|
-
ymin: vertexMin[1],
|
|
82
|
-
ymax: vertexMax[1],
|
|
83
|
-
zmin: vertexMin[2],
|
|
84
|
-
zmax: vertexMax[2]
|
|
80
|
+
xmin: Math.min(vertexMin[0], vertexMax[0]),
|
|
81
|
+
xmax: Math.max(vertexMin[0], vertexMax[0]),
|
|
82
|
+
ymin: Math.min(vertexMin[1], vertexMax[1]),
|
|
83
|
+
ymax: Math.max(vertexMin[1], vertexMax[1]),
|
|
84
|
+
zmin: Math.min(vertexMin[2], vertexMax[2]),
|
|
85
|
+
zmax: Math.max(vertexMin[2], vertexMax[2])
|
|
85
86
|
};
|
|
86
87
|
}
|
|
87
88
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-converter.js","names":["createBoundingVolumes","tile","geoidHeightModel","radius","halfSize","quaternion","boundingVolume","cartographicCenter","Ellipsoid","WGS84","cartesianToCartographic","center","Vector3","getHeight","OrientedBoundingBox","len","Quaternion","fromMatrix3","Matrix3","normalize","mbs","obb","createBoundingVolumesFromGeometry","cartesianPositions","positionVectors","convertPositionsToVectors","geometryObb","makeOrientedBoundingBoxFromPoints","geometryMbs","makeBoundingSphereFromPoints","mbsCenter","obbCenter","positions","result","i","length","positionVector","push","convertBoundingVolumeToI3SFullExtent","sphere","BoundingSphere","getBoundingSphere","vertexMax","vertexMin","xmin","xmax","ymin","ymax","zmin","zmax","createObbFromMbs","halfAxex"],"sources":["../../../../src/i3s-converter/helpers/coordinate-converter.ts"],"sourcesContent":["import type {BoundingVolumes, FullExtent, Mbs, Obb} from '@loaders.gl/i3s';\n\nimport {Matrix3, Quaternion, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {\n OrientedBoundingBox,\n makeOrientedBoundingBoxFromPoints,\n makeBoundingSphereFromPoints,\n BoundingSphere\n} from '@math.gl/culling';\nimport {Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\n/**\n * Create bounding volumes object from tile and geoid height model.\n * @param tile\n * @param geoidHeightModel\n * @returns - Bounding volumes object\n */\nexport function createBoundingVolumes(tile: Tile3D, geoidHeightModel: Geoid): BoundingVolumes {\n let radius;\n let halfSize;\n let quaternion;\n\n const boundingVolume = tile.boundingVolume;\n const cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(\n boundingVolume.center,\n new Vector3()\n );\n cartographicCenter[2] =\n cartographicCenter[2] -\n geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);\n if (boundingVolume instanceof OrientedBoundingBox) {\n halfSize = boundingVolume.halfSize;\n radius = new Vector3(halfSize[0], halfSize[1], halfSize[2]).len();\n quaternion = boundingVolume.quaternion;\n } else {\n radius = tile.boundingVolume.radius;\n halfSize = [radius, radius, radius];\n quaternion = new Quaternion()\n .fromMatrix3(new Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]]))\n .normalize();\n }\n\n return {\n mbs: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2], radius],\n obb: {\n center: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2]],\n halfSize,\n quaternion\n }\n };\n}\n\n/**\n * Generates bounding volumes from geometry positions\n * @param cartesianPositions\n * @param geoidHeightModel\n */\nexport function createBoundingVolumesFromGeometry(\n cartesianPositions: Float32Array,\n geoidHeightModel: Geoid\n): {mbs: Mbs; obb: Obb} {\n const positionVectors = convertPositionsToVectors(cartesianPositions);\n\n const geometryObb = makeOrientedBoundingBoxFromPoints(positionVectors);\n const geometryMbs = makeBoundingSphereFromPoints(positionVectors);\n\n let mbsCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new Vector3());\n let obbCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new Vector3());\n\n mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);\n obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);\n\n return {\n mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],\n obb: {\n center: obbCenter,\n halfSize: geometryObb.halfSize,\n quaternion: geometryObb.quaternion\n }\n };\n}\n\n/**\n * Create array of posisitons where each vertex is vector\n * @param {array} positions\n * @returns {Vector3[]}\n */\nexport function convertPositionsToVectors(positions: Float32Array): Vector3[] {\n const result: Vector3[] = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n // TODO: (perf) new Vector3 is not optimal but required in `makeOrientedBoundingBoxFromPoints`.\n // modify `makeOrientedBoundingBoxFromPoints` to use scratch vectors\n const positionVector = new Vector3([positions[i], positions[i + 1], positions[i + 2]]);\n result.push(positionVector);\n }\n\n return result;\n}\n\n/**\n * Convert common coordinate to fullExtent https://github.com/Esri/i3s-spec/blob/master/docs/1.8/fullExtent.cmn.md\n * @param\n * @param boundingVolume\n * @returns - fullExtent object\n */\nexport function convertBoundingVolumeToI3SFullExtent(\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): FullExtent {\n let sphere: BoundingSphere;\n if (boundingVolume instanceof BoundingSphere) {\n sphere = boundingVolume;\n } else {\n sphere = boundingVolume.getBoundingSphere();\n }\n const center: Vector3 = sphere.center;\n const radius: number = sphere.radius;\n const vertexMax = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] + radius, center[1] + radius, center[2] + radius),\n new Vector3()\n );\n const vertexMin = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] - radius, center[1] - radius, center[2] - radius),\n new Vector3()\n );\n\n return {\n xmin: vertexMin[0],\n xmax: vertexMax[0],\n ymin: vertexMin[1],\n ymax: vertexMax[1],\n zmin: vertexMin[2],\n zmax: vertexMax[2]\n };\n}\n\n/**\n * Creates oriented boundinb box from mbs.\n * @param mbs - Minimum Bounding Sphere\n * @returns - Oriented BOunding Box\n */\nexport function createObbFromMbs(mbs: Mbs): Obb {\n const radius = mbs[3];\n const center = new Vector3(mbs[0], mbs[1], mbs[2]);\n const halfAxex = new Matrix3([radius, 0, 0, 0, radius, 0, 0, 0, radius]);\n return new OrientedBoundingBox(center, halfAxex);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coordinate-converter.js","names":["createBoundingVolumes","tile","geoidHeightModel","radius","halfSize","quaternion","boundingVolume","cartographicCenter","Ellipsoid","WGS84","cartesianToCartographic","center","Vector3","getHeight","OrientedBoundingBox","len","Quaternion","fromMatrix3","Matrix3","normalize","mbs","obb","createBoundingVolumesFromGeometry","cartesianPositions","positionVectors","convertPositionsToVectors","geometryObb","makeOrientedBoundingBoxFromPoints","geometryMbs","makeBoundingSphereFromPoints","mbsCenter","obbCenter","positions","result","i","length","positionVector","push","convertBoundingVolumeToI3SFullExtent","sphere","BoundingSphere","getBoundingSphere","vertexMax","vertexMin","xmin","Math","min","xmax","max","ymin","ymax","zmin","zmax","createObbFromMbs","halfAxex"],"sources":["../../../../src/i3s-converter/helpers/coordinate-converter.ts"],"sourcesContent":["import type {BoundingVolumes, FullExtent, Mbs, Obb} from '@loaders.gl/i3s';\n\nimport {Matrix3, Quaternion, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {\n OrientedBoundingBox,\n makeOrientedBoundingBoxFromPoints,\n makeBoundingSphereFromPoints,\n BoundingSphere\n} from '@math.gl/culling';\nimport {Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\n/**\n * Create bounding volumes object from tile and geoid height model.\n * @param tile\n * @param geoidHeightModel\n * @returns - Bounding volumes object\n */\nexport function createBoundingVolumes(tile: Tile3D, geoidHeightModel: Geoid): BoundingVolumes {\n let radius;\n let halfSize;\n let quaternion;\n\n const boundingVolume = tile.boundingVolume;\n const cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(\n boundingVolume.center,\n new Vector3()\n );\n cartographicCenter[2] =\n cartographicCenter[2] -\n geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);\n if (boundingVolume instanceof OrientedBoundingBox) {\n halfSize = boundingVolume.halfSize;\n radius = new Vector3(halfSize[0], halfSize[1], halfSize[2]).len();\n quaternion = boundingVolume.quaternion;\n } else {\n radius = tile.boundingVolume.radius;\n halfSize = [radius, radius, radius];\n quaternion = new Quaternion()\n .fromMatrix3(new Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]]))\n .normalize();\n }\n\n return {\n mbs: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2], radius],\n obb: {\n center: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2]],\n halfSize,\n quaternion\n }\n };\n}\n\n/**\n * Generates bounding volumes from geometry positions\n * @param cartesianPositions\n * @param geoidHeightModel\n */\nexport function createBoundingVolumesFromGeometry(\n cartesianPositions: Float32Array,\n geoidHeightModel: Geoid\n): {mbs: Mbs; obb: Obb} {\n const positionVectors = convertPositionsToVectors(cartesianPositions);\n\n const geometryObb = makeOrientedBoundingBoxFromPoints(positionVectors);\n const geometryMbs = makeBoundingSphereFromPoints(positionVectors);\n\n let mbsCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new Vector3());\n let obbCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new Vector3());\n\n mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);\n obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);\n\n return {\n mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],\n obb: {\n center: obbCenter,\n halfSize: geometryObb.halfSize,\n quaternion: geometryObb.quaternion\n }\n };\n}\n\n/**\n * Create array of posisitons where each vertex is vector\n * @param {array} positions\n * @returns {Vector3[]}\n */\nexport function convertPositionsToVectors(positions: Float32Array): Vector3[] {\n const result: Vector3[] = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n // TODO: (perf) new Vector3 is not optimal but required in `makeOrientedBoundingBoxFromPoints`.\n // modify `makeOrientedBoundingBoxFromPoints` to use scratch vectors\n const positionVector = new Vector3([positions[i], positions[i + 1], positions[i + 2]]);\n result.push(positionVector);\n }\n\n return result;\n}\n\n/**\n * Convert common coordinate to fullExtent https://github.com/Esri/i3s-spec/blob/master/docs/1.8/fullExtent.cmn.md\n * @param\n * @param boundingVolume\n * @returns - fullExtent object\n */\nexport function convertBoundingVolumeToI3SFullExtent(\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): FullExtent {\n let sphere: BoundingSphere;\n if (boundingVolume instanceof BoundingSphere) {\n sphere = boundingVolume;\n } else {\n sphere = boundingVolume.getBoundingSphere();\n }\n const center: Vector3 = sphere.center;\n const radius: number = sphere.radius;\n const vertexMax = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] + radius, center[1] + radius, center[2] + radius),\n new Vector3()\n );\n const vertexMin = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] - radius, center[1] - radius, center[2] - radius),\n new Vector3()\n );\n\n // Converter sometimes returns min values that are bigger then max,\n // so we should check and take bigger value from max and smaller for nim\n return {\n xmin: Math.min(vertexMin[0], vertexMax[0]),\n xmax: Math.max(vertexMin[0], vertexMax[0]),\n ymin: Math.min(vertexMin[1], vertexMax[1]),\n ymax: Math.max(vertexMin[1], vertexMax[1]),\n zmin: Math.min(vertexMin[2], vertexMax[2]),\n zmax: Math.max(vertexMin[2], vertexMax[2])\n };\n}\n\n/**\n * Creates oriented boundinb box from mbs.\n * @param mbs - Minimum Bounding Sphere\n * @returns - Oriented BOunding Box\n */\nexport function createObbFromMbs(mbs: Mbs): Obb {\n const radius = mbs[3];\n const center = new Vector3(mbs[0], mbs[1], mbs[2]);\n const halfAxex = new Matrix3([radius, 0, 0, 0, radius, 0, 0, 0, radius]);\n return new OrientedBoundingBox(center, halfAxex);\n}\n"],"mappings":";;;;;;;;;;AAEA;AACA;AACA;AAeO,SAASA,qBAAqB,CAACC,IAAY,EAAEC,gBAAuB,EAAmB;EAC5F,IAAIC,MAAM;EACV,IAAIC,QAAQ;EACZ,IAAIC,UAAU;EAEd,IAAMC,cAAc,GAAGL,IAAI,CAACK,cAAc;EAC1C,IAAMC,kBAAkB,GAAGC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAChEJ,cAAc,CAACK,MAAM,EACrB,IAAIC,aAAO,EAAE,CACd;EACDL,kBAAkB,CAAC,CAAC,CAAC,GACnBA,kBAAkB,CAAC,CAAC,CAAC,GACrBL,gBAAgB,CAACW,SAAS,CAACN,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,CAAC;EAC1E,IAAID,cAAc,YAAYQ,4BAAmB,EAAE;IACjDV,QAAQ,GAAGE,cAAc,CAACF,QAAQ;IAClCD,MAAM,GAAG,IAAIS,aAAO,CAACR,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACW,GAAG,EAAE;IACjEV,UAAU,GAAGC,cAAc,CAACD,UAAU;EACxC,CAAC,MAAM;IACLF,MAAM,GAAGF,IAAI,CAACK,cAAc,CAACH,MAAM;IACnCC,QAAQ,GAAG,CAACD,MAAM,EAAEA,MAAM,EAAEA,MAAM,CAAC;IACnCE,UAAU,GAAG,IAAIW,gBAAU,EAAE,CAC1BC,WAAW,CAAC,IAAIC,aAAO,CAAC,CAACd,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnFe,SAAS,EAAE;EAChB;EAEA,OAAO;IACLC,GAAG,EAAE,CAACb,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,EAAEJ,MAAM,CAAC;IAClFkB,GAAG,EAAE;MACHV,MAAM,EAAE,CAACJ,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,CAAC;MAC7EH,QAAQ,EAARA,QAAQ;MACRC,UAAU,EAAVA;IACF;EACF,CAAC;AACH;;AAOO,SAASiB,iCAAiC,CAC/CC,kBAAgC,EAChCrB,gBAAuB,EACD;EACtB,IAAMsB,eAAe,GAAGC,yBAAyB,CAACF,kBAAkB,CAAC;EAErE,IAAMG,WAAW,GAAG,IAAAC,0CAAiC,EAACH,eAAe,CAAC;EACtE,IAAMI,WAAW,GAAG,IAAAC,qCAA4B,EAACL,eAAe,CAAC;EAEjE,IAAIM,SAAS,GAAGtB,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAACkB,WAAW,CAACjB,MAAM,EAAE,IAAIC,aAAO,EAAE,CAAC;EAC1F,IAAImB,SAAS,GAAGvB,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAACgB,WAAW,CAACf,MAAM,EAAE,IAAIC,aAAO,EAAE,CAAC;EAE1FkB,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAG5B,gBAAgB,CAACW,SAAS,CAACiB,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC;EACpFC,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAG7B,gBAAgB,CAACW,SAAS,CAACkB,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC;EAEpF,OAAO;IACLX,GAAG,EAAE,CAACU,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEF,WAAW,CAACzB,MAAM,CAAC;IACnEkB,GAAG,EAAE;MACHV,MAAM,EAAEoB,SAAS;MACjB3B,QAAQ,EAAEsB,WAAW,CAACtB,QAAQ;MAC9BC,UAAU,EAAEqB,WAAW,CAACrB;IAC1B;EACF,CAAC;AACH;;AAOO,SAASoB,yBAAyB,CAACO,SAAuB,EAAa;EAC5E,IAAMC,MAAiB,GAAG,EAAE;EAE5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,SAAS,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IAG5C,IAAME,cAAc,GAAG,IAAIxB,aAAO,CAAC,CAACoB,SAAS,CAACE,CAAC,CAAC,EAAEF,SAAS,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEF,SAAS,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtFD,MAAM,CAACI,IAAI,CAACD,cAAc,CAAC;EAC7B;EAEA,OAAOH,MAAM;AACf;;AAQO,SAASK,oCAAoC,CAClDhC,cAAoD,EACxC;EACZ,IAAIiC,MAAsB;EAC1B,IAAIjC,cAAc,YAAYkC,uBAAc,EAAE;IAC5CD,MAAM,GAAGjC,cAAc;EACzB,CAAC,MAAM;IACLiC,MAAM,GAAGjC,cAAc,CAACmC,iBAAiB,EAAE;EAC7C;EACA,IAAM9B,MAAe,GAAG4B,MAAM,CAAC5B,MAAM;EACrC,IAAMR,MAAc,GAAGoC,MAAM,CAACpC,MAAM;EACpC,IAAMuC,SAAS,GAAGlC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CACvD,IAAIE,aAAO,CAACD,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,EAAEQ,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,EAAEQ,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,CAAC,EACvE,IAAIS,aAAO,EAAE,CACd;EACD,IAAM+B,SAAS,GAAGnC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CACvD,IAAIE,aAAO,CAACD,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,EAAEQ,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,EAAEQ,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,CAAC,EACvE,IAAIS,aAAO,EAAE,CACd;;EAID,OAAO;IACLgC,IAAI,EAAEC,IAAI,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CK,IAAI,EAAEF,IAAI,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CO,IAAI,EAAEJ,IAAI,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CQ,IAAI,EAAEL,IAAI,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CS,IAAI,EAAEN,IAAI,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CU,IAAI,EAAEP,IAAI,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC;EAC3C,CAAC;AACH;;AAOO,SAASW,gBAAgB,CAACjC,GAAQ,EAAO;EAC9C,IAAMjB,MAAM,GAAGiB,GAAG,CAAC,CAAC,CAAC;EACrB,IAAMT,MAAM,GAAG,IAAIC,aAAO,CAACQ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;EAClD,IAAMkC,QAAQ,GAAG,IAAIpC,aAAO,CAAC,CAACf,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,MAAM,CAAC,CAAC;EACxE,OAAO,IAAIW,4BAAmB,CAACH,MAAM,EAAE2C,QAAQ,CAAC;AAClD"}
|
|
@@ -104,7 +104,7 @@ var I3SConverter = function () {
|
|
|
104
104
|
key: "convert",
|
|
105
105
|
value: function () {
|
|
106
106
|
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
|
|
107
|
-
var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, preloadOptions, tilesetOptions, sourceTilesetJson, workerFarm;
|
|
107
|
+
var tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, _sourceTilesetJson$ro, _sourceTilesetJson$ro2, preloadOptions, tilesetOptions, sourceTilesetJson, workerFarm;
|
|
108
108
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
109
109
|
while (1) {
|
|
110
110
|
switch (_context.prev = _context.next) {
|
|
@@ -179,7 +179,7 @@ var I3SConverter = function () {
|
|
|
179
179
|
sourceTilesetJson = _context.sent;
|
|
180
180
|
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, tilesetOptions);
|
|
181
181
|
_context.next = 33;
|
|
182
|
-
return this._createAndSaveTileset(outputPath, tilesetName);
|
|
182
|
+
return this._createAndSaveTileset(outputPath, tilesetName, sourceTilesetJson === null || sourceTilesetJson === void 0 ? void 0 : (_sourceTilesetJson$ro = sourceTilesetJson.root) === null || _sourceTilesetJson$ro === void 0 ? void 0 : (_sourceTilesetJson$ro2 = _sourceTilesetJson$ro.boundingVolume) === null || _sourceTilesetJson$ro2 === void 0 ? void 0 : _sourceTilesetJson$ro2.region);
|
|
183
183
|
case 33:
|
|
184
184
|
_context.next = 35;
|
|
185
185
|
return this._finishConversion({
|
|
@@ -213,7 +213,7 @@ var I3SConverter = function () {
|
|
|
213
213
|
}, {
|
|
214
214
|
key: "_createAndSaveTileset",
|
|
215
215
|
value: function () {
|
|
216
|
-
var _createAndSaveTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(outputPath, tilesetName) {
|
|
216
|
+
var _createAndSaveTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(outputPath, tilesetName, boundingVolumeRegion) {
|
|
217
217
|
var tilesetPath, sourceRootTile, boundingVolumes, parentId, isCreateSlpk, root0;
|
|
218
218
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
219
219
|
while (1) {
|
|
@@ -231,7 +231,7 @@ var I3SConverter = function () {
|
|
|
231
231
|
_context2.t0 = _context2["catch"](1);
|
|
232
232
|
case 8:
|
|
233
233
|
this.layers0Path = (0, _path.join)(tilesetPath, 'SceneServer', 'layers', '0');
|
|
234
|
-
this._formLayers0(tilesetName);
|
|
234
|
+
this._formLayers0(tilesetName, boundingVolumeRegion);
|
|
235
235
|
this.materialDefinitions = [];
|
|
236
236
|
this.materialMap = new Map();
|
|
237
237
|
sourceRootTile = this.sourceTileset.root;
|
|
@@ -275,7 +275,7 @@ var I3SConverter = function () {
|
|
|
275
275
|
}
|
|
276
276
|
}, _callee2, this, [[1, 6]]);
|
|
277
277
|
}));
|
|
278
|
-
function _createAndSaveTileset(_x2, _x3) {
|
|
278
|
+
function _createAndSaveTileset(_x2, _x3, _x4) {
|
|
279
279
|
return _createAndSaveTileset2.apply(this, arguments);
|
|
280
280
|
}
|
|
281
281
|
return _createAndSaveTileset;
|
|
@@ -283,9 +283,13 @@ var I3SConverter = function () {
|
|
|
283
283
|
}, {
|
|
284
284
|
key: "_formLayers0",
|
|
285
285
|
value:
|
|
286
|
-
function _formLayers0(tilesetName) {
|
|
286
|
+
function _formLayers0(tilesetName, boundingVolumeRegion) {
|
|
287
287
|
var _this$sourceTileset, _this$sourceTileset2, _this$sourceTileset2$;
|
|
288
288
|
var fullExtent = (0, _coordinateConverter.convertBoundingVolumeToI3SFullExtent)(((_this$sourceTileset = this.sourceTileset) === null || _this$sourceTileset === void 0 ? void 0 : _this$sourceTileset.boundingVolume) || ((_this$sourceTileset2 = this.sourceTileset) === null || _this$sourceTileset2 === void 0 ? void 0 : (_this$sourceTileset2$ = _this$sourceTileset2.root) === null || _this$sourceTileset2$ === void 0 ? void 0 : _this$sourceTileset2$.boundingVolume));
|
|
289
|
+
if (boundingVolumeRegion) {
|
|
290
|
+
fullExtent.zmin = boundingVolumeRegion[4];
|
|
291
|
+
fullExtent.zmax = boundingVolumeRegion[5];
|
|
292
|
+
}
|
|
289
293
|
var extent = [fullExtent.xmin, fullExtent.ymin, fullExtent.xmax, fullExtent.ymax];
|
|
290
294
|
var layers0data = {
|
|
291
295
|
version: "{".concat((0, _uuid.v4)().toUpperCase(), "}"),
|
|
@@ -392,7 +396,7 @@ var I3SConverter = function () {
|
|
|
392
396
|
}
|
|
393
397
|
}, _callee3, this);
|
|
394
398
|
}));
|
|
395
|
-
function _convertNodesTree(
|
|
399
|
+
function _convertNodesTree(_x5, _x6, _x7, _x8) {
|
|
396
400
|
return _convertNodesTree2.apply(this, arguments);
|
|
397
401
|
}
|
|
398
402
|
return _convertNodesTree;
|
|
@@ -466,7 +470,7 @@ var I3SConverter = function () {
|
|
|
466
470
|
}
|
|
467
471
|
}, _callee5, this);
|
|
468
472
|
}));
|
|
469
|
-
function _writeNodeIndexDocument(
|
|
473
|
+
function _writeNodeIndexDocument(_x9, _x10, _x11) {
|
|
470
474
|
return _writeNodeIndexDocument2.apply(this, arguments);
|
|
471
475
|
}
|
|
472
476
|
return _writeNodeIndexDocument;
|
|
@@ -505,7 +509,7 @@ var I3SConverter = function () {
|
|
|
505
509
|
}
|
|
506
510
|
}, _callee6, this, [[5, 10]]);
|
|
507
511
|
}));
|
|
508
|
-
function _createSlpk(
|
|
512
|
+
function _createSlpk(_x12) {
|
|
509
513
|
return _createSlpk2.apply(this, arguments);
|
|
510
514
|
}
|
|
511
515
|
return _createSlpk;
|
|
@@ -534,7 +538,7 @@ var I3SConverter = function () {
|
|
|
534
538
|
}
|
|
535
539
|
}, _callee7, this);
|
|
536
540
|
}));
|
|
537
|
-
function _addChildrenWithNeighborsAndWriteFile(
|
|
541
|
+
function _addChildrenWithNeighborsAndWriteFile(_x13) {
|
|
538
542
|
return _addChildrenWithNeighborsAndWriteFile2.apply(this, arguments);
|
|
539
543
|
}
|
|
540
544
|
return _addChildrenWithNeighborsAndWriteFile;
|
|
@@ -570,7 +574,7 @@ var I3SConverter = function () {
|
|
|
570
574
|
}
|
|
571
575
|
}, _callee8, this);
|
|
572
576
|
}));
|
|
573
|
-
function convertNestedTileset(
|
|
577
|
+
function convertNestedTileset(_x14) {
|
|
574
578
|
return _convertNestedTileset.apply(this, arguments);
|
|
575
579
|
}
|
|
576
580
|
return convertNestedTileset;
|
|
@@ -614,7 +618,7 @@ var I3SConverter = function () {
|
|
|
614
618
|
}
|
|
615
619
|
}, _callee9, this);
|
|
616
620
|
}));
|
|
617
|
-
function convertNode(
|
|
621
|
+
function convertNode(_x15) {
|
|
618
622
|
return _convertNode.apply(this, arguments);
|
|
619
623
|
}
|
|
620
624
|
return convertNode;
|
|
@@ -689,7 +693,7 @@ var I3SConverter = function () {
|
|
|
689
693
|
}
|
|
690
694
|
}, _callee10, this, [[5, 17, 20, 23]]);
|
|
691
695
|
}));
|
|
692
|
-
function _addChildren(
|
|
696
|
+
function _addChildren(_x16) {
|
|
693
697
|
return _addChildren2.apply(this, arguments);
|
|
694
698
|
}
|
|
695
699
|
return _addChildren;
|
|
@@ -784,7 +788,7 @@ var I3SConverter = function () {
|
|
|
784
788
|
}
|
|
785
789
|
}, _callee11, this, [[1, 38, 41, 44], [10, 21, 24, 27]]);
|
|
786
790
|
}));
|
|
787
|
-
function _addNeighborsAndWriteFile(
|
|
791
|
+
function _addNeighborsAndWriteFile(_x17, _x18) {
|
|
788
792
|
return _addNeighborsAndWriteFile2.apply(this, arguments);
|
|
789
793
|
}
|
|
790
794
|
return _addNeighborsAndWriteFile;
|
|
@@ -799,9 +803,7 @@ var I3SConverter = function () {
|
|
|
799
803
|
while (1) {
|
|
800
804
|
switch (_context12.prev = _context12.next) {
|
|
801
805
|
case 0:
|
|
802
|
-
|
|
803
|
-
this._checkAddRefinementTypeForTile(sourceTile);
|
|
804
|
-
}
|
|
806
|
+
this._checkAddRefinementTypeForTile(sourceTile);
|
|
805
807
|
_context12.next = 3;
|
|
806
808
|
return this._updateTilesetOptions();
|
|
807
809
|
case 3:
|
|
@@ -899,7 +901,7 @@ var I3SConverter = function () {
|
|
|
899
901
|
}
|
|
900
902
|
}, _callee12, this, [[15, 35, 38, 41]]);
|
|
901
903
|
}));
|
|
902
|
-
function _createNode(
|
|
904
|
+
function _createNode(_x19, _x20, _x21, _x22) {
|
|
903
905
|
return _createNode2.apply(this, arguments);
|
|
904
906
|
}
|
|
905
907
|
return _createNode;
|
|
@@ -943,7 +945,7 @@ var I3SConverter = function () {
|
|
|
943
945
|
}
|
|
944
946
|
}, _callee13, this);
|
|
945
947
|
}));
|
|
946
|
-
function _convertResources(
|
|
948
|
+
function _convertResources(_x23, _x24, _x25) {
|
|
947
949
|
return _convertResources2.apply(this, arguments);
|
|
948
950
|
}
|
|
949
951
|
return _convertResources;
|
|
@@ -1085,7 +1087,7 @@ var I3SConverter = function () {
|
|
|
1085
1087
|
}
|
|
1086
1088
|
}, _callee14, this);
|
|
1087
1089
|
}));
|
|
1088
|
-
function _writeResources(
|
|
1090
|
+
function _writeResources(_x26, _x27) {
|
|
1089
1091
|
return _writeResources2.apply(this, arguments);
|
|
1090
1092
|
}
|
|
1091
1093
|
return _writeResources;
|
|
@@ -1149,7 +1151,7 @@ var I3SConverter = function () {
|
|
|
1149
1151
|
}
|
|
1150
1152
|
}, _callee15, this);
|
|
1151
1153
|
}));
|
|
1152
|
-
function _writeGeometries(
|
|
1154
|
+
function _writeGeometries(_x28, _x29, _x30, _x31) {
|
|
1153
1155
|
return _writeGeometries2.apply(this, arguments);
|
|
1154
1156
|
}
|
|
1155
1157
|
return _writeGeometries;
|
|
@@ -1198,7 +1200,7 @@ var I3SConverter = function () {
|
|
|
1198
1200
|
}
|
|
1199
1201
|
}, _callee16, this);
|
|
1200
1202
|
}));
|
|
1201
|
-
function _writeShared(
|
|
1203
|
+
function _writeShared(_x32, _x33, _x34, _x35) {
|
|
1202
1204
|
return _writeShared2.apply(this, arguments);
|
|
1203
1205
|
}
|
|
1204
1206
|
return _writeShared;
|
|
@@ -1283,7 +1285,7 @@ var I3SConverter = function () {
|
|
|
1283
1285
|
}
|
|
1284
1286
|
}, _callee17, this);
|
|
1285
1287
|
}));
|
|
1286
|
-
function _writeTexture(
|
|
1288
|
+
function _writeTexture(_x36, _x37, _x38) {
|
|
1287
1289
|
return _writeTexture2.apply(this, arguments);
|
|
1288
1290
|
}
|
|
1289
1291
|
return _writeTexture;
|
|
@@ -1324,7 +1326,7 @@ var I3SConverter = function () {
|
|
|
1324
1326
|
}
|
|
1325
1327
|
}, _callee18, this);
|
|
1326
1328
|
}));
|
|
1327
|
-
function writeTextureFile(
|
|
1329
|
+
function writeTextureFile(_x39, _x40, _x41, _x42, _x43) {
|
|
1328
1330
|
return _writeTextureFile.apply(this, arguments);
|
|
1329
1331
|
}
|
|
1330
1332
|
return writeTextureFile;
|
|
@@ -1480,7 +1482,7 @@ var I3SConverter = function () {
|
|
|
1480
1482
|
}
|
|
1481
1483
|
}, _callee20, this);
|
|
1482
1484
|
}));
|
|
1483
|
-
function _finishConversion(
|
|
1485
|
+
function _finishConversion(_x44) {
|
|
1484
1486
|
return _finishConversion2.apply(this, arguments);
|
|
1485
1487
|
}
|
|
1486
1488
|
return _finishConversion;
|