@loaders.gl/tile-converter 3.1.0-alpha.4 → 3.1.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/converter.js +1 -1
- package/dist/bundle.js +86025 -0
- package/dist/converter.min.js +292 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +189 -421
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +214 -296
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +4 -8
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +40 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +7 -17
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +17 -65
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +16 -16
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +9 -33
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +93 -103
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +348 -511
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-debug.js +30 -26
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-pages.js +102 -203
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +701 -1501
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/layers.js +15 -25
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/metadata.js +2 -2
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/node.js +12 -21
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/scene-server.js +3 -5
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +15 -55
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/store.js +4 -6
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/es5/i3s-server/app.js +6 -6
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/index-controller.js +20 -60
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/es5/i3s-server/routes/index.js +14 -41
- package/dist/es5/i3s-server/routes/index.js.map +1 -1
- package/dist/es5/index.js +4 -4
- package/dist/es5/lib/geoid-height-model.js +100 -114
- package/dist/es5/lib/geoid-height-model.js.map +1 -1
- package/dist/es5/lib/pgm-parser.js +68 -122
- package/dist/es5/lib/pgm-parser.js.map +1 -1
- package/dist/es5/lib/utils/compress-util.js +123 -345
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +20 -98
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js +9 -9
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/lib/utils/statistic-utills.js +41 -152
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
- package/dist/es5/pgm-loader.js +3 -5
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +19 -13
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +19 -8
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +33 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +29 -31
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-debug.js +2 -2
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-pages.js +2 -2
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +50 -31
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +2 -2
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/store.js +2 -2
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/esm/i3s-server/controllers/index-controller.js +2 -2
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/esm/lib/utils/compress-util.js +13 -13
- package/dist/esm/lib/utils/compress-util.js.map +1 -1
- package/dist/esm/lib/utils/file-utils.js +1 -1
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/statistic-utills.js +5 -5
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/package.json +22 -19
- package/src/3d-tiles-converter/3d-tiles-converter.ts +4 -2
- package/src/3d-tiles-converter/helpers/b3dm-converter.js +35 -7
- package/src/3d-tiles-converter/helpers/texture-atlas.ts +55 -0
- package/src/i3s-converter/helpers/geometry-converter.js +21 -22
- package/src/i3s-converter/i3s-converter.ts +32 -7
- package/src/i3s-converter/json-templates/metadata.js +1 -1
- package/src/i3s-converter/json-templates/scene-server.js +1 -1
- package/src/i3s-converter/json-templates/store.js +2 -2
- package/src/i3s-server/controllers/index-controller.js +1 -1
- package/dist/dist.min.js +0 -94
- package/dist/dist.min.js.map +0 -1
- package/dist/scripts/converter.js +0 -274
|
@@ -7,16 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
|
-
|
|
18
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
11
|
|
|
22
12
|
var _path = require("path");
|
|
@@ -47,21 +37,10 @@ var _b3dmConverter = _interopRequireDefault(require("./helpers/b3dm-converter"))
|
|
|
47
37
|
|
|
48
38
|
var _coordinateConverter = require("../i3s-converter/helpers/coordinate-converter");
|
|
49
39
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
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; }
|
|
53
|
-
|
|
54
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
40
|
+
const I3S = 'I3S';
|
|
55
41
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
59
|
-
|
|
60
|
-
var I3S = 'I3S';
|
|
61
|
-
|
|
62
|
-
var Tiles3DConverter = function () {
|
|
63
|
-
function Tiles3DConverter() {
|
|
64
|
-
(0, _classCallCheck2.default)(this, Tiles3DConverter);
|
|
42
|
+
class Tiles3DConverter {
|
|
43
|
+
constructor() {
|
|
65
44
|
(0, _defineProperty2.default)(this, "options", void 0);
|
|
66
45
|
(0, _defineProperty2.default)(this, "tilesetPath", void 0);
|
|
67
46
|
(0, _defineProperty2.default)(this, "vertexCounter", void 0);
|
|
@@ -78,422 +57,211 @@ var Tiles3DConverter = function () {
|
|
|
78
57
|
this.attributeStorageInfo = null;
|
|
79
58
|
}
|
|
80
59
|
|
|
81
|
-
(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
_context.next = 10;
|
|
103
|
-
return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
|
|
104
|
-
|
|
105
|
-
case 10:
|
|
106
|
-
sourceTilesetJson = _context.sent;
|
|
107
|
-
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {});
|
|
108
|
-
|
|
109
|
-
if (!this.sourceTileset.root.header.obb) {
|
|
110
|
-
this.sourceTileset.root.header.obb = (0, _coordinateConverter.createObbFromMbs)(this.sourceTileset.root.header.mbs);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
|
|
114
|
-
this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
|
|
115
|
-
_context.prev = 15;
|
|
116
|
-
_context.next = 18;
|
|
117
|
-
return (0, _fileUtils.removeDir)(this.tilesetPath);
|
|
118
|
-
|
|
119
|
-
case 18:
|
|
120
|
-
_context.next = 22;
|
|
121
|
-
break;
|
|
122
|
-
|
|
123
|
-
case 20:
|
|
124
|
-
_context.prev = 20;
|
|
125
|
-
_context.t0 = _context["catch"](15);
|
|
126
|
-
|
|
127
|
-
case 22:
|
|
128
|
-
rootTile = {
|
|
129
|
-
boundingVolume: {
|
|
130
|
-
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(this.sourceTileset.root.header.obb, this.geoidHeightModel)
|
|
131
|
-
},
|
|
132
|
-
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(this.sourceTileset.root),
|
|
133
|
-
children: []
|
|
134
|
-
};
|
|
135
|
-
_context.next = 25;
|
|
136
|
-
return this._addChildren(this.sourceTileset.root, rootTile, 1);
|
|
137
|
-
|
|
138
|
-
case 25:
|
|
139
|
-
tileset = (0, _jsonMapTransform.default)({
|
|
140
|
-
root: rootTile
|
|
141
|
-
}, _tileset.TILESET);
|
|
142
|
-
_context.next = 28;
|
|
143
|
-
return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
|
|
144
|
-
|
|
145
|
-
case 28:
|
|
146
|
-
this._finishConversion({
|
|
147
|
-
slpk: false,
|
|
148
|
-
outputPath: outputPath,
|
|
149
|
-
tilesetName: tilesetName
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
case 29:
|
|
153
|
-
case "end":
|
|
154
|
-
return _context.stop();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}, _callee, this, [[15, 20]]);
|
|
158
|
-
}));
|
|
159
|
-
|
|
160
|
-
function convert(_x) {
|
|
161
|
-
return _convert.apply(this, arguments);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return convert;
|
|
165
|
-
}()
|
|
166
|
-
}, {
|
|
167
|
-
key: "_addChildren",
|
|
168
|
-
value: function () {
|
|
169
|
-
var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parentSourceNode, parentNode, level) {
|
|
170
|
-
var _iterator, _step, childNodeInfo, sourceChild, attributes, boundingVolume, child, b3dm;
|
|
171
|
-
|
|
172
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
173
|
-
while (1) {
|
|
174
|
-
switch (_context2.prev = _context2.next) {
|
|
175
|
-
case 0:
|
|
176
|
-
if (!(this.options.maxDepth && level > this.options.maxDepth)) {
|
|
177
|
-
_context2.next = 2;
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
return _context2.abrupt("return");
|
|
182
|
-
|
|
183
|
-
case 2:
|
|
184
|
-
_iterator = _createForOfIteratorHelper(parentSourceNode.header.children || []);
|
|
185
|
-
_context2.prev = 3;
|
|
186
|
-
|
|
187
|
-
_iterator.s();
|
|
188
|
-
|
|
189
|
-
case 5:
|
|
190
|
-
if ((_step = _iterator.n()).done) {
|
|
191
|
-
_context2.next = 39;
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
childNodeInfo = _step.value;
|
|
196
|
-
_context2.next = 9;
|
|
197
|
-
return this._loadChildNode(parentSourceNode, childNodeInfo);
|
|
198
|
-
|
|
199
|
-
case 9:
|
|
200
|
-
sourceChild = _context2.sent;
|
|
201
|
-
parentSourceNode.children.push(sourceChild);
|
|
202
|
-
|
|
203
|
-
if (!sourceChild.contentUrl) {
|
|
204
|
-
_context2.next = 35;
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
_context2.next = 14;
|
|
209
|
-
return this.sourceTileset._loadTile(sourceChild);
|
|
210
|
-
|
|
211
|
-
case 14:
|
|
212
|
-
this.vertexCounter += sourceChild.content.vertexCount;
|
|
213
|
-
attributes = null;
|
|
214
|
-
|
|
215
|
-
if (!this.attributeStorageInfo) {
|
|
216
|
-
_context2.next = 20;
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
_context2.next = 19;
|
|
221
|
-
return this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
222
|
-
|
|
223
|
-
case 19:
|
|
224
|
-
attributes = _context2.sent;
|
|
225
|
-
|
|
226
|
-
case 20:
|
|
227
|
-
if (!sourceChild.header.obb) {
|
|
228
|
-
sourceChild.header.obb = (0, _coordinateConverter.createObbFromMbs)(sourceChild.header.mbs);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
boundingVolume = {
|
|
232
|
-
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(sourceChild.header.obb, this.geoidHeightModel)
|
|
233
|
-
};
|
|
234
|
-
child = {
|
|
235
|
-
boundingVolume: boundingVolume,
|
|
236
|
-
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
|
|
237
|
-
children: []
|
|
238
|
-
};
|
|
239
|
-
_context2.next = 25;
|
|
240
|
-
return new _b3dmConverter.default().convert(sourceChild, attributes);
|
|
241
|
-
|
|
242
|
-
case 25:
|
|
243
|
-
b3dm = _context2.sent;
|
|
244
|
-
child.content = {
|
|
245
|
-
uri: "".concat(sourceChild.id, ".b3dm"),
|
|
246
|
-
boundingVolume: boundingVolume
|
|
247
|
-
};
|
|
248
|
-
_context2.next = 29;
|
|
249
|
-
return (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
|
|
250
|
-
|
|
251
|
-
case 29:
|
|
252
|
-
parentNode.children.push(child);
|
|
253
|
-
sourceChild.unloadContent();
|
|
254
|
-
_context2.next = 33;
|
|
255
|
-
return this._addChildren(sourceChild, child, level + 1);
|
|
256
|
-
|
|
257
|
-
case 33:
|
|
258
|
-
_context2.next = 37;
|
|
259
|
-
break;
|
|
260
|
-
|
|
261
|
-
case 35:
|
|
262
|
-
_context2.next = 37;
|
|
263
|
-
return this._addChildren(sourceChild, parentNode, level + 1);
|
|
264
|
-
|
|
265
|
-
case 37:
|
|
266
|
-
_context2.next = 5;
|
|
267
|
-
break;
|
|
268
|
-
|
|
269
|
-
case 39:
|
|
270
|
-
_context2.next = 44;
|
|
271
|
-
break;
|
|
272
|
-
|
|
273
|
-
case 41:
|
|
274
|
-
_context2.prev = 41;
|
|
275
|
-
_context2.t0 = _context2["catch"](3);
|
|
276
|
-
|
|
277
|
-
_iterator.e(_context2.t0);
|
|
278
|
-
|
|
279
|
-
case 44:
|
|
280
|
-
_context2.prev = 44;
|
|
281
|
-
|
|
282
|
-
_iterator.f();
|
|
283
|
-
|
|
284
|
-
return _context2.finish(44);
|
|
285
|
-
|
|
286
|
-
case 47:
|
|
287
|
-
case "end":
|
|
288
|
-
return _context2.stop();
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}, _callee2, this, [[3, 41, 44, 47]]);
|
|
292
|
-
}));
|
|
293
|
-
|
|
294
|
-
function _addChildren(_x2, _x3, _x4) {
|
|
295
|
-
return _addChildren2.apply(this, arguments);
|
|
60
|
+
async convert(options) {
|
|
61
|
+
const {
|
|
62
|
+
inputUrl,
|
|
63
|
+
outputPath,
|
|
64
|
+
tilesetName,
|
|
65
|
+
maxDepth,
|
|
66
|
+
egmFilePath
|
|
67
|
+
} = options;
|
|
68
|
+
this.conversionStartTime = _process.default.hrtime();
|
|
69
|
+
this.options = {
|
|
70
|
+
maxDepth
|
|
71
|
+
};
|
|
72
|
+
console.log('Loading egm file...');
|
|
73
|
+
this.geoidHeightModel = await (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
|
|
74
|
+
console.log('Loading egm file completed!');
|
|
75
|
+
const sourceTilesetJson = await (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
|
|
76
|
+
this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
|
|
77
|
+
loadOptions: {
|
|
78
|
+
i3s: {
|
|
79
|
+
coordinateSystem: _i3s.COORDINATE_SYSTEM.LNGLAT_OFFSETS
|
|
80
|
+
}
|
|
296
81
|
}
|
|
82
|
+
});
|
|
297
83
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
key: "_loadChildNode",
|
|
302
|
-
value: function () {
|
|
303
|
-
var _loadChildNode2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(parentNode, childNodeInfo) {
|
|
304
|
-
var header, loader, nodeUrl, options;
|
|
305
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
306
|
-
while (1) {
|
|
307
|
-
switch (_context3.prev = _context3.next) {
|
|
308
|
-
case 0:
|
|
309
|
-
if (!this.sourceTileset.tileset.nodePages) {
|
|
310
|
-
_context3.next = 7;
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
console.log("Node conversion: ".concat(childNodeInfo.id));
|
|
315
|
-
_context3.next = 4;
|
|
316
|
-
return this.sourceTileset.tileset.nodePagesTile.formTileFromNodePages(childNodeInfo.id);
|
|
317
|
-
|
|
318
|
-
case 4:
|
|
319
|
-
header = _context3.sent;
|
|
320
|
-
_context3.next = 14;
|
|
321
|
-
break;
|
|
322
|
-
|
|
323
|
-
case 7:
|
|
324
|
-
loader = this.sourceTileset.loader;
|
|
325
|
-
nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href);
|
|
326
|
-
options = {
|
|
327
|
-
i3s: _objectSpread(_objectSpread({}, this.sourceTileset.loadOptions), {}, {
|
|
328
|
-
isTileHeader: true,
|
|
329
|
-
loadContent: false
|
|
330
|
-
})
|
|
331
|
-
};
|
|
332
|
-
console.log("Node conversion: ".concat(nodeUrl));
|
|
333
|
-
_context3.next = 13;
|
|
334
|
-
return (0, _core.load)(nodeUrl, loader, options);
|
|
335
|
-
|
|
336
|
-
case 13:
|
|
337
|
-
header = _context3.sent;
|
|
338
|
-
|
|
339
|
-
case 14:
|
|
340
|
-
return _context3.abrupt("return", new _tiles.Tile3D(this.sourceTileset, header, parentNode));
|
|
341
|
-
|
|
342
|
-
case 15:
|
|
343
|
-
case "end":
|
|
344
|
-
return _context3.stop();
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}, _callee3, this);
|
|
348
|
-
}));
|
|
349
|
-
|
|
350
|
-
function _loadChildNode(_x5, _x6) {
|
|
351
|
-
return _loadChildNode2.apply(this, arguments);
|
|
352
|
-
}
|
|
84
|
+
if (!this.sourceTileset.root.header.obb) {
|
|
85
|
+
this.sourceTileset.root.header.obb = (0, _coordinateConverter.createObbFromMbs)(this.sourceTileset.root.header.mbs);
|
|
86
|
+
}
|
|
353
87
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
88
|
+
this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
|
|
89
|
+
this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
|
|
90
|
+
|
|
91
|
+
try {
|
|
92
|
+
await (0, _fileUtils.removeDir)(this.tilesetPath);
|
|
93
|
+
} catch (e) {}
|
|
94
|
+
|
|
95
|
+
const rootTile = {
|
|
96
|
+
boundingVolume: {
|
|
97
|
+
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(this.sourceTileset.root.header.obb, this.geoidHeightModel)
|
|
98
|
+
},
|
|
99
|
+
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(this.sourceTileset.root),
|
|
100
|
+
children: []
|
|
101
|
+
};
|
|
102
|
+
await this._addChildren(this.sourceTileset.root, rootTile, 1);
|
|
103
|
+
const tileset = (0, _jsonMapTransform.default)({
|
|
104
|
+
root: rootTile
|
|
105
|
+
}, _tileset.TILESET);
|
|
106
|
+
await (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
|
|
107
|
+
|
|
108
|
+
this._finishConversion({
|
|
109
|
+
slpk: false,
|
|
110
|
+
outputPath,
|
|
111
|
+
tilesetName
|
|
112
|
+
});
|
|
113
|
+
}
|
|
361
114
|
|
|
362
|
-
|
|
363
|
-
|
|
115
|
+
async _addChildren(parentSourceNode, parentNode, level) {
|
|
116
|
+
if (this.options.maxDepth && level > this.options.maxDepth) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
364
119
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
120
|
+
for (const childNodeInfo of parentSourceNode.header.children || []) {
|
|
121
|
+
const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
|
|
122
|
+
parentSourceNode.children.push(sourceChild);
|
|
368
123
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
124
|
+
if (sourceChild.contentUrl) {
|
|
125
|
+
await this.sourceTileset._loadTile(sourceChild);
|
|
126
|
+
this.vertexCounter += sourceChild.content.vertexCount;
|
|
127
|
+
let attributes = null;
|
|
372
128
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
129
|
+
if (this.attributeStorageInfo) {
|
|
130
|
+
attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
131
|
+
}
|
|
376
132
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}
|
|
133
|
+
if (!sourceChild.header.obb) {
|
|
134
|
+
sourceChild.header.obb = (0, _coordinateConverter.createObbFromMbs)(sourceChild.header.mbs);
|
|
380
135
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
136
|
+
|
|
137
|
+
const boundingVolume = {
|
|
138
|
+
box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(sourceChild.header.obb, this.geoidHeightModel)
|
|
139
|
+
};
|
|
140
|
+
const child = {
|
|
141
|
+
boundingVolume,
|
|
142
|
+
geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
|
|
143
|
+
children: []
|
|
144
|
+
};
|
|
145
|
+
const b3dm = await new _b3dmConverter.default().convert(sourceChild, attributes);
|
|
146
|
+
child.content = {
|
|
147
|
+
uri: "".concat(sourceChild.id, ".b3dm"),
|
|
148
|
+
boundingVolume
|
|
149
|
+
};
|
|
150
|
+
await (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
|
|
151
|
+
parentNode.children.push(child);
|
|
152
|
+
sourceChild.unloadContent();
|
|
153
|
+
await this._addChildren(sourceChild, child, level + 1);
|
|
154
|
+
} else {
|
|
155
|
+
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
385
156
|
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
async _loadChildNode(parentNode, childNodeInfo) {
|
|
161
|
+
let header;
|
|
162
|
+
|
|
163
|
+
if (this.sourceTileset.tileset.nodePages) {
|
|
164
|
+
console.log("Node conversion: ".concat(childNodeInfo.id));
|
|
165
|
+
header = await this.sourceTileset.tileset.nodePagesTile.formTileFromNodePages(childNodeInfo.id);
|
|
166
|
+
} else {
|
|
167
|
+
const {
|
|
168
|
+
loader
|
|
169
|
+
} = this.sourceTileset;
|
|
386
170
|
|
|
387
|
-
|
|
171
|
+
const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href);
|
|
172
|
+
|
|
173
|
+
const options = {
|
|
174
|
+
i3s: { ...this.sourceTileset.loadOptions,
|
|
175
|
+
isTileHeader: true,
|
|
176
|
+
loadContent: false
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
console.log("Node conversion: ".concat(nodeUrl));
|
|
180
|
+
header = await (0, _core.load)(nodeUrl, loader, options);
|
|
388
181
|
}
|
|
389
|
-
}, {
|
|
390
|
-
key: "_loadChildAttributes",
|
|
391
|
-
value: function () {
|
|
392
|
-
var _loadChildAttributes2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(sourceChild, attributeStorageInfo) {
|
|
393
|
-
var promises, attributeUrls, index, inputUrl, attribute, options, attributesList;
|
|
394
|
-
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
395
|
-
while (1) {
|
|
396
|
-
switch (_context4.prev = _context4.next) {
|
|
397
|
-
case 0:
|
|
398
|
-
promises = [];
|
|
399
|
-
attributeUrls = sourceChild.header.attributeUrls;
|
|
400
|
-
|
|
401
|
-
for (index = 0; index < attributeUrls.length; index++) {
|
|
402
|
-
inputUrl = attributeUrls[index];
|
|
403
|
-
attribute = attributeStorageInfo[index];
|
|
404
|
-
options = {
|
|
405
|
-
attributeName: attribute.name,
|
|
406
|
-
attributeType: this._getAttributeType(attribute)
|
|
407
|
-
};
|
|
408
|
-
promises.push((0, _core.load)(inputUrl, _i3s.I3SAttributeLoader, options));
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
_context4.next = 5;
|
|
412
|
-
return Promise.all(promises);
|
|
413
|
-
|
|
414
|
-
case 5:
|
|
415
|
-
attributesList = _context4.sent;
|
|
416
|
-
|
|
417
|
-
this._replaceNestedArrays(attributesList);
|
|
418
|
-
|
|
419
|
-
return _context4.abrupt("return", Object.assign.apply(Object, [{}].concat((0, _toConsumableArray2.default)(attributesList))));
|
|
420
|
-
|
|
421
|
-
case 8:
|
|
422
|
-
case "end":
|
|
423
|
-
return _context4.stop();
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}, _callee4, this);
|
|
427
|
-
}));
|
|
428
|
-
|
|
429
|
-
function _loadChildAttributes(_x7, _x8) {
|
|
430
|
-
return _loadChildAttributes2.apply(this, arguments);
|
|
431
|
-
}
|
|
432
182
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
183
|
+
return new _tiles.Tile3D(this.sourceTileset, header, parentNode);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
_relativeUrlToFullUrl(baseUrl, relativeUrl) {
|
|
187
|
+
let resultArray = baseUrl.split('/');
|
|
188
|
+
const relativeUrlArray = relativeUrl.split('/');
|
|
189
|
+
|
|
190
|
+
for (const folder of relativeUrlArray) {
|
|
191
|
+
switch (folder) {
|
|
192
|
+
case '.':
|
|
193
|
+
continue;
|
|
194
|
+
|
|
195
|
+
case '..':
|
|
196
|
+
resultArray = resultArray.slice(0, -1);
|
|
197
|
+
break;
|
|
198
|
+
|
|
199
|
+
default:
|
|
200
|
+
resultArray.push(folder);
|
|
442
201
|
}
|
|
202
|
+
}
|
|
443
203
|
|
|
444
|
-
|
|
204
|
+
return resultArray.join('/');
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async _loadChildAttributes(sourceChild, attributeStorageInfo) {
|
|
208
|
+
const promises = [];
|
|
209
|
+
const {
|
|
210
|
+
attributeUrls
|
|
211
|
+
} = sourceChild.header;
|
|
212
|
+
|
|
213
|
+
for (let index = 0; index < attributeUrls.length; index++) {
|
|
214
|
+
const inputUrl = attributeUrls[index];
|
|
215
|
+
const attribute = attributeStorageInfo[index];
|
|
216
|
+
const options = {
|
|
217
|
+
attributeName: attribute.name,
|
|
218
|
+
attributeType: this._getAttributeType(attribute)
|
|
219
|
+
};
|
|
220
|
+
promises.push((0, _core.load)(inputUrl, _i3s.I3SAttributeLoader, options));
|
|
445
221
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
222
|
+
|
|
223
|
+
const attributesList = await Promise.all(promises);
|
|
224
|
+
|
|
225
|
+
this._replaceNestedArrays(attributesList);
|
|
226
|
+
|
|
227
|
+
return Object.assign({}, ...attributesList);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
_getAttributeType(attribute) {
|
|
231
|
+
if (attribute.attributeValues) {
|
|
232
|
+
return attribute.attributeValues.valueType;
|
|
233
|
+
} else if (attribute.objectIds) {
|
|
234
|
+
return 'Oid32';
|
|
456
235
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
return (0, _statisticUtills.calculateFilesSize)(params);
|
|
468
|
-
|
|
469
|
-
case 2:
|
|
470
|
-
filesSize = _context5.sent;
|
|
471
|
-
diff = _process.default.hrtime(this.conversionStartTime);
|
|
472
|
-
conversionTime = (0, _statisticUtills.timeConverter)(diff);
|
|
473
|
-
console.log("------------------------------------------------");
|
|
474
|
-
console.log("Finish conversion of ".concat(I3S));
|
|
475
|
-
console.log("Total conversion time: ".concat(conversionTime));
|
|
476
|
-
console.log("Vertex count: ", this.vertexCounter);
|
|
477
|
-
console.log("File(s) size: ", filesSize, ' bytes');
|
|
478
|
-
console.log("------------------------------------------------");
|
|
479
|
-
|
|
480
|
-
case 11:
|
|
481
|
-
case "end":
|
|
482
|
-
return _context5.stop();
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
}, _callee5, this);
|
|
486
|
-
}));
|
|
487
|
-
|
|
488
|
-
function _finishConversion(_x9) {
|
|
489
|
-
return _finishConversion2.apply(this, arguments);
|
|
236
|
+
|
|
237
|
+
return '';
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
_replaceNestedArrays(attributesList) {
|
|
241
|
+
for (let index = 0; index < attributesList.length; index++) {
|
|
242
|
+
const attributeObject = attributesList[index];
|
|
243
|
+
|
|
244
|
+
for (const key in attributeObject) {
|
|
245
|
+
attributeObject[key] = Array.from(attributeObject[key]);
|
|
490
246
|
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
async _finishConversion(params) {
|
|
251
|
+
const filesSize = await (0, _statisticUtills.calculateFilesSize)(params);
|
|
252
|
+
|
|
253
|
+
const diff = _process.default.hrtime(this.conversionStartTime);
|
|
254
|
+
|
|
255
|
+
const conversionTime = (0, _statisticUtills.timeConverter)(diff);
|
|
256
|
+
console.log("------------------------------------------------");
|
|
257
|
+
console.log("Finish conversion of ".concat(I3S));
|
|
258
|
+
console.log("Total conversion time: ".concat(conversionTime));
|
|
259
|
+
console.log("Vertex count: ", this.vertexCounter);
|
|
260
|
+
console.log("File(s) size: ", filesSize, ' bytes');
|
|
261
|
+
console.log("------------------------------------------------");
|
|
262
|
+
}
|
|
491
263
|
|
|
492
|
-
|
|
493
|
-
}()
|
|
494
|
-
}]);
|
|
495
|
-
return Tiles3DConverter;
|
|
496
|
-
}();
|
|
264
|
+
}
|
|
497
265
|
|
|
498
266
|
exports.default = Tiles3DConverter;
|
|
499
267
|
//# sourceMappingURL=3d-tiles-converter.js.map
|