@loaders.gl/3d-tiles 3.3.0-alpha.1 → 3.3.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +1103 -1457
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/cesium-ion-loader.js +7 -26
- package/dist/es5/cesium-ion-loader.js.map +1 -1
- package/dist/es5/index.js +14 -23
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js +3 -1
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/ion/ion.js +5 -46
- package/dist/es5/lib/ion/ion.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +19 -51
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +40 -49
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +127 -111
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/tile-3d-subtree-loader.js +0 -4
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
- package/dist/es5/tile-3d-writer.js +0 -6
- package/dist/es5/tile-3d-writer.js.map +1 -1
- package/dist/es5/tiles-3d-loader.js +5 -55
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/cesium-ion-loader.js +9 -7
- package/dist/esm/cesium-ion-loader.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/esm/lib/constants.js +3 -0
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/ion/ion.js +10 -8
- package/dist/esm/lib/ion/ion.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +4 -16
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +26 -17
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +35 -40
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tile-3d-subtree-loader.js +1 -0
- package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
- package/dist/esm/tile-3d-writer.js +1 -1
- package/dist/esm/tile-3d-writer.js.map +1 -1
- package/dist/esm/tiles-3d-loader.js +3 -17
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
- package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -13
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +36 -7
- package/dist/lib/parsers/parse-3d-tile-batched-model.js +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +5 -4
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +37 -18
- package/dist/tiles-3d-loader.d.ts.map +1 -1
- package/dist/tiles-3d-loader.js +1 -8
- package/dist/types.d.ts +26 -13
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +1 -1
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +2 -14
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +50 -7
- package/src/lib/parsers/parse-3d-tile-header.ts +59 -21
- package/src/tiles-3d-loader.ts +2 -16
- package/src/types.ts +18 -3
|
@@ -1,94 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
7
|
+
exports.normalizeImplicitTileData = normalizeImplicitTileData;
|
|
8
|
+
exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
|
|
8
9
|
exports.normalizeTileData = normalizeTileData;
|
|
9
10
|
exports.normalizeTileHeaders = normalizeTileHeaders;
|
|
10
|
-
exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
|
|
11
|
-
exports.normalizeImplicitTileData = normalizeImplicitTileData;
|
|
12
|
-
|
|
13
11
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
|
-
|
|
15
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
-
|
|
17
13
|
var _tile3dSubtreeLoader = require("../../tile-3d-subtree-loader");
|
|
18
|
-
|
|
19
14
|
var _core = require("@loaders.gl/core");
|
|
20
|
-
|
|
21
15
|
var _tiles = require("@loaders.gl/tiles");
|
|
22
|
-
|
|
23
16
|
var _parse3dImplicitTiles = require("./helpers/parse-3d-implicit-tiles");
|
|
24
|
-
|
|
25
17
|
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; } } }; }
|
|
26
|
-
|
|
27
18
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
28
|
-
|
|
29
19
|
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; }
|
|
30
|
-
|
|
31
20
|
function getTileType(tile) {
|
|
32
21
|
if (!tile.contentUrl) {
|
|
33
22
|
return _tiles.TILE_TYPE.EMPTY;
|
|
34
23
|
}
|
|
35
|
-
|
|
36
24
|
var contentUrl = tile.contentUrl;
|
|
37
25
|
var fileExtension = contentUrl.split('.').pop();
|
|
38
|
-
|
|
39
26
|
switch (fileExtension) {
|
|
40
27
|
case 'pnts':
|
|
41
28
|
return _tiles.TILE_TYPE.POINTCLOUD;
|
|
42
|
-
|
|
43
29
|
case 'i3dm':
|
|
44
30
|
case 'b3dm':
|
|
45
31
|
case 'glb':
|
|
46
32
|
case 'gltf':
|
|
47
33
|
return _tiles.TILE_TYPE.SCENEGRAPH;
|
|
48
|
-
|
|
49
34
|
default:
|
|
50
35
|
return fileExtension;
|
|
51
36
|
}
|
|
52
37
|
}
|
|
53
|
-
|
|
54
38
|
function getRefine(refine) {
|
|
55
39
|
switch (refine) {
|
|
56
40
|
case 'REPLACE':
|
|
57
41
|
case 'replace':
|
|
58
42
|
return _tiles.TILE_REFINEMENT.REPLACE;
|
|
59
|
-
|
|
60
43
|
case 'ADD':
|
|
61
44
|
case 'add':
|
|
62
45
|
return _tiles.TILE_REFINEMENT.ADD;
|
|
63
|
-
|
|
64
46
|
default:
|
|
65
47
|
return refine;
|
|
66
48
|
}
|
|
67
49
|
}
|
|
68
|
-
|
|
69
50
|
function resolveUri(uri, basePath) {
|
|
70
51
|
var urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
71
|
-
|
|
72
52
|
if (urlSchemeRegex.test(basePath)) {
|
|
73
53
|
var url = new URL(uri, "".concat(basePath, "/"));
|
|
74
54
|
return decodeURI(url.toString());
|
|
75
55
|
} else if (uri.startsWith('/')) {
|
|
76
56
|
return uri;
|
|
77
57
|
}
|
|
78
|
-
|
|
79
58
|
return "".concat(basePath, "/").concat(uri);
|
|
80
59
|
}
|
|
81
|
-
|
|
82
60
|
function normalizeTileData(tile, options) {
|
|
83
61
|
if (!tile) {
|
|
84
62
|
return null;
|
|
85
63
|
}
|
|
86
|
-
|
|
87
64
|
if (tile.content) {
|
|
88
65
|
var contentUri = tile.content.uri || tile.content.url;
|
|
89
66
|
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
90
67
|
}
|
|
91
|
-
|
|
92
68
|
tile.id = tile.contentUrl;
|
|
93
69
|
tile.lodMetricType = _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
94
70
|
tile.lodMetricValue = tile.geometricError;
|
|
@@ -98,71 +74,118 @@ function normalizeTileData(tile, options) {
|
|
|
98
74
|
return tile;
|
|
99
75
|
}
|
|
100
76
|
|
|
101
|
-
function normalizeTileHeaders(
|
|
102
|
-
|
|
103
|
-
var root = normalizeTileData(tileset.root, tileset);
|
|
104
|
-
var stack = [];
|
|
105
|
-
stack.push(root);
|
|
106
|
-
|
|
107
|
-
while (stack.length > 0) {
|
|
108
|
-
var tile = stack.pop() || {};
|
|
109
|
-
var children = tile.children || [];
|
|
110
|
-
|
|
111
|
-
var _iterator = _createForOfIteratorHelper(children),
|
|
112
|
-
_step;
|
|
113
|
-
|
|
114
|
-
try {
|
|
115
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
116
|
-
var childHeader = _step.value;
|
|
117
|
-
normalizeTileData(childHeader, {
|
|
118
|
-
basePath: basePath
|
|
119
|
-
});
|
|
120
|
-
stack.push(childHeader);
|
|
121
|
-
}
|
|
122
|
-
} catch (err) {
|
|
123
|
-
_iterator.e(err);
|
|
124
|
-
} finally {
|
|
125
|
-
_iterator.f();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return root;
|
|
77
|
+
function normalizeTileHeaders(_x, _x2) {
|
|
78
|
+
return _normalizeTileHeaders.apply(this, arguments);
|
|
130
79
|
}
|
|
131
|
-
|
|
132
|
-
function
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function _normalizeImplicitTileHeaders() {
|
|
137
|
-
_normalizeImplicitTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileset) {
|
|
138
|
-
var basePath, implicitTilingExtension, subdivisionScheme, maximumLevel, subtreeLevels, subtreesUriTemplate, subtreeUrl, rootSubtreeUrl, rootSubtree, contentUrlTemplate, refine, rootLodMetricValue, rootBoundingVolume, options;
|
|
80
|
+
function _normalizeTileHeaders() {
|
|
81
|
+
_normalizeTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileset, options) {
|
|
82
|
+
var basePath, root, rootImplicitTilingExtension, stack, tile, children, _iterator, _step, childHeader, childImplicitTilingExtension;
|
|
139
83
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
140
84
|
while (1) {
|
|
141
85
|
switch (_context.prev = _context.next) {
|
|
142
86
|
case 0:
|
|
143
|
-
|
|
144
|
-
|
|
87
|
+
basePath = tileset.basePath;
|
|
88
|
+
rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset === null || tileset === void 0 ? void 0 : tileset.root);
|
|
89
|
+
if (!(rootImplicitTilingExtension && tileset.root)) {
|
|
90
|
+
_context.next = 8;
|
|
145
91
|
break;
|
|
146
92
|
}
|
|
147
|
-
|
|
148
|
-
return
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
basePath = tileset.basePath;
|
|
152
|
-
implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
153
|
-
subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
|
|
154
|
-
subtreeUrl = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
155
|
-
rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
93
|
+
_context.next = 5;
|
|
94
|
+
return normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);
|
|
95
|
+
case 5:
|
|
96
|
+
root = _context.sent;
|
|
156
97
|
_context.next = 9;
|
|
157
|
-
|
|
158
|
-
|
|
98
|
+
break;
|
|
99
|
+
case 8:
|
|
100
|
+
root = normalizeTileData(tileset.root, tileset);
|
|
159
101
|
case 9:
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
102
|
+
stack = [];
|
|
103
|
+
stack.push(root);
|
|
104
|
+
case 11:
|
|
105
|
+
if (!(stack.length > 0)) {
|
|
106
|
+
_context.next = 40;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
tile = stack.pop() || {};
|
|
110
|
+
children = tile.children || [];
|
|
111
|
+
_iterator = _createForOfIteratorHelper(children);
|
|
112
|
+
_context.prev = 15;
|
|
113
|
+
_iterator.s();
|
|
114
|
+
case 17:
|
|
115
|
+
if ((_step = _iterator.n()).done) {
|
|
116
|
+
_context.next = 30;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
childHeader = _step.value;
|
|
120
|
+
childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
|
|
121
|
+
if (!childImplicitTilingExtension) {
|
|
122
|
+
_context.next = 26;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
_context.next = 23;
|
|
126
|
+
return normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);
|
|
127
|
+
case 23:
|
|
128
|
+
childHeader = _context.sent;
|
|
129
|
+
_context.next = 27;
|
|
130
|
+
break;
|
|
131
|
+
case 26:
|
|
132
|
+
normalizeTileData(childHeader, {
|
|
133
|
+
basePath: basePath
|
|
134
|
+
});
|
|
135
|
+
case 27:
|
|
136
|
+
stack.push(childHeader);
|
|
137
|
+
case 28:
|
|
138
|
+
_context.next = 17;
|
|
139
|
+
break;
|
|
140
|
+
case 30:
|
|
141
|
+
_context.next = 35;
|
|
142
|
+
break;
|
|
143
|
+
case 32:
|
|
144
|
+
_context.prev = 32;
|
|
145
|
+
_context.t0 = _context["catch"](15);
|
|
146
|
+
_iterator.e(_context.t0);
|
|
147
|
+
case 35:
|
|
148
|
+
_context.prev = 35;
|
|
149
|
+
_iterator.f();
|
|
150
|
+
return _context.finish(35);
|
|
151
|
+
case 38:
|
|
152
|
+
_context.next = 11;
|
|
153
|
+
break;
|
|
154
|
+
case 40:
|
|
155
|
+
return _context.abrupt("return", root);
|
|
156
|
+
case 41:
|
|
157
|
+
case "end":
|
|
158
|
+
return _context.stop();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}, _callee, null, [[15, 32, 35, 38]]);
|
|
162
|
+
}));
|
|
163
|
+
return _normalizeTileHeaders.apply(this, arguments);
|
|
164
|
+
}
|
|
165
|
+
function normalizeImplicitTileHeaders(_x3, _x4, _x5, _x6) {
|
|
166
|
+
return _normalizeImplicitTileHeaders.apply(this, arguments);
|
|
167
|
+
}
|
|
168
|
+
function _normalizeImplicitTileHeaders() {
|
|
169
|
+
_normalizeImplicitTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, tileset, implicitTilingExtension, options) {
|
|
170
|
+
var _tileset$root;
|
|
171
|
+
var basePath, subdivisionScheme, maximumLevel, subtreeLevels, subtreesUriTemplate, replacedUrlTemplate, subtreeUrl, subtree, contentUrlTemplate, refine, rootLodMetricValue, rootBoundingVolume, implicitOptions;
|
|
172
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
173
|
+
while (1) {
|
|
174
|
+
switch (_context2.prev = _context2.next) {
|
|
175
|
+
case 0:
|
|
176
|
+
basePath = tileset.basePath;
|
|
177
|
+
subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
|
|
178
|
+
replacedUrlTemplate = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
179
|
+
subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
|
|
180
|
+
_context2.next = 6;
|
|
181
|
+
return (0, _core.load)(subtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader, options);
|
|
182
|
+
case 6:
|
|
183
|
+
subtree = _context2.sent;
|
|
184
|
+
contentUrlTemplate = resolveUri(tile.content.uri, basePath);
|
|
185
|
+
refine = tileset === null || tileset === void 0 ? void 0 : (_tileset$root = tileset.root) === null || _tileset$root === void 0 ? void 0 : _tileset$root.refine;
|
|
186
|
+
rootLodMetricValue = tile.geometricError;
|
|
187
|
+
rootBoundingVolume = tile.boundingVolume;
|
|
188
|
+
implicitOptions = {
|
|
166
189
|
contentUrlTemplate: contentUrlTemplate,
|
|
167
190
|
subtreesUriTemplate: subtreesUriTemplate,
|
|
168
191
|
subdivisionScheme: subdivisionScheme,
|
|
@@ -176,76 +199,69 @@ function _normalizeImplicitTileHeaders() {
|
|
|
176
199
|
getTileType: getTileType,
|
|
177
200
|
getRefine: getRefine
|
|
178
201
|
};
|
|
179
|
-
|
|
180
|
-
return normalizeImplicitTileData(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
case 18:
|
|
202
|
+
_context2.next = 14;
|
|
203
|
+
return normalizeImplicitTileData(tile, subtree, implicitOptions);
|
|
204
|
+
case 14:
|
|
205
|
+
return _context2.abrupt("return", _context2.sent);
|
|
206
|
+
case 15:
|
|
186
207
|
case "end":
|
|
187
|
-
return
|
|
208
|
+
return _context2.stop();
|
|
188
209
|
}
|
|
189
210
|
}
|
|
190
|
-
},
|
|
211
|
+
}, _callee2);
|
|
191
212
|
}));
|
|
192
213
|
return _normalizeImplicitTileHeaders.apply(this, arguments);
|
|
193
214
|
}
|
|
194
|
-
|
|
195
|
-
function normalizeImplicitTileData(_x2, _x3, _x4) {
|
|
215
|
+
function normalizeImplicitTileData(_x7, _x8, _x9) {
|
|
196
216
|
return _normalizeImplicitTileData.apply(this, arguments);
|
|
197
217
|
}
|
|
198
|
-
|
|
199
218
|
function _normalizeImplicitTileData() {
|
|
200
|
-
_normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
219
|
+
_normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, rootSubtree, options) {
|
|
201
220
|
var _yield$parseImplicitT, children, contentUrl;
|
|
202
|
-
|
|
203
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
221
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
204
222
|
while (1) {
|
|
205
|
-
switch (
|
|
223
|
+
switch (_context3.prev = _context3.next) {
|
|
206
224
|
case 0:
|
|
207
225
|
if (tile) {
|
|
208
|
-
|
|
226
|
+
_context3.next = 2;
|
|
209
227
|
break;
|
|
210
228
|
}
|
|
211
|
-
|
|
212
|
-
return _context2.abrupt("return", null);
|
|
213
|
-
|
|
229
|
+
return _context3.abrupt("return", null);
|
|
214
230
|
case 2:
|
|
215
231
|
tile.lodMetricType = _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
216
232
|
tile.lodMetricValue = tile.geometricError;
|
|
217
233
|
tile.transformMatrix = tile.transform;
|
|
218
|
-
|
|
234
|
+
_context3.next = 7;
|
|
219
235
|
return (0, _parse3dImplicitTiles.parseImplicitTiles)({
|
|
220
236
|
subtree: rootSubtree,
|
|
221
237
|
options: options
|
|
222
238
|
});
|
|
223
|
-
|
|
224
239
|
case 7:
|
|
225
|
-
_yield$parseImplicitT =
|
|
240
|
+
_yield$parseImplicitT = _context3.sent;
|
|
226
241
|
children = _yield$parseImplicitT.children;
|
|
227
242
|
contentUrl = _yield$parseImplicitT.contentUrl;
|
|
228
|
-
|
|
229
243
|
if (contentUrl) {
|
|
230
244
|
tile.contentUrl = contentUrl;
|
|
231
245
|
tile.content = {
|
|
232
246
|
uri: contentUrl.replace("".concat(options.basePath, "/"), '')
|
|
233
247
|
};
|
|
234
248
|
}
|
|
235
|
-
|
|
236
249
|
tile.refine = getRefine(tile.refine);
|
|
237
250
|
tile.type = getTileType(tile);
|
|
238
251
|
tile.children = children;
|
|
239
252
|
tile.id = tile.contentUrl;
|
|
240
|
-
return
|
|
241
|
-
|
|
253
|
+
return _context3.abrupt("return", tile);
|
|
242
254
|
case 16:
|
|
243
255
|
case "end":
|
|
244
|
-
return
|
|
256
|
+
return _context3.stop();
|
|
245
257
|
}
|
|
246
258
|
}
|
|
247
|
-
},
|
|
259
|
+
}, _callee3);
|
|
248
260
|
}));
|
|
249
261
|
return _normalizeImplicitTileData.apply(this, arguments);
|
|
250
262
|
}
|
|
263
|
+
function getImplicitTilingExtensionData(tile) {
|
|
264
|
+
var _tile$extensions;
|
|
265
|
+
return (tile === null || tile === void 0 ? void 0 : (_tile$extensions = tile.extensions) === null || _tile$extensions === void 0 ? void 0 : _tile$extensions['3DTILES_implicit_tiling']) || (tile === null || tile === void 0 ? void 0 : tile.implicitTiling);
|
|
266
|
+
}
|
|
251
267
|
//# sourceMappingURL=parse-3d-tile-header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","subtreeUrl","rootSubtreeUrl","Tile3DSubtreeLoader","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;;;AAEA,SAASA,WAAT,CAAqBC,IAArB,EAA2B;AACzB,MAAI,CAACA,IAAI,CAACC,UAAV,EAAsB;AACpB,WAAOC,iBAAUC,KAAjB;AACD;;AAED,MAAMF,UAAU,GAAGD,IAAI,CAACC,UAAxB;AACA,MAAMG,aAAa,GAAGH,UAAU,CAACI,KAAX,CAAiB,GAAjB,EAAsBC,GAAtB,EAAtB;;AACA,UAAQF,aAAR;AACE,SAAK,MAAL;AACE,aAAOF,iBAAUK,UAAjB;;AACF,SAAK,MAAL;AACA,SAAK,MAAL;AACA,SAAK,KAAL;AACA,SAAK,MAAL;AACE,aAAOL,iBAAUM,UAAjB;;AACF;AACE,aAAOJ,aAAP;AATJ;AAWD;;AAED,SAASK,SAAT,CAAmBC,MAAnB,EAA2B;AACzB,UAAQA,MAAR;AACE,SAAK,SAAL;AACA,SAAK,SAAL;AACE,aAAOC,uBAAgBC,OAAvB;;AACF,SAAK,KAAL;AACA,SAAK,KAAL;AACE,aAAOD,uBAAgBE,GAAvB;;AACF;AACE,aAAOH,MAAP;AARJ;AAUD;;AAED,SAASI,UAAT,CAAoBC,GAApB,EAAyBC,QAAzB,EAAmC;AAEjC,MAAMC,cAAc,GAAG,sBAAvB;;AAEA,MAAIA,cAAc,CAACC,IAAf,CAAoBF,QAApB,CAAJ,EAAmC;AACjC,QAAMG,GAAG,GAAG,IAAIC,GAAJ,CAAQL,GAAR,YAAgBC,QAAhB,OAAZ;AACA,WAAOK,SAAS,CAACF,GAAG,CAACG,QAAJ,EAAD,CAAhB;AACD,GAHD,MAGO,IAAIP,GAAG,CAACQ,UAAJ,CAAe,GAAf,CAAJ,EAAyB;AAC9B,WAAOR,GAAP;AACD;;AAED,mBAAUC,QAAV,cAAsBD,GAAtB;AACD;;AAEM,SAASS,iBAAT,CAA2BxB,IAA3B,EAAiCyB,OAAjC,EAA0C;AAC/C,MAAI,CAACzB,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AACD,MAAIA,IAAI,CAAC0B,OAAT,EAAkB;AAChB,QAAMC,UAAU,GAAG3B,IAAI,CAAC0B,OAAL,CAAaX,GAAb,IAAoBf,IAAI,CAAC0B,OAAL,CAAaP,GAApD;AACAnB,IAAAA,IAAI,CAACC,UAAL,GAAkBa,UAAU,CAACa,UAAD,EAAaF,OAAO,CAACT,QAArB,CAA5B;AACD;;AACDhB,EAAAA,IAAI,CAAC4B,EAAL,GAAU5B,IAAI,CAACC,UAAf;AACAD,EAAAA,IAAI,CAAC6B,aAAL,GAAqBC,uBAAgBC,eAArC;AACA/B,EAAAA,IAAI,CAACgC,cAAL,GAAsBhC,IAAI,CAACiC,cAA3B;AACAjC,EAAAA,IAAI,CAACkC,eAAL,GAAuBlC,IAAI,CAACmC,SAA5B;AACAnC,EAAAA,IAAI,CAACoC,IAAL,GAAYrC,WAAW,CAACC,IAAD,CAAvB;AACAA,EAAAA,IAAI,CAACU,MAAL,GAAcD,SAAS,CAACT,IAAI,CAACU,MAAN,CAAvB;AAEA,SAAOV,IAAP;AACD;;AAGM,SAASqC,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,MAAMtB,QAAQ,GAAGsB,OAAO,CAACtB,QAAzB;AACA,MAAMuB,IAAI,GAAGf,iBAAiB,CAACc,OAAO,CAACC,IAAT,EAAeD,OAAf,CAA9B;AAEA,MAAME,KAAY,GAAG,EAArB;AACAA,EAAAA,KAAK,CAACC,IAAN,CAAWF,IAAX;;AAEA,SAAOC,KAAK,CAACE,MAAN,GAAe,CAAtB,EAAyB;AACvB,QAAM1C,IAAI,GAAGwC,KAAK,CAAClC,GAAN,MAAe,EAA5B;AACA,QAAMqC,QAAQ,GAAG3C,IAAI,CAAC2C,QAAL,IAAiB,EAAlC;;AAFuB,+CAGGA,QAHH;AAAA;;AAAA;AAGvB,0DAAoC;AAAA,YAAzBC,WAAyB;AAClCpB,QAAAA,iBAAiB,CAACoB,WAAD,EAAc;AAAC5B,UAAAA,QAAQ,EAARA;AAAD,SAAd,CAAjB;AACAwB,QAAAA,KAAK,CAACC,IAAN,CAAWG,WAAX;AACD;AANsB;AAAA;AAAA;AAAA;AAAA;AAOxB;;AAED,SAAOL,IAAP;AACD;;SAOqBM,4B;;;;;4FAAf,iBAA4CP,OAA5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBACAA,OAAO,CAACC,IADR;AAAA;AAAA;AAAA;;AAAA,6CAEI,IAFJ;;AAAA;AAKCvB,YAAAA,QALD,GAKYsB,OAAO,CAACtB,QALpB;AAMC8B,YAAAA,uBAND,GAM2BR,OAAO,CAACC,IAAR,CAAaQ,UAAb,CAAwB,yBAAxB,CAN3B;AAQHC,YAAAA,iBARG,GAYDF,uBAZC,CAQHE,iBARG,EASHC,YATG,GAYDH,uBAZC,CASHG,YATG,EAUHC,aAVG,GAYDJ,uBAZC,CAUHI,aAVG,EAWaC,mBAXb,GAYDL,uBAZC,CAWHM,QAXG,CAWQrC,GAXR;AAaCsC,YAAAA,UAbD,GAac,qDAA0BF,mBAA1B,EAA+C,CAA/C,EAAkD,CAAlD,EAAqD,CAArD,EAAwD,CAAxD,CAbd;AAcCG,YAAAA,cAdD,GAckBxC,UAAU,CAACuC,UAAD,EAAarC,QAAb,CAd5B;AAAA;AAAA,mBAeqB,gBAAKsC,cAAL,EAAqBC,wCAArB,CAfrB;;AAAA;AAeCC,YAAAA,WAfD;AAgBCC,YAAAA,kBAhBD,GAgBsB3C,UAAU,CAACwB,OAAO,CAACC,IAAR,CAAab,OAAb,CAAqBX,GAAtB,EAA2BC,QAA3B,CAhBhC;AAiBCN,YAAAA,MAjBD,GAiBU4B,OAAO,CAACC,IAAR,CAAa7B,MAjBvB;AAmBCgD,YAAAA,kBAnBD,GAmBsBpB,OAAO,CAACC,IAAR,CAAaN,cAnBnC;AAoBC0B,YAAAA,kBApBD,GAoBsBrB,OAAO,CAACC,IAAR,CAAaqB,cApBnC;AAsBCnC,YAAAA,OAtBD,GAsBW;AACdgC,cAAAA,kBAAkB,EAAlBA,kBADc;AAEdN,cAAAA,mBAAmB,EAAnBA,mBAFc;AAGdH,cAAAA,iBAAiB,EAAjBA,iBAHc;AAIdE,cAAAA,aAAa,EAAbA,aAJc;AAKdD,cAAAA,YAAY,EAAZA,YALc;AAMdvC,cAAAA,MAAM,EAANA,MANc;AAOdM,cAAAA,QAAQ,EAARA,QAPc;AAQda,cAAAA,aAAa,EAAEC,uBAAgBC,eARjB;AASd2B,cAAAA,kBAAkB,EAAlBA,kBATc;AAUdC,cAAAA,kBAAkB,EAAlBA,kBAVc;AAWd5D,cAAAA,WAAW,EAAXA,WAXc;AAYdU,cAAAA,SAAS,EAATA;AAZc,aAtBX;AAAA;AAAA,mBAqCQoD,yBAAyB,CAACvB,OAAO,CAACC,IAAT,EAAeiB,WAAf,EAA4B/B,OAA5B,CArCjC;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA+CeoC,yB;;;;;yFAAf,kBAAyC7D,IAAzC,EAA+CwD,WAA/C,EAAqE/B,OAArE;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,gBACAzB,IADA;AAAA;AAAA;AAAA;;AAAA,8CAEI,IAFJ;;AAAA;AAKLA,YAAAA,IAAI,CAAC6B,aAAL,GAAqBC,uBAAgBC,eAArC;AACA/B,YAAAA,IAAI,CAACgC,cAAL,GAAsBhC,IAAI,CAACiC,cAA3B;AACAjC,YAAAA,IAAI,CAACkC,eAAL,GAAuBlC,IAAI,CAACmC,SAA5B;AAPK;AAAA,mBASgC,8CAAmB;AAAC2B,cAAAA,OAAO,EAAEN,WAAV;AAAuB/B,cAAAA,OAAO,EAAPA;AAAvB,aAAnB,CAThC;;AAAA;AAAA;AASEkB,YAAAA,QATF,yBASEA,QATF;AASY1C,YAAAA,UATZ,yBASYA,UATZ;;AAWL,gBAAIA,UAAJ,EAAgB;AACdD,cAAAA,IAAI,CAACC,UAAL,GAAkBA,UAAlB;AACAD,cAAAA,IAAI,CAAC0B,OAAL,GAAe;AAACX,gBAAAA,GAAG,EAAEd,UAAU,CAAC8D,OAAX,WAAsBtC,OAAO,CAACT,QAA9B,QAA2C,EAA3C;AAAN,eAAf;AACD;;AAEDhB,YAAAA,IAAI,CAACU,MAAL,GAAcD,SAAS,CAACT,IAAI,CAACU,MAAN,CAAvB;AACAV,YAAAA,IAAI,CAACoC,IAAL,GAAYrC,WAAW,CAACC,IAAD,CAAvB;AACAA,YAAAA,IAAI,CAAC2C,QAAL,GAAgBA,QAAhB;AACA3C,YAAAA,IAAI,CAAC4B,EAAL,GAAU5B,IAAI,CAACC,UAAf;AAnBK,8CAqBED,IArBF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-header.js","names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","rootImplicitTilingExtension","getImplicitTilingExtensionData","root","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","replacedUrlTemplate","replaceContentUrlTemplate","subtreeUrl","load","Tile3DSubtreeLoader","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","parseImplicitTiles","replace","extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"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"}
|
|
@@ -1,36 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.parseInstancedModel3DTile = parseInstancedModel3DTile;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _core = require("@math.gl/core");
|
|
15
|
-
|
|
16
11
|
var _geospatial = require("@math.gl/geospatial");
|
|
17
|
-
|
|
18
12
|
var _math = require("@loaders.gl/math");
|
|
19
|
-
|
|
20
13
|
var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
|
|
21
|
-
|
|
22
14
|
var _tile3dBatchTable = _interopRequireDefault(require("../classes/tile-3d-batch-table"));
|
|
23
|
-
|
|
24
15
|
var _parse3dTileHeader = require("./helpers/parse-3d-tile-header");
|
|
25
|
-
|
|
26
16
|
var _parse3dTileTables = require("./helpers/parse-3d-tile-tables");
|
|
27
|
-
|
|
28
17
|
var _parse3dTileGltfView = require("./helpers/parse-3d-tile-gltf-view");
|
|
29
|
-
|
|
30
18
|
function parseInstancedModel3DTile(_x, _x2, _x3, _x4, _x5) {
|
|
31
19
|
return _parseInstancedModel3DTile.apply(this, arguments);
|
|
32
20
|
}
|
|
33
|
-
|
|
34
21
|
function _parseInstancedModel3DTile() {
|
|
35
22
|
_parseInstancedModel3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile, arrayBuffer, byteOffset, options, context) {
|
|
36
23
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -40,10 +27,8 @@ function _parseInstancedModel3DTile() {
|
|
|
40
27
|
byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);
|
|
41
28
|
_context.next = 3;
|
|
42
29
|
return (0, _parse3dTileGltfView.extractGLTF)(tile, tile.gltfFormat, options, context);
|
|
43
|
-
|
|
44
30
|
case 3:
|
|
45
31
|
return _context.abrupt("return", byteOffset);
|
|
46
|
-
|
|
47
32
|
case 4:
|
|
48
33
|
case "end":
|
|
49
34
|
return _context.stop();
|
|
@@ -53,33 +38,28 @@ function _parseInstancedModel3DTile() {
|
|
|
53
38
|
}));
|
|
54
39
|
return _parseInstancedModel3DTile.apply(this, arguments);
|
|
55
40
|
}
|
|
56
|
-
|
|
57
41
|
function parseInstancedModel(tile, arrayBuffer, byteOffset, options, context) {
|
|
58
42
|
byteOffset = (0, _parse3dTileHeader.parse3DTileHeaderSync)(tile, arrayBuffer, byteOffset);
|
|
59
|
-
|
|
60
43
|
if (tile.version !== 1) {
|
|
61
44
|
throw new Error("Instanced 3D Model version ".concat(tile.version, " is not supported"));
|
|
62
45
|
}
|
|
63
|
-
|
|
64
46
|
byteOffset = (0, _parse3dTileTables.parse3DTileTablesHeaderSync)(tile, arrayBuffer, byteOffset);
|
|
65
47
|
var view = new DataView(arrayBuffer);
|
|
66
48
|
tile.gltfFormat = view.getUint32(byteOffset, true);
|
|
67
49
|
byteOffset += 4;
|
|
50
|
+
|
|
68
51
|
byteOffset = (0, _parse3dTileTables.parse3DTileTablesSync)(tile, arrayBuffer, byteOffset, options);
|
|
69
52
|
byteOffset = (0, _parse3dTileGltfView.parse3DTileGLTFViewSync)(tile, arrayBuffer, byteOffset, options);
|
|
70
53
|
|
|
71
54
|
if (tile.featureTableJsonByteLength === 0) {
|
|
72
55
|
throw new Error('i3dm parser: featureTableJsonByteLength is zero.');
|
|
73
56
|
}
|
|
74
|
-
|
|
75
57
|
var featureTable = new _tile3dFeatureTable.default(tile.featureTableJson, tile.featureTableBinary);
|
|
76
58
|
var instancesLength = featureTable.getGlobalProperty('INSTANCES_LENGTH');
|
|
77
59
|
featureTable.featuresLength = instancesLength;
|
|
78
|
-
|
|
79
60
|
if (!Number.isFinite(instancesLength)) {
|
|
80
61
|
throw new Error('i3dm parser: INSTANCES_LENGTH must be defined');
|
|
81
62
|
}
|
|
82
|
-
|
|
83
63
|
tile.eastNorthUp = featureTable.getGlobalProperty('EAST_NORTH_UP');
|
|
84
64
|
tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', _math.GL.FLOAT, 3);
|
|
85
65
|
var batchTable = new _tile3dBatchTable.default(tile.batchTableJson, tile.batchTableBinary, instancesLength);
|
|
@@ -112,7 +92,6 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
112
92
|
var scratch2 = [];
|
|
113
93
|
var scratchVector1 = new _core.Vector3();
|
|
114
94
|
var scratchVector2 = new _core.Vector3();
|
|
115
|
-
|
|
116
95
|
for (var i = 0; i < instancesLength; i++) {
|
|
117
96
|
var position = void 0;
|
|
118
97
|
|
|
@@ -121,89 +100,75 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
121
100
|
} else if (featureTable.hasProperty('POSITION_QUANTIZED')) {
|
|
122
101
|
position = featureTable.getProperty('POSITION_QUANTIZED', _math.GL.UNSIGNED_SHORT, 3, i, instancePosition);
|
|
123
102
|
var quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', _math.GL.FLOAT, 3, scratchVector1);
|
|
124
|
-
|
|
125
103
|
if (!quantizedVolumeOffset) {
|
|
126
104
|
throw new Error('i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');
|
|
127
105
|
}
|
|
128
|
-
|
|
129
106
|
var quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', _math.GL.FLOAT, 3, scratchVector2);
|
|
130
|
-
|
|
131
107
|
if (!quantizedVolumeScale) {
|
|
132
108
|
throw new Error('i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');
|
|
133
109
|
}
|
|
134
|
-
|
|
135
110
|
var MAX_UNSIGNED_SHORT = 65535.0;
|
|
136
|
-
|
|
137
111
|
for (var j = 0; j < 3; j++) {
|
|
138
112
|
position[j] = position[j] / MAX_UNSIGNED_SHORT * quantizedVolumeScale[j] + quantizedVolumeOffset[j];
|
|
139
113
|
}
|
|
140
114
|
}
|
|
141
|
-
|
|
142
115
|
if (!position) {
|
|
143
116
|
throw new Error('i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.');
|
|
144
117
|
}
|
|
145
|
-
|
|
146
118
|
instancePosition.copy(position);
|
|
147
119
|
instanceTranslationRotationScale.translation = instancePosition;
|
|
120
|
+
|
|
148
121
|
tile.normalUp = featureTable.getProperty('NORMAL_UP', _math.GL.FLOAT, 3, i, scratch1);
|
|
149
122
|
tile.normalRight = featureTable.getProperty('NORMAL_RIGHT', _math.GL.FLOAT, 3, i, scratch2);
|
|
150
123
|
var hasCustomOrientation = false;
|
|
151
|
-
|
|
152
124
|
if (tile.normalUp) {
|
|
153
125
|
if (!tile.normalRight) {
|
|
154
126
|
throw new Error('i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.');
|
|
155
127
|
}
|
|
156
|
-
|
|
157
128
|
tile.hasCustomOrientation = true;
|
|
158
129
|
} else {
|
|
159
130
|
tile.octNormalUp = featureTable.getProperty('NORMAL_UP_OCT32P', _math.GL.UNSIGNED_SHORT, 2, scratch1);
|
|
160
131
|
tile.octNormalRight = featureTable.getProperty('NORMAL_RIGHT_OCT32P', _math.GL.UNSIGNED_SHORT, 2, scratch2);
|
|
161
|
-
|
|
162
132
|
if (tile.octNormalUp) {
|
|
163
133
|
if (!tile.octNormalRight) {
|
|
164
134
|
throw new Error('i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P');
|
|
165
135
|
}
|
|
166
|
-
|
|
167
136
|
throw new Error('i3dm: oct-encoded orientation not implemented');
|
|
168
137
|
} else if (tile.eastNorthUp) {
|
|
169
138
|
_geospatial.Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
|
|
170
|
-
|
|
171
139
|
instanceTransform.getRotationMatrix3(instanceRotation);
|
|
172
140
|
} else {
|
|
173
141
|
instanceRotation.identity();
|
|
174
142
|
}
|
|
175
143
|
}
|
|
176
|
-
|
|
177
144
|
if (hasCustomOrientation) {
|
|
178
145
|
instanceNormalForward.copy(instanceNormalRight).cross(instanceNormalUp).normalize();
|
|
179
146
|
instanceRotation.setColumn(0, instanceNormalRight);
|
|
180
147
|
instanceRotation.setColumn(1, instanceNormalUp);
|
|
181
148
|
instanceRotation.setColumn(2, instanceNormalForward);
|
|
182
149
|
}
|
|
183
|
-
|
|
184
150
|
instanceQuaternion.fromMatrix3(instanceRotation);
|
|
185
151
|
instanceTranslationRotationScale.rotation = instanceQuaternion;
|
|
152
|
+
|
|
186
153
|
instanceScale.set(1.0, 1.0, 1.0);
|
|
187
154
|
var scale = featureTable.getProperty('SCALE', _math.GL.FLOAT, 1, i);
|
|
188
|
-
|
|
189
155
|
if (Number.isFinite(scale)) {
|
|
190
156
|
instanceScale.multiplyByScalar(scale);
|
|
191
157
|
}
|
|
192
|
-
|
|
193
158
|
var nonUniformScale = featureTable.getProperty('SCALE_NON_UNIFORM', _math.GL.FLOAT, 3, i, scratch1);
|
|
194
|
-
|
|
195
159
|
if (nonUniformScale) {
|
|
196
160
|
instanceScale.scale(nonUniformScale);
|
|
197
161
|
}
|
|
198
162
|
|
|
199
163
|
instanceTranslationRotationScale.scale = instanceScale;
|
|
200
|
-
var batchId = featureTable.getProperty('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1, i);
|
|
201
164
|
|
|
165
|
+
var batchId = featureTable.getProperty('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1, i);
|
|
202
166
|
if (batchId === undefined) {
|
|
203
167
|
batchId = i;
|
|
204
168
|
}
|
|
205
169
|
|
|
206
170
|
var rotationMatrix = new _core.Matrix4().fromQuaternion(instanceTranslationRotationScale.rotation);
|
|
171
|
+
|
|
207
172
|
instanceTransform.identity();
|
|
208
173
|
instanceTransform.translate(instanceTranslationRotationScale.translation);
|
|
209
174
|
instanceTransform.multiplyRight(rotationMatrix);
|
|
@@ -214,7 +179,6 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
|
|
|
214
179
|
batchId: batchId
|
|
215
180
|
};
|
|
216
181
|
}
|
|
217
|
-
|
|
218
182
|
tile.instances = instances;
|
|
219
183
|
}
|
|
220
184
|
//# sourceMappingURL=parse-3d-tile-instanced-model.js.map
|