@loaders.gl/tile-converter 3.1.8 → 3.2.0-alpha.3
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 +28 -0
- package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
- package/dist/3d-tiles-attributes-worker.js +4 -0
- package/dist/3d-tiles-attributes-worker.js.map +7 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +82 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.js +268 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +84 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +278 -0
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +13 -0
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +23 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.js +52 -0
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
- package/dist/3d-tiles-converter/json-templates/tileset.js +43 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/converter-cli.d.ts +2 -0
- package/dist/converter-cli.d.ts.map +1 -0
- package/dist/converter-cli.js +232 -0
- package/dist/converter.min.js +68 -68
- package/dist/deps-installer/deps-installer.d.ts +14 -0
- package/dist/deps-installer/deps-installer.d.ts.map +1 -0
- package/dist/deps-installer/deps-installer.js +31 -0
- package/dist/dist.min.js +1151 -1264
- package/dist/es5/3d-tiles-attributes-worker.js +29 -0
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +104 -44
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +34 -43
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/converter-cli.js +306 -0
- package/dist/es5/converter-cli.js.map +1 -0
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +29 -0
- package/dist/es5/i3s-attributes-worker.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +19 -11
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +2 -2
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +271 -182
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +71 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js +47 -99
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +311 -245
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/index.js +0 -16
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/utils/compress-util.js +14 -17
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +39 -14
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/lib/utils/queue.js +61 -0
- package/dist/es5/lib/utils/queue.js.map +1 -0
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +225 -0
- package/dist/es5/lib/utils/write-queue.js.map +1 -0
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/es5/workers/3d-tiles-attributes-worker.js +37 -0
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/es5/workers/i3s-attributes-worker.js +40 -0
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
- package/dist/esm/3d-tiles-attributes-worker.js +16 -0
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +32 -5
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +23 -23
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/converter-cli.js +230 -0
- package/dist/esm/converter-cli.js.map +1 -0
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +16 -0
- package/dist/esm/i3s-attributes-worker.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +19 -11
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +2 -2
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +121 -62
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +54 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js +12 -4
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +155 -50
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/utils/compress-util.js +6 -8
- package/dist/esm/lib/utils/compress-util.js.map +1 -1
- package/dist/esm/lib/utils/file-utils.js +11 -1
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/lib/utils/queue.js +19 -0
- package/dist/esm/lib/utils/queue.js.map +1 -0
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +88 -0
- package/dist/esm/lib/utils/write-queue.js.map +1 -0
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js +5 -0
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/esm/workers/i3s-attributes-worker.js +4 -0
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
- package/dist/i3s-attributes-worker.d.ts +33 -0
- package/dist/i3s-attributes-worker.d.ts.map +1 -0
- package/dist/i3s-attributes-worker.js +10 -0
- package/dist/i3s-attributes-worker.js.map +7 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/coordinate-converter.js +122 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.js +28 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-attributes.js +177 -0
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +29 -0
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-converter.js +901 -0
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/gltf-attributes.js +56 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-debug.js +114 -0
- package/dist/i3s-converter/helpers/node-pages.d.ts +117 -0
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-pages.js +208 -0
- package/dist/i3s-converter/i3s-converter.d.ts +323 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
- package/dist/i3s-converter/i3s-converter.js +1074 -0
- package/dist/i3s-converter/json-templates/layers.d.ts +95 -0
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/layers.js +199 -0
- package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
- package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/metadata.js +25 -0
- package/dist/i3s-converter/json-templates/node.d.ts +61 -0
- package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/node.js +89 -0
- package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
- package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/scene-server.js +31 -0
- package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
- package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/shared-resources.js +129 -0
- package/dist/i3s-converter/json-templates/store.d.ts +95 -0
- package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/store.js +103 -0
- package/dist/i3s-converter/types.d.ts +114 -0
- package/dist/i3s-converter/types.d.ts.map +1 -0
- package/dist/i3s-converter/types.js +2 -0
- package/dist/i3s-server/app.d.ts +3 -0
- package/dist/i3s-server/app.d.ts.map +1 -0
- package/dist/i3s-server/app.js +14 -0
- package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
- package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/index-controller.js +23 -0
- package/dist/i3s-server/routes/index.d.ts +3 -0
- package/dist/i3s-server/routes/index.d.ts.map +1 -0
- package/dist/i3s-server/routes/index.js +16 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/lib/utils/compress-util.d.ts +45 -0
- package/dist/lib/utils/compress-util.d.ts.map +1 -0
- package/dist/lib/utils/compress-util.js +257 -0
- package/dist/{esm/lib → lib}/utils/file-utils.d.ts +6 -14
- package/dist/lib/utils/file-utils.d.ts.map +1 -0
- package/dist/lib/utils/file-utils.js +81 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts +41 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
- package/dist/lib/utils/lod-conversion-utils.js +76 -0
- package/dist/lib/utils/queue.d.ts +7 -0
- package/dist/lib/utils/queue.d.ts.map +1 -0
- package/dist/lib/utils/queue.js +18 -0
- package/dist/lib/utils/statistic-utills.d.ts +3 -0
- package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
- package/dist/lib/utils/statistic-utills.js +64 -0
- package/dist/lib/utils/write-queue.d.ts +22 -0
- package/dist/lib/utils/write-queue.d.ts.map +1 -0
- package/dist/lib/utils/write-queue.js +62 -0
- package/dist/pgm-loader.d.ts +6 -0
- package/dist/pgm-loader.d.ts.map +1 -0
- package/dist/pgm-loader.js +23 -0
- package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
- package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
- package/dist/workers/3d-tiles-attributes-worker.js +9 -0
- package/dist/workers/i3s-attributes-worker.d.ts +2 -0
- package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
- package/dist/workers/i3s-attributes-worker.js +5 -0
- package/package.json +19 -18
- package/src/3d-tiles-attributes-worker.ts +43 -0
- package/src/3d-tiles-converter/3d-tiles-converter.ts +49 -6
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +21 -18
- package/src/converter-cli.ts +310 -0
- package/src/deps-installer/{deps-installer.js → deps-installer.ts} +11 -1
- package/src/i3s-attributes-worker.ts +46 -0
- package/src/i3s-converter/helpers/coordinate-converter.ts +29 -24
- package/src/i3s-converter/helpers/geometry-attributes.ts +4 -3
- package/src/i3s-converter/helpers/{geometry-converter.js → geometry-converter.ts} +425 -179
- package/src/i3s-converter/helpers/gltf-attributes.ts +68 -0
- package/src/i3s-converter/helpers/node-pages.ts +25 -17
- package/src/i3s-converter/i3s-converter.ts +154 -87
- package/src/i3s-converter/types.ts +90 -8
- package/src/index.ts +0 -4
- package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
- package/src/lib/utils/file-utils.ts +84 -0
- package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
- package/src/lib/utils/queue.ts +17 -0
- package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
- package/src/lib/utils/write-queue.ts +75 -0
- package/src/workers/3d-tiles-attributes-worker.ts +6 -0
- package/src/workers/i3s-attributes-worker.ts +6 -0
- package/dist/es5/deps-installer/deps-installer.d.ts +0 -10
- package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +0 -44
- package/dist/es5/lib/utils/compress-util.d.ts +0 -53
- package/dist/es5/lib/utils/file-utils.d.ts +0 -43
- package/dist/es5/lib/utils/lod-conversion-utils.d.ts +0 -32
- package/dist/esm/deps-installer/deps-installer.d.ts +0 -10
- package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +0 -44
- package/dist/esm/lib/utils/compress-util.d.ts +0 -53
- package/dist/esm/lib/utils/lod-conversion-utils.d.ts +0 -32
- package/src/deps-installer/deps-installer.d.ts +0 -10
- package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
- package/src/lib/utils/compress-util.d.ts +0 -53
- package/src/lib/utils/file-utils.d.ts +0 -43
- package/src/lib/utils/file-utils.js +0 -38
- package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.transform3DTilesAttributesOnWorker = transform3DTilesAttributesOnWorker;
|
|
7
|
+
exports._typecheckI3SAttributesWorker = exports.Tile3dAttributesWorker = void 0;
|
|
8
|
+
|
|
9
|
+
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
10
|
+
|
|
11
|
+
var VERSION = typeof "3.2.0-alpha.3" !== 'undefined' ? "3.2.0-alpha.3" : 'latest';
|
|
12
|
+
var Tile3dAttributesWorker = {
|
|
13
|
+
id: '3d-tiles-attributes',
|
|
14
|
+
name: '3DTiles Attributes Worker',
|
|
15
|
+
module: 'tile-converter',
|
|
16
|
+
version: VERSION,
|
|
17
|
+
options: {
|
|
18
|
+
attributes: null
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.Tile3dAttributesWorker = Tile3dAttributesWorker;
|
|
22
|
+
|
|
23
|
+
function transform3DTilesAttributesOnWorker(i3sAttributesData, options) {
|
|
24
|
+
return (0, _workerUtils.processOnWorker)(Tile3dAttributesWorker, i3sAttributesData, options);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var _typecheckI3SAttributesWorker = Tile3dAttributesWorker;
|
|
28
|
+
exports._typecheckI3SAttributesWorker = _typecheckI3SAttributesWorker;
|
|
29
|
+
//# sourceMappingURL=3d-tiles-attributes-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/3d-tiles-attributes-worker.ts"],"names":["VERSION","Tile3dAttributesWorker","id","name","module","version","options","attributes","transform3DTilesAttributesOnWorker","i3sAttributesData","_typecheckI3SAttributesWorker"],"mappings":";;;;;;;;AAGA;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAeO,IAAMC,sBAAsB,GAAG;AACpCC,EAAAA,EAAE,EAAE,qBADgC;AAEpCC,EAAAA,IAAI,EAAE,2BAF8B;AAGpCC,EAAAA,MAAM,EAAE,gBAH4B;AAIpCC,EAAAA,OAAO,EAAEL,OAJ2B;AAKpCM,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AAL2B,CAA/B;;;AAaA,SAASC,kCAAT,CACLC,iBADK,EAELH,OAFK,EAGiB;AACtB,SAAO,kCAAgBL,sBAAhB,EAAwCQ,iBAAxC,EAA2DH,OAA3D,CAAP;AACD;;AAEM,IAAMI,6BAA2C,GAAGT,sBAApD","sourcesContent":["import type {WorkerObject} from '@loaders.gl/worker-utils';\nimport type {FeatureAttribute} from '@loaders.gl/i3s';\n\nimport {processOnWorker} from '@loaders.gl/worker-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type Tile3DAttributesWorkerOptions = {\n featureAttributes: FeatureAttribute | null;\n source: string;\n};\n\nexport type I3SAttributesData = {\n tileContent: any;\n textureFormat: string;\n};\n\n/**\n * I3S Attributes Worker to handle B3DM object\n */\nexport const Tile3dAttributesWorker = {\n id: '3d-tiles-attributes',\n name: '3DTiles Attributes Worker',\n module: 'tile-converter',\n version: VERSION,\n options: {\n attributes: null\n }\n};\n\n/**\n * Performs I3S attributes transformation\n */\nexport function transform3DTilesAttributesOnWorker(\n i3sAttributesData: I3SAttributesData,\n options: Tile3DAttributesWorkerOptions\n): Promise<ArrayBuffer> {\n return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);\n}\n\nexport const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;\n"],"file":"3d-tiles-attributes-worker.js"}
|
|
@@ -47,6 +47,10 @@ var _b3dmConverter = _interopRequireDefault(require("./helpers/b3dm-converter"))
|
|
|
47
47
|
|
|
48
48
|
var _coordinateConverter = require("../i3s-converter/helpers/coordinate-converter");
|
|
49
49
|
|
|
50
|
+
var _dTilesAttributesWorker = require("../3d-tiles-attributes-worker");
|
|
51
|
+
|
|
52
|
+
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
53
|
+
|
|
50
54
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
51
55
|
|
|
52
56
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -69,6 +73,7 @@ var Tiles3DConverter = function () {
|
|
|
69
73
|
(0, _defineProperty2.default)(this, "geoidHeightModel", void 0);
|
|
70
74
|
(0, _defineProperty2.default)(this, "sourceTileset", void 0);
|
|
71
75
|
(0, _defineProperty2.default)(this, "attributeStorageInfo", void 0);
|
|
76
|
+
(0, _defineProperty2.default)(this, "workerSource", {});
|
|
72
77
|
this.options = {};
|
|
73
78
|
this.tilesetPath = '';
|
|
74
79
|
this.vertexCounter = 0;
|
|
@@ -76,13 +81,14 @@ var Tiles3DConverter = function () {
|
|
|
76
81
|
this.geoidHeightModel = null;
|
|
77
82
|
this.sourceTileset = null;
|
|
78
83
|
this.attributeStorageInfo = null;
|
|
84
|
+
this.workerSource = {};
|
|
79
85
|
}
|
|
80
86
|
|
|
81
87
|
(0, _createClass2.default)(Tiles3DConverter, [{
|
|
82
88
|
key: "convert",
|
|
83
89
|
value: function () {
|
|
84
90
|
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
|
|
85
|
-
var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset;
|
|
91
|
+
var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset, workerFarm;
|
|
86
92
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
87
93
|
while (1) {
|
|
88
94
|
switch (_context.prev = _context.next) {
|
|
@@ -100,17 +106,26 @@ var Tiles3DConverter = function () {
|
|
|
100
106
|
this.geoidHeightModel = _context.sent;
|
|
101
107
|
console.log('Loading egm file completed!');
|
|
102
108
|
_context.next = 10;
|
|
103
|
-
return
|
|
109
|
+
return this.loadWorkers();
|
|
104
110
|
|
|
105
111
|
case 10:
|
|
112
|
+
_context.next = 12;
|
|
113
|
+
return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
|
|
114
|
+
|
|
115
|
+
case 12:
|
|
106
116
|
sourceTilesetJson = _context.sent;
|
|
107
117
|
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
|
|
108
118
|
loadOptions: {
|
|
109
119
|
i3s: {
|
|
110
|
-
coordinateSystem: _i3s.COORDINATE_SYSTEM.LNGLAT_OFFSETS
|
|
120
|
+
coordinateSystem: _i3s.COORDINATE_SYSTEM.LNGLAT_OFFSETS,
|
|
121
|
+
decodeTextures: false
|
|
111
122
|
}
|
|
112
123
|
}
|
|
113
124
|
});
|
|
125
|
+
_context.next = 16;
|
|
126
|
+
return this.sourceTileset.tilesetInitializationPromise;
|
|
127
|
+
|
|
128
|
+
case 16:
|
|
114
129
|
rootNode = this.sourceTileset.root;
|
|
115
130
|
|
|
116
131
|
if (!rootNode.header.obb) {
|
|
@@ -119,19 +134,19 @@ var Tiles3DConverter = function () {
|
|
|
119
134
|
|
|
120
135
|
this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
|
|
121
136
|
this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
|
|
122
|
-
_context.prev =
|
|
123
|
-
_context.next =
|
|
137
|
+
_context.prev = 20;
|
|
138
|
+
_context.next = 23;
|
|
124
139
|
return (0, _fileUtils.removeDir)(this.tilesetPath);
|
|
125
140
|
|
|
126
|
-
case
|
|
127
|
-
_context.next =
|
|
141
|
+
case 23:
|
|
142
|
+
_context.next = 27;
|
|
128
143
|
break;
|
|
129
144
|
|
|
130
|
-
case
|
|
131
|
-
_context.prev =
|
|
132
|
-
_context.t0 = _context["catch"](
|
|
145
|
+
case 25:
|
|
146
|
+
_context.prev = 25;
|
|
147
|
+
_context.t0 = _context["catch"](20);
|
|
133
148
|
|
|
134
|
-
case
|
|
149
|
+
case 27:
|
|
135
150
|
rootTile = {
|
|
136
151
|
boundingVolume: {
|
|
137
152
|
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(rootNode.header.obb, this.geoidHeightModel)
|
|
@@ -139,29 +154,32 @@ var Tiles3DConverter = function () {
|
|
|
139
154
|
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(rootNode),
|
|
140
155
|
children: []
|
|
141
156
|
};
|
|
142
|
-
_context.next =
|
|
157
|
+
_context.next = 30;
|
|
143
158
|
return this._addChildren(rootNode, rootTile, 1);
|
|
144
159
|
|
|
145
|
-
case
|
|
160
|
+
case 30:
|
|
146
161
|
tileset = (0, _jsonMapTransform.default)({
|
|
147
162
|
root: rootTile
|
|
148
163
|
}, (0, _tileset.TILESET)());
|
|
149
|
-
_context.next =
|
|
164
|
+
_context.next = 33;
|
|
150
165
|
return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
|
|
151
166
|
|
|
152
|
-
case
|
|
167
|
+
case 33:
|
|
153
168
|
this._finishConversion({
|
|
154
169
|
slpk: false,
|
|
155
170
|
outputPath: outputPath,
|
|
156
171
|
tilesetName: tilesetName
|
|
157
172
|
});
|
|
158
173
|
|
|
159
|
-
|
|
174
|
+
workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
|
|
175
|
+
workerFarm.destroy();
|
|
176
|
+
|
|
177
|
+
case 36:
|
|
160
178
|
case "end":
|
|
161
179
|
return _context.stop();
|
|
162
180
|
}
|
|
163
181
|
}
|
|
164
|
-
}, _callee, this, [[
|
|
182
|
+
}, _callee, this, [[20, 25]]);
|
|
165
183
|
}));
|
|
166
184
|
|
|
167
185
|
function convert(_x) {
|
|
@@ -174,7 +192,7 @@ var Tiles3DConverter = function () {
|
|
|
174
192
|
key: "_addChildren",
|
|
175
193
|
value: function () {
|
|
176
194
|
var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parentSourceNode, parentNode, level) {
|
|
177
|
-
var _iterator, _step, childNodeInfo, sourceChild,
|
|
195
|
+
var _iterator, _step, childNodeInfo, sourceChild, _sourceChild$header, featureAttributes, boundingVolume, child, i3sAttributesData, b3dm;
|
|
178
196
|
|
|
179
197
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
180
198
|
while (1) {
|
|
@@ -195,7 +213,7 @@ var Tiles3DConverter = function () {
|
|
|
195
213
|
|
|
196
214
|
case 5:
|
|
197
215
|
if ((_step = _iterator.n()).done) {
|
|
198
|
-
_context2.next =
|
|
216
|
+
_context2.next = 40;
|
|
199
217
|
break;
|
|
200
218
|
}
|
|
201
219
|
|
|
@@ -208,7 +226,7 @@ var Tiles3DConverter = function () {
|
|
|
208
226
|
parentSourceNode.children.push(sourceChild);
|
|
209
227
|
|
|
210
228
|
if (!sourceChild.contentUrl) {
|
|
211
|
-
_context2.next =
|
|
229
|
+
_context2.next = 36;
|
|
212
230
|
break;
|
|
213
231
|
}
|
|
214
232
|
|
|
@@ -217,7 +235,7 @@ var Tiles3DConverter = function () {
|
|
|
217
235
|
|
|
218
236
|
case 14:
|
|
219
237
|
this.vertexCounter += sourceChild.content.vertexCount;
|
|
220
|
-
|
|
238
|
+
featureAttributes = null;
|
|
221
239
|
|
|
222
240
|
if (!this.attributeStorageInfo) {
|
|
223
241
|
_context2.next = 20;
|
|
@@ -228,7 +246,7 @@ var Tiles3DConverter = function () {
|
|
|
228
246
|
return this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
229
247
|
|
|
230
248
|
case 19:
|
|
231
|
-
|
|
249
|
+
featureAttributes = _context2.sent;
|
|
232
250
|
|
|
233
251
|
case 20:
|
|
234
252
|
if (!sourceChild.header.obb) {
|
|
@@ -243,59 +261,63 @@ var Tiles3DConverter = function () {
|
|
|
243
261
|
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
|
|
244
262
|
children: []
|
|
245
263
|
};
|
|
246
|
-
|
|
247
|
-
|
|
264
|
+
i3sAttributesData = {
|
|
265
|
+
tileContent: sourceChild.content,
|
|
266
|
+
textureFormat: sourceChild === null || sourceChild === void 0 ? void 0 : (_sourceChild$header = sourceChild.header) === null || _sourceChild$header === void 0 ? void 0 : _sourceChild$header.textureFormat
|
|
267
|
+
};
|
|
268
|
+
_context2.next = 26;
|
|
269
|
+
return new _b3dmConverter.default().convert(i3sAttributesData, featureAttributes);
|
|
248
270
|
|
|
249
|
-
case
|
|
271
|
+
case 26:
|
|
250
272
|
b3dm = _context2.sent;
|
|
251
273
|
child.content = {
|
|
252
274
|
uri: "".concat(sourceChild.id, ".b3dm"),
|
|
253
275
|
boundingVolume: boundingVolume
|
|
254
276
|
};
|
|
255
|
-
_context2.next =
|
|
277
|
+
_context2.next = 30;
|
|
256
278
|
return (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
|
|
257
279
|
|
|
258
|
-
case
|
|
280
|
+
case 30:
|
|
259
281
|
parentNode.children.push(child);
|
|
260
282
|
sourceChild.unloadContent();
|
|
261
|
-
_context2.next =
|
|
283
|
+
_context2.next = 34;
|
|
262
284
|
return this._addChildren(sourceChild, child, level + 1);
|
|
263
285
|
|
|
264
|
-
case
|
|
265
|
-
_context2.next =
|
|
286
|
+
case 34:
|
|
287
|
+
_context2.next = 38;
|
|
266
288
|
break;
|
|
267
289
|
|
|
268
|
-
case
|
|
269
|
-
_context2.next =
|
|
290
|
+
case 36:
|
|
291
|
+
_context2.next = 38;
|
|
270
292
|
return this._addChildren(sourceChild, parentNode, level + 1);
|
|
271
293
|
|
|
272
|
-
case
|
|
294
|
+
case 38:
|
|
273
295
|
_context2.next = 5;
|
|
274
296
|
break;
|
|
275
297
|
|
|
276
|
-
case
|
|
277
|
-
_context2.next =
|
|
298
|
+
case 40:
|
|
299
|
+
_context2.next = 45;
|
|
278
300
|
break;
|
|
279
301
|
|
|
280
|
-
case
|
|
281
|
-
_context2.prev =
|
|
302
|
+
case 42:
|
|
303
|
+
_context2.prev = 42;
|
|
282
304
|
_context2.t0 = _context2["catch"](3);
|
|
283
305
|
|
|
284
306
|
_iterator.e(_context2.t0);
|
|
285
307
|
|
|
286
|
-
case
|
|
287
|
-
_context2.prev =
|
|
308
|
+
case 45:
|
|
309
|
+
_context2.prev = 45;
|
|
288
310
|
|
|
289
311
|
_iterator.f();
|
|
290
312
|
|
|
291
|
-
return _context2.finish(
|
|
313
|
+
return _context2.finish(45);
|
|
292
314
|
|
|
293
|
-
case
|
|
315
|
+
case 48:
|
|
294
316
|
case "end":
|
|
295
317
|
return _context2.stop();
|
|
296
318
|
}
|
|
297
319
|
}
|
|
298
|
-
}, _callee2, this, [[3,
|
|
320
|
+
}, _callee2, this, [[3, 42, 45, 48]]);
|
|
299
321
|
}));
|
|
300
322
|
|
|
301
323
|
function _addChildren(_x2, _x3, _x4) {
|
|
@@ -457,8 +479,8 @@ var Tiles3DConverter = function () {
|
|
|
457
479
|
for (var index = 0; index < attributesList.length; index++) {
|
|
458
480
|
var attributeObject = attributesList[index];
|
|
459
481
|
|
|
460
|
-
for (var
|
|
461
|
-
attributeObject[
|
|
482
|
+
for (var _key in attributeObject) {
|
|
483
|
+
attributeObject[_key] = Array.from(attributeObject[_key]);
|
|
462
484
|
}
|
|
463
485
|
}
|
|
464
486
|
}
|
|
@@ -499,6 +521,44 @@ var Tiles3DConverter = function () {
|
|
|
499
521
|
|
|
500
522
|
return _finishConversion;
|
|
501
523
|
}()
|
|
524
|
+
}, {
|
|
525
|
+
key: "loadWorkers",
|
|
526
|
+
value: function () {
|
|
527
|
+
var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
|
|
528
|
+
var tile3dAttributesWorkerUrl, sourceResponse, source;
|
|
529
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
530
|
+
while (1) {
|
|
531
|
+
switch (_context6.prev = _context6.next) {
|
|
532
|
+
case 0:
|
|
533
|
+
console.log("Loading workers source...");
|
|
534
|
+
tile3dAttributesWorkerUrl = (0, _workerUtils.getWorkerURL)(_dTilesAttributesWorker.Tile3dAttributesWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
|
|
535
|
+
_context6.next = 4;
|
|
536
|
+
return (0, _core.fetchFile)(tile3dAttributesWorkerUrl);
|
|
537
|
+
|
|
538
|
+
case 4:
|
|
539
|
+
sourceResponse = _context6.sent;
|
|
540
|
+
_context6.next = 7;
|
|
541
|
+
return sourceResponse.text();
|
|
542
|
+
|
|
543
|
+
case 7:
|
|
544
|
+
source = _context6.sent;
|
|
545
|
+
this.workerSource.tile3dWorkerSource = source;
|
|
546
|
+
console.log("Loading workers source completed!");
|
|
547
|
+
|
|
548
|
+
case 10:
|
|
549
|
+
case "end":
|
|
550
|
+
return _context6.stop();
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}, _callee6, this);
|
|
554
|
+
}));
|
|
555
|
+
|
|
556
|
+
function loadWorkers() {
|
|
557
|
+
return _loadWorkers.apply(this, arguments);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
return loadWorkers;
|
|
561
|
+
}()
|
|
502
562
|
}]);
|
|
503
563
|
return Tiles3DConverter;
|
|
504
564
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","console","log","PGMLoader","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","attributes","_loadChildAttributes","child","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime"],"mappings":"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","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {load} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth: number;\n egmFilePath: string;\n }): Promise<any> {\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS}}\n });\n\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let attributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const b3dm = await new B3dmConverter().convert(sourceChild, attributes);\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n}\n"],"file":"3d-tiles-converter.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","workerSource","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","console","log","PGMLoader","loadWorkers","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","tilesetInitializationPromise","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","workerFarm","WorkerFarm","getWorkerFarm","destroy","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","featureAttributes","_loadChildAttributes","child","i3sAttributesData","tileContent","textureFormat","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime","tile3dAttributesWorkerUrl","Tile3dAttributesWorker","sourceResponse","text","source","tile3dWorkerSource"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,KAAZ;;IAKqBC,gB;AAUnB,8BAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAF0B,EAE1B;AACZ,SAAKC,OAAL,GAAe,EAAf;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACA,SAAKC,aAAL,GAAqB,CAArB;AACA,SAAKC,mBAAL,GAA2B,CAAC,CAAD,EAAI,CAAJ,CAA3B;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,oBAAL,GAA4B,IAA5B;AACA,SAAKC,YAAL,GAAoB,EAApB;AACD;;;;;+EAWD,iBAAqBP,OAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOSQ,gBAAAA,QAPT,GAOqER,OAPrE,CAOSQ,QAPT,EAOmBC,UAPnB,GAOqET,OAPrE,CAOmBS,UAPnB,EAO+BC,WAP/B,GAOqEV,OAPrE,CAO+BU,WAP/B,EAO4CC,QAP5C,GAOqEX,OAPrE,CAO4CW,QAP5C,EAOsDC,WAPtD,GAOqEZ,OAPrE,CAOsDY,WAPtD;AAQE,qBAAKT,mBAAL,GAA2BU,iBAAQC,MAAR,EAA3B;AACA,qBAAKd,OAAL,GAAe;AAACW,kBAAAA,QAAQ,EAARA;AAAD,iBAAf;AAEAI,gBAAAA,OAAO,CAACC,GAAR,CAAY,qBAAZ;AAXF;AAAA,uBAYgC,gBAAKJ,WAAL,EAAkBK,oBAAlB,CAZhC;;AAAA;AAYE,qBAAKb,gBAZP;AAaEW,gBAAAA,OAAO,CAACC,GAAR,CAAY,6BAAZ;AAbF;AAAA,uBAeQ,KAAKE,WAAL,EAfR;;AAAA;AAAA;AAAA,uBAiBkC,gBAAKV,QAAL,EAAeW,cAAf,EAA0B,EAA1B,CAjBlC;;AAAA;AAiBQC,gBAAAA,iBAjBR;AAmBE,qBAAKf,aAAL,GAAqB,IAAIgB,gBAAJ,CAAcD,iBAAd,EAAiC;AACpDE,kBAAAA,WAAW,EAAE;AACXC,oBAAAA,GAAG,EAAE;AAACC,sBAAAA,gBAAgB,EAAEC,uBAAkBC,cAArC;AAAqDC,sBAAAA,cAAc,EAAE;AAArE;AADM;AADuC,iBAAjC,CAArB;AAnBF;AAAA,uBAyBQ,KAAKtB,aAAL,CAAmBuB,4BAzB3B;;AAAA;AA0BQC,gBAAAA,QA1BR,GA0BmB,KAAKxB,aAAL,CAAmByB,IA1BtC;;AA2BE,oBAAI,CAACD,QAAQ,CAACE,MAAT,CAAgBC,GAArB,EAA0B;AACxBH,kBAAAA,QAAQ,CAACE,MAAT,CAAgBC,GAAhB,GAAsB,2CAAiBH,QAAQ,CAACE,MAAT,CAAgBE,GAAjC,CAAtB;AACD;;AAED,qBAAKhC,WAAL,GAAmB,0BAAQQ,UAAR,aAAyBC,WAAzB,EAAnB;AACA,qBAAKJ,oBAAL,GAA4Bc,iBAAiB,CAACd,oBAA9C;AAhCF;AAAA;AAAA,uBAmCU,0BAAU,KAAKL,WAAf,CAnCV;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAwCQiC,gBAAAA,QAxCR,GAwC2B;AACvBC,kBAAAA,cAAc,EAAE;AACdC,oBAAAA,GAAG,EAAE,4CAAmBP,QAAQ,CAACE,MAAT,CAAgBC,GAAnC,EAAwC,KAAK5B,gBAA7C;AADS,mBADO;AAIvBiC,kBAAAA,cAAc,EAAE,gEAAuCR,QAAvC,CAJO;AAKvBS,kBAAAA,QAAQ,EAAE;AALa,iBAxC3B;AAAA;AAAA,uBAgDQ,KAAKC,YAAL,CAAkBV,QAAlB,EAA4BK,QAA5B,EAAsC,CAAtC,CAhDR;;AAAA;AAkDQM,gBAAAA,OAlDR,GAkDkB,+BAAU;AAACV,kBAAAA,IAAI,EAAEI;AAAP,iBAAV,EAA4B,uBAA5B,CAlDlB;AAAA;AAAA,uBAmDQ,0BAAU,KAAKjC,WAAf,EAA4BwC,IAAI,CAACC,SAAL,CAAeF,OAAf,CAA5B,EAAqD,cAArD,CAnDR;;AAAA;AAqDE,qBAAKG,iBAAL,CAAuB;AAACC,kBAAAA,IAAI,EAAE,KAAP;AAAcnC,kBAAAA,UAAU,EAAVA,UAAd;AAA0BC,kBAAAA,WAAW,EAAXA;AAA1B,iBAAvB;;AAGMmC,gBAAAA,UAxDR,GAwDqBC,wBAAWC,aAAX,CAAyB,EAAzB,CAxDrB;AAyDEF,gBAAAA,UAAU,CAACG,OAAX;;AAzDF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oFAkEA,kBACEC,gBADF,EAEEC,UAFF,EAGEC,KAHF;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKM,KAAKnD,OAAL,CAAaW,QAAb,IAAyBwC,KAAK,GAAG,KAAKnD,OAAL,CAAaW,QALpD;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,uDAQ8BsC,gBAAgB,CAAClB,MAAjB,CAAwBO,QAAxB,IAAoC,EARlE;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAQac,gBAAAA,aARb;AAAA;AAAA,uBAS8B,KAAKC,cAAL,CAAoBJ,gBAApB,EAAsCG,aAAtC,CAT9B;;AAAA;AASUE,gBAAAA,WATV;AAUIL,gBAAAA,gBAAgB,CAACX,QAAjB,CAA0BiB,IAA1B,CAA+BD,WAA/B;;AAVJ,qBAWQA,WAAW,CAACE,UAXpB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAYY,KAAKnD,aAAL,CAAoBoD,SAApB,CAA8BH,WAA9B,CAZZ;;AAAA;AAaM,qBAAKpD,aAAL,IAAsBoD,WAAW,CAACI,OAAZ,CAAoBC,WAA1C;AAEIC,gBAAAA,iBAfV,GAeuD,IAfvD;;AAAA,qBAgBU,KAAKtD,oBAhBf;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAiBkC,KAAKuD,oBAAL,CACxBP,WADwB,EAExB,KAAKhD,oBAFmB,CAjBlC;;AAAA;AAiBQsD,gBAAAA,iBAjBR;;AAAA;AAuBM,oBAAI,CAACN,WAAW,CAACvB,MAAZ,CAAmBC,GAAxB,EAA6B;AAC3BsB,kBAAAA,WAAW,CAACvB,MAAZ,CAAmBC,GAAnB,GAAyB,2CAAiBsB,WAAW,CAACvB,MAAZ,CAAmBE,GAApC,CAAzB;AACD;;AAEKE,gBAAAA,cA3BZ,GA2B6B;AACrBC,kBAAAA,GAAG,EAAE,4CAAmBkB,WAAW,CAACvB,MAAZ,CAAmBC,GAAtC,EAA2C,KAAK5B,gBAAhD;AADgB,iBA3B7B;AA8BY0D,gBAAAA,KA9BZ,GA8B4B;AACpB3B,kBAAAA,cAAc,EAAdA,cADoB;AAEpBE,kBAAAA,cAAc,EAAE,gEAAuCiB,WAAvC,CAFI;AAGpBhB,kBAAAA,QAAQ,EAAE;AAHU,iBA9B5B;AAoCYyB,gBAAAA,iBApCZ,GAoCmD;AAC3CC,kBAAAA,WAAW,EAAEV,WAAW,CAACI,OADkB;AAE3CO,kBAAAA,aAAa,EAAEX,WAAF,aAAEA,WAAF,8CAAEA,WAAW,CAAEvB,MAAf,wDAAE,oBAAqBkC;AAFO,iBApCnD;AAAA;AAAA,uBA+CyB,IAAIC,sBAAJ,GAAoBC,OAApB,CAA4BJ,iBAA5B,EAA+CH,iBAA/C,CA/CzB;;AAAA;AA+CYQ,gBAAAA,IA/CZ;AAiDMN,gBAAAA,KAAK,CAACJ,OAAN,GAAgB;AACdW,kBAAAA,GAAG,YAAKf,WAAW,CAACgB,EAAjB,UADW;AAEdnC,kBAAAA,cAAc,EAAdA;AAFc,iBAAhB;AAjDN;AAAA,uBAqDY,0BAAU,KAAKlC,WAAf,EAA4B,IAAIsE,UAAJ,CAAeH,IAAf,CAA5B,YAAqDd,WAAW,CAACgB,EAAjE,WArDZ;;AAAA;AAsDMpB,gBAAAA,UAAU,CAACZ,QAAX,CAAoBiB,IAApB,CAAyBO,KAAzB;AAEAR,gBAAAA,WAAW,CAACkB,aAAZ;AAxDN;AAAA,uBAyDY,KAAKjC,YAAL,CAAkBe,WAAlB,EAA+BQ,KAA/B,EAAsCX,KAAK,GAAG,CAA9C,CAzDZ;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBA2DY,KAAKZ,YAAL,CAAkBe,WAAlB,EAA+BJ,UAA/B,EAA2CC,KAAK,GAAG,CAAnD,CA3DZ;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sFAsEA,kBAA6BD,UAA7B,EAAiDE,aAAjD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qBAEM,KAAK/C,aAAL,CAAoBmC,OAApB,CAA4BiC,SAFlC;AAAA;AAAA;AAAA;;AAGI1D,gBAAAA,OAAO,CAACC,GAAR,4BAAgCoC,aAAa,CAACkB,EAA9C;AAHJ;AAAA,uBAImB,KAAKjE,aAAL,CAAoBmC,OAApB,CAA4BkC,aAA5B,CAA0CC,qBAA1C,CACbvB,aAAa,CAACkB,EADD,CAJnB;;AAAA;AAIIvC,gBAAAA,MAJJ;AAAA;AAAA;;AAAA;AAAA,uBAQqB,KAAK1B,aAR1B,EAQWuE,MARX,QAQWA,MARX;AASUC,gBAAAA,OATV,GASoB,KAAKC,qBAAL,CAA2B5B,UAAU,CAAC6B,GAAtC,EAA2C3B,aAAa,CAAC4B,IAAzD,CATpB;AAWUhF,gBAAAA,OAXV,GAWoB;AACduB,kBAAAA,GAAG,kCACE,KAAKlB,aAAL,CAAoBiB,WADtB;AAED2D,oBAAAA,YAAY,EAAE,IAFb;AAGDC,oBAAAA,WAAW,EAAE;AAHZ;AADW,iBAXpB;AAmBInE,gBAAAA,OAAO,CAACC,GAAR,4BAAgC6D,OAAhC;AAnBJ;AAAA,uBAoBmB,gBAAKA,OAAL,EAAcD,MAAd,EAAsB5E,OAAtB,CApBnB;;AAAA;AAoBI+B,gBAAAA,MApBJ;;AAAA;AAAA,kDAsBS,IAAIoD,aAAJ,CAAW,KAAK9E,aAAhB,EAAgC0B,MAAhC,EAAwCmB,UAAxC,CAtBT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA8BA,+BAA8BkC,OAA9B,EAA+CC,WAA/C,EAA4E;AAC1E,UAAIC,WAAW,GAAGF,OAAO,CAACG,KAAR,CAAc,GAAd,CAAlB;AACA,UAAMC,gBAAgB,GAAGH,WAAW,CAACE,KAAZ,CAAkB,GAAlB,CAAzB;;AAF0E,kDAGrDC,gBAHqD;AAAA;;AAAA;AAG1E,+DAAuC;AAAA,cAA5BC,MAA4B;;AACrC,kBAAQA,MAAR;AACE,iBAAK,GAAL;AACE;;AACF,iBAAK,IAAL;AACEH,cAAAA,WAAW,GAAGA,WAAW,CAACI,KAAZ,CAAkB,CAAlB,EAAqB,CAAC,CAAtB,CAAd;AACA;;AACF;AACEJ,cAAAA,WAAW,CAAC/B,IAAZ,CAAiBkC,MAAjB;AAPJ;AASD;AAbyE;AAAA;AAAA;AAAA;AAAA;;AAc1E,aAAOH,WAAW,CAACK,IAAZ,CAAiB,GAAjB,CAAP;AACD;;;;4FAQD,kBACErC,WADF,EAEEhD,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA;AAIQsF,gBAAAA,QAJR,GAI0B,EAJ1B;AAKSC,gBAAAA,aALT,GAK0BvC,WAAW,CAACvB,MALtC,CAKS8D,aALT;;AAOE,qBAASC,KAAT,GAAiB,CAAjB,EAAoBA,KAAK,GAAGD,aAAa,CAACE,MAA1C,EAAkDD,KAAK,EAAvD,EAA2D;AACnDtF,kBAAAA,QADmD,GACxCqF,aAAa,CAACC,KAAD,CAD2B;AAEnDE,kBAAAA,SAFmD,GAEvC1F,oBAAoB,CAACwF,KAAD,CAFmB;AAGnD9F,kBAAAA,OAHmD,GAGzC;AACdiG,oBAAAA,aAAa,EAAED,SAAS,CAACE,IADX;AAEdC,oBAAAA,aAAa,EAAE,KAAKC,iBAAL,CAAuBJ,SAAvB;AAFD,mBAHyC;AAQzDJ,kBAAAA,QAAQ,CAACrC,IAAT,CAAc,gBAAK/C,QAAL,EAAe6F,uBAAf,EAAmCrG,OAAnC,CAAd;AACD;;AAhBH;AAAA,uBAiB+BsG,OAAO,CAACC,GAAR,CAAYX,QAAZ,CAjB/B;;AAAA;AAiBQY,gBAAAA,cAjBR;;AAkBE,qBAAKC,oBAAL,CAA0BD,cAA1B;;AAlBF,kDAmBSE,MAAM,CAACC,MAAP,OAAAD,MAAM,GAAQ,EAAR,0CAAeF,cAAf,GAnBf;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA6BA,2BAA0BR,SAA1B,EAAmE;AACjE,UAAIA,SAAS,CAACY,eAAd,EAA+B;AAC7B,eAAOZ,SAAS,CAACY,eAAV,CAA0BC,SAAjC;AACD,OAFD,MAEO,IAAIb,SAAS,CAACc,SAAd,EAAyB;AAC9B,eAAO,OAAP;AACD;;AACD,aAAO,EAAP;AACD;;;WAMD,8BAA6BN,cAA7B,EAAuE;AACrE,WAAK,IAAIV,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGU,cAAc,CAACT,MAA3C,EAAmDD,KAAK,EAAxD,EAA4D;AAC1D,YAAMiB,eAAe,GAAGP,cAAc,CAACV,KAAD,CAAtC;;AAEA,aAAK,IAAMkB,IAAX,IAAkBD,eAAlB,EAAmC;AACjCA,UAAAA,eAAe,CAACC,IAAD,CAAf,GAAuBC,KAAK,CAACC,IAAN,CAAWH,eAAe,CAACC,IAAD,CAA1B,CAAvB;AACD;AACF;AACF;;;;yFAMD,kBAAgCG,MAAhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAK0B,yCAAmBA,MAAnB,CAL1B;;AAAA;AAKQC,gBAAAA,SALR;AAMQC,gBAAAA,IANR,GAMexG,iBAAQC,MAAR,CAAe,KAAKX,mBAApB,CANf;AAOQmH,gBAAAA,cAPR,GAOyB,oCAAcD,IAAd,CAPzB;AASEtG,gBAAAA,OAAO,CAACC,GAAR;AACAD,gBAAAA,OAAO,CAACC,GAAR,gCAAoClB,GAApC;AACAiB,gBAAAA,OAAO,CAACC,GAAR,kCAAsCsG,cAAtC;AACAvG,gBAAAA,OAAO,CAACC,GAAR,mBAA8B,KAAKd,aAAnC;AACAa,gBAAAA,OAAO,CAACC,GAAR,mBAA8BoG,SAA9B,EAAyC,QAAzC;AACArG,gBAAAA,OAAO,CAACC,GAAR;;AAdF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mFAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACED,gBAAAA,OAAO,CAACC,GAAR;AACMuG,gBAAAA,yBAFR,GAEoC,+BAAaC,8CAAb,oBAAyC,6BAAzC,EAFpC;AAAA;AAAA,uBAG+B,qBAAUD,yBAAV,CAH/B;;AAAA;AAGQE,gBAAAA,cAHR;AAAA;AAAA,uBAIuBA,cAAc,CAACC,IAAf,EAJvB;;AAAA;AAIQC,gBAAAA,MAJR;AAME,qBAAKpH,YAAL,CAAkBqH,kBAAlB,GAAuCD,MAAvC;AACA5G,gBAAAA,OAAO,CAACC,GAAR;;AAPF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {fetchFile, getLoaderOptions, load} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\nimport {\n I3SAttributesData,\n Tile3dAttributesWorker\n /*transform3DTilesAttributesOnWorker*/\n} from '../3d-tiles-attributes-worker';\nimport {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n workerSource: {[key: string]: string} = {};\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n this.workerSource = {};\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth?: number;\n egmFilePath: string;\n }): Promise<any> {\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n await this.loadWorkers();\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n await this.sourceTileset.tilesetInitializationPromise;\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n\n // Clean up worker pools\n const workerFarm = WorkerFarm.getWorkerFarm({});\n workerFarm.destroy();\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let featureAttributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n featureAttributes = await this._loadChildAttributes(\n sourceChild,\n this.attributeStorageInfo\n );\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const i3sAttributesData: I3SAttributesData = {\n tileContent: sourceChild.content,\n textureFormat: sourceChild?.header?.textureFormat\n };\n\n // TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.\n // const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {\n // source: this.workerSource.tile3dWorkerSource,\n // featureAttributes\n // });\n\n const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);\n\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n\n private async loadWorkers(): Promise<void> {\n console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console\n const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);\n const source = await sourceResponse.text();\n\n this.workerSource.tile3dWorkerSource = source;\n console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console\n }\n}\n"],"file":"3d-tiles-converter.js"}
|
|
@@ -23,8 +23,6 @@ var _gltf = require("@loaders.gl/gltf");
|
|
|
23
23
|
|
|
24
24
|
var _dTiles = require("@loaders.gl/3d-tiles");
|
|
25
25
|
|
|
26
|
-
var _images = require("@loaders.gl/images");
|
|
27
|
-
|
|
28
26
|
var _core2 = require("@math.gl/core");
|
|
29
27
|
|
|
30
28
|
var _geospatial = require("@math.gl/geospatial");
|
|
@@ -48,8 +46,8 @@ var B3dmConverter = function () {
|
|
|
48
46
|
(0, _createClass2.default)(B3dmConverter, [{
|
|
49
47
|
key: "convert",
|
|
50
48
|
value: function () {
|
|
51
|
-
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(
|
|
52
|
-
var
|
|
49
|
+
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(i3sAttributesData) {
|
|
50
|
+
var featureAttributes,
|
|
53
51
|
gltf,
|
|
54
52
|
b3dm,
|
|
55
53
|
_args = arguments;
|
|
@@ -57,22 +55,21 @@ var B3dmConverter = function () {
|
|
|
57
55
|
while (1) {
|
|
58
56
|
switch (_context.prev = _context.next) {
|
|
59
57
|
case 0:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return this.buildGltf(i3sTile);
|
|
58
|
+
featureAttributes = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
|
|
59
|
+
_context.next = 3;
|
|
60
|
+
return this.buildGltf(i3sAttributesData);
|
|
64
61
|
|
|
65
|
-
case
|
|
62
|
+
case 3:
|
|
66
63
|
gltf = _context.sent;
|
|
67
64
|
b3dm = (0, _core.encodeSync)({
|
|
68
65
|
gltfEncoded: new Uint8Array(gltf),
|
|
69
66
|
type: 'b3dm',
|
|
70
|
-
featuresLength: this._getFeaturesLength(
|
|
71
|
-
batchTable:
|
|
67
|
+
featuresLength: this._getFeaturesLength(featureAttributes),
|
|
68
|
+
batchTable: featureAttributes
|
|
72
69
|
}, _dTiles.Tile3DWriter);
|
|
73
70
|
return _context.abrupt("return", b3dm);
|
|
74
71
|
|
|
75
|
-
case
|
|
72
|
+
case 6:
|
|
76
73
|
case "end":
|
|
77
74
|
return _context.stop();
|
|
78
75
|
}
|
|
@@ -89,19 +86,19 @@ var B3dmConverter = function () {
|
|
|
89
86
|
}, {
|
|
90
87
|
key: "buildGltf",
|
|
91
88
|
value: function () {
|
|
92
|
-
var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(
|
|
93
|
-
var
|
|
94
|
-
|
|
89
|
+
var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(i3sAttributesData) {
|
|
90
|
+
var tileContent, textureFormat, material, attributes, originalIndices, cartesianOrigin, cartographicOrigin, modelMatrix, gltfBuilder, textureIndex, pbrMaterialInfo, materialIndex, positions, positionsValue, indices, meshIndex, transformMatrix, nodeIndex, sceneIndex, gltfBuffer;
|
|
95
91
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
96
92
|
while (1) {
|
|
97
93
|
switch (_context2.prev = _context2.next) {
|
|
98
94
|
case 0:
|
|
99
|
-
|
|
95
|
+
tileContent = i3sAttributesData.tileContent, textureFormat = i3sAttributesData.textureFormat;
|
|
96
|
+
material = tileContent.material, attributes = tileContent.attributes, originalIndices = tileContent.indices, cartesianOrigin = tileContent.cartesianOrigin, cartographicOrigin = tileContent.cartographicOrigin, modelMatrix = tileContent.modelMatrix;
|
|
100
97
|
gltfBuilder = new _gltf.GLTFScenegraph();
|
|
101
|
-
_context2.next =
|
|
102
|
-
return this._addI3sTextureToGltf(
|
|
98
|
+
_context2.next = 5;
|
|
99
|
+
return this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
|
|
103
100
|
|
|
104
|
-
case
|
|
101
|
+
case 5:
|
|
105
102
|
textureIndex = _context2.sent;
|
|
106
103
|
pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
|
|
107
104
|
materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
|
|
@@ -122,7 +119,8 @@ var B3dmConverter = function () {
|
|
|
122
119
|
meshIndex = gltfBuilder.addMesh({
|
|
123
120
|
attributes: attributes,
|
|
124
121
|
indices: indices,
|
|
125
|
-
material: materialIndex
|
|
122
|
+
material: materialIndex,
|
|
123
|
+
mode: 4
|
|
126
124
|
});
|
|
127
125
|
transformMatrix = this._generateTransformMatrix(cartesianOrigin);
|
|
128
126
|
nodeIndex = gltfBuilder.addNode({
|
|
@@ -137,7 +135,7 @@ var B3dmConverter = function () {
|
|
|
137
135
|
gltfBuffer = (0, _core.encodeSync)(gltfBuilder.gltf, _gltf.GLTFWriter);
|
|
138
136
|
return _context2.abrupt("return", gltfBuffer);
|
|
139
137
|
|
|
140
|
-
case
|
|
138
|
+
case 22:
|
|
141
139
|
case "end":
|
|
142
140
|
return _context2.stop();
|
|
143
141
|
}
|
|
@@ -154,14 +152,13 @@ var B3dmConverter = function () {
|
|
|
154
152
|
}, {
|
|
155
153
|
key: "_addI3sTextureToGltf",
|
|
156
154
|
value: function () {
|
|
157
|
-
var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(
|
|
158
|
-
var
|
|
159
|
-
|
|
155
|
+
var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tileContent, textureFormat, gltfBuilder) {
|
|
156
|
+
var texture, material, attributes, textureIndex, selectedTexture, mimeType, imageIndex;
|
|
160
157
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
161
158
|
while (1) {
|
|
162
159
|
switch (_context3.prev = _context3.next) {
|
|
163
160
|
case 0:
|
|
164
|
-
|
|
161
|
+
texture = tileContent.texture, material = tileContent.material, attributes = tileContent.attributes;
|
|
165
162
|
textureIndex = null;
|
|
166
163
|
selectedTexture = texture;
|
|
167
164
|
|
|
@@ -169,27 +166,18 @@ var B3dmConverter = function () {
|
|
|
169
166
|
selectedTexture = material.pbrMetallicRoughness && material.pbrMetallicRoughness.baseColorTexture && material.pbrMetallicRoughness.baseColorTexture.texture.source.image;
|
|
170
167
|
}
|
|
171
168
|
|
|
172
|
-
if (
|
|
173
|
-
|
|
174
|
-
|
|
169
|
+
if (selectedTexture) {
|
|
170
|
+
mimeType = this._deduceMimeTypeFromFormat(textureFormat);
|
|
171
|
+
imageIndex = gltfBuilder.addImage(selectedTexture, mimeType);
|
|
172
|
+
textureIndex = gltfBuilder.addTexture({
|
|
173
|
+
imageIndex: imageIndex
|
|
174
|
+
});
|
|
175
|
+
delete attributes.colors;
|
|
175
176
|
}
|
|
176
177
|
|
|
177
|
-
mimeType = this._deduceMimeTypeFromFormat(textureFormat);
|
|
178
|
-
_context3.next = 8;
|
|
179
|
-
return (0, _core.encode)(selectedTexture, _images.ImageWriter);
|
|
180
|
-
|
|
181
|
-
case 8:
|
|
182
|
-
imageBuffer = _context3.sent;
|
|
183
|
-
imageIndex = gltfBuilder.addImage(imageBuffer, mimeType);
|
|
184
|
-
textureIndex = gltfBuilder.addTexture({
|
|
185
|
-
imageIndex: imageIndex
|
|
186
|
-
});
|
|
187
|
-
delete attributes.colors;
|
|
188
|
-
|
|
189
|
-
case 12:
|
|
190
178
|
return _context3.abrupt("return", textureIndex);
|
|
191
179
|
|
|
192
|
-
case
|
|
180
|
+
case 6:
|
|
193
181
|
case "end":
|
|
194
182
|
return _context3.stop();
|
|
195
183
|
}
|
|
@@ -197,7 +185,7 @@ var B3dmConverter = function () {
|
|
|
197
185
|
}, _callee3, this);
|
|
198
186
|
}));
|
|
199
187
|
|
|
200
|
-
function _addI3sTextureToGltf(_x3, _x4) {
|
|
188
|
+
function _addI3sTextureToGltf(_x3, _x4, _x5) {
|
|
201
189
|
return _addI3sTextureToGltf2.apply(this, arguments);
|
|
202
190
|
}
|
|
203
191
|
|
|
@@ -267,6 +255,9 @@ var B3dmConverter = function () {
|
|
|
267
255
|
case 'png':
|
|
268
256
|
return 'image/png';
|
|
269
257
|
|
|
258
|
+
case 'ktx2':
|
|
259
|
+
return 'image/ktx2';
|
|
260
|
+
|
|
270
261
|
default:
|
|
271
262
|
console.warn("Unexpected texture format in I3S: ".concat(format));
|
|
272
263
|
return 'image/jpeg';
|