@loaders.gl/gltf 3.3.0-alpha.4 → 3.3.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +104 -124
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/glb-loader.js +2 -13
- package/dist/es5/glb-loader.js.map +1 -1
- package/dist/es5/glb-writer.js +3 -6
- package/dist/es5/glb-writer.js.map +1 -1
- package/dist/es5/gltf-loader.js +11 -23
- package/dist/es5/gltf-loader.js.map +1 -1
- package/dist/es5/gltf-writer.js +2 -5
- package/dist/es5/gltf-writer.js.map +1 -1
- package/dist/es5/index.js +10 -17
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/api/gltf-extensions.js +14 -48
- package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
- package/dist/es5/lib/api/gltf-scenegraph.js +113 -96
- package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/es5/lib/api/normalize-gltf-v1.js +32 -70
- package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
- package/dist/es5/lib/api/post-process-gltf.js +26 -89
- package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
- package/dist/es5/lib/encoders/encode-glb.js +10 -8
- package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
- package/dist/es5/lib/encoders/encode-gltf.js +3 -6
- package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js +2 -28
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_texture_webp.js +5 -18
- package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_binary_gltf.js +5 -12
- package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +11 -79
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_basisu.js +5 -14
- package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_transform.js +17 -72
- package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +0 -21
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +0 -24
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +2 -19
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +11 -29
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/es5/lib/gltf-utils/get-typed-array.js +1 -1
- package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +5 -17
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-constants.js +3 -4
- package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-utils.js +1 -8
- package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/es5/lib/gltf-utils/resolve-url.js +0 -5
- package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
- package/dist/es5/lib/parsers/parse-glb.js +11 -17
- package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
- package/dist/es5/lib/parsers/parse-gltf.js +12 -73
- package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/es5/lib/types/glb-types.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/assert.js +0 -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 +10 -47
- package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
- package/dist/es5/webp/webp.js +3 -19
- package/dist/es5/webp/webp.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/glb-loader.js +0 -1
- package/dist/esm/glb-loader.js.map +1 -1
- package/dist/esm/glb-writer.js +3 -1
- package/dist/esm/glb-writer.js.map +1 -1
- package/dist/esm/gltf-loader.js +9 -3
- package/dist/esm/gltf-loader.js.map +1 -1
- package/dist/esm/gltf-writer.js +3 -2
- package/dist/esm/gltf-writer.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/api/gltf-extensions.js +16 -9
- package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
- package/dist/esm/lib/api/gltf-scenegraph.js +27 -68
- package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/esm/lib/api/normalize-gltf-v1.js +3 -34
- package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -1
- package/dist/esm/lib/api/post-process-gltf.js +26 -93
- package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
- package/dist/esm/lib/encoders/encode-glb.js +9 -2
- package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
- package/dist/esm/lib/encoders/encode-gltf.js +6 -4
- package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js +5 -6
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_texture_webp.js +4 -6
- package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_binary_gltf.js +3 -2
- package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +18 -17
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_basisu.js +4 -3
- package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_transform.js +8 -34
- package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +2 -13
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +4 -4
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +3 -2
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +10 -10
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/esm/lib/gltf-utils/get-typed-array.js +4 -0
- package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +7 -11
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-constants.js +1 -0
- package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-utils.js +0 -2
- package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/esm/lib/gltf-utils/resolve-url.js +1 -4
- package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -1
- package/dist/esm/lib/parsers/parse-glb.js +19 -16
- package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
- package/dist/esm/lib/parsers/parse-gltf.js +11 -16
- package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/esm/lib/types/glb-types.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/assert.js +1 -0
- package/dist/esm/lib/utils/assert.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/meshopt/meshopt-decoder.js +11 -15
- package/dist/esm/meshopt/meshopt-decoder.js.map +1 -1
- package/dist/esm/webp/webp.js +3 -5
- package/dist/esm/webp/webp.js.map +1 -1
- package/dist/lib/api/gltf-extensions.js +5 -1
- package/dist/lib/api/normalize-gltf-v1.js +5 -1
- package/dist/lib/parsers/parse-gltf.js +5 -1
- package/package.json +6 -6
|
@@ -1,29 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.postProcessGLTF = postProcessGLTF;
|
|
9
|
-
|
|
10
8
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
-
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
12
|
var _assert = require("../utils/assert");
|
|
19
|
-
|
|
20
13
|
var _gltfUtils = require("../gltf-utils/gltf-utils");
|
|
21
|
-
|
|
22
14
|
var _DEFAULT_SAMPLER;
|
|
23
|
-
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
15
|
+
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; }
|
|
16
|
+
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; }
|
|
27
17
|
|
|
28
18
|
var COMPONENTS = {
|
|
29
19
|
SCALAR: 1,
|
|
@@ -42,6 +32,7 @@ var BYTES = {
|
|
|
42
32
|
5125: 4,
|
|
43
33
|
5126: 4
|
|
44
34
|
};
|
|
35
|
+
|
|
45
36
|
var GL_SAMPLER = {
|
|
46
37
|
TEXTURE_MAG_FILTER: 0x2800,
|
|
47
38
|
TEXTURE_MIN_FILTER: 0x2801,
|
|
@@ -57,16 +48,14 @@ var SAMPLER_PARAMETER_GLTF_TO_GL = {
|
|
|
57
48
|
wrapS: GL_SAMPLER.TEXTURE_WRAP_S,
|
|
58
49
|
wrapT: GL_SAMPLER.TEXTURE_WRAP_T
|
|
59
50
|
};
|
|
60
|
-
var DEFAULT_SAMPLER = (_DEFAULT_SAMPLER = {}, (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_MAG_FILTER, GL_SAMPLER.LINEAR), (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_MIN_FILTER, GL_SAMPLER.NEAREST_MIPMAP_LINEAR), (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_WRAP_S, GL_SAMPLER.REPEAT), (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_WRAP_T, GL_SAMPLER.REPEAT), _DEFAULT_SAMPLER);
|
|
61
51
|
|
|
52
|
+
var DEFAULT_SAMPLER = (_DEFAULT_SAMPLER = {}, (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_MAG_FILTER, GL_SAMPLER.LINEAR), (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_MIN_FILTER, GL_SAMPLER.NEAREST_MIPMAP_LINEAR), (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_WRAP_S, GL_SAMPLER.REPEAT), (0, _defineProperty2.default)(_DEFAULT_SAMPLER, GL_SAMPLER.TEXTURE_WRAP_T, GL_SAMPLER.REPEAT), _DEFAULT_SAMPLER);
|
|
62
53
|
function getBytesFromComponentType(componentType) {
|
|
63
54
|
return BYTES[componentType];
|
|
64
55
|
}
|
|
65
|
-
|
|
66
56
|
function getSizeFromAccessorType(type) {
|
|
67
57
|
return COMPONENTS[type];
|
|
68
58
|
}
|
|
69
|
-
|
|
70
59
|
var GLTFPostProcessor = function () {
|
|
71
60
|
function GLTFPostProcessor() {
|
|
72
61
|
(0, _classCallCheck2.default)(this, GLTFPostProcessor);
|
|
@@ -75,95 +64,82 @@ var GLTFPostProcessor = function () {
|
|
|
75
64
|
(0, _defineProperty2.default)(this, "buffers", []);
|
|
76
65
|
(0, _defineProperty2.default)(this, "images", []);
|
|
77
66
|
}
|
|
78
|
-
|
|
79
67
|
(0, _createClass2.default)(GLTFPostProcessor, [{
|
|
80
68
|
key: "postProcess",
|
|
81
69
|
value: function postProcess(gltf) {
|
|
82
70
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
83
71
|
var json = gltf.json,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
72
|
+
_gltf$buffers = gltf.buffers,
|
|
73
|
+
buffers = _gltf$buffers === void 0 ? [] : _gltf$buffers,
|
|
74
|
+
_gltf$images = gltf.images,
|
|
75
|
+
images = _gltf$images === void 0 ? [] : _gltf$images,
|
|
76
|
+
_gltf$baseUri = gltf.baseUri,
|
|
77
|
+
baseUri = _gltf$baseUri === void 0 ? '' : _gltf$baseUri;
|
|
90
78
|
(0, _assert.assert)(json);
|
|
91
79
|
this.baseUri = baseUri;
|
|
92
80
|
this.json = json;
|
|
93
81
|
this.buffers = buffers;
|
|
94
82
|
this.images = images;
|
|
95
|
-
|
|
96
83
|
this._resolveTree(this.json, options);
|
|
97
|
-
|
|
98
84
|
return this.json;
|
|
99
85
|
}
|
|
86
|
+
|
|
100
87
|
}, {
|
|
101
88
|
key: "_resolveTree",
|
|
102
|
-
value:
|
|
89
|
+
value:
|
|
90
|
+
function _resolveTree(json) {
|
|
103
91
|
var _this = this;
|
|
104
|
-
|
|
105
92
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
106
|
-
|
|
107
93
|
if (json.bufferViews) {
|
|
108
94
|
json.bufferViews = json.bufferViews.map(function (bufView, i) {
|
|
109
95
|
return _this._resolveBufferView(bufView, i);
|
|
110
96
|
});
|
|
111
97
|
}
|
|
112
|
-
|
|
113
98
|
if (json.images) {
|
|
114
99
|
json.images = json.images.map(function (image, i) {
|
|
115
100
|
return _this._resolveImage(image, i);
|
|
116
101
|
});
|
|
117
102
|
}
|
|
118
|
-
|
|
119
103
|
if (json.samplers) {
|
|
120
104
|
json.samplers = json.samplers.map(function (sampler, i) {
|
|
121
105
|
return _this._resolveSampler(sampler, i);
|
|
122
106
|
});
|
|
123
107
|
}
|
|
124
|
-
|
|
125
108
|
if (json.textures) {
|
|
126
109
|
json.textures = json.textures.map(function (texture, i) {
|
|
127
110
|
return _this._resolveTexture(texture, i);
|
|
128
111
|
});
|
|
129
112
|
}
|
|
130
|
-
|
|
131
113
|
if (json.accessors) {
|
|
132
114
|
json.accessors = json.accessors.map(function (accessor, i) {
|
|
133
115
|
return _this._resolveAccessor(accessor, i);
|
|
134
116
|
});
|
|
135
117
|
}
|
|
136
|
-
|
|
137
118
|
if (json.materials) {
|
|
138
119
|
json.materials = json.materials.map(function (material, i) {
|
|
139
120
|
return _this._resolveMaterial(material, i);
|
|
140
121
|
});
|
|
141
122
|
}
|
|
142
|
-
|
|
143
123
|
if (json.meshes) {
|
|
144
124
|
json.meshes = json.meshes.map(function (mesh, i) {
|
|
145
125
|
return _this._resolveMesh(mesh, i);
|
|
146
126
|
});
|
|
147
127
|
}
|
|
148
|
-
|
|
149
128
|
if (json.nodes) {
|
|
150
129
|
json.nodes = json.nodes.map(function (node, i) {
|
|
151
130
|
return _this._resolveNode(node, i);
|
|
152
131
|
});
|
|
153
132
|
}
|
|
154
|
-
|
|
155
133
|
if (json.skins) {
|
|
156
134
|
json.skins = json.skins.map(function (skin, i) {
|
|
157
135
|
return _this._resolveSkin(skin, i);
|
|
158
136
|
});
|
|
159
137
|
}
|
|
160
|
-
|
|
161
138
|
if (json.scenes) {
|
|
162
139
|
json.scenes = json.scenes.map(function (scene, i) {
|
|
163
140
|
return _this._resolveScene(scene, i);
|
|
164
141
|
});
|
|
165
142
|
}
|
|
166
|
-
|
|
167
143
|
if (json.scene !== undefined) {
|
|
168
144
|
json.scene = json.scenes[this.json.scene];
|
|
169
145
|
}
|
|
@@ -234,20 +210,20 @@ var GLTFPostProcessor = function () {
|
|
|
234
210
|
if ((0, _typeof2.default)(index) === 'object') {
|
|
235
211
|
return index;
|
|
236
212
|
}
|
|
237
|
-
|
|
238
213
|
var object = this.json[array] && this.json[array][index];
|
|
239
|
-
|
|
240
214
|
if (!object) {
|
|
241
215
|
console.warn("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
|
|
242
216
|
}
|
|
243
217
|
|
|
244
218
|
return object;
|
|
245
219
|
}
|
|
220
|
+
|
|
246
221
|
}, {
|
|
247
222
|
key: "_resolveScene",
|
|
248
|
-
value:
|
|
249
|
-
var _this2 = this;
|
|
223
|
+
value:
|
|
250
224
|
|
|
225
|
+
function _resolveScene(scene, index) {
|
|
226
|
+
var _this2 = this;
|
|
251
227
|
scene.id = scene.id || "scene-".concat(index);
|
|
252
228
|
scene.nodes = (scene.nodes || []).map(function (node) {
|
|
253
229
|
return _this2.getNode(node);
|
|
@@ -258,21 +234,17 @@ var GLTFPostProcessor = function () {
|
|
|
258
234
|
key: "_resolveNode",
|
|
259
235
|
value: function _resolveNode(node, index) {
|
|
260
236
|
var _this3 = this;
|
|
261
|
-
|
|
262
237
|
node.id = node.id || "node-".concat(index);
|
|
263
|
-
|
|
264
238
|
if (node.children) {
|
|
265
239
|
node.children = node.children.map(function (child) {
|
|
266
240
|
return _this3.getNode(child);
|
|
267
241
|
});
|
|
268
242
|
}
|
|
269
|
-
|
|
270
243
|
if (node.mesh !== undefined) {
|
|
271
244
|
node.mesh = this.getMesh(node.mesh);
|
|
272
245
|
} else if (node.meshes !== undefined && node.meshes.length) {
|
|
273
246
|
node.mesh = node.meshes.reduce(function (accum, meshIndex) {
|
|
274
247
|
var mesh = _this3.getMesh(meshIndex);
|
|
275
|
-
|
|
276
248
|
accum.id = mesh.id;
|
|
277
249
|
accum.primitives = accum.primitives.concat(mesh.primitives);
|
|
278
250
|
return accum;
|
|
@@ -280,15 +252,12 @@ var GLTFPostProcessor = function () {
|
|
|
280
252
|
primitives: []
|
|
281
253
|
});
|
|
282
254
|
}
|
|
283
|
-
|
|
284
255
|
if (node.camera !== undefined) {
|
|
285
256
|
node.camera = this.getCamera(node.camera);
|
|
286
257
|
}
|
|
287
|
-
|
|
288
258
|
if (node.skin !== undefined) {
|
|
289
259
|
node.skin = this.getSkin(node.skin);
|
|
290
260
|
}
|
|
291
|
-
|
|
292
261
|
return node;
|
|
293
262
|
}
|
|
294
263
|
}, {
|
|
@@ -302,79 +271,63 @@ var GLTFPostProcessor = function () {
|
|
|
302
271
|
key: "_resolveMesh",
|
|
303
272
|
value: function _resolveMesh(mesh, index) {
|
|
304
273
|
var _this4 = this;
|
|
305
|
-
|
|
306
274
|
mesh.id = mesh.id || "mesh-".concat(index);
|
|
307
|
-
|
|
308
275
|
if (mesh.primitives) {
|
|
309
276
|
mesh.primitives = mesh.primitives.map(function (primitive) {
|
|
310
277
|
primitive = _objectSpread({}, primitive);
|
|
311
278
|
var attributes = primitive.attributes;
|
|
312
279
|
primitive.attributes = {};
|
|
313
|
-
|
|
314
280
|
for (var attribute in attributes) {
|
|
315
281
|
primitive.attributes[attribute] = _this4.getAccessor(attributes[attribute]);
|
|
316
282
|
}
|
|
317
|
-
|
|
318
283
|
if (primitive.indices !== undefined) {
|
|
319
284
|
primitive.indices = _this4.getAccessor(primitive.indices);
|
|
320
285
|
}
|
|
321
|
-
|
|
322
286
|
if (primitive.material !== undefined) {
|
|
323
287
|
primitive.material = _this4.getMaterial(primitive.material);
|
|
324
288
|
}
|
|
325
|
-
|
|
326
289
|
return primitive;
|
|
327
290
|
});
|
|
328
291
|
}
|
|
329
|
-
|
|
330
292
|
return mesh;
|
|
331
293
|
}
|
|
332
294
|
}, {
|
|
333
295
|
key: "_resolveMaterial",
|
|
334
296
|
value: function _resolveMaterial(material, index) {
|
|
335
297
|
material.id = material.id || "material-".concat(index);
|
|
336
|
-
|
|
337
298
|
if (material.normalTexture) {
|
|
338
299
|
material.normalTexture = _objectSpread({}, material.normalTexture);
|
|
339
300
|
material.normalTexture.texture = this.getTexture(material.normalTexture.index);
|
|
340
301
|
}
|
|
341
|
-
|
|
342
302
|
if (material.occlusionTexture) {
|
|
343
303
|
material.occlustionTexture = _objectSpread({}, material.occlustionTexture);
|
|
344
304
|
material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
|
|
345
305
|
}
|
|
346
|
-
|
|
347
306
|
if (material.emissiveTexture) {
|
|
348
307
|
material.emmisiveTexture = _objectSpread({}, material.emmisiveTexture);
|
|
349
308
|
material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
|
|
350
309
|
}
|
|
351
|
-
|
|
352
310
|
if (!material.emissiveFactor) {
|
|
353
311
|
material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];
|
|
354
312
|
}
|
|
355
|
-
|
|
356
313
|
if (material.pbrMetallicRoughness) {
|
|
357
314
|
material.pbrMetallicRoughness = _objectSpread({}, material.pbrMetallicRoughness);
|
|
358
315
|
var mr = material.pbrMetallicRoughness;
|
|
359
|
-
|
|
360
316
|
if (mr.baseColorTexture) {
|
|
361
317
|
mr.baseColorTexture = _objectSpread({}, mr.baseColorTexture);
|
|
362
318
|
mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);
|
|
363
319
|
}
|
|
364
|
-
|
|
365
320
|
if (mr.metallicRoughnessTexture) {
|
|
366
321
|
mr.metallicRoughnessTexture = _objectSpread({}, mr.metallicRoughnessTexture);
|
|
367
322
|
mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);
|
|
368
323
|
}
|
|
369
324
|
}
|
|
370
|
-
|
|
371
325
|
return material;
|
|
372
326
|
}
|
|
373
327
|
}, {
|
|
374
328
|
key: "_resolveAccessor",
|
|
375
329
|
value: function _resolveAccessor(accessor, index) {
|
|
376
330
|
accessor.id = accessor.id || "accessor-".concat(index);
|
|
377
|
-
|
|
378
331
|
if (accessor.bufferView !== undefined) {
|
|
379
332
|
accessor.bufferView = this.getBufferView(accessor.bufferView);
|
|
380
333
|
}
|
|
@@ -385,33 +338,28 @@ var GLTFPostProcessor = function () {
|
|
|
385
338
|
|
|
386
339
|
if (accessor.bufferView) {
|
|
387
340
|
var buffer = accessor.bufferView.buffer;
|
|
388
|
-
|
|
389
341
|
var _getAccessorArrayType = (0, _gltfUtils.getAccessorArrayTypeAndLength)(accessor, accessor.bufferView),
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
342
|
+
ArrayType = _getAccessorArrayType.ArrayType,
|
|
343
|
+
byteLength = _getAccessorArrayType.byteLength;
|
|
393
344
|
var byteOffset = (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;
|
|
394
345
|
var cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);
|
|
395
|
-
|
|
396
346
|
if (accessor.bufferView.byteStride) {
|
|
397
347
|
cutBuffer = this._getValueFromInterleavedBuffer(buffer, byteOffset, accessor.bufferView.byteStride, accessor.bytesPerElement, accessor.count);
|
|
398
348
|
}
|
|
399
|
-
|
|
400
349
|
accessor.value = new ArrayType(cutBuffer);
|
|
401
350
|
}
|
|
402
|
-
|
|
403
351
|
return accessor;
|
|
404
352
|
}
|
|
353
|
+
|
|
405
354
|
}, {
|
|
406
355
|
key: "_getValueFromInterleavedBuffer",
|
|
407
|
-
value:
|
|
356
|
+
value:
|
|
357
|
+
function _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {
|
|
408
358
|
var result = new Uint8Array(count * bytesPerElement);
|
|
409
|
-
|
|
410
359
|
for (var i = 0; i < count; i++) {
|
|
411
360
|
var elementOffset = byteOffset + i * byteStride;
|
|
412
361
|
result.set(new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)), i * bytesPerElement);
|
|
413
362
|
}
|
|
414
|
-
|
|
415
363
|
return result.buffer;
|
|
416
364
|
}
|
|
417
365
|
}, {
|
|
@@ -427,15 +375,12 @@ var GLTFPostProcessor = function () {
|
|
|
427
375
|
value: function _resolveSampler(sampler, index) {
|
|
428
376
|
sampler.id = sampler.id || "sampler-".concat(index);
|
|
429
377
|
sampler.parameters = {};
|
|
430
|
-
|
|
431
378
|
for (var key in sampler) {
|
|
432
379
|
var glEnum = this._enumSamplerParameter(key);
|
|
433
|
-
|
|
434
380
|
if (glEnum !== undefined) {
|
|
435
381
|
sampler.parameters[glEnum] = sampler[key];
|
|
436
382
|
}
|
|
437
383
|
}
|
|
438
|
-
|
|
439
384
|
return sampler;
|
|
440
385
|
}
|
|
441
386
|
}, {
|
|
@@ -447,24 +392,20 @@ var GLTFPostProcessor = function () {
|
|
|
447
392
|
key: "_resolveImage",
|
|
448
393
|
value: function _resolveImage(image, index) {
|
|
449
394
|
image.id = image.id || "image-".concat(index);
|
|
450
|
-
|
|
451
395
|
if (image.bufferView !== undefined) {
|
|
452
396
|
image.bufferView = this.getBufferView(image.bufferView);
|
|
453
397
|
}
|
|
454
398
|
|
|
455
399
|
var preloadedImage = this.images[index];
|
|
456
|
-
|
|
457
400
|
if (preloadedImage) {
|
|
458
401
|
image.image = preloadedImage;
|
|
459
402
|
}
|
|
460
|
-
|
|
461
403
|
return image;
|
|
462
404
|
}
|
|
463
405
|
}, {
|
|
464
406
|
key: "_resolveBufferView",
|
|
465
407
|
value: function _resolveBufferView(bufferView, index) {
|
|
466
408
|
var bufferIndex = bufferView.buffer;
|
|
467
|
-
|
|
468
409
|
var result = _objectSpread(_objectSpread({
|
|
469
410
|
id: "bufferView-".concat(index)
|
|
470
411
|
}, bufferView), {}, {
|
|
@@ -473,11 +414,9 @@ var GLTFPostProcessor = function () {
|
|
|
473
414
|
|
|
474
415
|
var arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
|
|
475
416
|
var byteOffset = this.buffers[bufferIndex].byteOffset || 0;
|
|
476
|
-
|
|
477
417
|
if ('byteOffset' in bufferView) {
|
|
478
418
|
byteOffset += bufferView.byteOffset;
|
|
479
419
|
}
|
|
480
|
-
|
|
481
420
|
result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
|
|
482
421
|
return result;
|
|
483
422
|
}
|
|
@@ -485,17 +424,15 @@ var GLTFPostProcessor = function () {
|
|
|
485
424
|
key: "_resolveCamera",
|
|
486
425
|
value: function _resolveCamera(camera, index) {
|
|
487
426
|
camera.id = camera.id || "camera-".concat(index);
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
427
|
+
if (camera.perspective) {
|
|
428
|
+
}
|
|
429
|
+
if (camera.orthographic) {
|
|
430
|
+
}
|
|
493
431
|
return camera;
|
|
494
432
|
}
|
|
495
433
|
}]);
|
|
496
434
|
return GLTFPostProcessor;
|
|
497
435
|
}();
|
|
498
|
-
|
|
499
436
|
function postProcessGLTF(gltf, options) {
|
|
500
437
|
return new GLTFPostProcessor().postProcess(gltf, options);
|
|
501
438
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api/post-process-gltf.ts"],"names":["COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","gltf","options","json","buffers","images","baseUri","_resolveTree","bufferViews","map","bufView","i","_resolveBufferView","image","_resolveImage","samplers","sampler","_resolveSampler","textures","texture","_resolveTexture","accessors","accessor","_resolveAccessor","materials","material","_resolveMaterial","meshes","mesh","_resolveMesh","nodes","node","_resolveNode","skins","skin","_resolveSkin","scenes","scene","_resolveScene","undefined","index","_get","array","object","console","warn","id","getNode","children","child","getMesh","length","reduce","accum","meshIndex","primitives","concat","camera","getCamera","getSkin","inverseBindMatrices","getAccessor","primitive","attributes","attribute","indices","getMaterial","normalTexture","getTexture","occlusionTexture","occlustionTexture","emissiveTexture","emmisiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","bufferView","getBufferView","bytesPerComponent","components","bytesPerElement","buffer","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","value","result","Uint8Array","elementOffset","set","getSampler","source","getImage","parameters","key","glEnum","_enumSamplerParameter","preloadedImage","bufferIndex","data","perspective","orthographic","postProcessGLTF","postProcess"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;AAcA,IAAMA,UAAU,GAAG;AACjBC,EAAAA,MAAM,EAAE,CADS;AAEjBC,EAAAA,IAAI,EAAE,CAFW;AAGjBC,EAAAA,IAAI,EAAE,CAHW;AAIjBC,EAAAA,IAAI,EAAE,CAJW;AAKjBC,EAAAA,IAAI,EAAE,CALW;AAMjBC,EAAAA,IAAI,EAAE,CANW;AAOjBC,EAAAA,IAAI,EAAE;AAPW,CAAnB;AAUA,IAAMC,KAAK,GAAG;AACZ,QAAM,CADM;AAEZ,QAAM,CAFM;AAGZ,QAAM,CAHM;AAIZ,QAAM,CAJM;AAKZ,QAAM,CALM;AAMZ,QAAM;AANM,CAAd;AASA,IAAMC,UAAU,GAAG;AAEjBC,EAAAA,kBAAkB,EAAE,MAFH;AAGjBC,EAAAA,kBAAkB,EAAE,MAHH;AAIjBC,EAAAA,cAAc,EAAE,MAJC;AAKjBC,EAAAA,cAAc,EAAE,MALC;AAQjBC,EAAAA,MAAM,EAAE,MARS;AASjBC,EAAAA,MAAM,EAAE,MATS;AAUjBC,EAAAA,qBAAqB,EAAE;AAVN,CAAnB;AAaA,IAAMC,4BAA4B,GAAG;AACnCC,EAAAA,SAAS,EAAET,UAAU,CAACC,kBADa;AAEnCS,EAAAA,SAAS,EAAEV,UAAU,CAACE,kBAFa;AAGnCS,EAAAA,KAAK,EAAEX,UAAU,CAACG,cAHiB;AAInCS,EAAAA,KAAK,EAAEZ,UAAU,CAACI;AAJiB,CAArC;AASA,IAAMS,eAAe,2EAClBb,UAAU,CAACC,kBADO,EACcD,UAAU,CAACM,MADzB,mDAElBN,UAAU,CAACE,kBAFO,EAEcF,UAAU,CAACO,qBAFzB,mDAGlBP,UAAU,CAACG,cAHO,EAGUH,UAAU,CAACK,MAHrB,mDAIlBL,UAAU,CAACI,cAJO,EAIUJ,UAAU,CAACK,MAJrB,oBAArB;;AAOA,SAASS,yBAAT,CAAmCC,aAAnC,EAAkD;AAChD,SAAOhB,KAAK,CAACgB,aAAD,CAAZ;AACD;;AAED,SAASC,uBAAT,CAAiCC,IAAjC,EAAuC;AACrC,SAAO1B,UAAU,CAAC0B,IAAD,CAAjB;AACD;;IAEKC,iB;;;mDACc,E;gDACU,E;mDACd,E;kDACD,E;;;;;WAEb,qBAAYC,IAAZ,EAAgC;AAAA,UAAdC,OAAc,uEAAJ,EAAI;AAC9B,UAAOC,IAAP,GAAwDF,IAAxD,CAAOE,IAAP;AAAA,0BAAwDF,IAAxD,CAAaG,OAAb;AAAA,UAAaA,OAAb,8BAAuB,EAAvB;AAAA,yBAAwDH,IAAxD,CAA2BI,MAA3B;AAAA,UAA2BA,MAA3B,6BAAoC,EAApC;AAAA,0BAAwDJ,IAAxD,CAAwCK,OAAxC;AAAA,UAAwCA,OAAxC,8BAAkD,EAAlD;AACA,0BAAOH,IAAP;AAEA,WAAKG,OAAL,GAAeA,OAAf;AACA,WAAKH,IAAL,GAAYA,IAAZ;AACA,WAAKC,OAAL,GAAeA,OAAf;AACA,WAAKC,MAAL,GAAcA,MAAd;;AAEA,WAAKE,YAAL,CAAkB,KAAKJ,IAAvB,EAA6BD,OAA7B;;AAEA,aAAO,KAAKC,IAAZ;AACD;;;WAKD,sBAAaA,IAAb,EAAiC;AAAA;;AAAA,UAAdD,OAAc,uEAAJ,EAAI;;AAC/B,UAAIC,IAAI,CAACK,WAAT,EAAsB;AACpBL,QAAAA,IAAI,CAACK,WAAL,GAAmBL,IAAI,CAACK,WAAL,CAAiBC,GAAjB,CAAqB,UAACC,OAAD,EAAUC,CAAV;AAAA,iBAAgB,KAAI,CAACC,kBAAL,CAAwBF,OAAxB,EAAiCC,CAAjC,CAAhB;AAAA,SAArB,CAAnB;AACD;;AACD,UAAIR,IAAI,CAACE,MAAT,EAAiB;AACfF,QAAAA,IAAI,CAACE,MAAL,GAAcF,IAAI,CAACE,MAAL,CAAYI,GAAZ,CAAgB,UAACI,KAAD,EAAQF,CAAR;AAAA,iBAAc,KAAI,CAACG,aAAL,CAAmBD,KAAnB,EAA0BF,CAA1B,CAAd;AAAA,SAAhB,CAAd;AACD;;AACD,UAAIR,IAAI,CAACY,QAAT,EAAmB;AACjBZ,QAAAA,IAAI,CAACY,QAAL,GAAgBZ,IAAI,CAACY,QAAL,CAAcN,GAAd,CAAkB,UAACO,OAAD,EAAUL,CAAV;AAAA,iBAAgB,KAAI,CAACM,eAAL,CAAqBD,OAArB,EAA8BL,CAA9B,CAAhB;AAAA,SAAlB,CAAhB;AACD;;AACD,UAAIR,IAAI,CAACe,QAAT,EAAmB;AACjBf,QAAAA,IAAI,CAACe,QAAL,GAAgBf,IAAI,CAACe,QAAL,CAAcT,GAAd,CAAkB,UAACU,OAAD,EAAUR,CAAV;AAAA,iBAAgB,KAAI,CAACS,eAAL,CAAqBD,OAArB,EAA8BR,CAA9B,CAAhB;AAAA,SAAlB,CAAhB;AACD;;AACD,UAAIR,IAAI,CAACkB,SAAT,EAAoB;AAClBlB,QAAAA,IAAI,CAACkB,SAAL,GAAiBlB,IAAI,CAACkB,SAAL,CAAeZ,GAAf,CAAmB,UAACa,QAAD,EAAWX,CAAX;AAAA,iBAAiB,KAAI,CAACY,gBAAL,CAAsBD,QAAtB,EAAgCX,CAAhC,CAAjB;AAAA,SAAnB,CAAjB;AACD;;AACD,UAAIR,IAAI,CAACqB,SAAT,EAAoB;AAClBrB,QAAAA,IAAI,CAACqB,SAAL,GAAiBrB,IAAI,CAACqB,SAAL,CAAef,GAAf,CAAmB,UAACgB,QAAD,EAAWd,CAAX;AAAA,iBAAiB,KAAI,CAACe,gBAAL,CAAsBD,QAAtB,EAAgCd,CAAhC,CAAjB;AAAA,SAAnB,CAAjB;AACD;;AACD,UAAIR,IAAI,CAACwB,MAAT,EAAiB;AACfxB,QAAAA,IAAI,CAACwB,MAAL,GAAcxB,IAAI,CAACwB,MAAL,CAAYlB,GAAZ,CAAgB,UAACmB,IAAD,EAAOjB,CAAP;AAAA,iBAAa,KAAI,CAACkB,YAAL,CAAkBD,IAAlB,EAAwBjB,CAAxB,CAAb;AAAA,SAAhB,CAAd;AACD;;AACD,UAAIR,IAAI,CAAC2B,KAAT,EAAgB;AACd3B,QAAAA,IAAI,CAAC2B,KAAL,GAAa3B,IAAI,CAAC2B,KAAL,CAAWrB,GAAX,CAAe,UAACsB,IAAD,EAAOpB,CAAP;AAAA,iBAAa,KAAI,CAACqB,YAAL,CAAkBD,IAAlB,EAAwBpB,CAAxB,CAAb;AAAA,SAAf,CAAb;AACD;;AACD,UAAIR,IAAI,CAAC8B,KAAT,EAAgB;AACd9B,QAAAA,IAAI,CAAC8B,KAAL,GAAa9B,IAAI,CAAC8B,KAAL,CAAWxB,GAAX,CAAe,UAACyB,IAAD,EAAOvB,CAAP;AAAA,iBAAa,KAAI,CAACwB,YAAL,CAAkBD,IAAlB,EAAwBvB,CAAxB,CAAb;AAAA,SAAf,CAAb;AACD;;AACD,UAAIR,IAAI,CAACiC,MAAT,EAAiB;AACfjC,QAAAA,IAAI,CAACiC,MAAL,GAAcjC,IAAI,CAACiC,MAAL,CAAY3B,GAAZ,CAAgB,UAAC4B,KAAD,EAAQ1B,CAAR;AAAA,iBAAc,KAAI,CAAC2B,aAAL,CAAmBD,KAAnB,EAA0B1B,CAA1B,CAAd;AAAA,SAAhB,CAAd;AACD;;AACD,UAAIR,IAAI,CAACkC,KAAL,KAAeE,SAAnB,EAA8B;AAC5BpC,QAAAA,IAAI,CAACkC,KAAL,GAAalC,IAAI,CAACiC,MAAL,CAAY,KAAKjC,IAAL,CAAUkC,KAAtB,CAAb;AACD;AACF;;;WAED,kBAASG,KAAT,EAAgB;AACd,aAAO,KAAKC,IAAL,CAAU,QAAV,EAAoBD,KAApB,CAAP;AACD;;;WAED,iBAAQA,KAAR,EAAe;AACb,aAAO,KAAKC,IAAL,CAAU,OAAV,EAAmBD,KAAnB,CAAP;AACD;;;WAED,iBAAQA,KAAR,EAAe;AACb,aAAO,KAAKC,IAAL,CAAU,OAAV,EAAmBD,KAAnB,CAAP;AACD;;;WAED,iBAAQA,KAAR,EAAe;AACb,aAAO,KAAKC,IAAL,CAAU,QAAV,EAAoBD,KAApB,CAAP;AACD;;;WAED,qBAAYA,KAAZ,EAAmB;AACjB,aAAO,KAAKC,IAAL,CAAU,WAAV,EAAuBD,KAAvB,CAAP;AACD;;;WAED,qBAAYA,KAAZ,EAAmB;AACjB,aAAO,KAAKC,IAAL,CAAU,WAAV,EAAuBD,KAAvB,CAAP;AACD;;;WAED,mBAAUA,KAAV,EAAiB;AACf,aAAO,IAAP;AACD;;;WAED,oBAAWA,KAAX,EAAkB;AAChB,aAAO,KAAKC,IAAL,CAAU,UAAV,EAAsBD,KAAtB,CAAP;AACD;;;WAED,oBAAWA,KAAX,EAAkB;AAChB,aAAO,KAAKC,IAAL,CAAU,UAAV,EAAsBD,KAAtB,CAAP;AACD;;;WAED,kBAASA,KAAT,EAAgB;AACd,aAAO,KAAKC,IAAL,CAAU,QAAV,EAAoBD,KAApB,CAAP;AACD;;;WAED,uBAAcA,KAAd,EAAqB;AACnB,aAAO,KAAKC,IAAL,CAAU,aAAV,EAAyBD,KAAzB,CAAP;AACD;;;WAED,mBAAUA,KAAV,EAAiB;AACf,aAAO,KAAKC,IAAL,CAAU,SAAV,EAAqBD,KAArB,CAAP;AACD;;;WAED,cAAKE,KAAL,EAAYF,KAAZ,EAAmB;AAEjB,UAAI,sBAAOA,KAAP,MAAiB,QAArB,EAA+B;AAC7B,eAAOA,KAAP;AACD;;AACD,UAAMG,MAAM,GAAG,KAAKxC,IAAL,CAAUuC,KAAV,KAAoB,KAAKvC,IAAL,CAAUuC,KAAV,EAAiBF,KAAjB,CAAnC;;AACA,UAAI,CAACG,MAAL,EAAa;AACXC,QAAAA,OAAO,CAACC,IAAR,2CAAgDH,KAAhD,cAAyDF,KAAzD;AACD;;AACD,aAAOG,MAAP;AACD;;;WAID,uBAAcN,KAAd,EAAqBG,KAArB,EAA4B;AAAA;;AAE1BH,MAAAA,KAAK,CAACS,EAAN,GAAWT,KAAK,CAACS,EAAN,oBAAqBN,KAArB,CAAX;AACAH,MAAAA,KAAK,CAACP,KAAN,GAAc,CAACO,KAAK,CAACP,KAAN,IAAe,EAAhB,EAAoBrB,GAApB,CAAwB,UAACsB,IAAD;AAAA,eAAU,MAAI,CAACgB,OAAL,CAAahB,IAAb,CAAV;AAAA,OAAxB,CAAd;AACA,aAAOM,KAAP;AACD;;;WAED,sBAAaN,IAAb,EAAmBS,KAAnB,EAA0B;AAAA;;AAExBT,MAAAA,IAAI,CAACe,EAAL,GAAUf,IAAI,CAACe,EAAL,mBAAmBN,KAAnB,CAAV;;AACA,UAAIT,IAAI,CAACiB,QAAT,EAAmB;AACjBjB,QAAAA,IAAI,CAACiB,QAAL,GAAgBjB,IAAI,CAACiB,QAAL,CAAcvC,GAAd,CAAkB,UAACwC,KAAD;AAAA,iBAAW,MAAI,CAACF,OAAL,CAAaE,KAAb,CAAX;AAAA,SAAlB,CAAhB;AACD;;AACD,UAAIlB,IAAI,CAACH,IAAL,KAAcW,SAAlB,EAA6B;AAC3BR,QAAAA,IAAI,CAACH,IAAL,GAAY,KAAKsB,OAAL,CAAanB,IAAI,CAACH,IAAlB,CAAZ;AACD,OAFD,MAEO,IAAIG,IAAI,CAACJ,MAAL,KAAgBY,SAAhB,IAA6BR,IAAI,CAACJ,MAAL,CAAYwB,MAA7C,EAAqD;AAC1DpB,QAAAA,IAAI,CAACH,IAAL,GAAYG,IAAI,CAACJ,MAAL,CAAYyB,MAAZ,CACV,UAACC,KAAD,EAAQC,SAAR,EAAsB;AACpB,cAAM1B,IAAI,GAAG,MAAI,CAACsB,OAAL,CAAaI,SAAb,CAAb;;AACAD,UAAAA,KAAK,CAACP,EAAN,GAAWlB,IAAI,CAACkB,EAAhB;AACAO,UAAAA,KAAK,CAACE,UAAN,GAAmBF,KAAK,CAACE,UAAN,CAAiBC,MAAjB,CAAwB5B,IAAI,CAAC2B,UAA7B,CAAnB;AACA,iBAAOF,KAAP;AACD,SANS,EAOV;AAACE,UAAAA,UAAU,EAAE;AAAb,SAPU,CAAZ;AASD;;AACD,UAAIxB,IAAI,CAAC0B,MAAL,KAAgBlB,SAApB,EAA+B;AAC7BR,QAAAA,IAAI,CAAC0B,MAAL,GAAc,KAAKC,SAAL,CAAe3B,IAAI,CAAC0B,MAApB,CAAd;AACD;;AACD,UAAI1B,IAAI,CAACG,IAAL,KAAcK,SAAlB,EAA6B;AAC3BR,QAAAA,IAAI,CAACG,IAAL,GAAY,KAAKyB,OAAL,CAAa5B,IAAI,CAACG,IAAlB,CAAZ;AACD;;AACD,aAAOH,IAAP;AACD;;;WAED,sBAAaG,IAAb,EAAmBM,KAAnB,EAA0B;AAExBN,MAAAA,IAAI,CAACY,EAAL,GAAUZ,IAAI,CAACY,EAAL,mBAAmBN,KAAnB,CAAV;AACAN,MAAAA,IAAI,CAAC0B,mBAAL,GAA2B,KAAKC,WAAL,CAAiB3B,IAAI,CAAC0B,mBAAtB,CAA3B;AACA,aAAO1B,IAAP;AACD;;;WAED,sBAAaN,IAAb,EAAmBY,KAAnB,EAA0B;AAAA;;AAExBZ,MAAAA,IAAI,CAACkB,EAAL,GAAUlB,IAAI,CAACkB,EAAL,mBAAmBN,KAAnB,CAAV;;AACA,UAAIZ,IAAI,CAAC2B,UAAT,EAAqB;AACnB3B,QAAAA,IAAI,CAAC2B,UAAL,GAAkB3B,IAAI,CAAC2B,UAAL,CAAgB9C,GAAhB,CAAoB,UAACqD,SAAD,EAAe;AACnDA,UAAAA,SAAS,qBAAOA,SAAP,CAAT;AACA,cAAMC,UAAU,GAAGD,SAAS,CAACC,UAA7B;AACAD,UAAAA,SAAS,CAACC,UAAV,GAAuB,EAAvB;;AACA,eAAK,IAAMC,SAAX,IAAwBD,UAAxB,EAAoC;AAClCD,YAAAA,SAAS,CAACC,UAAV,CAAqBC,SAArB,IAAkC,MAAI,CAACH,WAAL,CAAiBE,UAAU,CAACC,SAAD,CAA3B,CAAlC;AACD;;AACD,cAAIF,SAAS,CAACG,OAAV,KAAsB1B,SAA1B,EAAqC;AACnCuB,YAAAA,SAAS,CAACG,OAAV,GAAoB,MAAI,CAACJ,WAAL,CAAiBC,SAAS,CAACG,OAA3B,CAApB;AACD;;AACD,cAAIH,SAAS,CAACrC,QAAV,KAAuBc,SAA3B,EAAsC;AACpCuB,YAAAA,SAAS,CAACrC,QAAV,GAAqB,MAAI,CAACyC,WAAL,CAAiBJ,SAAS,CAACrC,QAA3B,CAArB;AACD;;AACD,iBAAOqC,SAAP;AACD,SAdiB,CAAlB;AAeD;;AACD,aAAOlC,IAAP;AACD;;;WAED,0BAAiBH,QAAjB,EAA2Be,KAA3B,EAAkC;AAEhCf,MAAAA,QAAQ,CAACqB,EAAT,GAAcrB,QAAQ,CAACqB,EAAT,uBAA2BN,KAA3B,CAAd;;AACA,UAAIf,QAAQ,CAAC0C,aAAb,EAA4B;AAC1B1C,QAAAA,QAAQ,CAAC0C,aAAT,qBAA6B1C,QAAQ,CAAC0C,aAAtC;AACA1C,QAAAA,QAAQ,CAAC0C,aAAT,CAAuBhD,OAAvB,GAAiC,KAAKiD,UAAL,CAAgB3C,QAAQ,CAAC0C,aAAT,CAAuB3B,KAAvC,CAAjC;AACD;;AACD,UAAIf,QAAQ,CAAC4C,gBAAb,EAA+B;AAC7B5C,QAAAA,QAAQ,CAAC6C,iBAAT,qBAAiC7C,QAAQ,CAAC6C,iBAA1C;AACA7C,QAAAA,QAAQ,CAAC4C,gBAAT,CAA0BlD,OAA1B,GAAoC,KAAKiD,UAAL,CAAgB3C,QAAQ,CAAC4C,gBAAT,CAA0B7B,KAA1C,CAApC;AACD;;AACD,UAAIf,QAAQ,CAAC8C,eAAb,EAA8B;AAC5B9C,QAAAA,QAAQ,CAAC+C,eAAT,qBAA+B/C,QAAQ,CAAC+C,eAAxC;AACA/C,QAAAA,QAAQ,CAAC8C,eAAT,CAAyBpD,OAAzB,GAAmC,KAAKiD,UAAL,CAAgB3C,QAAQ,CAAC8C,eAAT,CAAyB/B,KAAzC,CAAnC;AACD;;AACD,UAAI,CAACf,QAAQ,CAACgD,cAAd,EAA8B;AAC5BhD,QAAAA,QAAQ,CAACgD,cAAT,GAA0BhD,QAAQ,CAAC+C,eAAT,GAA2B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAA3B,GAAuC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAjE;AACD;;AAED,UAAI/C,QAAQ,CAACiD,oBAAb,EAAmC;AACjCjD,QAAAA,QAAQ,CAACiD,oBAAT,qBAAoCjD,QAAQ,CAACiD,oBAA7C;AACA,YAAMC,EAAE,GAAGlD,QAAQ,CAACiD,oBAApB;;AACA,YAAIC,EAAE,CAACC,gBAAP,EAAyB;AACvBD,UAAAA,EAAE,CAACC,gBAAH,qBAA0BD,EAAE,CAACC,gBAA7B;AACAD,UAAAA,EAAE,CAACC,gBAAH,CAAoBzD,OAApB,GAA8B,KAAKiD,UAAL,CAAgBO,EAAE,CAACC,gBAAH,CAAoBpC,KAApC,CAA9B;AACD;;AACD,YAAImC,EAAE,CAACE,wBAAP,EAAiC;AAC/BF,UAAAA,EAAE,CAACE,wBAAH,qBAAkCF,EAAE,CAACE,wBAArC;AACAF,UAAAA,EAAE,CAACE,wBAAH,CAA4B1D,OAA5B,GAAsC,KAAKiD,UAAL,CAAgBO,EAAE,CAACE,wBAAH,CAA4BrC,KAA5C,CAAtC;AACD;AACF;;AACD,aAAOf,QAAP;AACD;;;WAED,0BAAiBH,QAAjB,EAA2BkB,KAA3B,EAAkC;AAEhClB,MAAAA,QAAQ,CAACwB,EAAT,GAAcxB,QAAQ,CAACwB,EAAT,uBAA2BN,KAA3B,CAAd;;AACA,UAAIlB,QAAQ,CAACwD,UAAT,KAAwBvC,SAA5B,EAAuC;AAErCjB,QAAAA,QAAQ,CAACwD,UAAT,GAAsB,KAAKC,aAAL,CAAmBzD,QAAQ,CAACwD,UAA5B,CAAtB;AACD;;AAGDxD,MAAAA,QAAQ,CAAC0D,iBAAT,GAA6BpF,yBAAyB,CAAC0B,QAAQ,CAACzB,aAAV,CAAtD;AACAyB,MAAAA,QAAQ,CAAC2D,UAAT,GAAsBnF,uBAAuB,CAACwB,QAAQ,CAACvB,IAAV,CAA7C;AACAuB,MAAAA,QAAQ,CAAC4D,eAAT,GAA2B5D,QAAQ,CAAC0D,iBAAT,GAA6B1D,QAAQ,CAAC2D,UAAjE;;AAKA,UAAI3D,QAAQ,CAACwD,UAAb,EAAyB;AACvB,YAAMK,MAAM,GAAG7D,QAAQ,CAACwD,UAAT,CAAoBK,MAAnC;;AACA,oCAAgC,8CAA8B7D,QAA9B,EAAwCA,QAAQ,CAACwD,UAAjD,CAAhC;AAAA,YAAOM,SAAP,yBAAOA,SAAP;AAAA,YAAkBC,UAAlB,yBAAkBA,UAAlB;;AACA,YAAMC,UAAU,GACd,CAAChE,QAAQ,CAACwD,UAAT,CAAoBQ,UAApB,IAAkC,CAAnC,KAAyChE,QAAQ,CAACgE,UAAT,IAAuB,CAAhE,IAAqEH,MAAM,CAACG,UAD9E;AAEA,YAAIC,SAAS,GAAGJ,MAAM,CAACK,WAAP,CAAmBC,KAAnB,CAAyBH,UAAzB,EAAqCA,UAAU,GAAGD,UAAlD,CAAhB;;AACA,YAAI/D,QAAQ,CAACwD,UAAT,CAAoBY,UAAxB,EAAoC;AAClCH,UAAAA,SAAS,GAAG,KAAKI,8BAAL,CACVR,MADU,EAEVG,UAFU,EAGVhE,QAAQ,CAACwD,UAAT,CAAoBY,UAHV,EAIVpE,QAAQ,CAAC4D,eAJC,EAKV5D,QAAQ,CAACsE,KALC,CAAZ;AAOD;;AACDtE,QAAAA,QAAQ,CAACuE,KAAT,GAAiB,IAAIT,SAAJ,CAAcG,SAAd,CAAjB;AACD;;AAED,aAAOjE,QAAP;AACD;;;WAYD,wCAA+B6D,MAA/B,EAAuCG,UAAvC,EAAmDI,UAAnD,EAA+DR,eAA/D,EAAgFU,KAAhF,EAAuF;AACrF,UAAME,MAAM,GAAG,IAAIC,UAAJ,CAAeH,KAAK,GAAGV,eAAvB,CAAf;;AACA,WAAK,IAAIvE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiF,KAApB,EAA2BjF,CAAC,EAA5B,EAAgC;AAC9B,YAAMqF,aAAa,GAAGV,UAAU,GAAG3E,CAAC,GAAG+E,UAAvC;AACAI,QAAAA,MAAM,CAACG,GAAP,CACE,IAAIF,UAAJ,CAAeZ,MAAM,CAACK,WAAP,CAAmBC,KAAnB,CAAyBO,aAAzB,EAAwCA,aAAa,GAAGd,eAAxD,CAAf,CADF,EAEEvE,CAAC,GAAGuE,eAFN;AAID;;AACD,aAAOY,MAAM,CAACX,MAAd;AACD;;;WAED,yBAAgBhE,OAAhB,EAAyBqB,KAAzB,EAAgC;AAE9BrB,MAAAA,OAAO,CAAC2B,EAAR,GAAa3B,OAAO,CAAC2B,EAAR,sBAAyBN,KAAzB,CAAb;AACArB,MAAAA,OAAO,CAACH,OAAR,GAAkB,aAAaG,OAAb,GAAuB,KAAK+E,UAAL,CAAgB/E,OAAO,CAACH,OAAxB,CAAvB,GAA0DrB,eAA5E;AACAwB,MAAAA,OAAO,CAACgF,MAAR,GAAiB,KAAKC,QAAL,CAAcjF,OAAO,CAACgF,MAAtB,CAAjB;AACA,aAAOhF,OAAP;AACD;;;WAED,yBAAgBH,OAAhB,EAAyBwB,KAAzB,EAAgC;AAE9BxB,MAAAA,OAAO,CAAC8B,EAAR,GAAa9B,OAAO,CAAC8B,EAAR,sBAAyBN,KAAzB,CAAb;AAEAxB,MAAAA,OAAO,CAACqF,UAAR,GAAqB,EAArB;;AACA,WAAK,IAAMC,GAAX,IAAkBtF,OAAlB,EAA2B;AACzB,YAAMuF,MAAM,GAAG,KAAKC,qBAAL,CAA2BF,GAA3B,CAAf;;AACA,YAAIC,MAAM,KAAKhE,SAAf,EAA0B;AACxBvB,UAAAA,OAAO,CAACqF,UAAR,CAAmBE,MAAnB,IAA6BvF,OAAO,CAACsF,GAAD,CAApC;AACD;AACF;;AACD,aAAOtF,OAAP;AACD;;;WAED,+BAAsBsF,GAAtB,EAA2B;AACzB,aAAOhH,4BAA4B,CAACgH,GAAD,CAAnC;AACD;;;WAED,uBAAczF,KAAd,EAAqB2B,KAArB,EAA4B;AAE1B3B,MAAAA,KAAK,CAACiC,EAAN,GAAWjC,KAAK,CAACiC,EAAN,oBAAqBN,KAArB,CAAX;;AACA,UAAI3B,KAAK,CAACiE,UAAN,KAAqBvC,SAAzB,EAAoC;AAClC1B,QAAAA,KAAK,CAACiE,UAAN,GAAmB,KAAKC,aAAL,CAAmBlE,KAAK,CAACiE,UAAzB,CAAnB;AACD;;AAID,UAAM2B,cAAc,GAAG,KAAKpG,MAAL,CAAYmC,KAAZ,CAAvB;;AACA,UAAIiE,cAAJ,EAAoB;AAClB5F,QAAAA,KAAK,CAACA,KAAN,GAAc4F,cAAd;AACD;;AAED,aAAO5F,KAAP;AACD;;;WAED,4BAAmBiE,UAAnB,EAA2CtC,KAA3C,EAAmF;AAEjF,UAAMkE,WAAW,GAAG5B,UAAU,CAACK,MAA/B;;AACA,UAAMW,MAA+B;AACnChD,QAAAA,EAAE,uBAAgBN,KAAhB;AADiC,SAEhCsC,UAFgC;AAGnCK,QAAAA,MAAM,EAAE,KAAK/E,OAAL,CAAasG,WAAb;AAH2B,QAArC;;AAOA,UAAMlB,WAAW,GAAG,KAAKpF,OAAL,CAAasG,WAAb,EAA0BlB,WAA9C;AAEA,UAAIF,UAAU,GAAG,KAAKlF,OAAL,CAAasG,WAAb,EAA0BpB,UAA1B,IAAwC,CAAzD;;AAEA,UAAI,gBAAgBR,UAApB,EAAgC;AAC9BQ,QAAAA,UAAU,IAAIR,UAAU,CAACQ,UAAzB;AACD;;AAEDQ,MAAAA,MAAM,CAACa,IAAP,GAAc,IAAIZ,UAAJ,CAAeP,WAAf,EAA4BF,UAA5B,EAAwCR,UAAU,CAACO,UAAnD,CAAd;AACA,aAAOS,MAAP;AACD;;;WAED,wBAAerC,MAAf,EAAuBjB,KAAvB,EAA8B;AAC5BiB,MAAAA,MAAM,CAACX,EAAP,GAAYW,MAAM,CAACX,EAAP,qBAAuBN,KAAvB,CAAZ;;AAEA,UAAIiB,MAAM,CAACmD,WAAX,EAAwB,CAEvB;;AACD,UAAInD,MAAM,CAACoD,YAAX,EAAyB,CAExB;;AACD,aAAOpD,MAAP;AACD;;;;;AAGI,SAASqD,eAAT,CAAyB7G,IAAzB,EAA+BC,OAA/B,EAAyC;AAC9C,SAAO,IAAIF,iBAAJ,GAAwB+G,WAAxB,CAAoC9G,IAApC,EAA0CC,OAA1C,CAAP;AACD","sourcesContent":["import {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\nimport {BufferView} from '../types/gltf-json-schema';\nimport {BufferView as BufferViewPostprocessed} from '../types/gltf-postprocessed-schema';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n json: Record<string, any> = {};\n buffers: [] = [];\n images: [] = [];\n\n postProcess(gltf, options = {}) {\n const {json, buffers = [], images = [], baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.json = json;\n this.buffers = buffers;\n this.images = images;\n\n this._resolveTree(this.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity\n _resolveTree(json, options = {}) {\n if (json.bufferViews) {\n json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (json.images) {\n json.images = json.images.map((image, i) => this._resolveImage(image, i));\n }\n if (json.samplers) {\n json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (json.textures) {\n json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (json.accessors) {\n json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (json.materials) {\n json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (json.meshes) {\n json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (json.nodes) {\n json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));\n }\n if (json.skins) {\n json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (json.scenes) {\n json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (json.scene !== undefined) {\n json.scene = json.scenes[this.json.scene];\n }\n }\n\n getScene(index) {\n return this._get('scenes', index);\n }\n\n getNode(index) {\n return this._get('nodes', index);\n }\n\n getSkin(index) {\n return this._get('skins', index);\n }\n\n getMesh(index) {\n return this._get('meshes', index);\n }\n\n getMaterial(index) {\n return this._get('materials', index);\n }\n\n getAccessor(index) {\n return this._get('accessors', index);\n }\n\n getCamera(index) {\n return null; // TODO: fix this\n }\n\n getTexture(index) {\n return this._get('textures', index);\n }\n\n getSampler(index) {\n return this._get('samplers', index);\n }\n\n getImage(index) {\n return this._get('images', index);\n }\n\n getBufferView(index) {\n return this._get('bufferViews', index);\n }\n\n getBuffer(index) {\n return this._get('buffers', index);\n }\n\n _get(array, index) {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && this.json[array][index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene, index) {\n // scene = {...scene};\n scene.id = scene.id || `scene-${index}`;\n scene.nodes = (scene.nodes || []).map((node) => this.getNode(node));\n return scene;\n }\n\n _resolveNode(node, index) {\n // node = {...node};\n node.id = node.id || `node-${index}`;\n if (node.children) {\n node.children = node.children.map((child) => this.getNode(child));\n }\n if (node.mesh !== undefined) {\n node.mesh = this.getMesh(node.mesh);\n } else if (node.meshes !== undefined && node.meshes.length) {\n node.mesh = node.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n if (node.camera !== undefined) {\n node.camera = this.getCamera(node.camera);\n }\n if (node.skin !== undefined) {\n node.skin = this.getSkin(node.skin);\n }\n return node;\n }\n\n _resolveSkin(skin, index) {\n // skin = {...skin};\n skin.id = skin.id || `skin-${index}`;\n skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);\n return skin;\n }\n\n _resolveMesh(mesh, index) {\n // mesh = {...mesh};\n mesh.id = mesh.id || `mesh-${index}`;\n if (mesh.primitives) {\n mesh.primitives = mesh.primitives.map((primitive) => {\n primitive = {...primitive};\n const attributes = primitive.attributes;\n primitive.attributes = {};\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (primitive.indices !== undefined) {\n primitive.indices = this.getAccessor(primitive.indices);\n }\n if (primitive.material !== undefined) {\n primitive.material = this.getMaterial(primitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(material, index) {\n // material = {...material};\n material.id = material.id || `material-${index}`;\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlustionTexture = {...material.occlustionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emmisiveTexture = {...material.emmisiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(accessor, index) {\n // accessor = {...accessor};\n accessor.id = accessor.id || `accessor-${index}`;\n if (accessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(accessor.bufferView);\n }\n\n // Look up enums\n accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);\n accessor.components = getSizeFromAccessorType(accessor.type);\n accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(texture, index) {\n // texture = {...texture};\n texture.id = texture.id || `texture-${index}`;\n texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;\n texture.source = this.getImage(texture.source);\n return texture;\n }\n\n _resolveSampler(sampler, index) {\n // sampler = {...sampler};\n sampler.id = sampler.id || `sampler-${index}`;\n // Map textual parameters to GL parameter values\n sampler.parameters = {};\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key) {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(image, index) {\n // image = {...image};\n image.id = image.id || `image-${index}`;\n if (image.bufferView !== undefined) {\n image.bufferView = this.getBufferView(image.bufferView);\n }\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(bufferView: BufferView, index: number): BufferViewPostprocessed {\n // bufferView = {...bufferView};\n const bufferIndex = bufferView.buffer;\n const result: BufferViewPostprocessed = {\n id: `bufferView-${index}`,\n ...bufferView,\n buffer: this.buffers[bufferIndex]\n };\n\n // @ts-expect-error\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // @ts-expect-error\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n\n if ('byteOffset' in bufferView) {\n byteOffset += bufferView.byteOffset;\n }\n\n result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n return result;\n }\n\n _resolveCamera(camera, index) {\n camera.id = camera.id || `camera-${index}`;\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(gltf, options?) {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"file":"post-process-gltf.js"}
|
|
1
|
+
{"version":3,"file":"post-process-gltf.js","names":["COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","gltf","options","json","buffers","images","baseUri","assert","_resolveTree","bufferViews","map","bufView","i","_resolveBufferView","image","_resolveImage","samplers","sampler","_resolveSampler","textures","texture","_resolveTexture","accessors","accessor","_resolveAccessor","materials","material","_resolveMaterial","meshes","mesh","_resolveMesh","nodes","node","_resolveNode","skins","skin","_resolveSkin","scenes","scene","_resolveScene","undefined","index","_get","array","object","console","warn","id","getNode","children","child","getMesh","length","reduce","accum","meshIndex","primitives","concat","camera","getCamera","getSkin","inverseBindMatrices","getAccessor","primitive","attributes","attribute","indices","getMaterial","normalTexture","getTexture","occlusionTexture","occlustionTexture","emissiveTexture","emmisiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","bufferView","getBufferView","bytesPerComponent","components","bytesPerElement","buffer","getAccessorArrayTypeAndLength","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","value","result","Uint8Array","elementOffset","set","getSampler","source","getImage","parameters","key","glEnum","_enumSamplerParameter","preloadedImage","bufferIndex","data","perspective","orthographic","postProcessGLTF","postProcess"],"sources":["../../../../src/lib/api/post-process-gltf.ts"],"sourcesContent":["import {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\nimport {BufferView} from '../types/gltf-json-schema';\nimport {BufferView as BufferViewPostprocessed} from '../types/gltf-postprocessed-schema';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n json: Record<string, any> = {};\n buffers: [] = [];\n images: [] = [];\n\n postProcess(gltf, options = {}) {\n const {json, buffers = [], images = [], baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.json = json;\n this.buffers = buffers;\n this.images = images;\n\n this._resolveTree(this.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity\n _resolveTree(json, options = {}) {\n if (json.bufferViews) {\n json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (json.images) {\n json.images = json.images.map((image, i) => this._resolveImage(image, i));\n }\n if (json.samplers) {\n json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (json.textures) {\n json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (json.accessors) {\n json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (json.materials) {\n json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (json.meshes) {\n json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (json.nodes) {\n json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));\n }\n if (json.skins) {\n json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (json.scenes) {\n json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (json.scene !== undefined) {\n json.scene = json.scenes[this.json.scene];\n }\n }\n\n getScene(index) {\n return this._get('scenes', index);\n }\n\n getNode(index) {\n return this._get('nodes', index);\n }\n\n getSkin(index) {\n return this._get('skins', index);\n }\n\n getMesh(index) {\n return this._get('meshes', index);\n }\n\n getMaterial(index) {\n return this._get('materials', index);\n }\n\n getAccessor(index) {\n return this._get('accessors', index);\n }\n\n getCamera(index) {\n return null; // TODO: fix this\n }\n\n getTexture(index) {\n return this._get('textures', index);\n }\n\n getSampler(index) {\n return this._get('samplers', index);\n }\n\n getImage(index) {\n return this._get('images', index);\n }\n\n getBufferView(index) {\n return this._get('bufferViews', index);\n }\n\n getBuffer(index) {\n return this._get('buffers', index);\n }\n\n _get(array, index) {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && this.json[array][index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene, index) {\n // scene = {...scene};\n scene.id = scene.id || `scene-${index}`;\n scene.nodes = (scene.nodes || []).map((node) => this.getNode(node));\n return scene;\n }\n\n _resolveNode(node, index) {\n // node = {...node};\n node.id = node.id || `node-${index}`;\n if (node.children) {\n node.children = node.children.map((child) => this.getNode(child));\n }\n if (node.mesh !== undefined) {\n node.mesh = this.getMesh(node.mesh);\n } else if (node.meshes !== undefined && node.meshes.length) {\n node.mesh = node.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n if (node.camera !== undefined) {\n node.camera = this.getCamera(node.camera);\n }\n if (node.skin !== undefined) {\n node.skin = this.getSkin(node.skin);\n }\n return node;\n }\n\n _resolveSkin(skin, index) {\n // skin = {...skin};\n skin.id = skin.id || `skin-${index}`;\n skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);\n return skin;\n }\n\n _resolveMesh(mesh, index) {\n // mesh = {...mesh};\n mesh.id = mesh.id || `mesh-${index}`;\n if (mesh.primitives) {\n mesh.primitives = mesh.primitives.map((primitive) => {\n primitive = {...primitive};\n const attributes = primitive.attributes;\n primitive.attributes = {};\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (primitive.indices !== undefined) {\n primitive.indices = this.getAccessor(primitive.indices);\n }\n if (primitive.material !== undefined) {\n primitive.material = this.getMaterial(primitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(material, index) {\n // material = {...material};\n material.id = material.id || `material-${index}`;\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlustionTexture = {...material.occlustionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emmisiveTexture = {...material.emmisiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(accessor, index) {\n // accessor = {...accessor};\n accessor.id = accessor.id || `accessor-${index}`;\n if (accessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(accessor.bufferView);\n }\n\n // Look up enums\n accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);\n accessor.components = getSizeFromAccessorType(accessor.type);\n accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(texture, index) {\n // texture = {...texture};\n texture.id = texture.id || `texture-${index}`;\n texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;\n texture.source = this.getImage(texture.source);\n return texture;\n }\n\n _resolveSampler(sampler, index) {\n // sampler = {...sampler};\n sampler.id = sampler.id || `sampler-${index}`;\n // Map textual parameters to GL parameter values\n sampler.parameters = {};\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key) {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(image, index) {\n // image = {...image};\n image.id = image.id || `image-${index}`;\n if (image.bufferView !== undefined) {\n image.bufferView = this.getBufferView(image.bufferView);\n }\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(bufferView: BufferView, index: number): BufferViewPostprocessed {\n // bufferView = {...bufferView};\n const bufferIndex = bufferView.buffer;\n const result: BufferViewPostprocessed = {\n id: `bufferView-${index}`,\n ...bufferView,\n buffer: this.buffers[bufferIndex]\n };\n\n // @ts-expect-error\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // @ts-expect-error\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n\n if ('byteOffset' in bufferView) {\n byteOffset += bufferView.byteOffset;\n }\n\n result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n return result;\n }\n\n _resolveCamera(camera, index) {\n camera.id = camera.id || `camera-${index}`;\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(gltf, options?) {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"mappings":"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"}
|
|
@@ -4,24 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = encodeGLBSync;
|
|
7
|
-
|
|
8
7
|
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
9
8
|
|
|
10
9
|
var MAGIC_glTF = 0x46546c67;
|
|
11
10
|
var MAGIC_JSON = 0x4e4f534a;
|
|
12
11
|
var MAGIC_BIN = 0x004e4942;
|
|
12
|
+
|
|
13
13
|
var LE = true;
|
|
14
14
|
|
|
15
15
|
function encodeGLBSync(glb, dataView) {
|
|
16
16
|
var byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
17
17
|
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
18
18
|
var _glb$magic = glb.magic,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
magic = _glb$magic === void 0 ? MAGIC_glTF : _glb$magic,
|
|
20
|
+
_glb$version = glb.version,
|
|
21
|
+
version = _glb$version === void 0 ? 2 : _glb$version,
|
|
22
|
+
_glb$json = glb.json,
|
|
23
|
+
json = _glb$json === void 0 ? {} : _glb$json,
|
|
24
|
+
binary = glb.binary;
|
|
25
25
|
var byteOffsetStart = byteOffset;
|
|
26
26
|
|
|
27
27
|
if (dataView) {
|
|
@@ -32,14 +32,15 @@ function encodeGLBSync(glb, dataView) {
|
|
|
32
32
|
|
|
33
33
|
var byteOffsetFileLength = byteOffset + 8;
|
|
34
34
|
byteOffset += 12;
|
|
35
|
-
var byteOffsetJsonHeader = byteOffset;
|
|
36
35
|
|
|
36
|
+
var byteOffsetJsonHeader = byteOffset;
|
|
37
37
|
if (dataView) {
|
|
38
38
|
dataView.setUint32(byteOffset + 0, 0, LE);
|
|
39
39
|
dataView.setUint32(byteOffset + 4, MAGIC_JSON, LE);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
byteOffset += 8;
|
|
43
|
+
|
|
43
44
|
var jsonString = JSON.stringify(json);
|
|
44
45
|
byteOffset = (0, _loaderUtils.copyPaddedStringToDataView)(dataView, byteOffset, jsonString, 4);
|
|
45
46
|
|
|
@@ -57,6 +58,7 @@ function encodeGLBSync(glb, dataView) {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
byteOffset += 8;
|
|
61
|
+
|
|
60
62
|
byteOffset = (0, _loaderUtils.copyPaddedArrayBufferToDataView)(dataView, byteOffset, binary, 4);
|
|
61
63
|
|
|
62
64
|
if (dataView) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-glb.js","names":["MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","options","magic","version","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","copyPaddedStringToDataView","jsonByteLength","byteOffsetBinHeader","copyPaddedArrayBufferToDataView","binByteLength","fileByteLength"],"sources":["../../../../src/lib/encoders/encode-glb.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements */\nimport {\n copyPaddedStringToDataView,\n copyPaddedArrayBufferToDataView\n} from '@loaders.gl/loader-utils';\n\nconst MAGIC_glTF = 0x46546c67; // glTF in ASCII\nconst MAGIC_JSON = 0x4e4f534a; // JSON in ASCII\nconst MAGIC_BIN = 0x004e4942; // BIN\\0 in ASCII\n\nconst LE = true; // Binary GLTF is little endian.\n\n// Encode the full GLB buffer with header etc\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\n// glb-file-format-specification\nexport default function encodeGLBSync(glb, dataView, byteOffset = 0, options = {}) {\n const {magic = MAGIC_glTF, version = 2, json = {}, binary} = glb;\n\n const byteOffsetStart = byteOffset;\n\n // Write GLB Header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, magic, LE); // Magic number (the ASCII string 'glTF').\n dataView.setUint32(byteOffset + 4, version, LE); // Version 2 of binary glTF container format uint32\n dataView.setUint32(byteOffset + 8, 0, LE); // Total byte length of generated file (uint32), will be set last\n }\n const byteOffsetFileLength = byteOffset + 8;\n byteOffset += 12; // GLB_FILE_HEADER_SIZE\n\n // Write the JSON chunk header\n const byteOffsetJsonHeader = byteOffset;\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length of json chunk (will be written later)\n dataView.setUint32(byteOffset + 4, MAGIC_JSON, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n // Write the JSON chunk\n const jsonString = JSON.stringify(json);\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, jsonString, 4);\n\n // Now we know the JSON chunk length so we can write it.\n if (dataView) {\n const jsonByteLength = byteOffset - byteOffsetJsonHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetJsonHeader + 0, jsonByteLength, LE); // Byte length of json chunk (uint32)\n }\n\n // Write the BIN chunk if present. The BIN chunk is optional.\n if (binary) {\n const byteOffsetBinHeader = byteOffset;\n\n // Write the BIN chunk header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length BIN (uint32)\n dataView.setUint32(byteOffset + 4, MAGIC_BIN, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n byteOffset = copyPaddedArrayBufferToDataView(dataView, byteOffset, binary, 4);\n\n // Now we know the BIN chunk length so we can write it.\n if (dataView) {\n const binByteLength = byteOffset - byteOffsetBinHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetBinHeader + 0, binByteLength, LE); // Byte length BIN (uint32)\n }\n }\n\n // Now we know the glb file length so we can write it.\n if (dataView) {\n const fileByteLength = byteOffset - byteOffsetStart;\n dataView.setUint32(byteOffsetFileLength, fileByteLength, LE); // Total byte length of generated file (uint32)\n }\n\n return byteOffset;\n}\n"],"mappings":";;;;;;AACA;;AAKA,IAAMA,UAAU,GAAG,UAAU;AAC7B,IAAMC,UAAU,GAAG,UAAU;AAC7B,IAAMC,SAAS,GAAG,UAAU;;AAE5B,IAAMC,EAAE,GAAG,IAAI;;AAKA,SAASC,aAAa,CAACC,GAAG,EAAEC,QAAQ,EAAgC;EAAA,IAA9BC,UAAU,uEAAG,CAAC;EAAA,IAAEC,OAAO,uEAAG,CAAC,CAAC;EAC/E,iBAA6DH,GAAG,CAAzDI,KAAK;IAALA,KAAK,2BAAGT,UAAU;IAAA,eAAoCK,GAAG,CAArCK,OAAO;IAAPA,OAAO,6BAAG,CAAC;IAAA,YAAuBL,GAAG,CAAxBM,IAAI;IAAJA,IAAI,0BAAG,CAAC,CAAC;IAAEC,MAAM,GAAIP,GAAG,CAAbO,MAAM;EAEzD,IAAMC,eAAe,GAAGN,UAAU;;EAGlC,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAEE,KAAK,EAAEN,EAAE,CAAC;IAC7CG,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAEG,OAAO,EAAEP,EAAE,CAAC;IAC/CG,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAE,CAAC,EAAEJ,EAAE,CAAC;EAC3C;;EACA,IAAMY,oBAAoB,GAAGR,UAAU,GAAG,CAAC;EAC3CA,UAAU,IAAI,EAAE;;EAGhB,IAAMS,oBAAoB,GAAGT,UAAU;EACvC,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAE,CAAC,EAAEJ,EAAE,CAAC;IACzCG,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAEN,UAAU,EAAEE,EAAE,CAAC;EACpD;;EACAI,UAAU,IAAI,CAAC;;EAGf,IAAMU,UAAU,GAAGC,IAAI,CAACC,SAAS,CAACR,IAAI,CAAC;EACvCJ,UAAU,GAAG,IAAAa,uCAA0B,EAACd,QAAQ,EAAEC,UAAU,EAAEU,UAAU,EAAE,CAAC,CAAC;;EAG5E,IAAIX,QAAQ,EAAE;IACZ,IAAMe,cAAc,GAAGd,UAAU,GAAGS,oBAAoB,GAAG,CAAC;IAC5DV,QAAQ,CAACQ,SAAS,CAACE,oBAAoB,GAAG,CAAC,EAAEK,cAAc,EAAElB,EAAE,CAAC;EAClE;;EAGA,IAAIS,MAAM,EAAE;IACV,IAAMU,mBAAmB,GAAGf,UAAU;;IAGtC,IAAID,QAAQ,EAAE;MACZA,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAE,CAAC,EAAEJ,EAAE,CAAC;MACzCG,QAAQ,CAACQ,SAAS,CAACP,UAAU,GAAG,CAAC,EAAEL,SAAS,EAAEC,EAAE,CAAC;IACnD;;IACAI,UAAU,IAAI,CAAC;;IAEfA,UAAU,GAAG,IAAAgB,4CAA+B,EAACjB,QAAQ,EAAEC,UAAU,EAAEK,MAAM,EAAE,CAAC,CAAC;;IAG7E,IAAIN,QAAQ,EAAE;MACZ,IAAMkB,aAAa,GAAGjB,UAAU,GAAGe,mBAAmB,GAAG,CAAC;MAC1DhB,QAAQ,CAACQ,SAAS,CAACQ,mBAAmB,GAAG,CAAC,EAAEE,aAAa,EAAErB,EAAE,CAAC;IAChE;EACF;;EAGA,IAAIG,QAAQ,EAAE;IACZ,IAAMmB,cAAc,GAAGlB,UAAU,GAAGM,eAAe;IACnDP,QAAQ,CAACQ,SAAS,CAACC,oBAAoB,EAAEU,cAAc,EAAEtB,EAAE,CAAC;EAC9D;;EAEA,OAAOI,UAAU;AACnB"}
|