@loaders.gl/gltf 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 +79 -27
- package/dist/es5/glb-loader.js +6 -9
- package/dist/es5/glb-loader.js.map +1 -1
- package/dist/es5/glb-writer.js +0 -3
- package/dist/es5/glb-writer.js.map +1 -1
- package/dist/es5/gltf-loader.js +15 -19
- package/dist/es5/gltf-loader.js.map +1 -1
- package/dist/es5/gltf-writer.js +0 -2
- package/dist/es5/gltf-writer.js.map +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/api/gltf-extensions.js +36 -43
- package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
- package/dist/es5/lib/api/gltf-scenegraph.js +31 -108
- package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/es5/lib/api/normalize-gltf-v1.js +8 -33
- package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
- package/dist/es5/lib/api/post-process-gltf.js +5 -22
- package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
- package/dist/es5/lib/encoders/encode-glb.js +0 -16
- package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
- package/dist/es5/lib/encoders/encode-gltf.js +0 -2
- package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js +48 -54
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_texture_webp.js +2 -5
- package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_binary_gltf.js +1 -7
- package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +117 -134
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_basisu.js +1 -4
- package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_transform.js +18 -27
- package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +7 -14
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +52 -58
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +22 -26
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +31 -40
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/es5/lib/gltf-utils/get-typed-array.js +0 -3
- package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +0 -5
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-constants.js +0 -2
- package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
- package/dist/es5/lib/parsers/parse-glb.js +0 -16
- package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
- package/dist/es5/lib/parsers/parse-gltf.js +145 -164
- package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/es5/lib/utils/assert.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/meshopt/meshopt-decoder.js +69 -87
- package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
- package/dist/es5/webp/webp.js +40 -45
- package/dist/es5/webp/webp.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/glb-loader.js +0 -2
- package/dist/esm/glb-loader.js.map +1 -1
- package/dist/esm/glb-writer.js +0 -4
- package/dist/esm/glb-writer.js.map +1 -1
- package/dist/esm/gltf-loader.js +0 -2
- package/dist/esm/gltf-loader.js.map +1 -1
- package/dist/esm/gltf-writer.js +0 -2
- package/dist/esm/gltf-writer.js.map +1 -1
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/api/gltf-extensions.js +1 -10
- package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
- package/dist/esm/lib/api/gltf-scenegraph.js +2 -48
- package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/esm/lib/api/normalize-gltf-v1.js +0 -17
- package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -1
- package/dist/esm/lib/api/post-process-gltf.js +2 -16
- package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
- package/dist/esm/lib/encoders/encode-glb.js +0 -16
- package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
- package/dist/esm/lib/encoders/encode-gltf.js +0 -2
- package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js +0 -7
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_texture_webp.js +2 -7
- package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_binary_gltf.js +0 -6
- package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +1 -18
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_basisu.js +0 -5
- package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_transform.js +0 -11
- package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +0 -7
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +0 -7
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +0 -5
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +3 -11
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/esm/lib/gltf-utils/get-typed-array.js +0 -4
- package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +0 -7
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-constants.js +0 -1
- package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/esm/lib/gltf-utils/resolve-url.js +0 -1
- package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -1
- package/dist/esm/lib/parsers/parse-glb.js +0 -17
- package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
- package/dist/esm/lib/parsers/parse-gltf.js +0 -18
- package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/esm/lib/utils/assert.js +0 -1
- package/dist/esm/lib/utils/assert.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -2
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/meshopt/meshopt-decoder.js +0 -8
- package/dist/esm/meshopt/meshopt-decoder.js.map +1 -1
- package/dist/esm/webp/webp.js +0 -2
- package/dist/esm/webp/webp.js.map +1 -1
- package/dist/gltf-loader.d.ts +2 -1
- package/dist/gltf-loader.d.ts.map +1 -1
- package/dist/lib/api/gltf-extensions.js +1 -1
- package/dist/lib/extensions/EXT_texture_webp.js +1 -1
- package/dist/lib/parsers/parse-gltf.d.ts +1 -1
- package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/lib/extensions/EXT_texture_webp.ts +2 -2
|
@@ -15,7 +15,7 @@ var _assert = require("../utils/assert");
|
|
|
15
15
|
var _gltfUtils = require("../gltf-utils/gltf-utils");
|
|
16
16
|
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; } } }; }
|
|
17
17
|
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); }
|
|
18
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
18
|
+
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; }
|
|
19
19
|
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; }
|
|
20
20
|
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; }
|
|
21
21
|
var DEFAULT_GLTF_JSON = {
|
|
@@ -26,7 +26,6 @@ var DEFAULT_GLTF_JSON = {
|
|
|
26
26
|
buffers: []
|
|
27
27
|
};
|
|
28
28
|
var GLTFScenegraph = function () {
|
|
29
|
-
|
|
30
29
|
function GLTFScenegraph(gltf) {
|
|
31
30
|
(0, _classCallCheck2.default)(this, GLTFScenegraph);
|
|
32
31
|
(0, _defineProperty2.default)(this, "gltf", void 0);
|
|
@@ -38,18 +37,14 @@ var GLTFScenegraph = function () {
|
|
|
38
37
|
};
|
|
39
38
|
this.sourceBuffers = [];
|
|
40
39
|
this.byteLength = 0;
|
|
41
|
-
|
|
42
40
|
if (this.gltf.buffers && this.gltf.buffers[0]) {
|
|
43
41
|
this.byteLength = this.gltf.buffers[0].byteLength;
|
|
44
42
|
this.sourceBuffers = [this.gltf.buffers[0]];
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
|
-
|
|
48
45
|
(0, _createClass2.default)(GLTFScenegraph, [{
|
|
49
46
|
key: "json",
|
|
50
|
-
get:
|
|
51
|
-
|
|
52
|
-
function get() {
|
|
47
|
+
get: function get() {
|
|
53
48
|
return this.gltf.json;
|
|
54
49
|
}
|
|
55
50
|
}, {
|
|
@@ -132,12 +127,9 @@ var GLTFScenegraph = function () {
|
|
|
132
127
|
value: function getAccessor(index) {
|
|
133
128
|
return this.getObject('accessors', index);
|
|
134
129
|
}
|
|
135
|
-
|
|
136
130
|
}, {
|
|
137
131
|
key: "getTexture",
|
|
138
|
-
value:
|
|
139
|
-
|
|
140
|
-
function getTexture(index) {
|
|
132
|
+
value: function getTexture(index) {
|
|
141
133
|
return this.getObject('textures', index);
|
|
142
134
|
}
|
|
143
135
|
}, {
|
|
@@ -170,44 +162,34 @@ var GLTFScenegraph = function () {
|
|
|
170
162
|
if (!object) {
|
|
171
163
|
throw new Error("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
|
|
172
164
|
}
|
|
173
|
-
|
|
174
165
|
return object;
|
|
175
166
|
}
|
|
176
|
-
|
|
177
167
|
}, {
|
|
178
168
|
key: "getTypedArrayForBufferView",
|
|
179
|
-
value:
|
|
180
|
-
function getTypedArrayForBufferView(bufferView) {
|
|
169
|
+
value: function getTypedArrayForBufferView(bufferView) {
|
|
181
170
|
bufferView = this.getBufferView(bufferView);
|
|
182
171
|
var bufferIndex = bufferView.buffer;
|
|
183
|
-
|
|
184
172
|
var binChunk = this.gltf.buffers[bufferIndex];
|
|
185
173
|
(0, _assert.assert)(binChunk);
|
|
186
|
-
|
|
187
174
|
var byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;
|
|
188
175
|
return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);
|
|
189
176
|
}
|
|
190
|
-
|
|
191
177
|
}, {
|
|
192
178
|
key: "getTypedArrayForAccessor",
|
|
193
|
-
value:
|
|
194
|
-
function getTypedArrayForAccessor(accessor) {
|
|
179
|
+
value: function getTypedArrayForAccessor(accessor) {
|
|
195
180
|
accessor = this.getAccessor(accessor);
|
|
196
181
|
var bufferView = this.getBufferView(accessor.bufferView);
|
|
197
182
|
var buffer = this.getBuffer(bufferView.buffer);
|
|
198
183
|
var arrayBuffer = buffer.data;
|
|
199
|
-
|
|
200
184
|
var _getAccessorArrayType = (0, _gltfUtils.getAccessorArrayTypeAndLength)(accessor, bufferView),
|
|
201
185
|
ArrayType = _getAccessorArrayType.ArrayType,
|
|
202
186
|
length = _getAccessorArrayType.length;
|
|
203
187
|
var byteOffset = bufferView.byteOffset + accessor.byteOffset;
|
|
204
188
|
return new ArrayType(arrayBuffer, byteOffset, length);
|
|
205
189
|
}
|
|
206
|
-
|
|
207
190
|
}, {
|
|
208
191
|
key: "getTypedArrayForImageData",
|
|
209
|
-
value:
|
|
210
|
-
function getTypedArrayForImageData(image) {
|
|
192
|
+
value: function getTypedArrayForImageData(image) {
|
|
211
193
|
image = this.getAccessor(image);
|
|
212
194
|
var bufferView = this.getBufferView(image.bufferView);
|
|
213
195
|
var buffer = this.getBuffer(bufferView.buffer);
|
|
@@ -215,20 +197,15 @@ var GLTFScenegraph = function () {
|
|
|
215
197
|
var byteOffset = bufferView.byteOffset || 0;
|
|
216
198
|
return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
|
|
217
199
|
}
|
|
218
|
-
|
|
219
200
|
}, {
|
|
220
201
|
key: "addApplicationData",
|
|
221
|
-
value:
|
|
222
|
-
|
|
223
|
-
function addApplicationData(key, data) {
|
|
202
|
+
value: function addApplicationData(key, data) {
|
|
224
203
|
this.json[key] = data;
|
|
225
204
|
return this;
|
|
226
205
|
}
|
|
227
|
-
|
|
228
206
|
}, {
|
|
229
207
|
key: "addExtraData",
|
|
230
|
-
value:
|
|
231
|
-
function addExtraData(key, data) {
|
|
208
|
+
value: function addExtraData(key, data) {
|
|
232
209
|
this.json.extras = this.json.extras || {};
|
|
233
210
|
this.json.extras[key] = data;
|
|
234
211
|
return this;
|
|
@@ -255,11 +232,9 @@ var GLTFScenegraph = function () {
|
|
|
255
232
|
delete extensions[extensionName];
|
|
256
233
|
return extension;
|
|
257
234
|
}
|
|
258
|
-
|
|
259
235
|
}, {
|
|
260
236
|
key: "addExtension",
|
|
261
|
-
value:
|
|
262
|
-
function addExtension(extensionName) {
|
|
237
|
+
value: function addExtension(extensionName) {
|
|
263
238
|
var extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
264
239
|
(0, _assert.assert)(extensionData);
|
|
265
240
|
this.json.extensions = this.json.extensions || {};
|
|
@@ -267,22 +242,18 @@ var GLTFScenegraph = function () {
|
|
|
267
242
|
this.registerUsedExtension(extensionName);
|
|
268
243
|
return extensionData;
|
|
269
244
|
}
|
|
270
|
-
|
|
271
245
|
}, {
|
|
272
246
|
key: "addRequiredExtension",
|
|
273
|
-
value:
|
|
274
|
-
function addRequiredExtension(extensionName) {
|
|
247
|
+
value: function addRequiredExtension(extensionName) {
|
|
275
248
|
var extensionData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
276
249
|
(0, _assert.assert)(extensionData);
|
|
277
250
|
this.addExtension(extensionName, extensionData);
|
|
278
251
|
this.registerRequiredExtension(extensionName);
|
|
279
252
|
return extensionData;
|
|
280
253
|
}
|
|
281
|
-
|
|
282
254
|
}, {
|
|
283
255
|
key: "registerUsedExtension",
|
|
284
|
-
value:
|
|
285
|
-
function registerUsedExtension(extensionName) {
|
|
256
|
+
value: function registerUsedExtension(extensionName) {
|
|
286
257
|
this.json.extensionsUsed = this.json.extensionsUsed || [];
|
|
287
258
|
if (!this.json.extensionsUsed.find(function (ext) {
|
|
288
259
|
return ext === extensionName;
|
|
@@ -290,11 +261,9 @@ var GLTFScenegraph = function () {
|
|
|
290
261
|
this.json.extensionsUsed.push(extensionName);
|
|
291
262
|
}
|
|
292
263
|
}
|
|
293
|
-
|
|
294
264
|
}, {
|
|
295
265
|
key: "registerRequiredExtension",
|
|
296
|
-
value:
|
|
297
|
-
function registerRequiredExtension(extensionName) {
|
|
266
|
+
value: function registerRequiredExtension(extensionName) {
|
|
298
267
|
this.registerUsedExtension(extensionName);
|
|
299
268
|
this.json.extensionsRequired = this.json.extensionsRequired || [];
|
|
300
269
|
if (!this.json.extensionsRequired.find(function (ext) {
|
|
@@ -303,11 +272,9 @@ var GLTFScenegraph = function () {
|
|
|
303
272
|
this.json.extensionsRequired.push(extensionName);
|
|
304
273
|
}
|
|
305
274
|
}
|
|
306
|
-
|
|
307
275
|
}, {
|
|
308
276
|
key: "removeExtension",
|
|
309
|
-
value:
|
|
310
|
-
function removeExtension(extensionName) {
|
|
277
|
+
value: function removeExtension(extensionName) {
|
|
311
278
|
if (!this.getExtension(extensionName)) {
|
|
312
279
|
return;
|
|
313
280
|
}
|
|
@@ -328,18 +295,14 @@ var GLTFScenegraph = function () {
|
|
|
328
295
|
extensionsRemoved.push(extensionName);
|
|
329
296
|
}
|
|
330
297
|
}
|
|
331
|
-
|
|
332
298
|
}, {
|
|
333
299
|
key: "setDefaultScene",
|
|
334
|
-
value:
|
|
335
|
-
function setDefaultScene(sceneIndex) {
|
|
300
|
+
value: function setDefaultScene(sceneIndex) {
|
|
336
301
|
this.json.scene = sceneIndex;
|
|
337
302
|
}
|
|
338
|
-
|
|
339
303
|
}, {
|
|
340
304
|
key: "addScene",
|
|
341
|
-
value:
|
|
342
|
-
function addScene(scene) {
|
|
305
|
+
value: function addScene(scene) {
|
|
343
306
|
var nodeIndices = scene.nodeIndices;
|
|
344
307
|
this.json.scenes = this.json.scenes || [];
|
|
345
308
|
this.json.scenes.push({
|
|
@@ -347,11 +310,9 @@ var GLTFScenegraph = function () {
|
|
|
347
310
|
});
|
|
348
311
|
return this.json.scenes.length - 1;
|
|
349
312
|
}
|
|
350
|
-
|
|
351
313
|
}, {
|
|
352
314
|
key: "addNode",
|
|
353
|
-
value:
|
|
354
|
-
function addNode(node) {
|
|
315
|
+
value: function addNode(node) {
|
|
355
316
|
var meshIndex = node.meshIndex,
|
|
356
317
|
matrix = node.matrix;
|
|
357
318
|
this.json.nodes = this.json.nodes || [];
|
|
@@ -364,11 +325,9 @@ var GLTFScenegraph = function () {
|
|
|
364
325
|
this.json.nodes.push(nodeData);
|
|
365
326
|
return this.json.nodes.length - 1;
|
|
366
327
|
}
|
|
367
|
-
|
|
368
328
|
}, {
|
|
369
329
|
key: "addMesh",
|
|
370
|
-
value:
|
|
371
|
-
function addMesh(mesh) {
|
|
330
|
+
value: function addMesh(mesh) {
|
|
372
331
|
var attributes = mesh.attributes,
|
|
373
332
|
indices = mesh.indices,
|
|
374
333
|
material = mesh.material,
|
|
@@ -402,16 +361,13 @@ var GLTFScenegraph = function () {
|
|
|
402
361
|
mode: 0
|
|
403
362
|
}]
|
|
404
363
|
};
|
|
405
|
-
|
|
406
364
|
this.json.meshes = this.json.meshes || [];
|
|
407
365
|
this.json.meshes.push(glTFMesh);
|
|
408
366
|
return this.json.meshes.length - 1;
|
|
409
367
|
}
|
|
410
|
-
|
|
411
368
|
}, {
|
|
412
369
|
key: "addImage",
|
|
413
|
-
value:
|
|
414
|
-
function addImage(imageData, mimeTypeOpt) {
|
|
370
|
+
value: function addImage(imageData, mimeTypeOpt) {
|
|
415
371
|
var metadata = (0, _images.getBinaryImageMetadata)(imageData);
|
|
416
372
|
var mimeType = mimeTypeOpt || (metadata === null || metadata === void 0 ? void 0 : metadata.mimeType);
|
|
417
373
|
var bufferViewIndex = this.addBufferView(imageData);
|
|
@@ -423,14 +379,11 @@ var GLTFScenegraph = function () {
|
|
|
423
379
|
this.json.images.push(glTFImage);
|
|
424
380
|
return this.json.images.length - 1;
|
|
425
381
|
}
|
|
426
|
-
|
|
427
382
|
}, {
|
|
428
383
|
key: "addBufferView",
|
|
429
|
-
value:
|
|
430
|
-
function addBufferView(buffer) {
|
|
384
|
+
value: function addBufferView(buffer) {
|
|
431
385
|
var byteLength = buffer.byteLength;
|
|
432
386
|
(0, _assert.assert)(Number.isFinite(byteLength));
|
|
433
|
-
|
|
434
387
|
this.sourceBuffers = this.sourceBuffers || [];
|
|
435
388
|
this.sourceBuffers.push(buffer);
|
|
436
389
|
var glTFBufferView = {
|
|
@@ -438,18 +391,14 @@ var GLTFScenegraph = function () {
|
|
|
438
391
|
byteOffset: this.byteLength,
|
|
439
392
|
byteLength: byteLength
|
|
440
393
|
};
|
|
441
|
-
|
|
442
394
|
this.byteLength += (0, _loaderUtils.padToNBytes)(byteLength, 4);
|
|
443
|
-
|
|
444
395
|
this.json.bufferViews = this.json.bufferViews || [];
|
|
445
396
|
this.json.bufferViews.push(glTFBufferView);
|
|
446
397
|
return this.json.bufferViews.length - 1;
|
|
447
398
|
}
|
|
448
|
-
|
|
449
399
|
}, {
|
|
450
400
|
key: "addAccessor",
|
|
451
|
-
value:
|
|
452
|
-
function addAccessor(bufferViewIndex, accessor) {
|
|
401
|
+
value: function addAccessor(bufferViewIndex, accessor) {
|
|
453
402
|
var glTFAccessor = {
|
|
454
403
|
bufferView: bufferViewIndex,
|
|
455
404
|
type: (0, _gltfUtils.getAccessorTypeFromSize)(accessor.size),
|
|
@@ -462,11 +411,9 @@ var GLTFScenegraph = function () {
|
|
|
462
411
|
this.json.accessors.push(glTFAccessor);
|
|
463
412
|
return this.json.accessors.length - 1;
|
|
464
413
|
}
|
|
465
|
-
|
|
466
414
|
}, {
|
|
467
415
|
key: "addBinaryBuffer",
|
|
468
|
-
value:
|
|
469
|
-
function addBinaryBuffer(sourceBuffer) {
|
|
416
|
+
value: function addBinaryBuffer(sourceBuffer) {
|
|
470
417
|
var accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
471
418
|
size: 3
|
|
472
419
|
};
|
|
@@ -487,11 +434,9 @@ var GLTFScenegraph = function () {
|
|
|
487
434
|
};
|
|
488
435
|
return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));
|
|
489
436
|
}
|
|
490
|
-
|
|
491
437
|
}, {
|
|
492
438
|
key: "addTexture",
|
|
493
|
-
value:
|
|
494
|
-
function addTexture(texture) {
|
|
439
|
+
value: function addTexture(texture) {
|
|
495
440
|
var imageIndex = texture.imageIndex;
|
|
496
441
|
var glTFTexture = {
|
|
497
442
|
source: imageIndex
|
|
@@ -500,27 +445,21 @@ var GLTFScenegraph = function () {
|
|
|
500
445
|
this.json.textures.push(glTFTexture);
|
|
501
446
|
return this.json.textures.length - 1;
|
|
502
447
|
}
|
|
503
|
-
|
|
504
448
|
}, {
|
|
505
449
|
key: "addMaterial",
|
|
506
|
-
value:
|
|
507
|
-
function addMaterial(pbrMaterialInfo) {
|
|
450
|
+
value: function addMaterial(pbrMaterialInfo) {
|
|
508
451
|
this.json.materials = this.json.materials || [];
|
|
509
452
|
this.json.materials.push(pbrMaterialInfo);
|
|
510
453
|
return this.json.materials.length - 1;
|
|
511
454
|
}
|
|
512
|
-
|
|
513
455
|
}, {
|
|
514
456
|
key: "createBinaryChunk",
|
|
515
|
-
value:
|
|
516
|
-
function createBinaryChunk() {
|
|
457
|
+
value: function createBinaryChunk() {
|
|
517
458
|
var _this$json, _this$json$buffers;
|
|
518
459
|
this.gltf.buffers = [];
|
|
519
|
-
|
|
520
460
|
var totalByteLength = this.byteLength;
|
|
521
461
|
var arrayBuffer = new ArrayBuffer(totalByteLength);
|
|
522
462
|
var targetArray = new Uint8Array(arrayBuffer);
|
|
523
|
-
|
|
524
463
|
var dstByteOffset = 0;
|
|
525
464
|
var _iterator = _createForOfIteratorHelper(this.sourceBuffers || []),
|
|
526
465
|
_step;
|
|
@@ -529,7 +468,6 @@ var GLTFScenegraph = function () {
|
|
|
529
468
|
var sourceBuffer = _step.value;
|
|
530
469
|
dstByteOffset = (0, _loaderUtils.copyToArray)(sourceBuffer, targetArray, dstByteOffset);
|
|
531
470
|
}
|
|
532
|
-
|
|
533
471
|
} catch (err) {
|
|
534
472
|
_iterator.e(err);
|
|
535
473
|
} finally {
|
|
@@ -542,17 +480,12 @@ var GLTFScenegraph = function () {
|
|
|
542
480
|
byteLength: totalByteLength
|
|
543
481
|
}];
|
|
544
482
|
}
|
|
545
|
-
|
|
546
483
|
this.gltf.binary = arrayBuffer;
|
|
547
|
-
|
|
548
484
|
this.sourceBuffers = [arrayBuffer];
|
|
549
485
|
}
|
|
550
|
-
|
|
551
486
|
}, {
|
|
552
487
|
key: "_removeStringFromArray",
|
|
553
|
-
value:
|
|
554
|
-
|
|
555
|
-
function _removeStringFromArray(array, string) {
|
|
488
|
+
value: function _removeStringFromArray(array, string) {
|
|
556
489
|
var found = true;
|
|
557
490
|
while (found) {
|
|
558
491
|
var index = array.indexOf(string);
|
|
@@ -563,11 +496,9 @@ var GLTFScenegraph = function () {
|
|
|
563
496
|
}
|
|
564
497
|
}
|
|
565
498
|
}
|
|
566
|
-
|
|
567
499
|
}, {
|
|
568
500
|
key: "_addAttributes",
|
|
569
|
-
value:
|
|
570
|
-
function _addAttributes() {
|
|
501
|
+
value: function _addAttributes() {
|
|
571
502
|
var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
572
503
|
var result = {};
|
|
573
504
|
for (var attributeKey in attributes) {
|
|
@@ -578,20 +509,16 @@ var GLTFScenegraph = function () {
|
|
|
578
509
|
}
|
|
579
510
|
return result;
|
|
580
511
|
}
|
|
581
|
-
|
|
582
512
|
}, {
|
|
583
513
|
key: "_addIndices",
|
|
584
|
-
value:
|
|
585
|
-
function _addIndices(indices) {
|
|
514
|
+
value: function _addIndices(indices) {
|
|
586
515
|
return this.addBinaryBuffer(indices, {
|
|
587
516
|
size: 1
|
|
588
517
|
});
|
|
589
518
|
}
|
|
590
|
-
|
|
591
519
|
}, {
|
|
592
520
|
key: "_getGltfAttributeName",
|
|
593
|
-
value:
|
|
594
|
-
function _getGltfAttributeName(attributeName) {
|
|
521
|
+
value: function _getGltfAttributeName(attributeName) {
|
|
595
522
|
switch (attributeName.toLowerCase()) {
|
|
596
523
|
case 'position':
|
|
597
524
|
case 'positions':
|
|
@@ -610,11 +537,9 @@ var GLTFScenegraph = function () {
|
|
|
610
537
|
return attributeName;
|
|
611
538
|
}
|
|
612
539
|
}
|
|
613
|
-
|
|
614
540
|
}, {
|
|
615
541
|
key: "_getAccessorMinMax",
|
|
616
|
-
value:
|
|
617
|
-
function _getAccessorMinMax(buffer, size) {
|
|
542
|
+
value: function _getAccessorMinMax(buffer, size) {
|
|
618
543
|
var result = {
|
|
619
544
|
min: null,
|
|
620
545
|
max: null
|
|
@@ -640,10 +565,8 @@ var GLTFScenegraph = function () {
|
|
|
640
565
|
}
|
|
641
566
|
for (var index = size; index < buffer.length; index += size) {
|
|
642
567
|
for (var componentIndex = 0; componentIndex < size; componentIndex++) {
|
|
643
|
-
result.min[0 + componentIndex] = Math.min(
|
|
644
|
-
result.
|
|
645
|
-
result.max[0 + componentIndex] = Math.max(
|
|
646
|
-
result.max[0 + componentIndex], buffer[index + componentIndex]);
|
|
568
|
+
result.min[0 + componentIndex] = Math.min(result.min[0 + componentIndex], buffer[index + componentIndex]);
|
|
569
|
+
result.max[0 + componentIndex] = Math.max(result.max[0 + componentIndex], buffer[index + componentIndex]);
|
|
647
570
|
}
|
|
648
571
|
}
|
|
649
572
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-scenegraph.js","names":["DEFAULT_GLTF_JSON","asset","version","generator","buffers","GLTFScenegraph","gltf","json","sourceBuffers","byteLength","key","data","extras","extensionName","isExtension","getUsedExtensions","find","name","extensions","isRequired","getRequiredExtensions","getExtension","extensionsRequired","extensionsUsed","extensionsRemoved","object","index","getObject","array","Error","bufferView","getBufferView","bufferIndex","buffer","binChunk","assert","byteOffset","Uint8Array","arrayBuffer","accessor","getAccessor","getBuffer","getAccessorArrayTypeAndLength","ArrayType","length","image","registerUsedExtension","extension","extensionData","addExtension","registerRequiredExtension","ext","push","_removeStringFromArray","Array","isArray","includes","sceneIndex","scene","nodeIndices","scenes","nodes","node","meshIndex","matrix","nodeData","mesh","attributes","indices","material","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","accessorIndices","imageData","mimeTypeOpt","metadata","getBinaryImageMetadata","mimeType","bufferViewIndex","addBufferView","glTFImage","images","glTFBufferView","padToNBytes","bufferViews","glTFAccessor","type","getAccessorTypeFromSize","size","componentType","count","max","min","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","getComponentTypeFromArray","Math","round","addAccessor","Object","assign","texture","imageIndex","glTFTexture","source","textures","pbrMaterialInfo","materials","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","copyToArray","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","addBinaryBuffer","value","attributeName","toLowerCase","initValues","subarray","componentIndex"],"sources":["../../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["import type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView,\n GLTFWithBuffers\n} from '../types/gltf-types';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from '../gltf-utils/gltf-utils';\n\nconst DEFAULT_GLTF_JSON: GLTF = {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: []\n};\n\ntype Extension = {[key: string]: any};\n/**\n * Class for structured access to GLTF data\n */\nexport default class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n constructor(gltf?: {json: GLTF; buffers?: any[]}) {\n // @ts-ignore\n this.gltf = gltf || {\n json: {...DEFAULT_GLTF_JSON},\n buffers: []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? extensions[extensionName] || true : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n accessor = this.getAccessor(accessor);\n // @ts-ignore\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // @ts-ignore\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: object, extensionName: string, data: object): void {\n // @ts-ignore\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: object, extensionName: string): object {\n // @ts-ignore\n const extensions = object.extensions || {};\n const extension = extensions[extensionName];\n delete extensions[extensionName];\n return extension;\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n (this.json.extensions as Record<string, unknown>)[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (!this.getExtension(extensionName)) {\n return;\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (!Array.isArray(this.json.extensionsRemoved)) {\n this.json.extensionsRemoved = [];\n }\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: 0,\n // Write offset from the start of the binary body\n byteOffset: this.byteLength,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gltf-scenegraph.js","names":["_images","require","_loaderUtils","_assert","_gltfUtils","_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","DEFAULT_GLTF_JSON","asset","version","generator","buffers","GLTFScenegraph","gltf","_classCallCheck2","json","sourceBuffers","byteLength","_createClass2","get","getApplicationData","data","getExtraData","extras","getExtension","extensionName","isExtension","getUsedExtensions","find","extensions","getRequiredExtension","isRequired","getRequiredExtensions","extensionsRequired","extensionsUsed","getRemovedExtensions","extensionsRemoved","getObjectExtension","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","_typeof2","Error","concat","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","assert","byteOffset","Uint8Array","arrayBuffer","getTypedArrayForAccessor","accessor","_getAccessorArrayType","getAccessorArrayTypeAndLength","ArrayType","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","extension","addExtension","extensionData","undefined","addRequiredExtension","registerRequiredExtension","ext","removeExtension","_removeStringFromArray","includes","setDefaultScene","sceneIndex","scene","addScene","nodeIndices","scenes","nodes","addNode","node","meshIndex","matrix","nodeData","mesh","addMesh","attributes","indices","material","_mesh$mode","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","getBinaryImageMetadata","mimeType","bufferViewIndex","addBufferView","glTFImage","images","glTFBufferView","padToNBytes","bufferViews","addAccessor","glTFAccessor","type","getAccessorTypeFromSize","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","getComponentTypeFromArray","Math","round","assign","addTexture","texture","imageIndex","glTFTexture","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","_iterator","_step","copyToArray","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","attributeName","toLowerCase","initValues","subarray","_iterator2","_step2","componentIndex","exports"],"sources":["../../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["import type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView,\n GLTFWithBuffers\n} from '../types/gltf-types';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from '../gltf-utils/gltf-utils';\n\nconst DEFAULT_GLTF_JSON: GLTF = {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: []\n};\n\ntype Extension = {[key: string]: any};\n/**\n * Class for structured access to GLTF data\n */\nexport default class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n constructor(gltf?: {json: GLTF; buffers?: any[]}) {\n // @ts-ignore\n this.gltf = gltf || {\n json: {...DEFAULT_GLTF_JSON},\n buffers: []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? extensions[extensionName] || true : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n accessor = this.getAccessor(accessor);\n // @ts-ignore\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // @ts-ignore\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: object, extensionName: string, data: object): void {\n // @ts-ignore\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: object, extensionName: string): object {\n // @ts-ignore\n const extensions = object.extensions || {};\n const extension = extensions[extensionName];\n delete extensions[extensionName];\n return extension;\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n (this.json.extensions as Record<string, unknown>)[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (!this.getExtension(extensionName)) {\n return;\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (!Array.isArray(this.json.extensionsRemoved)) {\n this.json.extensionsRemoved = [];\n }\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: 0,\n // Write offset from the start of the binary body\n byteOffset: this.byteLength,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}
|