@loaders.gl/i3s 3.3.0-alpha.5 → 3.3.0-alpha.7
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 +984 -1291
- package/dist/es5/arcgis-webscene-loader.js +2 -8
- package/dist/es5/arcgis-webscene-loader.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/i3s-attribute-loader.js +19 -60
- package/dist/es5/i3s-attribute-loader.js.map +1 -1
- package/dist/es5/i3s-building-scene-layer-loader.js +1 -10
- package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
- package/dist/es5/i3s-content-loader.js +1 -14
- package/dist/es5/i3s-content-loader.js.map +1 -1
- package/dist/es5/i3s-loader.js +7 -45
- package/dist/es5/i3s-loader.js.map +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -12
- package/dist/es5/i3s-node-page-loader.js.map +1 -1
- package/dist/es5/index.js +12 -18
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +18 -78
- package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/constants.js +2 -18
- package/dist/es5/lib/parsers/constants.js.map +1 -1
- package/dist/es5/lib/parsers/parse-arcgis-webscene.js +128 -30
- package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -1
- package/dist/es5/lib/parsers/parse-i3s-attribute.js +1 -23
- package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -1
- package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +8 -25
- package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -1
- package/dist/es5/lib/parsers/parse-i3s-tile-content.js +10 -124
- package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
- package/dist/es5/lib/parsers/parse-i3s.js +5 -36
- package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +0 -7
- package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -1
- package/dist/es5/lib/utils/customizeColors.js +4 -53
- package/dist/es5/lib/utils/customizeColors.js.map +1 -1
- package/dist/es5/lib/utils/url-utils.js +3 -8
- package/dist/es5/lib/utils/url-utils.js.map +1 -1
- package/dist/es5/types.js +0 -3
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/workers/i3s-content-nodejs-worker.js +0 -3
- package/dist/es5/workers/i3s-content-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/i3s-content-worker.js +0 -2
- package/dist/es5/workers/i3s-content-worker.js.map +1 -1
- package/dist/esm/arcgis-webscene-loader.js +3 -1
- package/dist/esm/arcgis-webscene-loader.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/i3s-attribute-loader.js +8 -25
- package/dist/esm/i3s-attribute-loader.js.map +1 -1
- package/dist/esm/i3s-building-scene-layer-loader.js +2 -3
- package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
- package/dist/esm/i3s-content-loader.js +2 -4
- package/dist/esm/i3s-content-loader.js.map +1 -1
- package/dist/esm/i3s-loader.js +4 -13
- package/dist/esm/i3s-loader.js.map +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -2
- package/dist/esm/i3s-node-page-loader.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +2 -45
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/constants.js +1 -10
- package/dist/esm/lib/parsers/constants.js.map +1 -1
- package/dist/esm/lib/parsers/parse-arcgis-webscene.js +50 -11
- package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s-attribute.js +1 -8
- package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +1 -4
- package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s-tile-content.js +23 -71
- package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s.js +15 -17
- package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -1
- package/dist/esm/lib/utils/customizeColors.js +24 -36
- package/dist/esm/lib/utils/customizeColors.js.map +1 -1
- package/dist/esm/lib/utils/url-utils.js +5 -5
- package/dist/esm/lib/utils/url-utils.js.map +1 -1
- package/dist/esm/types.js +0 -3
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/workers/i3s-content-nodejs-worker.js.map +1 -1
- package/dist/esm/workers/i3s-content-worker.js.map +1 -1
- package/dist/i3s-content-nodejs-worker.js +61 -60
- package/dist/i3s-content-nodejs-worker.js.map +3 -3
- package/dist/i3s-content-worker.js +490 -1020
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -1
- package/dist/lib/parsers/parse-arcgis-webscene.js +49 -7
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/index.ts +2 -1
- package/src/lib/parsers/parse-arcgis-webscene.ts +57 -7
- package/src/types.ts +1 -0
|
@@ -1,46 +1,28 @@
|
|
|
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.default = void 0;
|
|
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
-
|
|
20
13
|
var _core = require("@loaders.gl/core");
|
|
21
|
-
|
|
22
14
|
var _textures = require("@loaders.gl/textures");
|
|
23
|
-
|
|
24
15
|
var _i3sNodePageLoader = require("../../i3s-node-page-loader");
|
|
25
|
-
|
|
26
16
|
var _parseI3s = require("../parsers/parse-i3s");
|
|
27
|
-
|
|
28
17
|
var _urlUtils = require("../utils/url-utils");
|
|
29
|
-
|
|
30
18
|
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; } } }; }
|
|
31
|
-
|
|
32
19
|
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); }
|
|
33
|
-
|
|
34
20
|
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; }
|
|
35
|
-
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
39
|
-
|
|
21
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
40
23
|
var I3SNodePagesTiles = function () {
|
|
41
24
|
function I3SNodePagesTiles(tileset, options) {
|
|
42
25
|
var _tileset$nodePages, _tileset$nodePages2;
|
|
43
|
-
|
|
44
26
|
(0, _classCallCheck2.default)(this, I3SNodePagesTiles);
|
|
45
27
|
(0, _defineProperty2.default)(this, "tileset", void 0);
|
|
46
28
|
(0, _defineProperty2.default)(this, "nodePages", []);
|
|
@@ -64,18 +46,15 @@ var I3SNodePagesTiles = function () {
|
|
|
64
46
|
value: function () {
|
|
65
47
|
var _getNodeById = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(id) {
|
|
66
48
|
var pageIndex, _this$options$i3s, nodePageUrl, nodeIndex;
|
|
67
|
-
|
|
68
49
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
69
50
|
while (1) {
|
|
70
51
|
switch (_context.prev = _context.next) {
|
|
71
52
|
case 0:
|
|
72
53
|
pageIndex = Math.floor(id / this.nodesPerPage);
|
|
73
|
-
|
|
74
54
|
if (!(!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex])) {
|
|
75
55
|
_context.next = 9;
|
|
76
56
|
break;
|
|
77
57
|
}
|
|
78
|
-
|
|
79
58
|
nodePageUrl = (0, _urlUtils.getUrlWithToken)("".concat(this.tileset.url, "/nodepages/").concat(pageIndex), (_this$options$i3s = this.options.i3s) === null || _this$options$i3s === void 0 ? void 0 : _this$options$i3s.token);
|
|
80
59
|
this.pendingNodePages[pageIndex] = {
|
|
81
60
|
status: 'Pending',
|
|
@@ -83,28 +62,22 @@ var I3SNodePagesTiles = function () {
|
|
|
83
62
|
};
|
|
84
63
|
_context.next = 6;
|
|
85
64
|
return this.pendingNodePages[pageIndex].promise;
|
|
86
|
-
|
|
87
65
|
case 6:
|
|
88
66
|
this.nodePages[pageIndex] = _context.sent;
|
|
89
67
|
this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
|
|
90
68
|
this.pendingNodePages[pageIndex].status = 'Done';
|
|
91
|
-
|
|
92
69
|
case 9:
|
|
93
70
|
if (!(this.pendingNodePages[pageIndex].status === 'Pending')) {
|
|
94
71
|
_context.next = 13;
|
|
95
72
|
break;
|
|
96
73
|
}
|
|
97
|
-
|
|
98
74
|
_context.next = 12;
|
|
99
75
|
return this.pendingNodePages[pageIndex].promise;
|
|
100
|
-
|
|
101
76
|
case 12:
|
|
102
77
|
this.nodePages[pageIndex] = _context.sent;
|
|
103
|
-
|
|
104
78
|
case 13:
|
|
105
79
|
nodeIndex = id % this.nodesPerPage;
|
|
106
80
|
return _context.abrupt("return", this.nodePages[pageIndex].nodes[nodeIndex]);
|
|
107
|
-
|
|
108
81
|
case 15:
|
|
109
82
|
case "end":
|
|
110
83
|
return _context.stop();
|
|
@@ -112,11 +85,9 @@ var I3SNodePagesTiles = function () {
|
|
|
112
85
|
}
|
|
113
86
|
}, _callee, this);
|
|
114
87
|
}));
|
|
115
|
-
|
|
116
88
|
function getNodeById(_x) {
|
|
117
89
|
return _getNodeById.apply(this, arguments);
|
|
118
90
|
}
|
|
119
|
-
|
|
120
91
|
return getNodeById;
|
|
121
92
|
}()
|
|
122
93
|
}, {
|
|
@@ -124,20 +95,17 @@ var I3SNodePagesTiles = function () {
|
|
|
124
95
|
value: function () {
|
|
125
96
|
var _formTileFromNodePages = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(id) {
|
|
126
97
|
var node, children, childNodesPromises, _iterator, _step, child, childNodes, _iterator2, _step2, childNode, contentUrl, textureUrl, materialDefinition, textureFormat, attributeUrls, isDracoGeometry, _ref, url, isDracoGeometryResult, _this$getInformationF, textureData, nodeMaterialDefinition, lodSelection;
|
|
127
|
-
|
|
128
98
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
129
99
|
while (1) {
|
|
130
100
|
switch (_context2.prev = _context2.next) {
|
|
131
101
|
case 0:
|
|
132
102
|
_context2.next = 2;
|
|
133
103
|
return this.getNodeById(id);
|
|
134
|
-
|
|
135
104
|
case 2:
|
|
136
105
|
node = _context2.sent;
|
|
137
106
|
children = [];
|
|
138
107
|
childNodesPromises = [];
|
|
139
108
|
_iterator = _createForOfIteratorHelper(node.children || []);
|
|
140
|
-
|
|
141
109
|
try {
|
|
142
110
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
143
111
|
child = _step.value;
|
|
@@ -148,14 +116,11 @@ var I3SNodePagesTiles = function () {
|
|
|
148
116
|
} finally {
|
|
149
117
|
_iterator.f();
|
|
150
118
|
}
|
|
151
|
-
|
|
152
119
|
_context2.next = 9;
|
|
153
120
|
return Promise.all(childNodesPromises);
|
|
154
|
-
|
|
155
121
|
case 9:
|
|
156
122
|
childNodes = _context2.sent;
|
|
157
123
|
_iterator2 = _createForOfIteratorHelper(childNodes);
|
|
158
|
-
|
|
159
124
|
try {
|
|
160
125
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
161
126
|
childNode = _step2.value;
|
|
@@ -169,11 +134,9 @@ var I3SNodePagesTiles = function () {
|
|
|
169
134
|
} finally {
|
|
170
135
|
_iterator2.f();
|
|
171
136
|
}
|
|
172
|
-
|
|
173
137
|
textureFormat = 'jpg';
|
|
174
138
|
attributeUrls = [];
|
|
175
139
|
isDracoGeometry = false;
|
|
176
|
-
|
|
177
140
|
if (node && node.mesh) {
|
|
178
141
|
_ref = node.mesh.geometry && this.getContentUrl(node.mesh.geometry) || {
|
|
179
142
|
isDracoGeometry: false
|
|
@@ -183,16 +146,13 @@ var I3SNodePagesTiles = function () {
|
|
|
183
146
|
_this$getInformationF = this.getInformationFromMaterial(node.mesh.material), textureData = _this$getInformationF.textureData, nodeMaterialDefinition = _this$getInformationF.materialDefinition;
|
|
184
147
|
materialDefinition = nodeMaterialDefinition;
|
|
185
148
|
textureFormat = textureData.format || textureFormat;
|
|
186
|
-
|
|
187
149
|
if (textureData.name) {
|
|
188
150
|
textureUrl = "".concat(this.tileset.url, "/nodes/").concat(node.mesh.material.resource, "/textures/").concat(textureData.name);
|
|
189
151
|
}
|
|
190
|
-
|
|
191
152
|
if (this.tileset.attributeStorageInfo) {
|
|
192
153
|
attributeUrls = (0, _urlUtils.generateTilesetAttributeUrls)(this.tileset, node.mesh.attribute.resource);
|
|
193
154
|
}
|
|
194
155
|
}
|
|
195
|
-
|
|
196
156
|
lodSelection = this.getLodSelection(node);
|
|
197
157
|
return _context2.abrupt("return", (0, _parseI3s.normalizeTileNonUrlData)({
|
|
198
158
|
id: id.toString(),
|
|
@@ -207,7 +167,6 @@ var I3SNodePagesTiles = function () {
|
|
|
207
167
|
children: children,
|
|
208
168
|
isDracoGeometry: isDracoGeometry
|
|
209
169
|
}));
|
|
210
|
-
|
|
211
170
|
case 18:
|
|
212
171
|
case "end":
|
|
213
172
|
return _context2.stop();
|
|
@@ -215,32 +174,28 @@ var I3SNodePagesTiles = function () {
|
|
|
215
174
|
}
|
|
216
175
|
}, _callee2, this);
|
|
217
176
|
}));
|
|
218
|
-
|
|
219
177
|
function formTileFromNodePages(_x2) {
|
|
220
178
|
return _formTileFromNodePages.apply(this, arguments);
|
|
221
179
|
}
|
|
222
|
-
|
|
223
180
|
return formTileFromNodePages;
|
|
224
181
|
}()
|
|
225
182
|
}, {
|
|
226
183
|
key: "getContentUrl",
|
|
227
|
-
value:
|
|
184
|
+
value:
|
|
185
|
+
function getContentUrl(meshGeometryData) {
|
|
228
186
|
var result = null;
|
|
229
187
|
var geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];
|
|
230
188
|
var geometryIndex = -1;
|
|
231
|
-
|
|
232
189
|
if (this.options.i3s && this.options.i3s.useDracoGeometry) {
|
|
233
190
|
geometryIndex = geometryDefinition.geometryBuffers.findIndex(function (buffer) {
|
|
234
191
|
return buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco';
|
|
235
192
|
});
|
|
236
193
|
}
|
|
237
|
-
|
|
238
194
|
if (geometryIndex === -1) {
|
|
239
195
|
geometryIndex = geometryDefinition.geometryBuffers.findIndex(function (buffer) {
|
|
240
196
|
return !buffer.compressedAttributes;
|
|
241
197
|
});
|
|
242
198
|
}
|
|
243
|
-
|
|
244
199
|
if (geometryIndex !== -1) {
|
|
245
200
|
var isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
|
|
246
201
|
result = {
|
|
@@ -248,90 +203,80 @@ var I3SNodePagesTiles = function () {
|
|
|
248
203
|
isDracoGeometry: isDracoGeometry
|
|
249
204
|
};
|
|
250
205
|
}
|
|
251
|
-
|
|
252
206
|
return result;
|
|
253
207
|
}
|
|
208
|
+
|
|
254
209
|
}, {
|
|
255
210
|
key: "getLodSelection",
|
|
256
|
-
value:
|
|
211
|
+
value:
|
|
212
|
+
function getLodSelection(node) {
|
|
257
213
|
var lodSelection = [];
|
|
258
|
-
|
|
259
214
|
if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {
|
|
260
215
|
lodSelection.push({
|
|
261
216
|
metricType: 'maxScreenThreshold',
|
|
262
217
|
maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))
|
|
263
218
|
});
|
|
264
219
|
}
|
|
265
|
-
|
|
266
220
|
lodSelection.push({
|
|
267
221
|
metricType: this.lodSelectionMetricType,
|
|
268
222
|
maxError: node.lodThreshold
|
|
269
223
|
});
|
|
270
224
|
return lodSelection;
|
|
271
225
|
}
|
|
226
|
+
|
|
272
227
|
}, {
|
|
273
228
|
key: "getInformationFromMaterial",
|
|
274
|
-
value:
|
|
229
|
+
value:
|
|
230
|
+
function getInformationFromMaterial(material) {
|
|
275
231
|
var informationFromMaterial = {
|
|
276
232
|
textureData: {
|
|
277
233
|
name: null
|
|
278
234
|
}
|
|
279
235
|
};
|
|
280
|
-
|
|
281
236
|
if (material) {
|
|
282
237
|
var _this$tileset$materia;
|
|
283
|
-
|
|
284
238
|
var materialDefinition = (_this$tileset$materia = this.tileset.materialDefinitions) === null || _this$tileset$materia === void 0 ? void 0 : _this$tileset$materia[material.definition];
|
|
285
|
-
|
|
286
239
|
if (materialDefinition) {
|
|
287
240
|
var _materialDefinition$p, _materialDefinition$p2;
|
|
288
|
-
|
|
289
241
|
informationFromMaterial.materialDefinition = materialDefinition;
|
|
290
242
|
var textureSetDefinitionIndex = materialDefinition === null || materialDefinition === void 0 ? void 0 : (_materialDefinition$p = materialDefinition.pbrMetallicRoughness) === null || _materialDefinition$p === void 0 ? void 0 : (_materialDefinition$p2 = _materialDefinition$p.baseColorTexture) === null || _materialDefinition$p2 === void 0 ? void 0 : _materialDefinition$p2.textureSetDefinitionId;
|
|
291
|
-
|
|
292
243
|
if (typeof textureSetDefinitionIndex === 'number') {
|
|
293
244
|
informationFromMaterial.textureData = this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] || informationFromMaterial.textureData;
|
|
294
245
|
}
|
|
295
246
|
}
|
|
296
247
|
}
|
|
297
|
-
|
|
298
248
|
return informationFromMaterial;
|
|
299
249
|
}
|
|
250
|
+
|
|
300
251
|
}, {
|
|
301
252
|
key: "initSelectedFormatsForTextureDefinitions",
|
|
302
|
-
value:
|
|
253
|
+
value:
|
|
254
|
+
function initSelectedFormatsForTextureDefinitions(tileset) {
|
|
303
255
|
this.textureDefinitionsSelectedFormats = [];
|
|
304
256
|
var possibleI3sFormats = this.getSupportedTextureFormats();
|
|
305
257
|
var textureSetDefinitions = tileset.textureSetDefinitions || [];
|
|
306
|
-
|
|
307
258
|
var _iterator3 = _createForOfIteratorHelper(textureSetDefinitions),
|
|
308
|
-
|
|
309
|
-
|
|
259
|
+
_step3;
|
|
310
260
|
try {
|
|
311
261
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
312
262
|
var textureSetDefinition = _step3.value;
|
|
313
263
|
var formats = textureSetDefinition && textureSetDefinition.formats || [];
|
|
314
264
|
var selectedFormat = null;
|
|
315
|
-
|
|
316
265
|
var _iterator4 = _createForOfIteratorHelper(possibleI3sFormats),
|
|
317
|
-
|
|
318
|
-
|
|
266
|
+
_step4;
|
|
319
267
|
try {
|
|
320
268
|
var _loop = function _loop() {
|
|
321
269
|
var i3sFormat = _step4.value;
|
|
322
270
|
var format = formats.find(function (value) {
|
|
323
271
|
return value.format === i3sFormat;
|
|
324
272
|
});
|
|
325
|
-
|
|
326
273
|
if (format) {
|
|
327
274
|
selectedFormat = format;
|
|
328
275
|
return "break";
|
|
329
276
|
}
|
|
330
277
|
};
|
|
331
|
-
|
|
332
278
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
333
279
|
var _ret = _loop();
|
|
334
|
-
|
|
335
280
|
if (_ret === "break") break;
|
|
336
281
|
}
|
|
337
282
|
} catch (err) {
|
|
@@ -339,7 +284,6 @@ var I3SNodePagesTiles = function () {
|
|
|
339
284
|
} finally {
|
|
340
285
|
_iterator4.f();
|
|
341
286
|
}
|
|
342
|
-
|
|
343
287
|
if (selectedFormat && selectedFormat.format === 'ktx2') {
|
|
344
288
|
this.textureLoaderOptions.basis = {
|
|
345
289
|
format: (0, _textures.selectSupportedBasisFormat)(),
|
|
@@ -347,7 +291,6 @@ var I3SNodePagesTiles = function () {
|
|
|
347
291
|
module: 'encoder'
|
|
348
292
|
};
|
|
349
293
|
}
|
|
350
|
-
|
|
351
294
|
this.textureDefinitionsSelectedFormats.push(selectedFormat);
|
|
352
295
|
}
|
|
353
296
|
} catch (err) {
|
|
@@ -356,25 +299,23 @@ var I3SNodePagesTiles = function () {
|
|
|
356
299
|
_iterator3.f();
|
|
357
300
|
}
|
|
358
301
|
}
|
|
302
|
+
|
|
359
303
|
}, {
|
|
360
304
|
key: "getSupportedTextureFormats",
|
|
361
|
-
value:
|
|
305
|
+
value:
|
|
306
|
+
function getSupportedTextureFormats() {
|
|
362
307
|
var formats = [];
|
|
363
|
-
|
|
364
308
|
if (!this.options.i3s || this.options.i3s.useCompressedTextures) {
|
|
365
309
|
var supportedCompressedFormats = (0, _textures.getSupportedGPUTextureFormats)();
|
|
366
|
-
|
|
367
310
|
if (supportedCompressedFormats.has('etc2')) {
|
|
368
311
|
formats.push('ktx-etc2');
|
|
369
312
|
}
|
|
370
|
-
|
|
371
313
|
if (supportedCompressedFormats.has('dxt')) {
|
|
372
314
|
formats.push('dds');
|
|
373
315
|
}
|
|
374
316
|
|
|
375
317
|
formats.push('ktx2');
|
|
376
318
|
}
|
|
377
|
-
|
|
378
319
|
formats.push('jpg');
|
|
379
320
|
formats.push('png');
|
|
380
321
|
return formats;
|
|
@@ -382,6 +323,5 @@ var I3SNodePagesTiles = function () {
|
|
|
382
323
|
}]);
|
|
383
324
|
return I3SNodePagesTiles;
|
|
384
325
|
}();
|
|
385
|
-
|
|
386
326
|
exports.default = I3SNodePagesTiles;
|
|
387
327
|
//# sourceMappingURL=i3s-nodepages-tiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":["I3SNodePagesTiles","tileset","options","nodesPerPage","nodePages","lodSelectionMetricType","nodesInNodePages","initSelectedFormatsForTextureDefinitions","id","pageIndex","Math","floor","pendingNodePages","nodePageUrl","url","i3s","token","status","promise","I3SNodePageLoader","nodes","length","nodeIndex","getNodeById","node","children","childNodesPromises","child","push","Promise","all","childNodes","childNode","index","toString","obb","textureFormat","attributeUrls","isDracoGeometry","mesh","geometry","getContentUrl","isDracoGeometryResult","contentUrl","getInformationFromMaterial","material","textureData","nodeMaterialDefinition","materialDefinition","format","name","textureUrl","resource","attributeStorageInfo","attribute","lodSelection","getLodSelection","textureLoaderOptions","meshGeometryData","result","geometryDefinition","geometryDefinitions","definition","geometryIndex","useDracoGeometry","geometryBuffers","findIndex","buffer","compressedAttributes","encoding","Boolean","metricType","maxError","sqrt","lodThreshold","PI","informationFromMaterial","materialDefinitions","textureSetDefinitionIndex","pbrMetallicRoughness","baseColorTexture","textureSetDefinitionId","textureDefinitionsSelectedFormats","possibleI3sFormats","getSupportedTextureFormats","textureSetDefinitions","textureSetDefinition","formats","selectedFormat","i3sFormat","find","value","basis","containerFormat","module","useCompressedTextures","supportedCompressedFormats","has"],"mappings":"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","sourcesContent":["import {load} from '@loaders.gl/core';\nimport {getSupportedGPUTextureFormats, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport {I3SNodePageLoader} from '../../i3s-node-page-loader';\nimport {normalizeTileNonUrlData} from '../parsers/parse-i3s';\nimport {getUrlWithToken, generateTilesetAttributeUrls} from '../utils/url-utils';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {\n I3STilesetHeader,\n LodSelection,\n NodePage,\n NodeInPage,\n Obb,\n MeshMaterial,\n I3SMaterialDefinition,\n I3STextureFormat,\n MeshGeometry,\n I3STileHeader\n} from '../../types';\n\n/**\n * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them\n */\nexport default class I3SNodePagesTiles {\n tileset: I3STilesetHeader;\n nodePages: NodePage[] = [];\n pendingNodePages: {promise: Promise<NodePage>; status: 'Pending' | 'Done'}[] = [];\n nodesPerPage: number;\n options: LoaderOptions;\n lodSelectionMetricType?: string;\n textureDefinitionsSelectedFormats: ({format: I3STextureFormat; name: string} | null)[] = [];\n nodesInNodePages: number;\n private textureLoaderOptions: {[key: string]: any} = {};\n\n /**\n * @constructs\n * Create a I3SNodePagesTiles instance.\n * @param tileset - i3s tileset header ('layers/0')\n * @param options - i3s loader options\n */\n constructor(tileset: I3STilesetHeader, options: LoaderOptions) {\n this.tileset = {...tileset}; // spread the tileset to avoid circular reference\n this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;\n this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;\n this.options = options;\n this.nodesInNodePages = 0;\n\n this.initSelectedFormatsForTextureDefinitions(tileset);\n }\n\n /**\n * Loads some nodePage and return a particular node from it\n * @param id - id of node through all node pages\n */\n async getNodeById(id: number): Promise<NodeInPage> {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {\n const nodePageUrl = getUrlWithToken(\n `${this.tileset.url}/nodepages/${pageIndex}`,\n this.options.i3s?.token\n );\n this.pendingNodePages[pageIndex] = {\n status: 'Pending',\n promise: load(nodePageUrl, I3SNodePageLoader, this.options)\n };\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;\n this.pendingNodePages[pageIndex].status = 'Done';\n }\n if (this.pendingNodePages[pageIndex].status === 'Pending') {\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n }\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Forms tile header using node and tileset data\n * @param id - id of node through all node pages\n */\n // eslint-disable-next-line complexity, max-statements\n async formTileFromNodePages(id: number): Promise<I3STileHeader> {\n const node: NodeInPage = await this.getNodeById(id);\n const children: {id: string; obb: Obb}[] = [];\n const childNodesPromises: Promise<NodeInPage>[] = [];\n for (const child of node.children || []) {\n childNodesPromises.push(this.getNodeById(child));\n }\n\n const childNodes = await Promise.all(childNodesPromises);\n for (const childNode of childNodes) {\n children.push({\n id: childNode.index.toString(),\n obb: childNode.obb\n });\n }\n\n let contentUrl: string | undefined;\n let textureUrl: string | undefined;\n let materialDefinition: I3SMaterialDefinition | undefined;\n let textureFormat: I3STextureFormat = 'jpg';\n let attributeUrls: string[] = [];\n let isDracoGeometry: boolean = false;\n\n if (node && node.mesh) {\n // Get geometry resource URL and type (compressed / non-compressed)\n const {url, isDracoGeometry: isDracoGeometryResult} = (node.mesh.geometry &&\n this.getContentUrl(node.mesh.geometry)) || {isDracoGeometry: false};\n contentUrl = url;\n isDracoGeometry = isDracoGeometryResult;\n\n const {textureData, materialDefinition: nodeMaterialDefinition} =\n this.getInformationFromMaterial(node.mesh.material);\n materialDefinition = nodeMaterialDefinition;\n textureFormat = textureData.format || textureFormat;\n if (textureData.name) {\n textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;\n }\n\n if (this.tileset.attributeStorageInfo) {\n attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);\n }\n }\n\n const lodSelection = this.getLodSelection(node);\n\n return normalizeTileNonUrlData({\n id: id.toString(),\n lodSelection,\n obb: node.obb,\n contentUrl,\n textureUrl,\n attributeUrls,\n materialDefinition,\n textureFormat,\n textureLoaderOptions: this.textureLoaderOptions,\n children,\n isDracoGeometry\n });\n }\n\n /**\n * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset\n * @param - data about the node's mesh from the nodepage\n * @returns -\n * {string} url - url to the geometry resource\n * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry\n */\n private getContentUrl(meshGeometryData: MeshGeometry) {\n let result: {url: string; isDracoGeometry: boolean} | null = null;\n // @ts-ignore\n const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];\n let geometryIndex = -1;\n // Try to find DRACO geometryDefinition of `useDracoGeometry` option is set\n if (this.options.i3s && this.options.i3s.useDracoGeometry) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco'\n );\n }\n // If DRACO geometry is not applicable try to select non-compressed geometry\n if (geometryIndex === -1) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => !buffer.compressedAttributes\n );\n }\n if (geometryIndex !== -1) {\n const isDracoGeometry = Boolean(\n geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes\n );\n result = {\n url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,\n isDracoGeometry\n };\n }\n return result;\n }\n\n /**\n * Forms 1.6 compatible LOD selection object from a nodepage's node data\n * @param node - a node from nodepage\n * @returns- Array of LodSelection\n */\n private getLodSelection(node: NodeInPage): LodSelection[] {\n const lodSelection: LodSelection[] = [];\n if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {\n lodSelection.push({\n metricType: 'maxScreenThreshold',\n // @ts-ignore\n maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))\n });\n }\n lodSelection.push({\n metricType: this.lodSelectionMetricType,\n // @ts-ignore\n maxError: node.lodThreshold\n });\n return lodSelection;\n }\n\n /**\n * Returns information about texture and material from `materialDefinitions`\n * @param material - material data from nodepage\n * @returns - Couple {textureData, materialDefinition}\n * {string} textureData.name - path name of the texture\n * {string} textureData.format - format of the texture\n * materialDefinition - PBR-like material definition from `materialDefinitions`\n */\n private getInformationFromMaterial(material: MeshMaterial) {\n const informationFromMaterial: {\n textureData: {name: string | null; format?: I3STextureFormat};\n materialDefinition?: I3SMaterialDefinition;\n } = {textureData: {name: null}};\n\n if (material) {\n const materialDefinition = this.tileset.materialDefinitions?.[material.definition];\n if (materialDefinition) {\n informationFromMaterial.materialDefinition = materialDefinition;\n const textureSetDefinitionIndex =\n materialDefinition?.pbrMetallicRoughness?.baseColorTexture?.textureSetDefinitionId;\n\n if (typeof textureSetDefinitionIndex === 'number') {\n informationFromMaterial.textureData =\n this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] ||\n informationFromMaterial.textureData;\n }\n }\n }\n return informationFromMaterial;\n }\n\n /**\n * Sets preferable and supported format for each textureDefinition of the tileset\n * @param tileset - I3S layer data\n * @returns\n */\n private initSelectedFormatsForTextureDefinitions(tileset: I3STilesetHeader): void {\n this.textureDefinitionsSelectedFormats = [];\n const possibleI3sFormats = this.getSupportedTextureFormats();\n const textureSetDefinitions = tileset.textureSetDefinitions || [];\n for (const textureSetDefinition of textureSetDefinitions) {\n const formats = (textureSetDefinition && textureSetDefinition.formats) || [];\n let selectedFormat: {name: string; format: I3STextureFormat} | null = null;\n for (const i3sFormat of possibleI3sFormats) {\n const format = formats.find((value) => value.format === i3sFormat);\n if (format) {\n selectedFormat = format;\n break;\n }\n }\n // For I3S 1.8 need to define basis target format to decode\n if (selectedFormat && selectedFormat.format === 'ktx2') {\n this.textureLoaderOptions.basis = {\n format: selectSupportedBasisFormat(),\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n }\n\n this.textureDefinitionsSelectedFormats.push(selectedFormat);\n }\n }\n\n /**\n * Returns the array of supported texture format\n * @returns list of format strings\n */\n private getSupportedTextureFormats(): I3STextureFormat[] {\n const formats: I3STextureFormat[] = [];\n if (!this.options.i3s || this.options.i3s.useCompressedTextures) {\n // I3S 1.7 selection\n const supportedCompressedFormats = getSupportedGPUTextureFormats();\n // List of possible in i3s formats:\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md\n if (supportedCompressedFormats.has('etc2')) {\n formats.push('ktx-etc2');\n }\n if (supportedCompressedFormats.has('dxt')) {\n formats.push('dds');\n }\n\n // I3S 1.8 selection\n // ktx2 wraps basis texture which at the edge case can be decoded as uncompressed image\n formats.push('ktx2');\n }\n\n formats.push('jpg');\n formats.push('png');\n return formats;\n }\n}\n"],"file":"i3s-nodepages-tiles.js"}
|
|
1
|
+
{"version":3,"file":"i3s-nodepages-tiles.js","names":["I3SNodePagesTiles","tileset","options","nodesPerPage","nodePages","lodSelectionMetricType","nodesInNodePages","initSelectedFormatsForTextureDefinitions","id","pageIndex","Math","floor","pendingNodePages","nodePageUrl","getUrlWithToken","url","i3s","token","status","promise","load","I3SNodePageLoader","nodes","length","nodeIndex","getNodeById","node","children","childNodesPromises","child","push","Promise","all","childNodes","childNode","index","toString","obb","textureFormat","attributeUrls","isDracoGeometry","mesh","geometry","getContentUrl","isDracoGeometryResult","contentUrl","getInformationFromMaterial","material","textureData","nodeMaterialDefinition","materialDefinition","format","name","textureUrl","resource","attributeStorageInfo","generateTilesetAttributeUrls","attribute","lodSelection","getLodSelection","normalizeTileNonUrlData","textureLoaderOptions","meshGeometryData","result","geometryDefinition","geometryDefinitions","definition","geometryIndex","useDracoGeometry","geometryBuffers","findIndex","buffer","compressedAttributes","encoding","Boolean","metricType","maxError","sqrt","lodThreshold","PI","informationFromMaterial","materialDefinitions","textureSetDefinitionIndex","pbrMetallicRoughness","baseColorTexture","textureSetDefinitionId","textureDefinitionsSelectedFormats","possibleI3sFormats","getSupportedTextureFormats","textureSetDefinitions","textureSetDefinition","formats","selectedFormat","i3sFormat","find","value","basis","selectSupportedBasisFormat","containerFormat","module","useCompressedTextures","supportedCompressedFormats","getSupportedGPUTextureFormats","has"],"sources":["../../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"sourcesContent":["import {load} from '@loaders.gl/core';\nimport {getSupportedGPUTextureFormats, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport {I3SNodePageLoader} from '../../i3s-node-page-loader';\nimport {normalizeTileNonUrlData} from '../parsers/parse-i3s';\nimport {getUrlWithToken, generateTilesetAttributeUrls} from '../utils/url-utils';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {\n I3STilesetHeader,\n LodSelection,\n NodePage,\n NodeInPage,\n Obb,\n MeshMaterial,\n I3SMaterialDefinition,\n I3STextureFormat,\n MeshGeometry,\n I3STileHeader\n} from '../../types';\n\n/**\n * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them\n */\nexport default class I3SNodePagesTiles {\n tileset: I3STilesetHeader;\n nodePages: NodePage[] = [];\n pendingNodePages: {promise: Promise<NodePage>; status: 'Pending' | 'Done'}[] = [];\n nodesPerPage: number;\n options: LoaderOptions;\n lodSelectionMetricType?: string;\n textureDefinitionsSelectedFormats: ({format: I3STextureFormat; name: string} | null)[] = [];\n nodesInNodePages: number;\n private textureLoaderOptions: {[key: string]: any} = {};\n\n /**\n * @constructs\n * Create a I3SNodePagesTiles instance.\n * @param tileset - i3s tileset header ('layers/0')\n * @param options - i3s loader options\n */\n constructor(tileset: I3STilesetHeader, options: LoaderOptions) {\n this.tileset = {...tileset}; // spread the tileset to avoid circular reference\n this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;\n this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;\n this.options = options;\n this.nodesInNodePages = 0;\n\n this.initSelectedFormatsForTextureDefinitions(tileset);\n }\n\n /**\n * Loads some nodePage and return a particular node from it\n * @param id - id of node through all node pages\n */\n async getNodeById(id: number): Promise<NodeInPage> {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {\n const nodePageUrl = getUrlWithToken(\n `${this.tileset.url}/nodepages/${pageIndex}`,\n this.options.i3s?.token\n );\n this.pendingNodePages[pageIndex] = {\n status: 'Pending',\n promise: load(nodePageUrl, I3SNodePageLoader, this.options)\n };\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;\n this.pendingNodePages[pageIndex].status = 'Done';\n }\n if (this.pendingNodePages[pageIndex].status === 'Pending') {\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n }\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Forms tile header using node and tileset data\n * @param id - id of node through all node pages\n */\n // eslint-disable-next-line complexity, max-statements\n async formTileFromNodePages(id: number): Promise<I3STileHeader> {\n const node: NodeInPage = await this.getNodeById(id);\n const children: {id: string; obb: Obb}[] = [];\n const childNodesPromises: Promise<NodeInPage>[] = [];\n for (const child of node.children || []) {\n childNodesPromises.push(this.getNodeById(child));\n }\n\n const childNodes = await Promise.all(childNodesPromises);\n for (const childNode of childNodes) {\n children.push({\n id: childNode.index.toString(),\n obb: childNode.obb\n });\n }\n\n let contentUrl: string | undefined;\n let textureUrl: string | undefined;\n let materialDefinition: I3SMaterialDefinition | undefined;\n let textureFormat: I3STextureFormat = 'jpg';\n let attributeUrls: string[] = [];\n let isDracoGeometry: boolean = false;\n\n if (node && node.mesh) {\n // Get geometry resource URL and type (compressed / non-compressed)\n const {url, isDracoGeometry: isDracoGeometryResult} = (node.mesh.geometry &&\n this.getContentUrl(node.mesh.geometry)) || {isDracoGeometry: false};\n contentUrl = url;\n isDracoGeometry = isDracoGeometryResult;\n\n const {textureData, materialDefinition: nodeMaterialDefinition} =\n this.getInformationFromMaterial(node.mesh.material);\n materialDefinition = nodeMaterialDefinition;\n textureFormat = textureData.format || textureFormat;\n if (textureData.name) {\n textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;\n }\n\n if (this.tileset.attributeStorageInfo) {\n attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);\n }\n }\n\n const lodSelection = this.getLodSelection(node);\n\n return normalizeTileNonUrlData({\n id: id.toString(),\n lodSelection,\n obb: node.obb,\n contentUrl,\n textureUrl,\n attributeUrls,\n materialDefinition,\n textureFormat,\n textureLoaderOptions: this.textureLoaderOptions,\n children,\n isDracoGeometry\n });\n }\n\n /**\n * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset\n * @param - data about the node's mesh from the nodepage\n * @returns -\n * {string} url - url to the geometry resource\n * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry\n */\n private getContentUrl(meshGeometryData: MeshGeometry) {\n let result: {url: string; isDracoGeometry: boolean} | null = null;\n // @ts-ignore\n const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];\n let geometryIndex = -1;\n // Try to find DRACO geometryDefinition of `useDracoGeometry` option is set\n if (this.options.i3s && this.options.i3s.useDracoGeometry) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco'\n );\n }\n // If DRACO geometry is not applicable try to select non-compressed geometry\n if (geometryIndex === -1) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => !buffer.compressedAttributes\n );\n }\n if (geometryIndex !== -1) {\n const isDracoGeometry = Boolean(\n geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes\n );\n result = {\n url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,\n isDracoGeometry\n };\n }\n return result;\n }\n\n /**\n * Forms 1.6 compatible LOD selection object from a nodepage's node data\n * @param node - a node from nodepage\n * @returns- Array of LodSelection\n */\n private getLodSelection(node: NodeInPage): LodSelection[] {\n const lodSelection: LodSelection[] = [];\n if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {\n lodSelection.push({\n metricType: 'maxScreenThreshold',\n // @ts-ignore\n maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))\n });\n }\n lodSelection.push({\n metricType: this.lodSelectionMetricType,\n // @ts-ignore\n maxError: node.lodThreshold\n });\n return lodSelection;\n }\n\n /**\n * Returns information about texture and material from `materialDefinitions`\n * @param material - material data from nodepage\n * @returns - Couple {textureData, materialDefinition}\n * {string} textureData.name - path name of the texture\n * {string} textureData.format - format of the texture\n * materialDefinition - PBR-like material definition from `materialDefinitions`\n */\n private getInformationFromMaterial(material: MeshMaterial) {\n const informationFromMaterial: {\n textureData: {name: string | null; format?: I3STextureFormat};\n materialDefinition?: I3SMaterialDefinition;\n } = {textureData: {name: null}};\n\n if (material) {\n const materialDefinition = this.tileset.materialDefinitions?.[material.definition];\n if (materialDefinition) {\n informationFromMaterial.materialDefinition = materialDefinition;\n const textureSetDefinitionIndex =\n materialDefinition?.pbrMetallicRoughness?.baseColorTexture?.textureSetDefinitionId;\n\n if (typeof textureSetDefinitionIndex === 'number') {\n informationFromMaterial.textureData =\n this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] ||\n informationFromMaterial.textureData;\n }\n }\n }\n return informationFromMaterial;\n }\n\n /**\n * Sets preferable and supported format for each textureDefinition of the tileset\n * @param tileset - I3S layer data\n * @returns\n */\n private initSelectedFormatsForTextureDefinitions(tileset: I3STilesetHeader): void {\n this.textureDefinitionsSelectedFormats = [];\n const possibleI3sFormats = this.getSupportedTextureFormats();\n const textureSetDefinitions = tileset.textureSetDefinitions || [];\n for (const textureSetDefinition of textureSetDefinitions) {\n const formats = (textureSetDefinition && textureSetDefinition.formats) || [];\n let selectedFormat: {name: string; format: I3STextureFormat} | null = null;\n for (const i3sFormat of possibleI3sFormats) {\n const format = formats.find((value) => value.format === i3sFormat);\n if (format) {\n selectedFormat = format;\n break;\n }\n }\n // For I3S 1.8 need to define basis target format to decode\n if (selectedFormat && selectedFormat.format === 'ktx2') {\n this.textureLoaderOptions.basis = {\n format: selectSupportedBasisFormat(),\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n }\n\n this.textureDefinitionsSelectedFormats.push(selectedFormat);\n }\n }\n\n /**\n * Returns the array of supported texture format\n * @returns list of format strings\n */\n private getSupportedTextureFormats(): I3STextureFormat[] {\n const formats: I3STextureFormat[] = [];\n if (!this.options.i3s || this.options.i3s.useCompressedTextures) {\n // I3S 1.7 selection\n const supportedCompressedFormats = getSupportedGPUTextureFormats();\n // List of possible in i3s formats:\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md\n if (supportedCompressedFormats.has('etc2')) {\n formats.push('ktx-etc2');\n }\n if (supportedCompressedFormats.has('dxt')) {\n formats.push('dds');\n }\n\n // I3S 1.8 selection\n // ktx2 wraps basis texture which at the edge case can be decoded as uncompressed image\n formats.push('ktx2');\n }\n\n formats.push('jpg');\n formats.push('png');\n return formats;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,40 +1,30 @@
|
|
|
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.STRING_ATTRIBUTE_TYPE = exports.OBJECT_ID_ATTRIBUTE_TYPE = exports.INT_16_ATTRIBUTE_TYPE = exports.GL_TYPE_MAP = exports.FLOAT_64_TYPE = exports.COORDINATE_SYSTEM = void 0;
|
|
8
8
|
exports.getConstructorForDataFormat = getConstructorForDataFormat;
|
|
9
9
|
exports.sizeOf = sizeOf;
|
|
10
|
-
exports.COORDINATE_SYSTEM = exports.INT_16_ATTRIBUTE_TYPE = exports.FLOAT_64_TYPE = exports.OBJECT_ID_ATTRIBUTE_TYPE = exports.STRING_ATTRIBUTE_TYPE = exports.GL_TYPE_MAP = void 0;
|
|
11
|
-
|
|
12
10
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
13
|
-
|
|
14
11
|
var _types = require("../../types");
|
|
15
|
-
|
|
16
12
|
function getConstructorForDataFormat(dataType) {
|
|
17
13
|
switch (dataType) {
|
|
18
14
|
case _types.DATA_TYPE.UInt8:
|
|
19
15
|
return Uint8Array;
|
|
20
|
-
|
|
21
16
|
case _types.DATA_TYPE.UInt16:
|
|
22
17
|
return Uint16Array;
|
|
23
|
-
|
|
24
18
|
case _types.DATA_TYPE.UInt32:
|
|
25
19
|
return Uint32Array;
|
|
26
|
-
|
|
27
20
|
case _types.DATA_TYPE.Float32:
|
|
28
21
|
return Float32Array;
|
|
29
|
-
|
|
30
22
|
case _types.DATA_TYPE.UInt64:
|
|
31
23
|
return Float64Array;
|
|
32
|
-
|
|
33
24
|
default:
|
|
34
25
|
throw new Error("parse i3s tile content: unknown type of data: ".concat(dataType));
|
|
35
26
|
}
|
|
36
27
|
}
|
|
37
|
-
|
|
38
28
|
var GL_TYPE_MAP = {
|
|
39
29
|
UInt8: _constants.default.UNSIGNED_BYTE,
|
|
40
30
|
UInt16: _constants.default.UNSIGNED_INT,
|
|
@@ -43,31 +33,25 @@ var GL_TYPE_MAP = {
|
|
|
43
33
|
UInt64: _constants.default.DOUBLE
|
|
44
34
|
};
|
|
45
35
|
exports.GL_TYPE_MAP = GL_TYPE_MAP;
|
|
46
|
-
|
|
47
36
|
function sizeOf(dataType) {
|
|
48
37
|
switch (dataType) {
|
|
49
38
|
case _types.DATA_TYPE.UInt8:
|
|
50
39
|
return 1;
|
|
51
|
-
|
|
52
40
|
case _types.DATA_TYPE.UInt16:
|
|
53
41
|
case _types.DATA_TYPE.Int16:
|
|
54
42
|
return 2;
|
|
55
|
-
|
|
56
43
|
case _types.DATA_TYPE.UInt32:
|
|
57
44
|
case _types.DATA_TYPE.Int32:
|
|
58
45
|
case _types.DATA_TYPE.Float32:
|
|
59
46
|
return 4;
|
|
60
|
-
|
|
61
47
|
case _types.DATA_TYPE.UInt64:
|
|
62
48
|
case _types.DATA_TYPE.Int64:
|
|
63
49
|
case _types.DATA_TYPE.Float64:
|
|
64
50
|
return 8;
|
|
65
|
-
|
|
66
51
|
default:
|
|
67
52
|
throw new Error("parse i3s tile content: unknown size of data: ".concat(dataType));
|
|
68
53
|
}
|
|
69
54
|
}
|
|
70
|
-
|
|
71
55
|
var STRING_ATTRIBUTE_TYPE = 'String';
|
|
72
56
|
exports.STRING_ATTRIBUTE_TYPE = STRING_ATTRIBUTE_TYPE;
|
|
73
57
|
var OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';
|
|
@@ -75,10 +59,10 @@ exports.OBJECT_ID_ATTRIBUTE_TYPE = OBJECT_ID_ATTRIBUTE_TYPE;
|
|
|
75
59
|
var FLOAT_64_TYPE = 'Float64';
|
|
76
60
|
exports.FLOAT_64_TYPE = FLOAT_64_TYPE;
|
|
77
61
|
var INT_16_ATTRIBUTE_TYPE = 'Int16';
|
|
62
|
+
|
|
78
63
|
exports.INT_16_ATTRIBUTE_TYPE = INT_16_ATTRIBUTE_TYPE;
|
|
79
64
|
var COORDINATE_SYSTEM;
|
|
80
65
|
exports.COORDINATE_SYSTEM = COORDINATE_SYSTEM;
|
|
81
|
-
|
|
82
66
|
(function (COORDINATE_SYSTEM) {
|
|
83
67
|
COORDINATE_SYSTEM[COORDINATE_SYSTEM["DEFAULT"] = -1] = "DEFAULT";
|
|
84
68
|
COORDINATE_SYSTEM[COORDINATE_SYSTEM["LNGLAT"] = 1] = "LNGLAT";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"constants.js","names":["getConstructorForDataFormat","dataType","DATA_TYPE","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","Error","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","sizeOf","Int16","Int32","Int64","Float64","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM"],"sources":["../../../../src/lib/parsers/constants.ts"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {DATA_TYPE} from '../../types';\n\nexport function getConstructorForDataFormat(dataType: string) {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return Uint8Array;\n case DATA_TYPE.UInt16:\n return Uint16Array;\n case DATA_TYPE.UInt32:\n return Uint32Array;\n case DATA_TYPE.Float32:\n return Float32Array;\n case DATA_TYPE.UInt64:\n return Float64Array;\n default:\n throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);\n }\n}\n\nexport const GL_TYPE_MAP: {[key: string]: number} = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n/**\n * Returns how many bytes a type occupies\n * @param dataType\n * @returns\n */\nexport function sizeOf(dataType: string): number {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return 1;\n case DATA_TYPE.UInt16:\n case DATA_TYPE.Int16:\n return 2;\n case DATA_TYPE.UInt32:\n case DATA_TYPE.Int32:\n case DATA_TYPE.Float32:\n return 4;\n case DATA_TYPE.UInt64:\n case DATA_TYPE.Int64:\n case DATA_TYPE.Float64:\n return 8;\n default:\n throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);\n }\n}\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport enum COORDINATE_SYSTEM {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT = -1,\n /**\n * Positions are interpreted as [lng, lat, elevation]\n * lng lat are degrees, elevation is meters. distances as meters.\n */\n LNGLAT = 1,\n /**\n * Positions are interpreted as meter offsets, distances as meters\n */\n METER_OFFSETS = 2,\n /**\n * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n * deltaLng, deltaLat are delta degrees, elevation is meters.\n * distances as meters.\n */\n LNGLAT_OFFSETS = 3,\n /**\n * Non-geospatial\n */\n CARTESIAN = 0\n}\n"],"mappings":";;;;;;;;;AAAA;AACA;AAEO,SAASA,2BAA2B,CAACC,QAAgB,EAAE;EAC5D,QAAQA,QAAQ;IACd,KAAKC,gBAAS,CAACC,KAAK;MAClB,OAAOC,UAAU;IACnB,KAAKF,gBAAS,CAACG,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKJ,gBAAS,CAACK,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKN,gBAAS,CAACO,OAAO;MACpB,OAAOC,YAAY;IACrB,KAAKR,gBAAS,CAACS,MAAM;MACnB,OAAOC,YAAY;IACrB;MACE,MAAM,IAAIC,KAAK,yDAAkDZ,QAAQ,EAAG;EAAC;AAEnF;AAEO,IAAMa,WAAoC,GAAG;EAClDX,KAAK,EAAEY,kBAAE,CAACC,aAAa;EACvBX,MAAM,EAAEU,kBAAE,CAACE,YAAY;EACvBR,OAAO,EAAEM,kBAAE,CAACG,KAAK;EACjBX,MAAM,EAAEQ,kBAAE,CAACE,YAAY;EACvBN,MAAM,EAAEI,kBAAE,CAACI;AACb,CAAC;AAAC;AAMK,SAASC,MAAM,CAACnB,QAAgB,EAAU;EAC/C,QAAQA,QAAQ;IACd,KAAKC,gBAAS,CAACC,KAAK;MAClB,OAAO,CAAC;IACV,KAAKD,gBAAS,CAACG,MAAM;IACrB,KAAKH,gBAAS,CAACmB,KAAK;MAClB,OAAO,CAAC;IACV,KAAKnB,gBAAS,CAACK,MAAM;IACrB,KAAKL,gBAAS,CAACoB,KAAK;IACpB,KAAKpB,gBAAS,CAACO,OAAO;MACpB,OAAO,CAAC;IACV,KAAKP,gBAAS,CAACS,MAAM;IACrB,KAAKT,gBAAS,CAACqB,KAAK;IACpB,KAAKrB,gBAAS,CAACsB,OAAO;MACpB,OAAO,CAAC;IACV;MACE,MAAM,IAAIX,KAAK,yDAAkDZ,QAAQ,EAAG;EAAC;AAEnF;AAEO,IAAMwB,qBAAqB,GAAG,QAAQ;AAAC;AACvC,IAAMC,wBAAwB,GAAG,OAAO;AAAC;AACzC,IAAMC,aAAa,GAAG,SAAS;AAAC;AAChC,IAAMC,qBAAqB,GAAG,OAAO;;AAAC;AAAA,IAIjCC,iBAAiB;AAAA;AAAA,WAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;AAAA,GAAjBA,iBAAiB,iCAAjBA,iBAAiB"}
|