@loaders.gl/draco 3.4.0-alpha.1 → 3.4.0-alpha.3
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.map +2 -2
- package/dist/draco-loader.js +1 -1
- package/dist/draco-nodejs-worker.js +54 -54
- package/dist/draco-nodejs-worker.js.map +2 -2
- package/dist/draco-worker.js +1 -1
- package/dist/draco-worker.js.map +2 -2
- package/dist/draco-writer-nodejs-worker.js +55 -55
- package/dist/draco-writer-nodejs-worker.js.map +2 -2
- package/dist/draco-writer-worker.js +2 -2
- package/dist/draco-writer-worker.js.map +2 -2
- package/dist/es5/draco-loader.js +0 -2
- package/dist/es5/draco-loader.js.map +1 -1
- package/dist/es5/draco-writer-nodejs.js.map +1 -1
- package/dist/es5/draco-writer.js +18 -21
- package/dist/es5/draco-writer.js.map +1 -1
- package/dist/es5/draco3d/draco3d-types.js +16 -16
- package/dist/es5/draco3d/draco3d-types.js.map +1 -1
- package/dist/es5/index.js +17 -20
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/draco-builder.js +12 -41
- package/dist/es5/lib/draco-builder.js.map +1 -1
- package/dist/es5/lib/draco-module-loader.js +95 -104
- package/dist/es5/lib/draco-module-loader.js.map +1 -1
- package/dist/es5/lib/draco-parser.js +16 -61
- package/dist/es5/lib/draco-parser.js.map +1 -1
- package/dist/es5/lib/utils/get-draco-schema.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/workers/draco-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/draco-worker.js.map +1 -1
- package/dist/es5/workers/draco-writer-nodejs-worker.js +29 -31
- package/dist/es5/workers/draco-writer-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/draco-writer-worker.js +29 -31
- package/dist/es5/workers/draco-writer-worker.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/draco-loader.js +0 -1
- package/dist/esm/draco-loader.js.map +1 -1
- package/dist/esm/draco-writer-nodejs.js +0 -1
- package/dist/esm/draco-writer-nodejs.js.map +1 -1
- package/dist/esm/draco-writer.js +0 -1
- package/dist/esm/draco-writer.js.map +1 -1
- package/dist/esm/draco3d/draco3d-types.js +12 -18
- package/dist/esm/draco3d/draco3d-types.js.map +1 -1
- package/dist/esm/index.js +0 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/draco-builder.js +0 -17
- package/dist/esm/lib/draco-builder.js.map +1 -1
- package/dist/esm/lib/draco-module-loader.js +0 -6
- package/dist/esm/lib/draco-module-loader.js.map +1 -1
- package/dist/esm/lib/draco-parser.js +0 -28
- package/dist/esm/lib/draco-parser.js.map +1 -1
- package/dist/esm/lib/utils/get-draco-schema.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -2
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/package.json +6 -6
|
@@ -14,14 +14,13 @@ var _schema = require("@loaders.gl/schema");
|
|
|
14
14
|
var _getDracoSchema = require("./utils/get-draco-schema");
|
|
15
15
|
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; } } }; }
|
|
16
16
|
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); }
|
|
17
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
17
|
+
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; }
|
|
18
18
|
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; }
|
|
19
19
|
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; }
|
|
20
20
|
var GEOMETRY_TYPE = {
|
|
21
21
|
TRIANGULAR_MESH: 0,
|
|
22
22
|
POINT_CLOUD: 1
|
|
23
23
|
};
|
|
24
|
-
|
|
25
24
|
var DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {
|
|
26
25
|
POSITION: 'POSITION',
|
|
27
26
|
NORMAL: 'NORMAL',
|
|
@@ -48,19 +47,15 @@ var DracoParser = function () {
|
|
|
48
47
|
this.decoder = new this.draco.Decoder();
|
|
49
48
|
this.metadataQuerier = new this.draco.MetadataQuerier();
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
(0, _createClass2.default)(DracoParser, [{
|
|
53
51
|
key: "destroy",
|
|
54
|
-
value:
|
|
55
|
-
function destroy() {
|
|
52
|
+
value: function destroy() {
|
|
56
53
|
this.draco.destroy(this.decoder);
|
|
57
54
|
this.draco.destroy(this.metadataQuerier);
|
|
58
55
|
}
|
|
59
|
-
|
|
60
56
|
}, {
|
|
61
57
|
key: "parseSync",
|
|
62
|
-
value:
|
|
63
|
-
function parseSync(arrayBuffer) {
|
|
58
|
+
value: function parseSync(arrayBuffer) {
|
|
64
59
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
65
60
|
var buffer = new this.draco.DecoderBuffer();
|
|
66
61
|
buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);
|
|
@@ -105,12 +100,9 @@ var DracoParser = function () {
|
|
|
105
100
|
}
|
|
106
101
|
}
|
|
107
102
|
}
|
|
108
|
-
|
|
109
103
|
}, {
|
|
110
104
|
key: "_getDracoLoaderData",
|
|
111
|
-
value:
|
|
112
|
-
|
|
113
|
-
function _getDracoLoaderData(dracoGeometry, geometry_type, options) {
|
|
105
|
+
value: function _getDracoLoaderData(dracoGeometry, geometry_type, options) {
|
|
114
106
|
var metadata = this._getTopLevelMetadata(dracoGeometry);
|
|
115
107
|
var attributes = this._getDracoAttributes(dracoGeometry, options);
|
|
116
108
|
return {
|
|
@@ -122,11 +114,9 @@ var DracoParser = function () {
|
|
|
122
114
|
attributes: attributes
|
|
123
115
|
};
|
|
124
116
|
}
|
|
125
|
-
|
|
126
117
|
}, {
|
|
127
118
|
key: "_getDracoAttributes",
|
|
128
|
-
value:
|
|
129
|
-
function _getDracoAttributes(dracoGeometry, options) {
|
|
119
|
+
value: function _getDracoAttributes(dracoGeometry, options) {
|
|
130
120
|
var dracoAttributes = {};
|
|
131
121
|
for (var attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
|
|
132
122
|
var dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);
|
|
@@ -142,7 +132,6 @@ var DracoParser = function () {
|
|
|
142
132
|
attribute_index: attributeId,
|
|
143
133
|
metadata: metadata
|
|
144
134
|
};
|
|
145
|
-
|
|
146
135
|
var quantization = this._getQuantizationTransform(dracoAttribute, options);
|
|
147
136
|
if (quantization) {
|
|
148
137
|
dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;
|
|
@@ -154,17 +143,14 @@ var DracoParser = function () {
|
|
|
154
143
|
}
|
|
155
144
|
return dracoAttributes;
|
|
156
145
|
}
|
|
157
|
-
|
|
158
146
|
}, {
|
|
159
147
|
key: "_getMeshData",
|
|
160
|
-
value:
|
|
161
|
-
function _getMeshData(dracoGeometry, loaderData, options) {
|
|
148
|
+
value: function _getMeshData(dracoGeometry, loaderData, options) {
|
|
162
149
|
var attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
|
|
163
150
|
var positionAttribute = attributes.POSITION;
|
|
164
151
|
if (!positionAttribute) {
|
|
165
152
|
throw new Error('DRACO: No position attribute found.');
|
|
166
153
|
}
|
|
167
|
-
|
|
168
154
|
if (dracoGeometry instanceof this.draco.Mesh) {
|
|
169
155
|
switch (options.topology) {
|
|
170
156
|
case 'triangle-strip':
|
|
@@ -190,7 +176,6 @@ var DracoParser = function () {
|
|
|
190
176
|
};
|
|
191
177
|
}
|
|
192
178
|
}
|
|
193
|
-
|
|
194
179
|
return {
|
|
195
180
|
topology: 'point-list',
|
|
196
181
|
mode: 0,
|
|
@@ -218,12 +203,9 @@ var DracoParser = function () {
|
|
|
218
203
|
}
|
|
219
204
|
return attributes;
|
|
220
205
|
}
|
|
221
|
-
|
|
222
206
|
}, {
|
|
223
207
|
key: "_getTriangleListIndices",
|
|
224
|
-
value:
|
|
225
|
-
|
|
226
|
-
function _getTriangleListIndices(dracoGeometry) {
|
|
208
|
+
value: function _getTriangleListIndices(dracoGeometry) {
|
|
227
209
|
var numFaces = dracoGeometry.num_faces();
|
|
228
210
|
var numIndices = numFaces * 3;
|
|
229
211
|
var byteLength = numIndices * INDEX_ITEM_SIZE;
|
|
@@ -235,11 +217,9 @@ var DracoParser = function () {
|
|
|
235
217
|
this.draco._free(ptr);
|
|
236
218
|
}
|
|
237
219
|
}
|
|
238
|
-
|
|
239
220
|
}, {
|
|
240
221
|
key: "_getTriangleStripIndices",
|
|
241
|
-
value:
|
|
242
|
-
function _getTriangleStripIndices(dracoGeometry) {
|
|
222
|
+
value: function _getTriangleStripIndices(dracoGeometry) {
|
|
243
223
|
var dracoArray = new this.draco.DracoInt32Array();
|
|
244
224
|
try {
|
|
245
225
|
this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);
|
|
@@ -248,11 +228,9 @@ var DracoParser = function () {
|
|
|
248
228
|
this.draco.destroy(dracoArray);
|
|
249
229
|
}
|
|
250
230
|
}
|
|
251
|
-
|
|
252
231
|
}, {
|
|
253
232
|
key: "_getAttributeValues",
|
|
254
|
-
value:
|
|
255
|
-
function _getAttributeValues(dracoGeometry, attribute) {
|
|
233
|
+
value: function _getAttributeValues(dracoGeometry, attribute) {
|
|
256
234
|
var TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
|
|
257
235
|
var numComponents = attribute.num_components;
|
|
258
236
|
var numPoints = dracoGeometry.num_points();
|
|
@@ -273,12 +251,9 @@ var DracoParser = function () {
|
|
|
273
251
|
size: numComponents
|
|
274
252
|
};
|
|
275
253
|
}
|
|
276
|
-
|
|
277
254
|
}, {
|
|
278
255
|
key: "_deduceAttributeName",
|
|
279
|
-
value:
|
|
280
|
-
|
|
281
|
-
function _deduceAttributeName(attribute, options) {
|
|
256
|
+
value: function _deduceAttributeName(attribute, options) {
|
|
282
257
|
var uniqueId = attribute.unique_id;
|
|
283
258
|
for (var _i2 = 0, _Object$entries = Object.entries(options.extraAttributes || {}); _i2 < _Object$entries.length; _i2++) {
|
|
284
259
|
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i2], 2),
|
|
@@ -288,7 +263,6 @@ var DracoParser = function () {
|
|
|
288
263
|
return _attributeName2;
|
|
289
264
|
}
|
|
290
265
|
}
|
|
291
|
-
|
|
292
266
|
var thisAttributeType = attribute.attribute_type;
|
|
293
267
|
for (var dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {
|
|
294
268
|
var attributeType = this.draco[dracoAttributeConstant];
|
|
@@ -296,36 +270,27 @@ var DracoParser = function () {
|
|
|
296
270
|
return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];
|
|
297
271
|
}
|
|
298
272
|
}
|
|
299
|
-
|
|
300
273
|
var entryName = options.attributeNameEntry || 'name';
|
|
301
274
|
if (attribute.metadata[entryName]) {
|
|
302
275
|
return attribute.metadata[entryName].string;
|
|
303
276
|
}
|
|
304
|
-
|
|
305
277
|
return "CUSTOM_ATTRIBUTE_".concat(uniqueId);
|
|
306
278
|
}
|
|
307
|
-
|
|
308
279
|
}, {
|
|
309
280
|
key: "_getTopLevelMetadata",
|
|
310
|
-
value:
|
|
311
|
-
|
|
312
|
-
function _getTopLevelMetadata(dracoGeometry) {
|
|
281
|
+
value: function _getTopLevelMetadata(dracoGeometry) {
|
|
313
282
|
var dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
|
|
314
283
|
return this._getDracoMetadata(dracoMetadata);
|
|
315
284
|
}
|
|
316
|
-
|
|
317
285
|
}, {
|
|
318
286
|
key: "_getAttributeMetadata",
|
|
319
|
-
value:
|
|
320
|
-
function _getAttributeMetadata(dracoGeometry, attributeId) {
|
|
287
|
+
value: function _getAttributeMetadata(dracoGeometry, attributeId) {
|
|
321
288
|
var dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
|
|
322
289
|
return this._getDracoMetadata(dracoMetadata);
|
|
323
290
|
}
|
|
324
|
-
|
|
325
291
|
}, {
|
|
326
292
|
key: "_getDracoMetadata",
|
|
327
|
-
value:
|
|
328
|
-
function _getDracoMetadata(dracoMetadata) {
|
|
293
|
+
value: function _getDracoMetadata(dracoMetadata) {
|
|
329
294
|
if (!dracoMetadata || !dracoMetadata.ptr) {
|
|
330
295
|
return {};
|
|
331
296
|
}
|
|
@@ -337,11 +302,9 @@ var DracoParser = function () {
|
|
|
337
302
|
}
|
|
338
303
|
return result;
|
|
339
304
|
}
|
|
340
|
-
|
|
341
305
|
}, {
|
|
342
306
|
key: "_getDracoMetadataField",
|
|
343
|
-
value:
|
|
344
|
-
function _getDracoMetadataField(dracoMetadata, entryName) {
|
|
307
|
+
value: function _getDracoMetadataField(dracoMetadata, entryName) {
|
|
345
308
|
var dracoArray = new this.draco.DracoInt32Array();
|
|
346
309
|
try {
|
|
347
310
|
this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);
|
|
@@ -356,12 +319,9 @@ var DracoParser = function () {
|
|
|
356
319
|
this.draco.destroy(dracoArray);
|
|
357
320
|
}
|
|
358
321
|
}
|
|
359
|
-
|
|
360
322
|
}, {
|
|
361
323
|
key: "_disableAttributeTransforms",
|
|
362
|
-
value:
|
|
363
|
-
|
|
364
|
-
function _disableAttributeTransforms(options) {
|
|
324
|
+
value: function _disableAttributeTransforms(options) {
|
|
365
325
|
var _options$quantizedAtt = options.quantizedAttributes,
|
|
366
326
|
quantizedAttributes = _options$quantizedAtt === void 0 ? [] : _options$quantizedAtt,
|
|
367
327
|
_options$octahedronAt = options.octahedronAttributes,
|
|
@@ -380,11 +340,9 @@ var DracoParser = function () {
|
|
|
380
340
|
_iterator.f();
|
|
381
341
|
}
|
|
382
342
|
}
|
|
383
|
-
|
|
384
343
|
}, {
|
|
385
344
|
key: "_getQuantizationTransform",
|
|
386
|
-
value:
|
|
387
|
-
function _getQuantizationTransform(dracoAttribute, options) {
|
|
345
|
+
value: function _getQuantizationTransform(dracoAttribute, options) {
|
|
388
346
|
var _this = this;
|
|
389
347
|
var _options$quantizedAtt2 = options.quantizedAttributes,
|
|
390
348
|
quantizedAttributes = _options$quantizedAtt2 === void 0 ? [] : _options$quantizedAtt2;
|
|
@@ -434,7 +392,6 @@ var DracoParser = function () {
|
|
|
434
392
|
}
|
|
435
393
|
return null;
|
|
436
394
|
}
|
|
437
|
-
|
|
438
395
|
}]);
|
|
439
396
|
return DracoParser;
|
|
440
397
|
}();
|
|
@@ -459,7 +416,6 @@ function getDracoDataType(draco, attributeType) {
|
|
|
459
416
|
return draco.DT_INVALID;
|
|
460
417
|
}
|
|
461
418
|
}
|
|
462
|
-
|
|
463
419
|
function getInt32Array(dracoArray) {
|
|
464
420
|
var numValues = dracoArray.size();
|
|
465
421
|
var intArray = new Int32Array(numValues);
|
|
@@ -468,7 +424,6 @@ function getInt32Array(dracoArray) {
|
|
|
468
424
|
}
|
|
469
425
|
return intArray;
|
|
470
426
|
}
|
|
471
|
-
|
|
472
427
|
function getUint32Array(dracoArray) {
|
|
473
428
|
var numValues = dracoArray.size();
|
|
474
429
|
var intArray = new Int32Array(numValues);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draco-parser.js","names":["GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","draco","decoder","Decoder","metadataQuerier","MetadataQuerier","destroy","arrayBuffer","options","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","getMeshBoundingBox","attributes","schema","getDracoSchema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","value","_getTriangleStripIndices","size","_getTriangleListIndices","Object","values","loaderAttribute","attributeName","_deduceAttributeName","name","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","slice","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","entries","extraAttributes","attributeUniqueId","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","quantizedAttributes","octahedronAttributes","skipAttributes","dracoAttributeName","SkipAttributeTransform","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","i","min_value","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":";;;;;;;;;;;;AA2BA;AACA;AAAwD;AAAA;AAAA;AAAA;AAAA;AAmBxD,IAAMA,aAAa,GAAG;EACpBC,eAAe,EAAE,CAAC;EAClBC,WAAW,EAAE;AACf,CAAC;;AAGD,IAAMC,gCAAgC,GAAG;EACvCC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,SAAS;EAChBC,SAAS,EAAE;AACb,CAAC;AAED,IAAMC,kCAAkC,GAAG;EACzC,CAAC,EAAEC,SAAS;EACZ,CAAC,EAAEC,UAAU;EACb,CAAC,EAAEC,UAAU;EACb,CAAC,EAAEC,WAAW;EACd,CAAC,EAAEC,UAAU;EACb,CAAC,EAAEC,WAAW;EACd,CAAC,EAAEC;AACL,CAAC;AAED,IAAMC,eAAe,GAAG,CAAC;AAAC,IAELC,WAAW;EAM9B,qBAAYC,KAAc,EAAE;IAAA;IAAA;IAAA;IAAA;IAC1B,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAG,IAAI,IAAI,CAACD,KAAK,CAACE,OAAO,EAAE;IACvC,IAAI,CAACC,eAAe,GAAG,IAAI,IAAI,CAACH,KAAK,CAACI,eAAe,EAAE;EACzD;;EAAC;IAAA;IAAA;IAKD,mBAAgB;MACd,IAAI,CAACJ,KAAK,CAACK,OAAO,CAAC,IAAI,CAACJ,OAAO,CAAC;MAChC,IAAI,CAACD,KAAK,CAACK,OAAO,CAAC,IAAI,CAACF,eAAe,CAAC;IAC1C;;EAAC;IAAA;IAAA;IAOD,mBAAUG,WAAwB,EAA8C;MAAA,IAA5CC,OAA0B,uEAAG,CAAC,CAAC;MACjE,IAAMC,MAAM,GAAG,IAAI,IAAI,CAACR,KAAK,CAACS,aAAa,EAAE;MAC7CD,MAAM,CAACE,IAAI,CAAC,IAAInB,SAAS,CAACe,WAAW,CAAC,EAAEA,WAAW,CAACK,UAAU,CAAC;MAE/D,IAAI,CAACC,2BAA2B,CAACL,OAAO,CAAC;MAEzC,IAAMM,aAAa,GAAG,IAAI,CAACZ,OAAO,CAACa,sBAAsB,CAACN,MAAM,CAAC;MACjE,IAAMO,aAAa,GACjBF,aAAa,KAAK,IAAI,CAACb,KAAK,CAACjB,eAAe,GACxC,IAAI,IAAI,CAACiB,KAAK,CAACgB,IAAI,EAAE,GACrB,IAAI,IAAI,CAAChB,KAAK,CAACiB,UAAU,EAAE;MAEjC,IAAI;QACF,IAAIC,WAAW;QACf,QAAQL,aAAa;UACnB,KAAK,IAAI,CAACb,KAAK,CAACjB,eAAe;YAC7BmC,WAAW,GAAG,IAAI,CAACjB,OAAO,CAACkB,kBAAkB,CAACX,MAAM,EAAEO,aAAa,CAAS;YAC5E;UAEF,KAAK,IAAI,CAACf,KAAK,CAAChB,WAAW;YACzBkC,WAAW,GAAG,IAAI,CAACjB,OAAO,CAACmB,wBAAwB,CAACZ,MAAM,EAAEO,aAAa,CAAC;YAC1E;UAEF;YACE,MAAM,IAAIM,KAAK,CAAC,+BAA+B,CAAC;QAAC;QAGrD,IAAI,CAACH,WAAW,CAACI,EAAE,EAAE,IAAI,CAACP,aAAa,CAACQ,GAAG,EAAE;UAC3C,IAAMC,OAAO,yCAAkCN,WAAW,CAACO,SAAS,EAAE,CAAE;UAExE,MAAM,IAAIJ,KAAK,CAACG,OAAO,CAAC;QAC1B;QAEA,IAAME,UAAU,GAAG,IAAI,CAACC,mBAAmB,CAACZ,aAAa,EAAEF,aAAa,EAAEN,OAAO,CAAC;QAElF,IAAMqB,QAAQ,GAAG,IAAI,CAACC,YAAY,CAACd,aAAa,EAAEW,UAAU,EAAEnB,OAAO,CAAC;QAEtE,IAAMuB,WAAW,GAAG,IAAAC,0BAAkB,EAACH,QAAQ,CAACI,UAAU,CAAC;QAE3D,IAAMC,MAAM,GAAG,IAAAC,8BAAc,EAACN,QAAQ,CAACI,UAAU,EAAEN,UAAU,EAAEE,QAAQ,CAACO,OAAO,CAAC;QAEhF,IAAMC,IAAe;UACnBC,MAAM,EAAE,OAAO;UACfX,UAAU,EAAVA,UAAU;UACVY,MAAM,EAAE;YACNC,WAAW,EAAExB,aAAa,CAACyB,UAAU,EAAE;YACvCV,WAAW,EAAXA;UACF;QAAC,GACEF,QAAQ;UACXK,MAAM,EAANA;QAAM,EACP;QACD,OAAOG,IAAI;MACb,CAAC,SAAS;QACR,IAAI,CAACpC,KAAK,CAACK,OAAO,CAACG,MAAM,CAAC;QAC1B,IAAIO,aAAa,EAAE;UACjB,IAAI,CAACf,KAAK,CAACK,OAAO,CAACU,aAAa,CAAC;QACnC;MACF;IACF;;EAAC;IAAA;IAAA;;IAWD,6BACEA,aAAgC,EAChCF,aAAa,EACbN,OAA0B,EACT;MACjB,IAAMkC,QAAQ,GAAG,IAAI,CAACC,oBAAoB,CAAC3B,aAAa,CAAC;MACzD,IAAMiB,UAAU,GAAG,IAAI,CAACW,mBAAmB,CAAC5B,aAAa,EAAER,OAAO,CAAC;MAEnE,OAAO;QACLM,aAAa,EAAbA,aAAa;QACb+B,cAAc,EAAE7B,aAAa,CAAC6B,cAAc,EAAE;QAC9CJ,UAAU,EAAEzB,aAAa,CAACyB,UAAU,EAAE;QACtCK,SAAS,EAAE9B,aAAa,YAAY,IAAI,CAACf,KAAK,CAACgB,IAAI,GAAGD,aAAa,CAAC8B,SAAS,EAAE,GAAG,CAAC;QACnFJ,QAAQ,EAARA,QAAQ;QACRT,UAAU,EAAVA;MACF,CAAC;IACH;;EAAC;IAAA;IAAA;IAQD,6BACEjB,aAAgC,EAChCR,OAA0B,EACa;MACvC,IAAMuC,eAAsD,GAAG,CAAC,CAAC;MAEjE,KAAK,IAAIC,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGhC,aAAa,CAAC6B,cAAc,EAAE,EAAEG,WAAW,EAAE,EAAE;QAGrF,IAAMC,cAAc,GAAG,IAAI,CAAC/C,OAAO,CAACgD,YAAY,CAAClC,aAAa,EAAEgC,WAAW,CAAC;QAE5E,IAAMN,QAAQ,GAAG,IAAI,CAACS,qBAAqB,CAACnC,aAAa,EAAEgC,WAAW,CAAC;QAEvED,eAAe,CAACE,cAAc,CAACG,SAAS,EAAE,CAAC,GAAG;UAC5CA,SAAS,EAAEH,cAAc,CAACG,SAAS,EAAE;UACrCC,cAAc,EAAEJ,cAAc,CAACI,cAAc,EAAE;UAC/CC,SAAS,EAAEL,cAAc,CAACK,SAAS,EAAE;UACrCC,cAAc,EAAEN,cAAc,CAACM,cAAc,EAAE;UAE/CC,WAAW,EAAEP,cAAc,CAACO,WAAW,EAAE;UACzCC,WAAW,EAAER,cAAc,CAACQ,WAAW,EAAE;UACzCC,UAAU,EAAET,cAAc,CAACS,UAAU,EAAE;UACvCC,eAAe,EAAEX,WAAW;UAE5BN,QAAQ,EAARA;QACF,CAAC;;QAGD,IAAMkB,YAAY,GAAG,IAAI,CAACC,yBAAyB,CAACZ,cAAc,EAAEzC,OAAO,CAAC;QAC5E,IAAIoD,YAAY,EAAE;UAChBb,eAAe,CAACE,cAAc,CAACG,SAAS,EAAE,CAAC,CAACU,sBAAsB,GAAGF,YAAY;QACnF;QAEA,IAAMG,UAAU,GAAG,IAAI,CAACC,uBAAuB,CAACf,cAAc,EAAEzC,OAAO,CAAC;QACxE,IAAIuD,UAAU,EAAE;UACdhB,eAAe,CAACE,cAAc,CAACG,SAAS,EAAE,CAAC,CAACa,oBAAoB,GAAGF,UAAU;QAC/E;MACF;MAEA,OAAOhB,eAAe;IACxB;;EAAC;IAAA;IAAA;IAQD,sBACE/B,aAAgC,EAChCW,UAA2B,EAC3BnB,OAA0B,EACZ;MACd,IAAMyB,UAAU,GAAG,IAAI,CAACiC,kBAAkB,CAACvC,UAAU,EAAEX,aAAa,EAAER,OAAO,CAAC;MAE9E,IAAM2D,iBAAiB,GAAGlC,UAAU,CAAC9C,QAAQ;MAC7C,IAAI,CAACgF,iBAAiB,EAAE;QACtB,MAAM,IAAI7C,KAAK,CAAC,qCAAqC,CAAC;MACxD;;MAGA,IAAIN,aAAa,YAAY,IAAI,CAACf,KAAK,CAACgB,IAAI,EAAE;QAC5C,QAAQT,OAAO,CAAC4D,QAAQ;UACtB,KAAK,gBAAgB;YACnB,OAAO;cACLA,QAAQ,EAAE,gBAAgB;cAC1BC,IAAI,EAAE,CAAC;cACPpC,UAAU,EAAVA,UAAU;cACVG,OAAO,EAAE;gBACPkC,KAAK,EAAE,IAAI,CAACC,wBAAwB,CAACvD,aAAa,CAAC;gBACnDwD,IAAI,EAAE;cACR;YACF,CAAC;UACH,KAAK,eAAe;UACpB;YACE,OAAO;cACLJ,QAAQ,EAAE,eAAe;cACzBC,IAAI,EAAE,CAAC;cACPpC,UAAU,EAAVA,UAAU;cACVG,OAAO,EAAE;gBACPkC,KAAK,EAAE,IAAI,CAACG,uBAAuB,CAACzD,aAAa,CAAC;gBAClDwD,IAAI,EAAE;cACR;YACF,CAAC;QAAC;MAER;;MAGA,OAAO;QACLJ,QAAQ,EAAE,YAAY;QACtBC,IAAI,EAAE,CAAC;QACPpC,UAAU,EAAVA;MACF,CAAC;IACH;EAAC;IAAA;IAAA,OAED,4BACEN,UAA2B,EAC3BX,aAAgC,EAChCR,OAA0B,EACgB;MAC1C,IAAMyB,UAA0C,GAAG,CAAC,CAAC;MAErD,kCAA8ByC,MAAM,CAACC,MAAM,CAAChD,UAAU,CAACM,UAAU,CAAC,oCAAE;QAA/D,IAAM2C,eAAe;QACxB,IAAMC,cAAa,GAAG,IAAI,CAACC,oBAAoB,CAACF,eAAe,EAAEpE,OAAO,CAAC;QACzEoE,eAAe,CAACG,IAAI,GAAGF,cAAa;QACpC,4BAAsB,IAAI,CAACG,mBAAmB,CAAChE,aAAa,EAAE4D,eAAe,CAAC;UAAvEN,KAAK,yBAALA,KAAK;UAAEE,IAAI,yBAAJA,IAAI;QAClBvC,UAAU,CAAC4C,cAAa,CAAC,GAAG;UAC1BP,KAAK,EAALA,KAAK;UACLE,IAAI,EAAJA,IAAI;UACJS,UAAU,EAAEL,eAAe,CAACpB,WAAW;UACvC0B,UAAU,EAAEN,eAAe,CAACnB,WAAW;UACvCC,UAAU,EAAEkB,eAAe,CAAClB;QAC9B,CAAC;MACH;MAEA,OAAOzB,UAAU;IACnB;;EAAC;IAAA;IAAA;;IAQD,iCAAwBjB,aAAmB,EAAE;MAE3C,IAAMmE,QAAQ,GAAGnE,aAAa,CAAC8B,SAAS,EAAE;MAC1C,IAAMsC,UAAU,GAAGD,QAAQ,GAAG,CAAC;MAC/B,IAAMvE,UAAU,GAAGwE,UAAU,GAAGrF,eAAe;MAE/C,IAAMyB,GAAG,GAAG,IAAI,CAACvB,KAAK,CAACoF,OAAO,CAACzE,UAAU,CAAC;MAC1C,IAAI;QACF,IAAI,CAACV,OAAO,CAACoF,uBAAuB,CAACtE,aAAa,EAAEJ,UAAU,EAAEY,GAAG,CAAC;QACpE,OAAO,IAAI3B,WAAW,CAAC,IAAI,CAACI,KAAK,CAACsF,OAAO,CAAC9E,MAAM,EAAEe,GAAG,EAAE4D,UAAU,CAAC,CAACI,KAAK,EAAE;MAC5E,CAAC,SAAS;QACR,IAAI,CAACvF,KAAK,CAACwF,KAAK,CAACjE,GAAG,CAAC;MACvB;IACF;;EAAC;IAAA;IAAA;IAMD,kCAAyBR,aAAmB,EAAE;MAC5C,IAAM0E,UAAU,GAAG,IAAI,IAAI,CAACzF,KAAK,CAAC0F,eAAe,EAAE;MACnD,IAAI;QACsB,IAAI,CAACzF,OAAO,CAAC0F,yBAAyB,CAAC5E,aAAa,EAAE0E,UAAU,CAAC;QACzF,OAAOG,cAAc,CAACH,UAAU,CAAC;MACnC,CAAC,SAAS;QACR,IAAI,CAACzF,KAAK,CAACK,OAAO,CAACoF,UAAU,CAAC;MAChC;IACF;;EAAC;IAAA;IAAA;IAQD,6BACE1E,aAAgC,EAChC8E,SAAyB,EACU;MACnC,IAAMC,cAAc,GAAGxG,kCAAkC,CAACuG,SAAS,CAACxC,SAAS,CAAC;MAC9E,IAAM0C,aAAa,GAAGF,SAAS,CAACvC,cAAc;MAC9C,IAAM0C,SAAS,GAAGjF,aAAa,CAACyB,UAAU,EAAE;MAC5C,IAAMyD,SAAS,GAAGD,SAAS,GAAGD,aAAa;MAE3C,IAAMpF,UAAU,GAAGsF,SAAS,GAAGH,cAAc,CAACI,iBAAiB;MAC/D,IAAMC,QAAQ,GAAGC,gBAAgB,CAAC,IAAI,CAACpG,KAAK,EAAE8F,cAAc,CAAC;MAE7D,IAAIzB,KAAiB;MAErB,IAAM9C,GAAG,GAAG,IAAI,CAACvB,KAAK,CAACoF,OAAO,CAACzE,UAAU,CAAC;MAC1C,IAAI;QACF,IAAMqC,cAAc,GAAG,IAAI,CAAC/C,OAAO,CAACgD,YAAY,CAAClC,aAAa,EAAE8E,SAAS,CAACnC,eAAe,CAAC;QAC1F,IAAI,CAACzD,OAAO,CAACoG,iCAAiC,CAC5CtF,aAAa,EACbiC,cAAc,EACdmD,QAAQ,EACRxF,UAAU,EACVY,GAAG,CACJ;QACD8C,KAAK,GAAG,IAAIyB,cAAc,CAAC,IAAI,CAAC9F,KAAK,CAACsF,OAAO,CAAC9E,MAAM,EAAEe,GAAG,EAAE0E,SAAS,CAAC,CAACV,KAAK,EAAE;MAC/E,CAAC,SAAS;QACR,IAAI,CAACvF,KAAK,CAACwF,KAAK,CAACjE,GAAG,CAAC;MACvB;MAEA,OAAO;QAAC8C,KAAK,EAALA,KAAK;QAAEE,IAAI,EAAEwB;MAAa,CAAC;IACrC;;EAAC;IAAA;IAAA;;IA4BD,8BAAqBF,SAAyB,EAAEtF,OAA0B,EAAU;MAElF,IAAM+F,QAAQ,GAAGT,SAAS,CAAC1C,SAAS;MACpC,oCAAiDsB,MAAM,CAAC8B,OAAO,CAC7DhG,OAAO,CAACiG,eAAe,IAAI,CAAC,CAAC,CAC9B,uCAAE;QAFE;UAAO5B,eAAa;UAAE6B,iBAAiB;QAG1C,IAAIA,iBAAiB,KAAKH,QAAQ,EAAE;UAClC,OAAO1B,eAAa;QACtB;MACF;;MAGA,IAAM8B,iBAAiB,GAAGb,SAAS,CAACzC,cAAc;MAClD,KAAK,IAAMuD,sBAAsB,IAAI1H,gCAAgC,EAAE;QACrE,IAAM2H,aAAa,GAAG,IAAI,CAAC5G,KAAK,CAAC2G,sBAAsB,CAAC;QACxD,IAAIC,aAAa,KAAKF,iBAAiB,EAAE;UAGvC,OAAOzH,gCAAgC,CAAC0H,sBAAsB,CAAC;QACjE;MACF;;MAIA,IAAME,SAAS,GAAGtG,OAAO,CAACuG,kBAAkB,IAAI,MAAM;MACtD,IAAIjB,SAAS,CAACpD,QAAQ,CAACoE,SAAS,CAAC,EAAE;QACjC,OAAOhB,SAAS,CAACpD,QAAQ,CAACoE,SAAS,CAAC,CAACE,MAAM;MAC7C;;MAGA,kCAA2BT,QAAQ;IACrC;;EAAC;IAAA;IAAA;;IAKD,8BAAqBvF,aAAgC,EAAE;MACrD,IAAMiG,aAAa,GAAG,IAAI,CAAC/G,OAAO,CAACgH,WAAW,CAAClG,aAAa,CAAC;MAC7D,OAAO,IAAI,CAACmG,iBAAiB,CAACF,aAAa,CAAC;IAC9C;;EAAC;IAAA;IAAA;IAGD,+BAAsBjG,aAAgC,EAAEgC,WAAmB,EAAE;MAC3E,IAAMiE,aAAa,GAAG,IAAI,CAAC/G,OAAO,CAACkH,oBAAoB,CAACpG,aAAa,EAAEgC,WAAW,CAAC;MACnF,OAAO,IAAI,CAACmE,iBAAiB,CAACF,aAAa,CAAC;IAC9C;;EAAC;IAAA;IAAA;IAOD,2BAAkBA,aAAuB,EAAyC;MAEhF,IAAI,CAACA,aAAa,IAAI,CAACA,aAAa,CAACzF,GAAG,EAAE;QACxC,OAAO,CAAC,CAAC;MACX;MACA,IAAM6F,MAAM,GAAG,CAAC,CAAC;MACjB,IAAMC,UAAU,GAAG,IAAI,CAAClH,eAAe,CAACmH,UAAU,CAACN,aAAa,CAAC;MACjE,KAAK,IAAIO,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGF,UAAU,EAAEE,UAAU,EAAE,EAAE;QAC9D,IAAMV,SAAS,GAAG,IAAI,CAAC1G,eAAe,CAACqH,YAAY,CAACR,aAAa,EAAEO,UAAU,CAAC;QAC9EH,MAAM,CAACP,SAAS,CAAC,GAAG,IAAI,CAACY,sBAAsB,CAACT,aAAa,EAAEH,SAAS,CAAC;MAC3E;MACA,OAAOO,MAAM;IACf;;EAAC;IAAA;IAAA;IAOD,gCAAuBJ,aAAuB,EAAEH,SAAiB,EAAsB;MACrF,IAAMpB,UAAU,GAAG,IAAI,IAAI,CAACzF,KAAK,CAAC0F,eAAe,EAAE;MACnD,IAAI;QAEF,IAAI,CAACvF,eAAe,CAACuH,gBAAgB,CAACV,aAAa,EAAEH,SAAS,EAAEpB,UAAU,CAAC;QAC3E,IAAMkC,QAAQ,GAAGC,aAAa,CAACnC,UAAU,CAAC;QAC1C,OAAO;UACLoC,GAAG,EAAE,IAAI,CAAC1H,eAAe,CAAC2H,WAAW,CAACd,aAAa,EAAEH,SAAS,CAAC;UAC/DE,MAAM,EAAE,IAAI,CAAC5G,eAAe,CAAC4H,cAAc,CAACf,aAAa,EAAEH,SAAS,CAAC;UACrEmB,MAAM,EAAE,IAAI,CAAC7H,eAAe,CAAC8H,cAAc,CAACjB,aAAa,EAAEH,SAAS,CAAC;UACrEc,QAAQ,EAARA;QACF,CAAC;MACH,CAAC,SAAS;QACR,IAAI,CAAC3H,KAAK,CAACK,OAAO,CAACoF,UAAU,CAAC;MAChC;IACF;;EAAC;IAAA;IAAA;;IAKD,qCAA4BlF,OAA0B,EAAE;MACtD,4BAA8DA,OAAO,CAA9D2H,mBAAmB;QAAnBA,mBAAmB,sCAAG,EAAE;QAAA,wBAA+B3H,OAAO,CAApC4H,oBAAoB;QAApBA,oBAAoB,sCAAG,EAAE;MAC1D,IAAMC,cAAc,8CAAOF,mBAAmB,oCAAKC,oBAAoB,EAAC;MAAC,2CACxCC,cAAc;QAAA;MAAA;QAA/C,oDAAiD;UAAA,IAAtCC,kBAAkB;UAC3B,IAAI,CAACpI,OAAO,CAACqI,sBAAsB,CAAC,IAAI,CAACtI,KAAK,CAACqI,kBAAkB,CAAC,CAAC;QACrE;MAAC;QAAA;MAAA;QAAA;MAAA;IACH;;EAAC;IAAA;IAAA;IAMD,mCACErF,cAA8B,EAC9BzC,OAA0B,EACS;MAAA;MACnC,6BAAmCA,OAAO,CAAnC2H,mBAAmB;QAAnBA,mBAAmB,uCAAG,EAAE;MAC/B,IAAM9E,cAAc,GAAGJ,cAAc,CAACI,cAAc,EAAE;MACtD,IAAMmF,IAAI,GAAGL,mBAAmB,CAACM,GAAG,CAAC,UAACC,IAAI;QAAA,OAAK,KAAI,CAACxI,OAAO,CAACwI,IAAI,CAAC;MAAA,EAAC,CAACC,QAAQ,CAACtF,cAAc,CAAC;MAC3F,IAAImF,IAAI,EAAE;QACR,IAAMI,SAAS,GAAG,IAAI,IAAI,CAAC3I,KAAK,CAAC4I,8BAA8B,EAAE;QACjE,IAAI;UACF,IAAID,SAAS,CAACE,iBAAiB,CAAC7F,cAAc,CAAC,EAAE;YAC/C,OAAO;cACL8F,iBAAiB,EAAEH,SAAS,CAACG,iBAAiB,EAAE;cAChDC,KAAK,EAAEJ,SAAS,CAACI,KAAK,EAAE;cACxBC,UAAU,EAAE,IAAInJ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC2I,GAAG,CAAC,UAACS,CAAC;gBAAA,OAAKN,SAAS,CAACO,SAAS,CAACD,CAAC,CAAC;cAAA;YAC3E,CAAC;UACH;QACF,CAAC,SAAS;UACR,IAAI,CAACjJ,KAAK,CAACK,OAAO,CAACsI,SAAS,CAAC;QAC/B;MACF;MACA,OAAO,IAAI;IACb;EAAC;IAAA;IAAA,OAED,iCACE3F,cAA8B,EAC9BzC,OAA0B,EACO;MAAA;MACjC,6BAAoCA,OAAO,CAApC4H,oBAAoB;QAApBA,oBAAoB,uCAAG,EAAE;MAChC,IAAM/E,cAAc,GAAGJ,cAAc,CAACI,cAAc,EAAE;MACtD,IAAMU,UAAU,GAAGqE,oBAAoB,CACpCK,GAAG,CAAC,UAACC,IAAI;QAAA,OAAK,MAAI,CAACxI,OAAO,CAACwI,IAAI,CAAC;MAAA,EAAC,CACjCC,QAAQ,CAACtF,cAAc,CAAC;MAC3B,IAAIU,UAAU,EAAE;QACd,IAAM6E,SAAS,GAAG,IAAI,IAAI,CAAC3I,KAAK,CAAC4I,8BAA8B,EAAE;QACjE,IAAI;UACF,IAAID,SAAS,CAACE,iBAAiB,CAAC7F,cAAc,CAAC,EAAE;YAC/C,OAAO;cACL8F,iBAAiB,EAAEH,SAAS,CAACG,iBAAiB;YAChD,CAAC;UACH;QACF,CAAC,SAAS;UACR,IAAI,CAAC9I,KAAK,CAACK,OAAO,CAACsI,SAAS,CAAC;QAC/B;MACF;MACA,OAAO,IAAI;IACb;;EAAC;EAAA;AAAA;AAAA;AAUH,SAASvC,gBAAgB,CAACpG,KAAc,EAAE4G,aAAkB,EAAkB;EAC5E,QAAQA,aAAa;IACnB,KAAK/G,YAAY;MACf,OAAOG,KAAK,CAACmJ,UAAU;IACzB,KAAK5J,SAAS;MACZ,OAAOS,KAAK,CAACoJ,OAAO;IACtB,KAAK3J,UAAU;MACb,OAAOO,KAAK,CAACqJ,QAAQ;IACvB,KAAK1J,UAAU;MACb,OAAOK,KAAK,CAACsJ,QAAQ;IACvB,KAAK9J,UAAU;MACb,OAAOQ,KAAK,CAACuJ,QAAQ;IACvB,KAAK7J,WAAW;MACd,OAAOM,KAAK,CAACwJ,SAAS;IACxB,KAAK5J,WAAW;MACd,OAAOI,KAAK,CAACyJ,SAAS;IACxB;MACE,OAAOzJ,KAAK,CAAC0J,UAAU;EAAC;AAE9B;;AAKA,SAAS9B,aAAa,CAACnC,UAA2B,EAAc;EAC9D,IAAMQ,SAAS,GAAGR,UAAU,CAAClB,IAAI,EAAE;EACnC,IAAMoD,QAAQ,GAAG,IAAIhI,UAAU,CAACsG,SAAS,CAAC;EAC1C,KAAK,IAAIgD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhD,SAAS,EAAEgD,CAAC,EAAE,EAAE;IAClCtB,QAAQ,CAACsB,CAAC,CAAC,GAAGxD,UAAU,CAACkE,QAAQ,CAACV,CAAC,CAAC;EACtC;EACA,OAAOtB,QAAQ;AACjB;;AAKA,SAAS/B,cAAc,CAACH,UAA2B,EAAc;EAC/D,IAAMQ,SAAS,GAAGR,UAAU,CAAClB,IAAI,EAAE;EACnC,IAAMoD,QAAQ,GAAG,IAAIhI,UAAU,CAACsG,SAAS,CAAC;EAC1C,KAAK,IAAIgD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhD,SAAS,EAAEgD,CAAC,EAAE,EAAE;IAClCtB,QAAQ,CAACsB,CAAC,CAAC,GAAGxD,UAAU,CAACkE,QAAQ,CAACV,CAAC,CAAC;EACtC;EACA,OAAOtB,QAAQ;AACjB"}
|
|
1
|
+
{"version":3,"file":"draco-parser.js","names":["_schema","require","_getDracoSchema","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","draco","_classCallCheck2","decoder","Decoder","metadataQuerier","MetadataQuerier","_createClass2","destroy","parseSync","arrayBuffer","options","undefined","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","concat","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","getMeshBoundingBox","attributes","schema","getDracoSchema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","_getTriangleStripIndices","size","_getTriangleListIndices","_i","_Object$values","values","loaderAttribute","attributeName","_deduceAttributeName","_this$_getAttributeVa","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","_i2","_Object$entries","entries","extraAttributes","_Object$entries$_i","_slicedToArray2","attributeUniqueId","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","_options$quantizedAtt","quantizedAttributes","_options$octahedronAt","octahedronAttributes","skipAttributes","_toConsumableArray2","_iterator","_step","dracoAttributeName","SkipAttributeTransform","_this","_options$quantizedAtt2","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","min_value","_this2","_options$octahedronAt2","exports","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-draco-schema.js","names":["getDracoSchema","attributes","loaderData","indices","metadataMap","makeMetadata","metadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","Schema","result","key","dracoAttribute","name","undefined","deduceMeshField","Map","set","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadataMap = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {\n const metadataMap = new Map();\n for (const key in metadata) {\n metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;AAAA;AAKO,
|
|
1
|
+
{"version":3,"file":"get-draco-schema.js","names":["_schema","require","getDracoSchema","attributes","loaderData","indices","metadataMap","makeMetadata","metadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","Schema","result","key","dracoAttribute","name","undefined","deduceMeshField","Map","set","concat","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadataMap = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {\n const metadataMap = new Map();\n for (const key in metadata) {\n metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAKO,SAASC,cAAcA,CAC5BC,UAAoD,EACpDC,UAA2B,EAC3BC,OAAuB,EACf;EACR,IAAMC,WAAW,GAAGC,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC;EACrD,IAAMC,MAAe,GAAG,EAAE;EAC1B,IAAMC,yBAAyB,GAAGC,6BAA6B,CAACP,UAAU,CAACD,UAAU,CAAC;EACtF,KAAK,IAAMS,cAAa,IAAIT,UAAU,EAAE;IACtC,IAAMU,SAAS,GAAGV,UAAU,CAACS,cAAa,CAAC;IAC3C,IAAME,KAAK,GAAGC,0BAA0B,CACtCH,cAAa,EACbC,SAAS,EACTH,yBAAyB,CAACE,cAAa,CAAC,CACzC;IACDH,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,IAAIT,OAAO,EAAE;IACX,IAAMY,YAAY,GAAGF,0BAA0B,CAAC,SAAS,EAAEV,OAAO,CAAC;IACnEI,MAAM,CAACO,IAAI,CAACC,YAAY,CAAC;EAC3B;EACA,OAAO,IAAIC,cAAM,CAACT,MAAM,EAAEH,WAAW,CAAC;AACxC;AAEA,SAASK,6BAA6BA,CAACP,UAA2C,EAEhF;EACA,IAAMe,MAAiD,GAAG,CAAC,CAAC;EAC5D,KAAK,IAAMC,IAAG,IAAIhB,UAAU,EAAE;IAC5B,IAAMiB,cAAc,GAAGjB,UAAU,CAACgB,IAAG,CAAC;IACtCD,MAAM,CAACE,cAAc,CAACC,IAAI,IAAI,WAAW,CAAC,GAAGD,cAAc;EAC7D;EACA,OAAOF,MAAM;AACf;AAEA,SAASJ,0BAA0BA,CACjCH,aAAqB,EACrBC,SAAwB,EACxBT,UAA2B,EACpB;EACP,IAAME,WAAW,GAAGF,UAAU,GAAGG,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC,GAAGe,SAAS;EAC9E,IAAMT,KAAK,GAAG,IAAAU,uBAAe,EAACZ,aAAa,EAAEC,SAAS,EAAEP,WAAW,CAAC;EACpE,OAAOQ,KAAK;AACd;AAEA,SAASP,YAAYA,CAACC,QAA6C,EAAuB;EACxF,IAAMF,WAAW,GAAG,IAAImB,GAAG,EAAE;EAC7B,KAAK,IAAML,KAAG,IAAIZ,QAAQ,EAAE;IAC1BF,WAAW,CAACoB,GAAG,IAAAC,MAAA,CAAIP,KAAG,cAAWQ,IAAI,CAACC,SAAS,CAACrB,QAAQ,CAACY,KAAG,CAAC,CAAC,CAAC;EACjE;EACA,OAAOd,WAAW;AACpB"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
var VERSION = typeof "3.4.0-alpha.
|
|
7
|
+
var VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;
|
|
1
|
+
{"version":3,"file":"version.js","names":["VERSION","exports"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draco-nodejs-worker.js","names":["createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-nodejs-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport '@loaders.gl/polyfills';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA;
|
|
1
|
+
{"version":3,"file":"draco-nodejs-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-nodejs-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport '@loaders.gl/polyfills';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,kBAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draco-worker.js","names":["createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA;AACA;AAEA,
|
|
1
|
+
{"version":3,"file":"draco-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,kBAAW,CAAC"}
|
|
@@ -13,37 +13,35 @@ var _dracoWriterNodejs = require("../draco-writer-nodejs");
|
|
|
13
13
|
var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {
|
|
14
14
|
var input, options, result, message;
|
|
15
15
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
-
while (1) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return _context.stop();
|
|
46
|
-
}
|
|
16
|
+
while (1) switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
_context.t0 = type;
|
|
19
|
+
_context.next = _context.t0 === 'process' ? 3 : 16;
|
|
20
|
+
break;
|
|
21
|
+
case 3:
|
|
22
|
+
_context.prev = 3;
|
|
23
|
+
input = payload.input, options = payload.options;
|
|
24
|
+
_context.next = 7;
|
|
25
|
+
return _dracoWriterNodejs.DracoWriterNodeJS.encode(input, options);
|
|
26
|
+
case 7:
|
|
27
|
+
result = _context.sent;
|
|
28
|
+
_workerUtils.WorkerBody.postMessage('done', {
|
|
29
|
+
result: result
|
|
30
|
+
});
|
|
31
|
+
_context.next = 15;
|
|
32
|
+
break;
|
|
33
|
+
case 11:
|
|
34
|
+
_context.prev = 11;
|
|
35
|
+
_context.t1 = _context["catch"](3);
|
|
36
|
+
message = _context.t1 instanceof Error ? _context.t1.message : '';
|
|
37
|
+
_workerUtils.WorkerBody.postMessage('error', {
|
|
38
|
+
error: message
|
|
39
|
+
});
|
|
40
|
+
case 15:
|
|
41
|
+
return _context.abrupt("break", 16);
|
|
42
|
+
case 16:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context.stop();
|
|
47
45
|
}
|
|
48
46
|
}, _callee, null, [[3, 11]]);
|
|
49
47
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draco-writer-nodejs-worker.js","names":["WorkerBody","inWorkerThread","onmessage","type","payload","input","options","DracoWriterNodeJS","encode","
|
|
1
|
+
{"version":3,"file":"draco-writer-nodejs-worker.js","names":["_workerUtils","require","_dracoWriterNodejs","WorkerBody","inWorkerThread","onmessage","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","type","payload","input","options","result","message","wrap","_callee$","_context","prev","next","t0","DracoWriterNodeJS","encode","sent","postMessage","t1","Error","error","abrupt","stop","_x","_x2","apply","arguments"],"sources":["../../../src/workers/draco-writer-nodejs-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriterNodeJS} from '../draco-writer-nodejs';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriterNodeJS.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":";;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAEA,CAAC,YAAM;EAEL,IAAI,CAACE,uBAAU,CAACC,cAAc,EAAE,EAAE;IAChC;EACF;EAEAD,uBAAU,CAACE,SAAS;IAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAAOC,IAAI,EAAEC,OAA6B;MAAA,IAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,OAAA;MAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAG,EAAA,GACvDX,IAAI;YAAAQ,QAAA,CAAAE,IAAA,GAAAF,QAAA,CAAAG,EAAA,KACL,SAAS;YAAA;UAAA;YAAAH,QAAA,CAAAC,IAAA;YAEHP,KAAK,GAAaD,OAAO,CAAzBC,KAAK,EAAEC,OAAO,GAAIF,OAAO,CAAlBE,OAAO;YAAAK,QAAA,CAAAE,IAAA;YAAA,OACAE,oCAAiB,CAACC,MAAM,CAAEX,KAAK,EAAEC,OAAO,CAAC;UAAA;YAAxDC,MAAM,GAAAI,QAAA,CAAAM,IAAA;YACZvB,uBAAU,CAACwB,WAAW,CAAC,MAAM,EAAE;cAACX,MAAM,EAANA;YAAM,CAAC,CAAC;YAACI,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAQ,EAAA,GAAAR,QAAA;YAEnCH,OAAO,GAAGG,QAAA,CAAAQ,EAAA,YAAiBC,KAAK,GAAGT,QAAA,CAAAQ,EAAA,CAAMX,OAAO,GAAG,EAAE;YAC3Dd,uBAAU,CAACwB,WAAW,CAAC,OAAO,EAAE;cAACG,KAAK,EAAEb;YAAO,CAAC,CAAC;UAAC;YAAA,OAAAG,QAAA,CAAAW,MAAA;UAAA;UAAA;YAAA,OAAAX,QAAA,CAAAY,IAAA;QAAA;MAAA,GAAArB,OAAA;IAAA,CAKzD;IAAA,iBAAAsB,EAAA,EAAAC,GAAA;MAAA,OAAA5B,IAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH,CAAC,GAAG"}
|