@loaders.gl/3d-tiles 3.3.0-alpha.5 → 3.3.0-alpha.6
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 +924 -1372
- 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 +17 -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 +0 -38
- 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 +2 -70
- 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 +0 -29
- 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 +2 -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 +1 -13
- 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 +3 -26
- 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 +1 -8
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/esm/types.js.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/package.json +7 -7
|
@@ -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;
|
|
@@ -101,109 +77,82 @@ function normalizeTileData(tile, options) {
|
|
|
101
77
|
function normalizeTileHeaders(_x, _x2) {
|
|
102
78
|
return _normalizeTileHeaders.apply(this, arguments);
|
|
103
79
|
}
|
|
104
|
-
|
|
105
80
|
function _normalizeTileHeaders() {
|
|
106
81
|
_normalizeTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileset, options) {
|
|
107
82
|
var basePath, root, rootImplicitTilingExtension, stack, tile, children, _iterator, _step, childHeader, childImplicitTilingExtension;
|
|
108
|
-
|
|
109
83
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
110
84
|
while (1) {
|
|
111
85
|
switch (_context.prev = _context.next) {
|
|
112
86
|
case 0:
|
|
113
87
|
basePath = tileset.basePath;
|
|
114
88
|
rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset === null || tileset === void 0 ? void 0 : tileset.root);
|
|
115
|
-
|
|
116
89
|
if (!(rootImplicitTilingExtension && tileset.root)) {
|
|
117
90
|
_context.next = 8;
|
|
118
91
|
break;
|
|
119
92
|
}
|
|
120
|
-
|
|
121
93
|
_context.next = 5;
|
|
122
94
|
return normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);
|
|
123
|
-
|
|
124
95
|
case 5:
|
|
125
96
|
root = _context.sent;
|
|
126
97
|
_context.next = 9;
|
|
127
98
|
break;
|
|
128
|
-
|
|
129
99
|
case 8:
|
|
130
100
|
root = normalizeTileData(tileset.root, tileset);
|
|
131
|
-
|
|
132
101
|
case 9:
|
|
133
102
|
stack = [];
|
|
134
103
|
stack.push(root);
|
|
135
|
-
|
|
136
104
|
case 11:
|
|
137
105
|
if (!(stack.length > 0)) {
|
|
138
106
|
_context.next = 40;
|
|
139
107
|
break;
|
|
140
108
|
}
|
|
141
|
-
|
|
142
109
|
tile = stack.pop() || {};
|
|
143
110
|
children = tile.children || [];
|
|
144
111
|
_iterator = _createForOfIteratorHelper(children);
|
|
145
112
|
_context.prev = 15;
|
|
146
|
-
|
|
147
113
|
_iterator.s();
|
|
148
|
-
|
|
149
114
|
case 17:
|
|
150
115
|
if ((_step = _iterator.n()).done) {
|
|
151
116
|
_context.next = 30;
|
|
152
117
|
break;
|
|
153
118
|
}
|
|
154
|
-
|
|
155
119
|
childHeader = _step.value;
|
|
156
120
|
childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
|
|
157
|
-
|
|
158
121
|
if (!childImplicitTilingExtension) {
|
|
159
122
|
_context.next = 26;
|
|
160
123
|
break;
|
|
161
124
|
}
|
|
162
|
-
|
|
163
125
|
_context.next = 23;
|
|
164
126
|
return normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);
|
|
165
|
-
|
|
166
127
|
case 23:
|
|
167
128
|
childHeader = _context.sent;
|
|
168
129
|
_context.next = 27;
|
|
169
130
|
break;
|
|
170
|
-
|
|
171
131
|
case 26:
|
|
172
132
|
normalizeTileData(childHeader, {
|
|
173
133
|
basePath: basePath
|
|
174
134
|
});
|
|
175
|
-
|
|
176
135
|
case 27:
|
|
177
136
|
stack.push(childHeader);
|
|
178
|
-
|
|
179
137
|
case 28:
|
|
180
138
|
_context.next = 17;
|
|
181
139
|
break;
|
|
182
|
-
|
|
183
140
|
case 30:
|
|
184
141
|
_context.next = 35;
|
|
185
142
|
break;
|
|
186
|
-
|
|
187
143
|
case 32:
|
|
188
144
|
_context.prev = 32;
|
|
189
145
|
_context.t0 = _context["catch"](15);
|
|
190
|
-
|
|
191
146
|
_iterator.e(_context.t0);
|
|
192
|
-
|
|
193
147
|
case 35:
|
|
194
148
|
_context.prev = 35;
|
|
195
|
-
|
|
196
149
|
_iterator.f();
|
|
197
|
-
|
|
198
150
|
return _context.finish(35);
|
|
199
|
-
|
|
200
151
|
case 38:
|
|
201
152
|
_context.next = 11;
|
|
202
153
|
break;
|
|
203
|
-
|
|
204
154
|
case 40:
|
|
205
155
|
return _context.abrupt("return", root);
|
|
206
|
-
|
|
207
156
|
case 41:
|
|
208
157
|
case "end":
|
|
209
158
|
return _context.stop();
|
|
@@ -213,15 +162,12 @@ function _normalizeTileHeaders() {
|
|
|
213
162
|
}));
|
|
214
163
|
return _normalizeTileHeaders.apply(this, arguments);
|
|
215
164
|
}
|
|
216
|
-
|
|
217
165
|
function normalizeImplicitTileHeaders(_x3, _x4, _x5, _x6) {
|
|
218
166
|
return _normalizeImplicitTileHeaders.apply(this, arguments);
|
|
219
167
|
}
|
|
220
|
-
|
|
221
168
|
function _normalizeImplicitTileHeaders() {
|
|
222
169
|
_normalizeImplicitTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, tileset, implicitTilingExtension, options) {
|
|
223
170
|
var _tileset$root;
|
|
224
|
-
|
|
225
171
|
var basePath, subdivisionScheme, maximumLevel, subtreeLevels, subtreesUriTemplate, replacedUrlTemplate, subtreeUrl, subtree, contentUrlTemplate, refine, rootLodMetricValue, rootBoundingVolume, implicitOptions;
|
|
226
172
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
227
173
|
while (1) {
|
|
@@ -233,7 +179,6 @@ function _normalizeImplicitTileHeaders() {
|
|
|
233
179
|
subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
|
|
234
180
|
_context2.next = 6;
|
|
235
181
|
return (0, _core.load)(subtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader, options);
|
|
236
|
-
|
|
237
182
|
case 6:
|
|
238
183
|
subtree = _context2.sent;
|
|
239
184
|
contentUrlTemplate = resolveUri(tile.content.uri, basePath);
|
|
@@ -256,10 +201,8 @@ function _normalizeImplicitTileHeaders() {
|
|
|
256
201
|
};
|
|
257
202
|
_context2.next = 14;
|
|
258
203
|
return normalizeImplicitTileData(tile, subtree, implicitOptions);
|
|
259
|
-
|
|
260
204
|
case 14:
|
|
261
205
|
return _context2.abrupt("return", _context2.sent);
|
|
262
|
-
|
|
263
206
|
case 15:
|
|
264
207
|
case "end":
|
|
265
208
|
return _context2.stop();
|
|
@@ -269,15 +212,12 @@ function _normalizeImplicitTileHeaders() {
|
|
|
269
212
|
}));
|
|
270
213
|
return _normalizeImplicitTileHeaders.apply(this, arguments);
|
|
271
214
|
}
|
|
272
|
-
|
|
273
215
|
function normalizeImplicitTileData(_x7, _x8, _x9) {
|
|
274
216
|
return _normalizeImplicitTileData.apply(this, arguments);
|
|
275
217
|
}
|
|
276
|
-
|
|
277
218
|
function _normalizeImplicitTileData() {
|
|
278
219
|
_normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, rootSubtree, options) {
|
|
279
220
|
var _yield$parseImplicitT, children, contentUrl;
|
|
280
|
-
|
|
281
221
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
282
222
|
while (1) {
|
|
283
223
|
switch (_context3.prev = _context3.next) {
|
|
@@ -286,9 +226,7 @@ function _normalizeImplicitTileData() {
|
|
|
286
226
|
_context3.next = 2;
|
|
287
227
|
break;
|
|
288
228
|
}
|
|
289
|
-
|
|
290
229
|
return _context3.abrupt("return", null);
|
|
291
|
-
|
|
292
230
|
case 2:
|
|
293
231
|
tile.lodMetricType = _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
294
232
|
tile.lodMetricValue = tile.geometricError;
|
|
@@ -298,25 +236,21 @@ function _normalizeImplicitTileData() {
|
|
|
298
236
|
subtree: rootSubtree,
|
|
299
237
|
options: options
|
|
300
238
|
});
|
|
301
|
-
|
|
302
239
|
case 7:
|
|
303
240
|
_yield$parseImplicitT = _context3.sent;
|
|
304
241
|
children = _yield$parseImplicitT.children;
|
|
305
242
|
contentUrl = _yield$parseImplicitT.contentUrl;
|
|
306
|
-
|
|
307
243
|
if (contentUrl) {
|
|
308
244
|
tile.contentUrl = contentUrl;
|
|
309
245
|
tile.content = {
|
|
310
246
|
uri: contentUrl.replace("".concat(options.basePath, "/"), '')
|
|
311
247
|
};
|
|
312
248
|
}
|
|
313
|
-
|
|
314
249
|
tile.refine = getRefine(tile.refine);
|
|
315
250
|
tile.type = getTileType(tile);
|
|
316
251
|
tile.children = children;
|
|
317
252
|
tile.id = tile.contentUrl;
|
|
318
253
|
return _context3.abrupt("return", tile);
|
|
319
|
-
|
|
320
254
|
case 16:
|
|
321
255
|
case "end":
|
|
322
256
|
return _context3.stop();
|
|
@@ -326,10 +260,8 @@ function _normalizeImplicitTileData() {
|
|
|
326
260
|
}));
|
|
327
261
|
return _normalizeImplicitTileData.apply(this, arguments);
|
|
328
262
|
}
|
|
329
|
-
|
|
330
263
|
function getImplicitTilingExtensionData(tile) {
|
|
331
264
|
var _tile$extensions;
|
|
332
|
-
|
|
333
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);
|
|
334
266
|
}
|
|
335
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","rootImplicitTilingExtension","getImplicitTilingExtensionData","root","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","replacedUrlTemplate","subtreeUrl","Tile3DSubtreeLoader","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","replace","extensions","implicitTiling"],"mappings":"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","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"],"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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-instanced-model.ts"],"names":["parseInstancedModel3DTile","tile","arrayBuffer","byteOffset","options","context","parseInstancedModel","gltfFormat","version","Error","view","DataView","getUint32","featureTableJsonByteLength","featureTable","Tile3DFeatureTable","featureTableJson","featureTableBinary","instancesLength","getGlobalProperty","featuresLength","Number","isFinite","eastNorthUp","rtcCenter","GL","FLOAT","batchTable","Tile3DBatchTable","batchTableJson","batchTableBinary","extractInstancedAttributes","collectionOptions","instances","Array","_batchTable","cull","url","undefined","gltf","basePath","incrementallyLoadTextures","forwardAxis","instancePosition","Vector3","instanceNormalRight","instanceNormalUp","instanceNormalForward","instanceRotation","Matrix3","instanceQuaternion","Quaternion","instanceScale","instanceTranslationRotationScale","instanceTransform","Matrix4","scratch1","scratch2","scratchVector1","scratchVector2","i","position","hasProperty","getProperty","UNSIGNED_SHORT","quantizedVolumeOffset","quantizedVolumeScale","MAX_UNSIGNED_SHORT","j","copy","translation","normalUp","normalRight","hasCustomOrientation","octNormalUp","octNormalRight","Ellipsoid","WGS84","eastNorthUpToFixedFrame","getRotationMatrix3","identity","cross","normalize","setColumn","fromMatrix3","rotation","set","scale","multiplyByScalar","nonUniformScale","batchId","rotationMatrix","fromQuaternion","translate","multiplyRight","modelMatrix","clone"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {Vector3, Matrix3, Matrix4, Quaternion} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {GL} from '@loaders.gl/math'; // 'math.gl/geometry';\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\n\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {parse3DTileGLTFViewSync, extractGLTF} from './helpers/parse-3d-tile-gltf-view';\n\nexport async function parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);\n await extractGLTF(tile, tile.gltfFormat, options, context);\n return byteOffset;\n}\n\nfunction parseInstancedModel(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n if (tile.version !== 1) {\n throw new Error(`Instanced 3D Model version ${tile.version} is not supported`);\n }\n\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n\n const view = new DataView(arrayBuffer);\n\n tile.gltfFormat = view.getUint32(byteOffset, true);\n byteOffset += 4;\n\n // PARSE FEATURE TABLE\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n\n byteOffset = parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options);\n\n // TODO - Is the feature table sometimes optional or can check be moved into table header parser?\n if (tile.featureTableJsonByteLength === 0) {\n throw new Error('i3dm parser: featureTableJsonByteLength is zero.');\n }\n\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const instancesLength = featureTable.getGlobalProperty('INSTANCES_LENGTH');\n featureTable.featuresLength = instancesLength;\n\n if (!Number.isFinite(instancesLength)) {\n throw new Error('i3dm parser: INSTANCES_LENGTH must be defined');\n }\n\n tile.eastNorthUp = featureTable.getGlobalProperty('EAST_NORTH_UP');\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = new Tile3DBatchTable(\n tile.batchTableJson,\n tile.batchTableBinary,\n instancesLength\n );\n\n extractInstancedAttributes(tile, featureTable, batchTable, instancesLength);\n\n return byteOffset;\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction extractInstancedAttributes(tile, featureTable, batchTable, instancesLength) {\n // Create model instance collection\n const collectionOptions = {\n instances: new Array(instancesLength),\n batchTable: tile._batchTable,\n cull: false, // Already culled by 3D Tiles\n url: undefined,\n // requestType: RequestType.TILES3D,\n gltf: undefined,\n basePath: undefined,\n incrementallyLoadTextures: false,\n // TODO - tileset is not available at this stage, tile is parsed independently\n // upAxis: (tileset && tileset._gltfUpAxis) || [0, 1, 0],\n forwardAxis: [1, 0, 0]\n };\n\n const instances = collectionOptions.instances;\n const instancePosition = new Vector3();\n const instanceNormalRight = new Vector3();\n const instanceNormalUp = new Vector3();\n const instanceNormalForward = new Vector3();\n const instanceRotation = new Matrix3();\n const instanceQuaternion = new Quaternion();\n const instanceScale = new Vector3();\n const instanceTranslationRotationScale = {};\n const instanceTransform = new Matrix4();\n const scratch1 = [];\n const scratch2 = [];\n const scratchVector1 = new Vector3();\n const scratchVector2 = new Vector3();\n\n for (let i = 0; i < instancesLength; i++) {\n let position;\n\n // Get the instance position\n if (featureTable.hasProperty('POSITION')) {\n position = featureTable.getProperty('POSITION', GL.FLOAT, 3, i, instancePosition);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n position = featureTable.getProperty(\n 'POSITION_QUANTIZED',\n GL.UNSIGNED_SHORT,\n 3,\n i,\n instancePosition\n );\n\n const quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3,\n scratchVector1\n );\n if (!quantizedVolumeOffset) {\n throw new Error(\n 'i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.'\n );\n }\n\n const quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3,\n scratchVector2\n );\n if (!quantizedVolumeScale) {\n throw new Error(\n 'i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.'\n );\n }\n\n const MAX_UNSIGNED_SHORT = 65535.0;\n for (let j = 0; j < 3; j++) {\n position[j] =\n (position[j] / MAX_UNSIGNED_SHORT) * quantizedVolumeScale[j] + quantizedVolumeOffset[j];\n }\n }\n\n if (!position) {\n throw new Error('i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.');\n }\n\n instancePosition.copy(position);\n // @ts-expect-error\n instanceTranslationRotationScale.translation = instancePosition;\n\n // Get the instance rotation\n tile.normalUp = featureTable.getProperty('NORMAL_UP', GL.FLOAT, 3, i, scratch1);\n tile.normalRight = featureTable.getProperty('NORMAL_RIGHT', GL.FLOAT, 3, i, scratch2);\n\n const hasCustomOrientation = false;\n if (tile.normalUp) {\n if (!tile.normalRight) {\n throw new Error('i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.');\n }\n // Vector3.unpack(normalUp, 0, instanceNormalUp);\n // Vector3.unpack(normalRight, 0, instanceNormalRight);\n tile.hasCustomOrientation = true;\n } else {\n tile.octNormalUp = featureTable.getProperty(\n 'NORMAL_UP_OCT32P',\n GL.UNSIGNED_SHORT,\n 2,\n scratch1\n );\n tile.octNormalRight = featureTable.getProperty(\n 'NORMAL_RIGHT_OCT32P',\n GL.UNSIGNED_SHORT,\n 2,\n scratch2\n );\n\n if (tile.octNormalUp) {\n if (!tile.octNormalRight) {\n throw new Error(\n 'i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P'\n );\n }\n\n throw new Error('i3dm: oct-encoded orientation not implemented');\n /*\n AttributeCompression.octDecodeInRange(octNormalUp[0], octNormalUp[1], 65535, instanceNormalUp);\n AttributeCompression.octDecodeInRange(octNormalRight[0], octNormalRight[1], 65535, instanceNormalRight);\n hasCustomOrientation = true;\n */\n } else if (tile.eastNorthUp) {\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);\n instanceTransform.getRotationMatrix3(instanceRotation);\n } else {\n instanceRotation.identity();\n }\n }\n\n if (hasCustomOrientation) {\n instanceNormalForward.copy(instanceNormalRight).cross(instanceNormalUp).normalize();\n instanceRotation.setColumn(0, instanceNormalRight);\n instanceRotation.setColumn(1, instanceNormalUp);\n instanceRotation.setColumn(2, instanceNormalForward);\n }\n\n instanceQuaternion.fromMatrix3(instanceRotation);\n // @ts-expect-error\n instanceTranslationRotationScale.rotation = instanceQuaternion;\n\n // Get the instance scale\n instanceScale.set(1.0, 1.0, 1.0);\n const scale = featureTable.getProperty('SCALE', GL.FLOAT, 1, i);\n if (Number.isFinite(scale)) {\n instanceScale.multiplyByScalar(scale);\n }\n const nonUniformScale = featureTable.getProperty('SCALE_NON_UNIFORM', GL.FLOAT, 3, i, scratch1);\n if (nonUniformScale) {\n instanceScale.scale(nonUniformScale);\n }\n\n // @ts-expect-error\n instanceTranslationRotationScale.scale = instanceScale;\n\n // Get the batchId\n let batchId = featureTable.getProperty('BATCH_ID', GL.UNSIGNED_SHORT, 1, i);\n if (batchId === undefined) {\n // If BATCH_ID semantic is undefined, batchId is just the instance number\n batchId = i;\n }\n\n // @ts-expect-error\n const rotationMatrix = new Matrix4().fromQuaternion(instanceTranslationRotationScale.rotation);\n\n // Create the model matrix and the instance\n instanceTransform.identity();\n // @ts-expect-error\n instanceTransform.translate(instanceTranslationRotationScale.translation);\n instanceTransform.multiplyRight(rotationMatrix);\n // @ts-expect-error\n instanceTransform.scale(instanceTranslationRotationScale.scale);\n\n const modelMatrix = instanceTransform.clone();\n instances[i] = {\n modelMatrix,\n batchId\n };\n }\n\n tile.instances = instances;\n}\n"],"file":"parse-3d-tile-instanced-model.js"}
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-instanced-model.js","names":["parseInstancedModel3DTile","tile","arrayBuffer","byteOffset","options","context","parseInstancedModel","extractGLTF","gltfFormat","parse3DTileHeaderSync","version","Error","parse3DTileTablesHeaderSync","view","DataView","getUint32","parse3DTileTablesSync","parse3DTileGLTFViewSync","featureTableJsonByteLength","featureTable","Tile3DFeatureTable","featureTableJson","featureTableBinary","instancesLength","getGlobalProperty","featuresLength","Number","isFinite","eastNorthUp","rtcCenter","GL","FLOAT","batchTable","Tile3DBatchTable","batchTableJson","batchTableBinary","extractInstancedAttributes","collectionOptions","instances","Array","_batchTable","cull","url","undefined","gltf","basePath","incrementallyLoadTextures","forwardAxis","instancePosition","Vector3","instanceNormalRight","instanceNormalUp","instanceNormalForward","instanceRotation","Matrix3","instanceQuaternion","Quaternion","instanceScale","instanceTranslationRotationScale","instanceTransform","Matrix4","scratch1","scratch2","scratchVector1","scratchVector2","i","position","hasProperty","getProperty","UNSIGNED_SHORT","quantizedVolumeOffset","quantizedVolumeScale","MAX_UNSIGNED_SHORT","j","copy","translation","normalUp","normalRight","hasCustomOrientation","octNormalUp","octNormalRight","Ellipsoid","WGS84","eastNorthUpToFixedFrame","getRotationMatrix3","identity","cross","normalize","setColumn","fromMatrix3","rotation","set","scale","multiplyByScalar","nonUniformScale","batchId","rotationMatrix","fromQuaternion","translate","multiplyRight","modelMatrix","clone"],"sources":["../../../../src/lib/parsers/parse-3d-tile-instanced-model.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {Vector3, Matrix3, Matrix4, Quaternion} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {GL} from '@loaders.gl/math'; // 'math.gl/geometry';\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\n\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {parse3DTileGLTFViewSync, extractGLTF} from './helpers/parse-3d-tile-gltf-view';\n\nexport async function parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);\n await extractGLTF(tile, tile.gltfFormat, options, context);\n return byteOffset;\n}\n\nfunction parseInstancedModel(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n if (tile.version !== 1) {\n throw new Error(`Instanced 3D Model version ${tile.version} is not supported`);\n }\n\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n\n const view = new DataView(arrayBuffer);\n\n tile.gltfFormat = view.getUint32(byteOffset, true);\n byteOffset += 4;\n\n // PARSE FEATURE TABLE\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n\n byteOffset = parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options);\n\n // TODO - Is the feature table sometimes optional or can check be moved into table header parser?\n if (tile.featureTableJsonByteLength === 0) {\n throw new Error('i3dm parser: featureTableJsonByteLength is zero.');\n }\n\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const instancesLength = featureTable.getGlobalProperty('INSTANCES_LENGTH');\n featureTable.featuresLength = instancesLength;\n\n if (!Number.isFinite(instancesLength)) {\n throw new Error('i3dm parser: INSTANCES_LENGTH must be defined');\n }\n\n tile.eastNorthUp = featureTable.getGlobalProperty('EAST_NORTH_UP');\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = new Tile3DBatchTable(\n tile.batchTableJson,\n tile.batchTableBinary,\n instancesLength\n );\n\n extractInstancedAttributes(tile, featureTable, batchTable, instancesLength);\n\n return byteOffset;\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction extractInstancedAttributes(tile, featureTable, batchTable, instancesLength) {\n // Create model instance collection\n const collectionOptions = {\n instances: new Array(instancesLength),\n batchTable: tile._batchTable,\n cull: false, // Already culled by 3D Tiles\n url: undefined,\n // requestType: RequestType.TILES3D,\n gltf: undefined,\n basePath: undefined,\n incrementallyLoadTextures: false,\n // TODO - tileset is not available at this stage, tile is parsed independently\n // upAxis: (tileset && tileset._gltfUpAxis) || [0, 1, 0],\n forwardAxis: [1, 0, 0]\n };\n\n const instances = collectionOptions.instances;\n const instancePosition = new Vector3();\n const instanceNormalRight = new Vector3();\n const instanceNormalUp = new Vector3();\n const instanceNormalForward = new Vector3();\n const instanceRotation = new Matrix3();\n const instanceQuaternion = new Quaternion();\n const instanceScale = new Vector3();\n const instanceTranslationRotationScale = {};\n const instanceTransform = new Matrix4();\n const scratch1 = [];\n const scratch2 = [];\n const scratchVector1 = new Vector3();\n const scratchVector2 = new Vector3();\n\n for (let i = 0; i < instancesLength; i++) {\n let position;\n\n // Get the instance position\n if (featureTable.hasProperty('POSITION')) {\n position = featureTable.getProperty('POSITION', GL.FLOAT, 3, i, instancePosition);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n position = featureTable.getProperty(\n 'POSITION_QUANTIZED',\n GL.UNSIGNED_SHORT,\n 3,\n i,\n instancePosition\n );\n\n const quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3,\n scratchVector1\n );\n if (!quantizedVolumeOffset) {\n throw new Error(\n 'i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.'\n );\n }\n\n const quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3,\n scratchVector2\n );\n if (!quantizedVolumeScale) {\n throw new Error(\n 'i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.'\n );\n }\n\n const MAX_UNSIGNED_SHORT = 65535.0;\n for (let j = 0; j < 3; j++) {\n position[j] =\n (position[j] / MAX_UNSIGNED_SHORT) * quantizedVolumeScale[j] + quantizedVolumeOffset[j];\n }\n }\n\n if (!position) {\n throw new Error('i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.');\n }\n\n instancePosition.copy(position);\n // @ts-expect-error\n instanceTranslationRotationScale.translation = instancePosition;\n\n // Get the instance rotation\n tile.normalUp = featureTable.getProperty('NORMAL_UP', GL.FLOAT, 3, i, scratch1);\n tile.normalRight = featureTable.getProperty('NORMAL_RIGHT', GL.FLOAT, 3, i, scratch2);\n\n const hasCustomOrientation = false;\n if (tile.normalUp) {\n if (!tile.normalRight) {\n throw new Error('i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.');\n }\n // Vector3.unpack(normalUp, 0, instanceNormalUp);\n // Vector3.unpack(normalRight, 0, instanceNormalRight);\n tile.hasCustomOrientation = true;\n } else {\n tile.octNormalUp = featureTable.getProperty(\n 'NORMAL_UP_OCT32P',\n GL.UNSIGNED_SHORT,\n 2,\n scratch1\n );\n tile.octNormalRight = featureTable.getProperty(\n 'NORMAL_RIGHT_OCT32P',\n GL.UNSIGNED_SHORT,\n 2,\n scratch2\n );\n\n if (tile.octNormalUp) {\n if (!tile.octNormalRight) {\n throw new Error(\n 'i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P'\n );\n }\n\n throw new Error('i3dm: oct-encoded orientation not implemented');\n /*\n AttributeCompression.octDecodeInRange(octNormalUp[0], octNormalUp[1], 65535, instanceNormalUp);\n AttributeCompression.octDecodeInRange(octNormalRight[0], octNormalRight[1], 65535, instanceNormalRight);\n hasCustomOrientation = true;\n */\n } else if (tile.eastNorthUp) {\n Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);\n instanceTransform.getRotationMatrix3(instanceRotation);\n } else {\n instanceRotation.identity();\n }\n }\n\n if (hasCustomOrientation) {\n instanceNormalForward.copy(instanceNormalRight).cross(instanceNormalUp).normalize();\n instanceRotation.setColumn(0, instanceNormalRight);\n instanceRotation.setColumn(1, instanceNormalUp);\n instanceRotation.setColumn(2, instanceNormalForward);\n }\n\n instanceQuaternion.fromMatrix3(instanceRotation);\n // @ts-expect-error\n instanceTranslationRotationScale.rotation = instanceQuaternion;\n\n // Get the instance scale\n instanceScale.set(1.0, 1.0, 1.0);\n const scale = featureTable.getProperty('SCALE', GL.FLOAT, 1, i);\n if (Number.isFinite(scale)) {\n instanceScale.multiplyByScalar(scale);\n }\n const nonUniformScale = featureTable.getProperty('SCALE_NON_UNIFORM', GL.FLOAT, 3, i, scratch1);\n if (nonUniformScale) {\n instanceScale.scale(nonUniformScale);\n }\n\n // @ts-expect-error\n instanceTranslationRotationScale.scale = instanceScale;\n\n // Get the batchId\n let batchId = featureTable.getProperty('BATCH_ID', GL.UNSIGNED_SHORT, 1, i);\n if (batchId === undefined) {\n // If BATCH_ID semantic is undefined, batchId is just the instance number\n batchId = i;\n }\n\n // @ts-expect-error\n const rotationMatrix = new Matrix4().fromQuaternion(instanceTranslationRotationScale.rotation);\n\n // Create the model matrix and the instance\n instanceTransform.identity();\n // @ts-expect-error\n instanceTransform.translate(instanceTranslationRotationScale.translation);\n instanceTransform.multiplyRight(rotationMatrix);\n // @ts-expect-error\n instanceTransform.scale(instanceTranslationRotationScale.scale);\n\n const modelMatrix = instanceTransform.clone();\n instances[i] = {\n modelMatrix,\n batchId\n };\n }\n\n tile.instances = instances;\n}\n"],"mappings":"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"}
|