@loaders.gl/tile-converter 3.2.0-alpha.1 → 3.2.0-alpha.4
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 +5 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js +34 -3
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -4
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +10 -10
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -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 +11 -1
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/deps-installer/deps-installer.js +10 -0
- package/dist/dist.min.js +910 -790
- 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 +116 -46
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +21 -23
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/constants.js +9 -0
- package/dist/es5/constants.js.map +1 -0
- 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 +293 -223
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/layers.js +29 -0
- package/dist/es5/i3s-converter/json-templates/layers.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/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 +36 -4
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +16 -18
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -0
- 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 +157 -52
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/layers.js +25 -0
- package/dist/esm/i3s-converter/json-templates/layers.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/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 +7 -7
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js +25 -21
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts +2 -2
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-attributes.js +2 -1
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +28 -11
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +223 -113
- 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-pages.d.ts +6 -5
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-pages.js +13 -8
- package/dist/i3s-converter/i3s-converter.d.ts +7 -5
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +126 -40
- package/dist/i3s-converter/json-templates/layers.d.ts +4 -0
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
- package/dist/i3s-converter/json-templates/layers.js +24 -0
- package/dist/i3s-converter/types.d.ts +83 -8
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/lib/utils/compress-util.d.ts +44 -5
- package/dist/lib/utils/compress-util.d.ts.map +1 -1
- package/dist/lib/utils/compress-util.js +73 -6
- package/dist/lib/utils/file-utils.d.ts +34 -5
- package/dist/lib/utils/file-utils.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.js +40 -1
- package/dist/lib/utils/lod-conversion-utils.d.ts +25 -4
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
- package/dist/lib/utils/lod-conversion-utils.js +21 -2
- 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 +2 -2
- package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
- 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/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 +23 -18
- package/src/3d-tiles-attributes-worker.ts +43 -0
- package/src/3d-tiles-converter/3d-tiles-converter.ts +50 -5
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +15 -13
- package/src/constants.ts +2 -0
- 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 +150 -90
- package/src/i3s-converter/json-templates/layers.ts +25 -0
- 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/file-utils.d.ts +0 -43
- 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.4" !== 'undefined' ? "3.2.0-alpha.4" : '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,12 @@ 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
|
+
|
|
54
|
+
var _constants = require("../constants");
|
|
55
|
+
|
|
50
56
|
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
57
|
|
|
52
58
|
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 +75,7 @@ var Tiles3DConverter = function () {
|
|
|
69
75
|
(0, _defineProperty2.default)(this, "geoidHeightModel", void 0);
|
|
70
76
|
(0, _defineProperty2.default)(this, "sourceTileset", void 0);
|
|
71
77
|
(0, _defineProperty2.default)(this, "attributeStorageInfo", void 0);
|
|
78
|
+
(0, _defineProperty2.default)(this, "workerSource", {});
|
|
72
79
|
this.options = {};
|
|
73
80
|
this.tilesetPath = '';
|
|
74
81
|
this.vertexCounter = 0;
|
|
@@ -76,33 +83,47 @@ var Tiles3DConverter = function () {
|
|
|
76
83
|
this.geoidHeightModel = null;
|
|
77
84
|
this.sourceTileset = null;
|
|
78
85
|
this.attributeStorageInfo = null;
|
|
86
|
+
this.workerSource = {};
|
|
79
87
|
}
|
|
80
88
|
|
|
81
89
|
(0, _createClass2.default)(Tiles3DConverter, [{
|
|
82
90
|
key: "convert",
|
|
83
91
|
value: function () {
|
|
84
92
|
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
|
|
85
|
-
var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset;
|
|
93
|
+
var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset, workerFarm;
|
|
86
94
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
87
95
|
while (1) {
|
|
88
96
|
switch (_context.prev = _context.next) {
|
|
89
97
|
case 0:
|
|
98
|
+
if (!_core.isBrowser) {
|
|
99
|
+
_context.next = 3;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(_constants.BROWSER_ERROR_MESSAGE);
|
|
104
|
+
return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
|
|
105
|
+
|
|
106
|
+
case 3:
|
|
90
107
|
inputUrl = options.inputUrl, outputPath = options.outputPath, tilesetName = options.tilesetName, maxDepth = options.maxDepth, egmFilePath = options.egmFilePath;
|
|
91
108
|
this.conversionStartTime = _process.default.hrtime();
|
|
92
109
|
this.options = {
|
|
93
110
|
maxDepth: maxDepth
|
|
94
111
|
};
|
|
95
112
|
console.log('Loading egm file...');
|
|
96
|
-
_context.next =
|
|
113
|
+
_context.next = 9;
|
|
97
114
|
return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
|
|
98
115
|
|
|
99
|
-
case
|
|
116
|
+
case 9:
|
|
100
117
|
this.geoidHeightModel = _context.sent;
|
|
101
118
|
console.log('Loading egm file completed!');
|
|
102
|
-
_context.next =
|
|
119
|
+
_context.next = 13;
|
|
120
|
+
return this.loadWorkers();
|
|
121
|
+
|
|
122
|
+
case 13:
|
|
123
|
+
_context.next = 15;
|
|
103
124
|
return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
|
|
104
125
|
|
|
105
|
-
case
|
|
126
|
+
case 15:
|
|
106
127
|
sourceTilesetJson = _context.sent;
|
|
107
128
|
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
|
|
108
129
|
loadOptions: {
|
|
@@ -112,6 +133,10 @@ var Tiles3DConverter = function () {
|
|
|
112
133
|
}
|
|
113
134
|
}
|
|
114
135
|
});
|
|
136
|
+
_context.next = 19;
|
|
137
|
+
return this.sourceTileset.tilesetInitializationPromise;
|
|
138
|
+
|
|
139
|
+
case 19:
|
|
115
140
|
rootNode = this.sourceTileset.root;
|
|
116
141
|
|
|
117
142
|
if (!rootNode.header.obb) {
|
|
@@ -120,19 +145,19 @@ var Tiles3DConverter = function () {
|
|
|
120
145
|
|
|
121
146
|
this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
|
|
122
147
|
this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
|
|
123
|
-
_context.prev =
|
|
124
|
-
_context.next =
|
|
148
|
+
_context.prev = 23;
|
|
149
|
+
_context.next = 26;
|
|
125
150
|
return (0, _fileUtils.removeDir)(this.tilesetPath);
|
|
126
151
|
|
|
127
|
-
case
|
|
128
|
-
_context.next =
|
|
152
|
+
case 26:
|
|
153
|
+
_context.next = 30;
|
|
129
154
|
break;
|
|
130
155
|
|
|
131
|
-
case
|
|
132
|
-
_context.prev =
|
|
133
|
-
_context.t0 = _context["catch"](
|
|
156
|
+
case 28:
|
|
157
|
+
_context.prev = 28;
|
|
158
|
+
_context.t0 = _context["catch"](23);
|
|
134
159
|
|
|
135
|
-
case
|
|
160
|
+
case 30:
|
|
136
161
|
rootTile = {
|
|
137
162
|
boundingVolume: {
|
|
138
163
|
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(rootNode.header.obb, this.geoidHeightModel)
|
|
@@ -140,29 +165,32 @@ var Tiles3DConverter = function () {
|
|
|
140
165
|
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(rootNode),
|
|
141
166
|
children: []
|
|
142
167
|
};
|
|
143
|
-
_context.next =
|
|
168
|
+
_context.next = 33;
|
|
144
169
|
return this._addChildren(rootNode, rootTile, 1);
|
|
145
170
|
|
|
146
|
-
case
|
|
171
|
+
case 33:
|
|
147
172
|
tileset = (0, _jsonMapTransform.default)({
|
|
148
173
|
root: rootTile
|
|
149
174
|
}, (0, _tileset.TILESET)());
|
|
150
|
-
_context.next =
|
|
175
|
+
_context.next = 36;
|
|
151
176
|
return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
|
|
152
177
|
|
|
153
|
-
case
|
|
178
|
+
case 36:
|
|
154
179
|
this._finishConversion({
|
|
155
180
|
slpk: false,
|
|
156
181
|
outputPath: outputPath,
|
|
157
182
|
tilesetName: tilesetName
|
|
158
183
|
});
|
|
159
184
|
|
|
160
|
-
|
|
185
|
+
workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
|
|
186
|
+
workerFarm.destroy();
|
|
187
|
+
|
|
188
|
+
case 39:
|
|
161
189
|
case "end":
|
|
162
190
|
return _context.stop();
|
|
163
191
|
}
|
|
164
192
|
}
|
|
165
|
-
}, _callee, this, [[
|
|
193
|
+
}, _callee, this, [[23, 28]]);
|
|
166
194
|
}));
|
|
167
195
|
|
|
168
196
|
function convert(_x) {
|
|
@@ -175,7 +203,7 @@ var Tiles3DConverter = function () {
|
|
|
175
203
|
key: "_addChildren",
|
|
176
204
|
value: function () {
|
|
177
205
|
var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parentSourceNode, parentNode, level) {
|
|
178
|
-
var _iterator, _step, childNodeInfo, sourceChild,
|
|
206
|
+
var _iterator, _step, childNodeInfo, sourceChild, _sourceChild$header, featureAttributes, boundingVolume, child, i3sAttributesData, b3dm;
|
|
179
207
|
|
|
180
208
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
181
209
|
while (1) {
|
|
@@ -196,7 +224,7 @@ var Tiles3DConverter = function () {
|
|
|
196
224
|
|
|
197
225
|
case 5:
|
|
198
226
|
if ((_step = _iterator.n()).done) {
|
|
199
|
-
_context2.next =
|
|
227
|
+
_context2.next = 40;
|
|
200
228
|
break;
|
|
201
229
|
}
|
|
202
230
|
|
|
@@ -209,7 +237,7 @@ var Tiles3DConverter = function () {
|
|
|
209
237
|
parentSourceNode.children.push(sourceChild);
|
|
210
238
|
|
|
211
239
|
if (!sourceChild.contentUrl) {
|
|
212
|
-
_context2.next =
|
|
240
|
+
_context2.next = 36;
|
|
213
241
|
break;
|
|
214
242
|
}
|
|
215
243
|
|
|
@@ -218,7 +246,7 @@ var Tiles3DConverter = function () {
|
|
|
218
246
|
|
|
219
247
|
case 14:
|
|
220
248
|
this.vertexCounter += sourceChild.content.vertexCount;
|
|
221
|
-
|
|
249
|
+
featureAttributes = null;
|
|
222
250
|
|
|
223
251
|
if (!this.attributeStorageInfo) {
|
|
224
252
|
_context2.next = 20;
|
|
@@ -229,7 +257,7 @@ var Tiles3DConverter = function () {
|
|
|
229
257
|
return this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
230
258
|
|
|
231
259
|
case 19:
|
|
232
|
-
|
|
260
|
+
featureAttributes = _context2.sent;
|
|
233
261
|
|
|
234
262
|
case 20:
|
|
235
263
|
if (!sourceChild.header.obb) {
|
|
@@ -244,59 +272,63 @@ var Tiles3DConverter = function () {
|
|
|
244
272
|
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
|
|
245
273
|
children: []
|
|
246
274
|
};
|
|
247
|
-
|
|
248
|
-
|
|
275
|
+
i3sAttributesData = {
|
|
276
|
+
tileContent: sourceChild.content,
|
|
277
|
+
textureFormat: sourceChild === null || sourceChild === void 0 ? void 0 : (_sourceChild$header = sourceChild.header) === null || _sourceChild$header === void 0 ? void 0 : _sourceChild$header.textureFormat
|
|
278
|
+
};
|
|
279
|
+
_context2.next = 26;
|
|
280
|
+
return new _b3dmConverter.default().convert(i3sAttributesData, featureAttributes);
|
|
249
281
|
|
|
250
|
-
case
|
|
282
|
+
case 26:
|
|
251
283
|
b3dm = _context2.sent;
|
|
252
284
|
child.content = {
|
|
253
285
|
uri: "".concat(sourceChild.id, ".b3dm"),
|
|
254
286
|
boundingVolume: boundingVolume
|
|
255
287
|
};
|
|
256
|
-
_context2.next =
|
|
288
|
+
_context2.next = 30;
|
|
257
289
|
return (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
|
|
258
290
|
|
|
259
|
-
case
|
|
291
|
+
case 30:
|
|
260
292
|
parentNode.children.push(child);
|
|
261
293
|
sourceChild.unloadContent();
|
|
262
|
-
_context2.next =
|
|
294
|
+
_context2.next = 34;
|
|
263
295
|
return this._addChildren(sourceChild, child, level + 1);
|
|
264
296
|
|
|
265
|
-
case
|
|
266
|
-
_context2.next =
|
|
297
|
+
case 34:
|
|
298
|
+
_context2.next = 38;
|
|
267
299
|
break;
|
|
268
300
|
|
|
269
|
-
case
|
|
270
|
-
_context2.next =
|
|
301
|
+
case 36:
|
|
302
|
+
_context2.next = 38;
|
|
271
303
|
return this._addChildren(sourceChild, parentNode, level + 1);
|
|
272
304
|
|
|
273
|
-
case
|
|
305
|
+
case 38:
|
|
274
306
|
_context2.next = 5;
|
|
275
307
|
break;
|
|
276
308
|
|
|
277
|
-
case
|
|
278
|
-
_context2.next =
|
|
309
|
+
case 40:
|
|
310
|
+
_context2.next = 45;
|
|
279
311
|
break;
|
|
280
312
|
|
|
281
|
-
case
|
|
282
|
-
_context2.prev =
|
|
313
|
+
case 42:
|
|
314
|
+
_context2.prev = 42;
|
|
283
315
|
_context2.t0 = _context2["catch"](3);
|
|
284
316
|
|
|
285
317
|
_iterator.e(_context2.t0);
|
|
286
318
|
|
|
287
|
-
case
|
|
288
|
-
_context2.prev =
|
|
319
|
+
case 45:
|
|
320
|
+
_context2.prev = 45;
|
|
289
321
|
|
|
290
322
|
_iterator.f();
|
|
291
323
|
|
|
292
|
-
return _context2.finish(
|
|
324
|
+
return _context2.finish(45);
|
|
293
325
|
|
|
294
|
-
case
|
|
326
|
+
case 48:
|
|
295
327
|
case "end":
|
|
296
328
|
return _context2.stop();
|
|
297
329
|
}
|
|
298
330
|
}
|
|
299
|
-
}, _callee2, this, [[3,
|
|
331
|
+
}, _callee2, this, [[3, 42, 45, 48]]);
|
|
300
332
|
}));
|
|
301
333
|
|
|
302
334
|
function _addChildren(_x2, _x3, _x4) {
|
|
@@ -458,8 +490,8 @@ var Tiles3DConverter = function () {
|
|
|
458
490
|
for (var index = 0; index < attributesList.length; index++) {
|
|
459
491
|
var attributeObject = attributesList[index];
|
|
460
492
|
|
|
461
|
-
for (var
|
|
462
|
-
attributeObject[
|
|
493
|
+
for (var _key in attributeObject) {
|
|
494
|
+
attributeObject[_key] = Array.from(attributeObject[_key]);
|
|
463
495
|
}
|
|
464
496
|
}
|
|
465
497
|
}
|
|
@@ -500,6 +532,44 @@ var Tiles3DConverter = function () {
|
|
|
500
532
|
|
|
501
533
|
return _finishConversion;
|
|
502
534
|
}()
|
|
535
|
+
}, {
|
|
536
|
+
key: "loadWorkers",
|
|
537
|
+
value: function () {
|
|
538
|
+
var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
|
|
539
|
+
var tile3dAttributesWorkerUrl, sourceResponse, source;
|
|
540
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
541
|
+
while (1) {
|
|
542
|
+
switch (_context6.prev = _context6.next) {
|
|
543
|
+
case 0:
|
|
544
|
+
console.log("Loading workers source...");
|
|
545
|
+
tile3dAttributesWorkerUrl = (0, _workerUtils.getWorkerURL)(_dTilesAttributesWorker.Tile3dAttributesWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
|
|
546
|
+
_context6.next = 4;
|
|
547
|
+
return (0, _core.fetchFile)(tile3dAttributesWorkerUrl);
|
|
548
|
+
|
|
549
|
+
case 4:
|
|
550
|
+
sourceResponse = _context6.sent;
|
|
551
|
+
_context6.next = 7;
|
|
552
|
+
return sourceResponse.text();
|
|
553
|
+
|
|
554
|
+
case 7:
|
|
555
|
+
source = _context6.sent;
|
|
556
|
+
this.workerSource.tile3dWorkerSource = source;
|
|
557
|
+
console.log("Loading workers source completed!");
|
|
558
|
+
|
|
559
|
+
case 10:
|
|
560
|
+
case "end":
|
|
561
|
+
return _context6.stop();
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
}, _callee6, this);
|
|
565
|
+
}));
|
|
566
|
+
|
|
567
|
+
function loadWorkers() {
|
|
568
|
+
return _loadWorkers.apply(this, arguments);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
return loadWorkers;
|
|
572
|
+
}()
|
|
503
573
|
}]);
|
|
504
574
|
return Tiles3DConverter;
|
|
505
575
|
}();
|
|
@@ -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","decodeTextures","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\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\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","isBrowser","console","log","BROWSER_ERROR_MESSAGE","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","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":"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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 {fetchFile, getLoaderOptions, load, isBrowser} 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';\nimport {BROWSER_ERROR_MESSAGE} from '../constants';\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 if (isBrowser) {\n console.log(BROWSER_ERROR_MESSAGE);\n return BROWSER_ERROR_MESSAGE;\n }\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"}
|
|
@@ -46,8 +46,8 @@ var B3dmConverter = function () {
|
|
|
46
46
|
(0, _createClass2.default)(B3dmConverter, [{
|
|
47
47
|
key: "convert",
|
|
48
48
|
value: function () {
|
|
49
|
-
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(
|
|
50
|
-
var
|
|
49
|
+
var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(i3sAttributesData) {
|
|
50
|
+
var featureAttributes,
|
|
51
51
|
gltf,
|
|
52
52
|
b3dm,
|
|
53
53
|
_args = arguments;
|
|
@@ -55,22 +55,21 @@ var B3dmConverter = function () {
|
|
|
55
55
|
while (1) {
|
|
56
56
|
switch (_context.prev = _context.next) {
|
|
57
57
|
case 0:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return this.buildGltf(i3sTile);
|
|
58
|
+
featureAttributes = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
|
|
59
|
+
_context.next = 3;
|
|
60
|
+
return this.buildGltf(i3sAttributesData);
|
|
62
61
|
|
|
63
|
-
case
|
|
62
|
+
case 3:
|
|
64
63
|
gltf = _context.sent;
|
|
65
64
|
b3dm = (0, _core.encodeSync)({
|
|
66
65
|
gltfEncoded: new Uint8Array(gltf),
|
|
67
66
|
type: 'b3dm',
|
|
68
|
-
featuresLength: this._getFeaturesLength(
|
|
69
|
-
batchTable:
|
|
67
|
+
featuresLength: this._getFeaturesLength(featureAttributes),
|
|
68
|
+
batchTable: featureAttributes
|
|
70
69
|
}, _dTiles.Tile3DWriter);
|
|
71
70
|
return _context.abrupt("return", b3dm);
|
|
72
71
|
|
|
73
|
-
case
|
|
72
|
+
case 6:
|
|
74
73
|
case "end":
|
|
75
74
|
return _context.stop();
|
|
76
75
|
}
|
|
@@ -87,19 +86,19 @@ var B3dmConverter = function () {
|
|
|
87
86
|
}, {
|
|
88
87
|
key: "buildGltf",
|
|
89
88
|
value: function () {
|
|
90
|
-
var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(
|
|
91
|
-
var
|
|
92
|
-
|
|
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;
|
|
93
91
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
94
92
|
while (1) {
|
|
95
93
|
switch (_context2.prev = _context2.next) {
|
|
96
94
|
case 0:
|
|
97
|
-
|
|
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;
|
|
98
97
|
gltfBuilder = new _gltf.GLTFScenegraph();
|
|
99
|
-
_context2.next =
|
|
100
|
-
return this._addI3sTextureToGltf(
|
|
98
|
+
_context2.next = 5;
|
|
99
|
+
return this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
|
|
101
100
|
|
|
102
|
-
case
|
|
101
|
+
case 5:
|
|
103
102
|
textureIndex = _context2.sent;
|
|
104
103
|
pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
|
|
105
104
|
materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
|
|
@@ -136,7 +135,7 @@ var B3dmConverter = function () {
|
|
|
136
135
|
gltfBuffer = (0, _core.encodeSync)(gltfBuilder.gltf, _gltf.GLTFWriter);
|
|
137
136
|
return _context2.abrupt("return", gltfBuffer);
|
|
138
137
|
|
|
139
|
-
case
|
|
138
|
+
case 22:
|
|
140
139
|
case "end":
|
|
141
140
|
return _context2.stop();
|
|
142
141
|
}
|
|
@@ -153,14 +152,13 @@ var B3dmConverter = function () {
|
|
|
153
152
|
}, {
|
|
154
153
|
key: "_addI3sTextureToGltf",
|
|
155
154
|
value: function () {
|
|
156
|
-
var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(
|
|
157
|
-
var
|
|
158
|
-
|
|
155
|
+
var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tileContent, textureFormat, gltfBuilder) {
|
|
156
|
+
var texture, material, attributes, textureIndex, selectedTexture, mimeType, imageIndex;
|
|
159
157
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
160
158
|
while (1) {
|
|
161
159
|
switch (_context3.prev = _context3.next) {
|
|
162
160
|
case 0:
|
|
163
|
-
|
|
161
|
+
texture = tileContent.texture, material = tileContent.material, attributes = tileContent.attributes;
|
|
164
162
|
textureIndex = null;
|
|
165
163
|
selectedTexture = texture;
|
|
166
164
|
|
|
@@ -187,7 +185,7 @@ var B3dmConverter = function () {
|
|
|
187
185
|
}, _callee3, this);
|
|
188
186
|
}));
|
|
189
187
|
|
|
190
|
-
function _addI3sTextureToGltf(_x3, _x4) {
|
|
188
|
+
function _addI3sTextureToGltf(_x3, _x4, _x5) {
|
|
191
189
|
return _addI3sTextureToGltf2.apply(this, arguments);
|
|
192
190
|
}
|
|
193
191
|
|