@loaders.gl/gltf 4.0.0-alpha.6 → 4.0.0-alpha.8
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 +1661 -1459
- package/dist/es5/glb-loader.js +2 -2
- package/dist/es5/glb-loader.js.map +1 -1
- package/dist/es5/glb-writer.js +3 -4
- package/dist/es5/glb-writer.js.map +1 -1
- package/dist/es5/gltf-loader.js +3 -3
- package/dist/es5/gltf-loader.js.map +1 -1
- package/dist/es5/index.js +9 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
- package/dist/es5/lib/api/gltf-scenegraph.js +52 -32
- package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/es5/lib/api/post-process-gltf.js +164 -116
- package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
- package/dist/es5/lib/encoders/encode-glb.js +1 -1
- package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
- package/dist/es5/lib/encoders/encode-gltf.js +2 -3
- package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js +3 -5
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_texture_webp.js +2 -3
- package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_binary_gltf.js +2 -3
- package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +6 -5
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_basisu.js +3 -4
- package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_transform.js +9 -8
- package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +195 -17
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +3 -3
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +3 -3
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -2
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-utils.js +24 -0
- package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-glb.js +10 -10
- package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
- package/dist/es5/lib/parsers/parse-gltf.js +18 -25
- package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-types.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/esm/glb-loader.js +1 -1
- package/dist/esm/glb-loader.js.map +1 -1
- package/dist/esm/glb-writer.js +1 -1
- package/dist/esm/glb-writer.js.map +1 -1
- package/dist/esm/gltf-loader.js +3 -3
- package/dist/esm/gltf-loader.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
- package/dist/esm/lib/api/gltf-scenegraph.js +45 -31
- package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/esm/lib/api/post-process-gltf.js +167 -112
- package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
- package/dist/esm/lib/encoders/encode-glb.js +1 -1
- package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
- package/dist/esm/lib/encoders/encode-gltf.js +1 -1
- package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js +2 -3
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_texture_webp.js +1 -1
- package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_binary_gltf.js +1 -1
- package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +5 -4
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_basisu.js +2 -2
- package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_transform.js +7 -6
- package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +161 -15
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-utils.js +20 -0
- package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-glb.js +10 -10
- package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
- package/dist/esm/lib/parsers/parse-gltf.js +7 -12
- package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-types.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/glb-loader.d.ts +2 -2
- package/dist/glb-loader.js +2 -5
- package/dist/glb-writer.d.ts.map +1 -1
- package/dist/glb-writer.js +4 -6
- package/dist/gltf-loader.d.ts +5 -5
- package/dist/gltf-loader.d.ts.map +1 -1
- package/dist/gltf-loader.js +3 -3
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/lib/api/gltf-extensions.d.ts +1 -1
- package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
- package/dist/lib/api/gltf-extensions.js +1 -1
- package/dist/lib/api/gltf-scenegraph.d.ts +8 -5
- package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
- package/dist/lib/api/gltf-scenegraph.js +47 -33
- package/dist/lib/api/post-process-gltf.d.ts +4 -1
- package/dist/lib/api/post-process-gltf.d.ts.map +1 -1
- package/dist/lib/api/post-process-gltf.js +186 -123
- package/dist/lib/encoders/encode-glb.d.ts +13 -1
- package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
- package/dist/lib/encoders/encode-glb.js +15 -4
- package/dist/lib/encoders/encode-gltf.js +2 -5
- package/dist/lib/extensions/EXT_meshopt_compression.d.ts +1 -1
- package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_meshopt_compression.js +3 -7
- package/dist/lib/extensions/EXT_texture_webp.d.ts +1 -1
- package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_texture_webp.js +2 -5
- package/dist/lib/extensions/KHR_binary_gltf.d.ts +1 -1
- package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_binary_gltf.js +2 -5
- package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +1 -1
- package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_draco_mesh_compression.js +5 -8
- package/dist/lib/extensions/KHR_texture_basisu.d.ts +1 -1
- package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_texture_basisu.js +3 -6
- package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_texture_transform.js +7 -10
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +3 -2
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +195 -23
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +1 -1
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +3 -6
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +1 -1
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +3 -6
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +1 -1
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -5
- package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +1 -1
- package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -1
- package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
- package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
- package/dist/lib/gltf-utils/gltf-utils.js +28 -1
- package/dist/lib/parsers/parse-glb.d.ts +15 -3
- package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
- package/dist/lib/parsers/parse-glb.js +43 -18
- package/dist/lib/parsers/parse-gltf.d.ts +8 -4
- package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
- package/dist/lib/parsers/parse-gltf.js +17 -41
- package/dist/lib/types/gltf-json-schema.d.ts +153 -139
- package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-postprocessed-schema.d.ts +174 -209
- package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-postprocessed-schema.js +1 -1
- package/dist/lib/types/gltf-types.d.ts +18 -6
- package/dist/lib/types/gltf-types.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/glb-loader.ts +3 -3
- package/src/glb-writer.ts +3 -1
- package/src/gltf-loader.ts +12 -8
- package/src/index.ts +32 -13
- package/src/lib/api/gltf-extensions.ts +1 -1
- package/src/lib/api/gltf-scenegraph.ts +60 -41
- package/src/lib/api/post-process-gltf.ts +275 -150
- package/src/lib/encoders/encode-glb.ts +15 -5
- package/src/lib/encoders/encode-gltf.ts +1 -1
- package/src/lib/extensions/EXT_meshopt_compression.ts +4 -6
- package/src/lib/extensions/EXT_texture_webp.ts +2 -2
- package/src/lib/extensions/KHR_binary_gltf.ts +2 -2
- package/src/lib/extensions/KHR_draco_mesh_compression.ts +7 -7
- package/src/lib/extensions/KHR_texture_basisu.ts +3 -3
- package/src/lib/extensions/KHR_texture_transform.ts +22 -19
- package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +264 -23
- package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
- package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +2 -2
- package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +2 -2
- package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
- package/src/lib/gltf-utils/gltf-utils.ts +31 -0
- package/src/lib/parsers/parse-glb.ts +50 -24
- package/src/lib/parsers/parse-gltf.ts +26 -25
- package/src/lib/types/gltf-json-schema.ts +168 -138
- package/src/lib/types/gltf-postprocessed-schema.ts +289 -212
- package/src/lib/types/gltf-types.ts +35 -59
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-scenegraph.d.ts","sourceRoot":"","sources":["../../../src/lib/api/gltf-scenegraph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gltf-scenegraph.d.ts","sourceRoot":"","sources":["../../../src/lib/api/gltf-scenegraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// loaders.gl, MIT license
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.GLTFScenegraph = void 0;
|
|
3
5
|
const images_1 = require("@loaders.gl/images");
|
|
4
6
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
5
7
|
const assert_1 = require("../utils/assert");
|
|
6
8
|
const gltf_utils_1 = require("../gltf-utils/gltf-utils");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
function makeDefaultGLTFJson() {
|
|
10
|
+
return {
|
|
11
|
+
asset: {
|
|
12
|
+
version: '2.0',
|
|
13
|
+
generator: 'loaders.gl'
|
|
14
|
+
},
|
|
15
|
+
buffers: [],
|
|
16
|
+
extensions: {},
|
|
17
|
+
extensionsRequired: [],
|
|
18
|
+
extensionsUsed: []
|
|
19
|
+
};
|
|
20
|
+
}
|
|
14
21
|
/**
|
|
15
22
|
* Class for structured access to GLTF data
|
|
16
23
|
*/
|
|
17
24
|
class GLTFScenegraph {
|
|
25
|
+
// TODO - why is this not GLTFWithBuffers - what happens to images?
|
|
18
26
|
constructor(gltf) {
|
|
19
|
-
//
|
|
20
|
-
this.gltf =
|
|
21
|
-
json:
|
|
22
|
-
buffers: []
|
|
27
|
+
// Declare locally so
|
|
28
|
+
this.gltf = {
|
|
29
|
+
json: gltf?.json || makeDefaultGLTFJson(),
|
|
30
|
+
buffers: gltf?.buffers || [],
|
|
31
|
+
images: gltf?.images || []
|
|
23
32
|
};
|
|
24
33
|
this.sourceBuffers = [];
|
|
25
34
|
this.byteLength = 0;
|
|
@@ -43,10 +52,15 @@ class GLTFScenegraph {
|
|
|
43
52
|
const extras = this.json.extras || {};
|
|
44
53
|
return extras[key];
|
|
45
54
|
}
|
|
55
|
+
hasExtension(extensionName) {
|
|
56
|
+
const isUsedExtension = this.getUsedExtensions().find((name) => name === extensionName);
|
|
57
|
+
const isRequiredExtension = this.getRequiredExtensions().find((name) => name === extensionName);
|
|
58
|
+
return typeof isUsedExtension === 'string' || typeof isRequiredExtension === 'string';
|
|
59
|
+
}
|
|
46
60
|
getExtension(extensionName) {
|
|
47
61
|
const isExtension = this.getUsedExtensions().find((name) => name === extensionName);
|
|
48
62
|
const extensions = this.json.extensions || {};
|
|
49
|
-
return isExtension ? extensions[extensionName]
|
|
63
|
+
return isExtension ? extensions[extensionName] : null;
|
|
50
64
|
}
|
|
51
65
|
getRequiredExtension(extensionName) {
|
|
52
66
|
const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);
|
|
@@ -186,17 +200,20 @@ class GLTFScenegraph {
|
|
|
186
200
|
return this;
|
|
187
201
|
}
|
|
188
202
|
setObjectExtension(object, extensionName, data) {
|
|
189
|
-
// @ts-ignore
|
|
190
203
|
const extensions = object.extensions || {};
|
|
191
204
|
extensions[extensionName] = data;
|
|
192
205
|
// TODO - add to usedExtensions...
|
|
193
206
|
}
|
|
194
207
|
removeObjectExtension(object, extensionName) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
208
|
+
const extensions = object?.extensions || {};
|
|
209
|
+
if (extensions[extensionName]) {
|
|
210
|
+
this.json.extensionsRemoved = this.json.extensionsRemoved || [];
|
|
211
|
+
const extensionsRemoved = this.json.extensionsRemoved;
|
|
212
|
+
if (!extensionsRemoved.includes(extensionName)) {
|
|
213
|
+
extensionsRemoved.push(extensionName);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
198
216
|
delete extensions[extensionName];
|
|
199
|
-
return extension;
|
|
200
217
|
}
|
|
201
218
|
/**
|
|
202
219
|
* Add to standard GLTF top level extension object, mark as used
|
|
@@ -240,8 +257,15 @@ class GLTFScenegraph {
|
|
|
240
257
|
* Removes an extension from the top-level list
|
|
241
258
|
*/
|
|
242
259
|
removeExtension(extensionName) {
|
|
243
|
-
if (
|
|
244
|
-
|
|
260
|
+
if (this.json.extensions?.[extensionName]) {
|
|
261
|
+
this.json.extensionsRemoved = this.json.extensionsRemoved || [];
|
|
262
|
+
const extensionsRemoved = this.json.extensionsRemoved;
|
|
263
|
+
if (!extensionsRemoved.includes(extensionName)) {
|
|
264
|
+
extensionsRemoved.push(extensionName);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (this.json.extensions) {
|
|
268
|
+
delete this.json.extensions[extensionName];
|
|
245
269
|
}
|
|
246
270
|
if (this.json.extensionsRequired) {
|
|
247
271
|
this._removeStringFromArray(this.json.extensionsRequired, extensionName);
|
|
@@ -249,16 +273,6 @@ class GLTFScenegraph {
|
|
|
249
273
|
if (this.json.extensionsUsed) {
|
|
250
274
|
this._removeStringFromArray(this.json.extensionsUsed, extensionName);
|
|
251
275
|
}
|
|
252
|
-
if (this.json.extensions) {
|
|
253
|
-
delete this.json.extensions[extensionName];
|
|
254
|
-
}
|
|
255
|
-
if (!Array.isArray(this.json.extensionsRemoved)) {
|
|
256
|
-
this.json.extensionsRemoved = [];
|
|
257
|
-
}
|
|
258
|
-
const extensionsRemoved = this.json.extensionsRemoved;
|
|
259
|
-
if (!extensionsRemoved.includes(extensionName)) {
|
|
260
|
-
extensionsRemoved.push(extensionName);
|
|
261
|
-
}
|
|
262
276
|
}
|
|
263
277
|
/**
|
|
264
278
|
* Set default scene which is to be displayed at load time
|
|
@@ -359,16 +373,16 @@ class GLTFScenegraph {
|
|
|
359
373
|
* Add one untyped source buffer, create a matching glTF `bufferView`, and return its index
|
|
360
374
|
* @param buffer
|
|
361
375
|
*/
|
|
362
|
-
addBufferView(buffer) {
|
|
376
|
+
addBufferView(buffer, bufferIndex = 0, byteOffset = this.byteLength) {
|
|
363
377
|
const byteLength = buffer.byteLength;
|
|
364
378
|
(0, assert_1.assert)(Number.isFinite(byteLength));
|
|
365
379
|
// Add this buffer to the list of buffers to be written to the body.
|
|
366
380
|
this.sourceBuffers = this.sourceBuffers || [];
|
|
367
381
|
this.sourceBuffers.push(buffer);
|
|
368
382
|
const glTFBufferView = {
|
|
369
|
-
buffer:
|
|
383
|
+
buffer: bufferIndex,
|
|
370
384
|
// Write offset from the start of the binary body
|
|
371
|
-
byteOffset
|
|
385
|
+
byteOffset,
|
|
372
386
|
byteLength
|
|
373
387
|
};
|
|
374
388
|
// We've now added the contents to the body, so update the total length
|
|
@@ -563,4 +577,4 @@ class GLTFScenegraph {
|
|
|
563
577
|
return result;
|
|
564
578
|
}
|
|
565
579
|
}
|
|
566
|
-
exports.
|
|
580
|
+
exports.GLTFScenegraph = GLTFScenegraph;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { GLTFWithBuffers } from '../types/gltf-types';
|
|
2
|
+
import type { ParseGLTFOptions } from '../parsers/parse-gltf';
|
|
3
|
+
import type { GLTFPostprocessed } from '../types/gltf-postprocessed-schema';
|
|
4
|
+
export declare function postProcessGLTF(gltf: GLTFWithBuffers, options?: ParseGLTFOptions): GLTFPostprocessed;
|
|
2
5
|
//# sourceMappingURL=post-process-gltf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-process-gltf.d.ts","sourceRoot":"","sources":["../../../src/lib/api/post-process-gltf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"post-process-gltf.d.ts","sourceRoot":"","sources":["../../../src/lib/api/post-process-gltf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAiB5D,OAAO,KAAK,EACV,iBAAiB,EAclB,MAAM,oCAAoC,CAAC;AAmgB5C,wBAAgB,eAAe,CAC7B,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,iBAAiB,CAEnB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// loaders.gl, MIT license
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.postProcessGLTF = void 0;
|
|
4
5
|
const assert_1 = require("../utils/assert");
|
|
@@ -47,12 +48,18 @@ const SAMPLER_PARAMETER_GLTF_TO_GL = {
|
|
|
47
48
|
};
|
|
48
49
|
// When undefined, a sampler with repeat wrapping and auto filtering should be used.
|
|
49
50
|
// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture
|
|
50
|
-
const
|
|
51
|
+
const DEFAULT_SAMPLER_PARAMETERS = {
|
|
51
52
|
[GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,
|
|
52
53
|
[GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,
|
|
53
54
|
[GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,
|
|
54
55
|
[GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT
|
|
55
56
|
};
|
|
57
|
+
function makeDefaultSampler() {
|
|
58
|
+
return {
|
|
59
|
+
id: 'default-sampler',
|
|
60
|
+
parameters: DEFAULT_SAMPLER_PARAMETERS
|
|
61
|
+
};
|
|
62
|
+
}
|
|
56
63
|
function getBytesFromComponentType(componentType) {
|
|
57
64
|
return BYTES[componentType];
|
|
58
65
|
}
|
|
@@ -62,100 +69,106 @@ function getSizeFromAccessorType(type) {
|
|
|
62
69
|
class GLTFPostProcessor {
|
|
63
70
|
constructor() {
|
|
64
71
|
this.baseUri = '';
|
|
65
|
-
this.json = {};
|
|
66
72
|
this.buffers = [];
|
|
67
73
|
this.images = [];
|
|
68
74
|
}
|
|
69
75
|
postProcess(gltf, options = {}) {
|
|
70
|
-
const { json, buffers = [], images = []
|
|
76
|
+
const { json, buffers = [], images = [] } = gltf;
|
|
77
|
+
// @ts-expect-error
|
|
78
|
+
const { baseUri = '' } = gltf;
|
|
71
79
|
(0, assert_1.assert)(json);
|
|
72
80
|
this.baseUri = baseUri;
|
|
73
|
-
this.json = json;
|
|
74
81
|
this.buffers = buffers;
|
|
75
82
|
this.images = images;
|
|
76
|
-
this.
|
|
83
|
+
this.jsonUnprocessed = json;
|
|
84
|
+
this.json = this._resolveTree(gltf.json, options);
|
|
77
85
|
return this.json;
|
|
78
86
|
}
|
|
79
87
|
// Convert indexed glTF structure into tree structure
|
|
80
88
|
// cross-link index resolution, enum lookup, convenience calculations
|
|
81
|
-
// eslint-disable-next-line complexity
|
|
82
|
-
_resolveTree(
|
|
83
|
-
|
|
84
|
-
|
|
89
|
+
// eslint-disable-next-line complexity, max-statements
|
|
90
|
+
_resolveTree(gltf, options = {}) {
|
|
91
|
+
// @ts-expect-error
|
|
92
|
+
const json = { ...gltf };
|
|
93
|
+
this.json = json;
|
|
94
|
+
if (gltf.bufferViews) {
|
|
95
|
+
json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));
|
|
85
96
|
}
|
|
86
|
-
if (
|
|
87
|
-
json.images =
|
|
97
|
+
if (gltf.images) {
|
|
98
|
+
json.images = gltf.images.map((image, i) => this._resolveImage(image, i));
|
|
88
99
|
}
|
|
89
|
-
if (
|
|
90
|
-
json.samplers =
|
|
100
|
+
if (gltf.samplers) {
|
|
101
|
+
json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));
|
|
91
102
|
}
|
|
92
|
-
if (
|
|
93
|
-
json.textures =
|
|
103
|
+
if (gltf.textures) {
|
|
104
|
+
json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));
|
|
94
105
|
}
|
|
95
|
-
if (
|
|
96
|
-
json.accessors =
|
|
106
|
+
if (gltf.accessors) {
|
|
107
|
+
json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));
|
|
97
108
|
}
|
|
98
|
-
if (
|
|
99
|
-
json.materials =
|
|
109
|
+
if (gltf.materials) {
|
|
110
|
+
json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));
|
|
100
111
|
}
|
|
101
|
-
if (
|
|
102
|
-
json.meshes =
|
|
112
|
+
if (gltf.meshes) {
|
|
113
|
+
json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));
|
|
103
114
|
}
|
|
104
|
-
if (
|
|
105
|
-
json.nodes =
|
|
115
|
+
if (gltf.nodes) {
|
|
116
|
+
json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));
|
|
117
|
+
json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));
|
|
106
118
|
}
|
|
107
|
-
if (
|
|
108
|
-
json.skins =
|
|
119
|
+
if (gltf.skins) {
|
|
120
|
+
json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));
|
|
109
121
|
}
|
|
110
|
-
if (
|
|
111
|
-
json.scenes =
|
|
122
|
+
if (gltf.scenes) {
|
|
123
|
+
json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));
|
|
112
124
|
}
|
|
113
|
-
if (json.scene
|
|
125
|
+
if (typeof this.json.scene === 'number' && json.scenes) {
|
|
114
126
|
json.scene = json.scenes[this.json.scene];
|
|
115
127
|
}
|
|
128
|
+
return json;
|
|
116
129
|
}
|
|
117
130
|
getScene(index) {
|
|
118
|
-
return this._get(
|
|
131
|
+
return this._get(this.json.scenes, index);
|
|
119
132
|
}
|
|
120
133
|
getNode(index) {
|
|
121
|
-
return this._get(
|
|
134
|
+
return this._get(this.json.nodes, index);
|
|
122
135
|
}
|
|
123
136
|
getSkin(index) {
|
|
124
|
-
return this._get(
|
|
137
|
+
return this._get(this.json.skins, index);
|
|
125
138
|
}
|
|
126
139
|
getMesh(index) {
|
|
127
|
-
return this._get(
|
|
140
|
+
return this._get(this.json.meshes, index);
|
|
128
141
|
}
|
|
129
142
|
getMaterial(index) {
|
|
130
|
-
return this._get(
|
|
143
|
+
return this._get(this.json.materials, index);
|
|
131
144
|
}
|
|
132
145
|
getAccessor(index) {
|
|
133
|
-
return this._get(
|
|
146
|
+
return this._get(this.json.accessors, index);
|
|
134
147
|
}
|
|
135
148
|
getCamera(index) {
|
|
136
|
-
return
|
|
149
|
+
return this._get(this.json.cameras, index);
|
|
137
150
|
}
|
|
138
151
|
getTexture(index) {
|
|
139
|
-
return this._get(
|
|
152
|
+
return this._get(this.json.textures, index);
|
|
140
153
|
}
|
|
141
154
|
getSampler(index) {
|
|
142
|
-
return this._get(
|
|
155
|
+
return this._get(this.json.samplers, index);
|
|
143
156
|
}
|
|
144
157
|
getImage(index) {
|
|
145
|
-
return this._get(
|
|
158
|
+
return this._get(this.json.images, index);
|
|
146
159
|
}
|
|
147
160
|
getBufferView(index) {
|
|
148
|
-
return this._get(
|
|
161
|
+
return this._get(this.json.bufferViews, index);
|
|
149
162
|
}
|
|
150
163
|
getBuffer(index) {
|
|
151
|
-
return this._get(
|
|
164
|
+
return this._get(this.json.buffers, index);
|
|
152
165
|
}
|
|
153
166
|
_get(array, index) {
|
|
154
167
|
// check if already resolved
|
|
155
168
|
if (typeof index === 'object') {
|
|
156
169
|
return index;
|
|
157
170
|
}
|
|
158
|
-
const object =
|
|
171
|
+
const object = array && array[index];
|
|
159
172
|
if (!object) {
|
|
160
173
|
console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line
|
|
161
174
|
}
|
|
@@ -163,81 +176,109 @@ class GLTFPostProcessor {
|
|
|
163
176
|
}
|
|
164
177
|
// PARSING HELPERS
|
|
165
178
|
_resolveScene(scene, index) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
179
|
+
return {
|
|
180
|
+
...scene,
|
|
181
|
+
// @ts-ignore
|
|
182
|
+
id: scene.id || `scene-${index}`,
|
|
183
|
+
nodes: (scene.nodes || []).map((node) => this.getNode(node))
|
|
184
|
+
};
|
|
170
185
|
}
|
|
171
|
-
_resolveNode(
|
|
172
|
-
//
|
|
173
|
-
node
|
|
174
|
-
|
|
175
|
-
|
|
186
|
+
_resolveNode(gltfNode, index) {
|
|
187
|
+
// @ts-expect-error
|
|
188
|
+
const node = {
|
|
189
|
+
...gltfNode,
|
|
190
|
+
// @ts-expect-error id could already be present, glTF standard does not prevent it
|
|
191
|
+
id: gltfNode?.id || `node-${index}`
|
|
192
|
+
};
|
|
193
|
+
if (gltfNode.mesh !== undefined) {
|
|
194
|
+
node.mesh = this.getMesh(gltfNode.mesh);
|
|
195
|
+
}
|
|
196
|
+
if (gltfNode.camera !== undefined) {
|
|
197
|
+
node.camera = this.getCamera(gltfNode.camera);
|
|
176
198
|
}
|
|
177
|
-
if (
|
|
178
|
-
node.
|
|
199
|
+
if (gltfNode.skin !== undefined) {
|
|
200
|
+
node.skin = this.getSkin(gltfNode.skin);
|
|
179
201
|
}
|
|
180
|
-
|
|
181
|
-
|
|
202
|
+
// TODO deprecated - Delete in v4.0?
|
|
203
|
+
// @ts-expect-error node.meshes does not seem to be part of the GLTF standard
|
|
204
|
+
if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {
|
|
205
|
+
// @ts-expect-error
|
|
206
|
+
node.mesh = gltfNode.meshes.reduce((accum, meshIndex) => {
|
|
182
207
|
const mesh = this.getMesh(meshIndex);
|
|
183
208
|
accum.id = mesh.id;
|
|
184
209
|
accum.primitives = accum.primitives.concat(mesh.primitives);
|
|
185
210
|
return accum;
|
|
186
211
|
}, { primitives: [] });
|
|
187
212
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (node.
|
|
192
|
-
node.
|
|
213
|
+
return node;
|
|
214
|
+
}
|
|
215
|
+
_resolveNodeChildren(node) {
|
|
216
|
+
if (node.children) {
|
|
217
|
+
// @ts-expect-error node.children are numbers at this stage
|
|
218
|
+
node.children = node.children.map((child) => this.getNode(child));
|
|
193
219
|
}
|
|
194
220
|
return node;
|
|
195
221
|
}
|
|
196
|
-
_resolveSkin(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
return
|
|
222
|
+
_resolveSkin(gltfSkin, index) {
|
|
223
|
+
const inverseBindMatrices = typeof gltfSkin.inverseBindMatrices === 'number'
|
|
224
|
+
? this.getAccessor(gltfSkin.inverseBindMatrices)
|
|
225
|
+
: undefined;
|
|
226
|
+
return {
|
|
227
|
+
...gltfSkin,
|
|
228
|
+
id: gltfSkin.id || `skin-${index}`,
|
|
229
|
+
inverseBindMatrices
|
|
230
|
+
};
|
|
201
231
|
}
|
|
202
|
-
_resolveMesh(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
232
|
+
_resolveMesh(gltfMesh, index) {
|
|
233
|
+
const mesh = {
|
|
234
|
+
...gltfMesh,
|
|
235
|
+
id: gltfMesh.id || `mesh-${index}`,
|
|
236
|
+
primitives: []
|
|
237
|
+
};
|
|
238
|
+
if (gltfMesh.primitives) {
|
|
239
|
+
mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {
|
|
240
|
+
const primitive = {
|
|
241
|
+
...gltfPrimitive,
|
|
242
|
+
attributes: {},
|
|
243
|
+
indices: undefined,
|
|
244
|
+
material: undefined
|
|
245
|
+
};
|
|
246
|
+
const attributes = gltfPrimitive.attributes;
|
|
210
247
|
for (const attribute in attributes) {
|
|
211
248
|
primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);
|
|
212
249
|
}
|
|
213
|
-
if (
|
|
214
|
-
primitive.indices = this.getAccessor(
|
|
250
|
+
if (gltfPrimitive.indices !== undefined) {
|
|
251
|
+
primitive.indices = this.getAccessor(gltfPrimitive.indices);
|
|
215
252
|
}
|
|
216
|
-
if (
|
|
217
|
-
primitive.material = this.getMaterial(
|
|
253
|
+
if (gltfPrimitive.material !== undefined) {
|
|
254
|
+
primitive.material = this.getMaterial(gltfPrimitive.material);
|
|
218
255
|
}
|
|
219
256
|
return primitive;
|
|
220
257
|
});
|
|
221
258
|
}
|
|
222
259
|
return mesh;
|
|
223
260
|
}
|
|
224
|
-
_resolveMaterial(
|
|
225
|
-
//
|
|
226
|
-
material
|
|
261
|
+
_resolveMaterial(gltfMaterial, index) {
|
|
262
|
+
// @ts-expect-error
|
|
263
|
+
const material = {
|
|
264
|
+
...gltfMaterial,
|
|
265
|
+
// @ts-expect-error
|
|
266
|
+
id: gltfMaterial.id || `material-${index}`
|
|
267
|
+
};
|
|
227
268
|
if (material.normalTexture) {
|
|
228
269
|
material.normalTexture = { ...material.normalTexture };
|
|
229
270
|
material.normalTexture.texture = this.getTexture(material.normalTexture.index);
|
|
230
271
|
}
|
|
231
272
|
if (material.occlusionTexture) {
|
|
232
|
-
material.
|
|
273
|
+
material.occlusionTexture = { ...material.occlusionTexture };
|
|
233
274
|
material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
|
|
234
275
|
}
|
|
235
276
|
if (material.emissiveTexture) {
|
|
236
|
-
material.
|
|
277
|
+
material.emissiveTexture = { ...material.emissiveTexture };
|
|
237
278
|
material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
|
|
238
279
|
}
|
|
239
280
|
if (!material.emissiveFactor) {
|
|
240
|
-
material.emissiveFactor = material.
|
|
281
|
+
material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];
|
|
241
282
|
}
|
|
242
283
|
if (material.pbrMetallicRoughness) {
|
|
243
284
|
material.pbrMetallicRoughness = { ...material.pbrMetallicRoughness };
|
|
@@ -253,17 +294,26 @@ class GLTFPostProcessor {
|
|
|
253
294
|
}
|
|
254
295
|
return material;
|
|
255
296
|
}
|
|
256
|
-
_resolveAccessor(
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
|
|
297
|
+
_resolveAccessor(gltfAccessor, index) {
|
|
298
|
+
// Look up enums
|
|
299
|
+
const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);
|
|
300
|
+
const components = getSizeFromAccessorType(gltfAccessor.type);
|
|
301
|
+
const bytesPerElement = bytesPerComponent * components;
|
|
302
|
+
const accessor = {
|
|
303
|
+
...gltfAccessor,
|
|
304
|
+
// @ts-expect-error
|
|
305
|
+
id: gltfAccessor.id || `accessor-${index}`,
|
|
306
|
+
bytesPerComponent,
|
|
307
|
+
components,
|
|
308
|
+
bytesPerElement,
|
|
309
|
+
value: undefined,
|
|
310
|
+
bufferView: undefined,
|
|
311
|
+
sparse: undefined
|
|
312
|
+
};
|
|
313
|
+
if (gltfAccessor.bufferView !== undefined) {
|
|
260
314
|
// Draco encoded meshes don't have bufferView
|
|
261
|
-
accessor.bufferView = this.getBufferView(
|
|
315
|
+
accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);
|
|
262
316
|
}
|
|
263
|
-
// Look up enums
|
|
264
|
-
accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);
|
|
265
|
-
accessor.components = getSizeFromAccessorType(accessor.type);
|
|
266
|
-
accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;
|
|
267
317
|
// Create TypedArray for the accessor
|
|
268
318
|
// Note: The canonical way to instantiate is to ignore this array and create
|
|
269
319
|
// WebGLBuffer's using the bufferViews.
|
|
@@ -297,18 +347,25 @@ class GLTFPostProcessor {
|
|
|
297
347
|
}
|
|
298
348
|
return result.buffer;
|
|
299
349
|
}
|
|
300
|
-
_resolveTexture(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
350
|
+
_resolveTexture(gltfTexture, index) {
|
|
351
|
+
return {
|
|
352
|
+
...gltfTexture,
|
|
353
|
+
// @ts-expect-error id could already be present, glTF standard does not prevent it
|
|
354
|
+
id: gltfTexture.id || `texture-${index}`,
|
|
355
|
+
sampler: typeof gltfTexture.sampler === 'number'
|
|
356
|
+
? this.getSampler(gltfTexture.sampler)
|
|
357
|
+
: makeDefaultSampler(),
|
|
358
|
+
source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined
|
|
359
|
+
};
|
|
306
360
|
}
|
|
307
|
-
_resolveSampler(
|
|
308
|
-
|
|
309
|
-
|
|
361
|
+
_resolveSampler(gltfSampler, index) {
|
|
362
|
+
const sampler = {
|
|
363
|
+
// @ts-expect-error id could already be present, glTF standard does not prevent it
|
|
364
|
+
id: gltfSampler.id || `sampler-${index}`,
|
|
365
|
+
...gltfSampler,
|
|
366
|
+
parameters: {}
|
|
367
|
+
};
|
|
310
368
|
// Map textual parameters to GL parameter values
|
|
311
|
-
sampler.parameters = {};
|
|
312
369
|
for (const key in sampler) {
|
|
313
370
|
const glEnum = this._enumSamplerParameter(key);
|
|
314
371
|
if (glEnum !== undefined) {
|
|
@@ -320,12 +377,14 @@ class GLTFPostProcessor {
|
|
|
320
377
|
_enumSamplerParameter(key) {
|
|
321
378
|
return SAMPLER_PARAMETER_GLTF_TO_GL[key];
|
|
322
379
|
}
|
|
323
|
-
_resolveImage(
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
380
|
+
_resolveImage(gltfImage, index) {
|
|
381
|
+
const image = {
|
|
382
|
+
...gltfImage,
|
|
383
|
+
// @ts-expect-error id could already be present, glTF standard does not prevent it
|
|
384
|
+
id: gltfImage.id || `image-${index}`,
|
|
385
|
+
image: null,
|
|
386
|
+
bufferView: gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined
|
|
387
|
+
};
|
|
329
388
|
// Check if image has been preloaded by the GLTFLoader
|
|
330
389
|
// If so, link it into the JSON and drop the URI
|
|
331
390
|
const preloadedImage = this.images[index];
|
|
@@ -334,26 +393,30 @@ class GLTFPostProcessor {
|
|
|
334
393
|
}
|
|
335
394
|
return image;
|
|
336
395
|
}
|
|
337
|
-
_resolveBufferView(
|
|
338
|
-
|
|
339
|
-
const bufferIndex = bufferView.buffer;
|
|
340
|
-
const result = {
|
|
341
|
-
id: `bufferView-${index}`,
|
|
342
|
-
...bufferView,
|
|
343
|
-
buffer: this.buffers[bufferIndex]
|
|
344
|
-
};
|
|
345
|
-
// @ts-expect-error
|
|
396
|
+
_resolveBufferView(gltfBufferView, index) {
|
|
397
|
+
const bufferIndex = gltfBufferView.buffer;
|
|
346
398
|
const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
|
|
347
|
-
//
|
|
399
|
+
// Add offset of buffer, then offset of buffer view
|
|
348
400
|
let byteOffset = this.buffers[bufferIndex].byteOffset || 0;
|
|
349
|
-
if (
|
|
350
|
-
byteOffset +=
|
|
401
|
+
if (gltfBufferView.byteOffset) {
|
|
402
|
+
byteOffset += gltfBufferView.byteOffset;
|
|
351
403
|
}
|
|
352
|
-
|
|
353
|
-
|
|
404
|
+
const bufferView = {
|
|
405
|
+
// // @ts-expect-error id could already be present, glTF standard does not prevent it
|
|
406
|
+
id: `bufferView-${index}`,
|
|
407
|
+
...gltfBufferView,
|
|
408
|
+
// ...this.buffers[bufferIndex],
|
|
409
|
+
buffer: this.buffers[bufferIndex],
|
|
410
|
+
data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)
|
|
411
|
+
};
|
|
412
|
+
return bufferView;
|
|
354
413
|
}
|
|
355
|
-
_resolveCamera(
|
|
356
|
-
camera
|
|
414
|
+
_resolveCamera(gltfCamera, index) {
|
|
415
|
+
const camera = {
|
|
416
|
+
...gltfCamera,
|
|
417
|
+
// @ts-expect-error id could already be present, glTF standard does not prevent it
|
|
418
|
+
id: gltfCamera.id || `camera-${index}`
|
|
419
|
+
};
|
|
357
420
|
// TODO - create 4x4 matrices
|
|
358
421
|
if (camera.perspective) {
|
|
359
422
|
// camera.matrix = createPerspectiveMatrix(camera.perspective);
|