@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.
Files changed (145) hide show
  1. package/dist/dist.min.js +104 -124
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/glb-loader.js +2 -13
  5. package/dist/es5/glb-loader.js.map +1 -1
  6. package/dist/es5/glb-writer.js +3 -6
  7. package/dist/es5/glb-writer.js.map +1 -1
  8. package/dist/es5/gltf-loader.js +11 -23
  9. package/dist/es5/gltf-loader.js.map +1 -1
  10. package/dist/es5/gltf-writer.js +2 -5
  11. package/dist/es5/gltf-writer.js.map +1 -1
  12. package/dist/es5/index.js +10 -17
  13. package/dist/es5/index.js.map +1 -1
  14. package/dist/es5/lib/api/gltf-extensions.js +14 -48
  15. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  16. package/dist/es5/lib/api/gltf-scenegraph.js +113 -96
  17. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  18. package/dist/es5/lib/api/normalize-gltf-v1.js +32 -70
  19. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
  20. package/dist/es5/lib/api/post-process-gltf.js +26 -89
  21. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-glb.js +10 -8
  23. package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-gltf.js +3 -6
  25. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
  26. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +2 -28
  27. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  28. package/dist/es5/lib/extensions/EXT_texture_webp.js +5 -18
  29. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
  30. package/dist/es5/lib/extensions/KHR_binary_gltf.js +5 -12
  31. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  32. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +11 -79
  33. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  34. package/dist/es5/lib/extensions/KHR_texture_basisu.js +5 -14
  35. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
  36. package/dist/es5/lib/extensions/KHR_texture_transform.js +17 -72
  37. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
  38. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +0 -21
  39. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  40. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +0 -24
  41. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  42. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +2 -19
  43. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  44. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +11 -29
  45. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  46. package/dist/es5/lib/gltf-utils/get-typed-array.js +1 -1
  47. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -1
  48. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +5 -17
  49. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  50. package/dist/es5/lib/gltf-utils/gltf-constants.js +3 -4
  51. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -1
  52. package/dist/es5/lib/gltf-utils/gltf-utils.js +1 -8
  53. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  54. package/dist/es5/lib/gltf-utils/resolve-url.js +0 -5
  55. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
  56. package/dist/es5/lib/parsers/parse-glb.js +11 -17
  57. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  58. package/dist/es5/lib/parsers/parse-gltf.js +12 -73
  59. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  60. package/dist/es5/lib/types/glb-types.js.map +1 -1
  61. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
  62. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -1
  63. package/dist/es5/lib/types/gltf-types.js.map +1 -1
  64. package/dist/es5/lib/utils/assert.js +0 -1
  65. package/dist/es5/lib/utils/assert.js.map +1 -1
  66. package/dist/es5/lib/utils/version.js +1 -1
  67. package/dist/es5/lib/utils/version.js.map +1 -1
  68. package/dist/es5/meshopt/meshopt-decoder.js +10 -47
  69. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
  70. package/dist/es5/webp/webp.js +3 -19
  71. package/dist/es5/webp/webp.js.map +1 -1
  72. package/dist/esm/bundle.js +1 -1
  73. package/dist/esm/bundle.js.map +1 -1
  74. package/dist/esm/glb-loader.js +0 -1
  75. package/dist/esm/glb-loader.js.map +1 -1
  76. package/dist/esm/glb-writer.js +3 -1
  77. package/dist/esm/glb-writer.js.map +1 -1
  78. package/dist/esm/gltf-loader.js +9 -3
  79. package/dist/esm/gltf-loader.js.map +1 -1
  80. package/dist/esm/gltf-writer.js +3 -2
  81. package/dist/esm/gltf-writer.js.map +1 -1
  82. package/dist/esm/index.js +4 -0
  83. package/dist/esm/index.js.map +1 -1
  84. package/dist/esm/lib/api/gltf-extensions.js +16 -9
  85. package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
  86. package/dist/esm/lib/api/gltf-scenegraph.js +27 -68
  87. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
  88. package/dist/esm/lib/api/normalize-gltf-v1.js +3 -34
  89. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -1
  90. package/dist/esm/lib/api/post-process-gltf.js +26 -93
  91. package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
  92. package/dist/esm/lib/encoders/encode-glb.js +9 -2
  93. package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
  94. package/dist/esm/lib/encoders/encode-gltf.js +6 -4
  95. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
  96. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +5 -6
  97. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  98. package/dist/esm/lib/extensions/EXT_texture_webp.js +4 -6
  99. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
  100. package/dist/esm/lib/extensions/KHR_binary_gltf.js +3 -2
  101. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
  102. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +18 -17
  103. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  104. package/dist/esm/lib/extensions/KHR_texture_basisu.js +4 -3
  105. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
  106. package/dist/esm/lib/extensions/KHR_texture_transform.js +8 -34
  107. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
  108. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +2 -13
  109. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  110. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +4 -4
  111. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  112. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +3 -2
  113. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  114. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +10 -10
  115. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  116. package/dist/esm/lib/gltf-utils/get-typed-array.js +4 -0
  117. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -1
  118. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +7 -11
  119. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  120. package/dist/esm/lib/gltf-utils/gltf-constants.js +1 -0
  121. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -1
  122. package/dist/esm/lib/gltf-utils/gltf-utils.js +0 -2
  123. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  124. package/dist/esm/lib/gltf-utils/resolve-url.js +1 -4
  125. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -1
  126. package/dist/esm/lib/parsers/parse-glb.js +19 -16
  127. package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
  128. package/dist/esm/lib/parsers/parse-gltf.js +11 -16
  129. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
  130. package/dist/esm/lib/types/glb-types.js.map +1 -1
  131. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
  132. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -1
  133. package/dist/esm/lib/types/gltf-types.js.map +1 -1
  134. package/dist/esm/lib/utils/assert.js +1 -0
  135. package/dist/esm/lib/utils/assert.js.map +1 -1
  136. package/dist/esm/lib/utils/version.js +2 -1
  137. package/dist/esm/lib/utils/version.js.map +1 -1
  138. package/dist/esm/meshopt/meshopt-decoder.js +11 -15
  139. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -1
  140. package/dist/esm/webp/webp.js +3 -5
  141. package/dist/esm/webp/webp.js.map +1 -1
  142. package/dist/lib/api/gltf-extensions.js +5 -1
  143. package/dist/lib/api/normalize-gltf-v1.js +5 -1
  144. package/dist/lib/parsers/parse-gltf.js +5 -1
  145. 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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
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
- _gltf$buffers = gltf.buffers,
85
- buffers = _gltf$buffers === void 0 ? [] : _gltf$buffers,
86
- _gltf$images = gltf.images,
87
- images = _gltf$images === void 0 ? [] : _gltf$images,
88
- _gltf$baseUri = gltf.baseUri,
89
- baseUri = _gltf$baseUri === void 0 ? '' : _gltf$baseUri;
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: function _resolveTree(json) {
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: function _resolveScene(scene, index) {
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
- ArrayType = _getAccessorArrayType.ArrayType,
391
- byteLength = _getAccessorArrayType.byteLength;
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: function _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {
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
- if (camera.perspective) {}
490
-
491
- if (camera.orthographic) {}
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":"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","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
- 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;
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,"sources":["../../../../src/lib/encoders/encode-glb.ts"],"names":["MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","options","magic","version","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","jsonByteLength","byteOffsetBinHeader","binByteLength","fileByteLength"],"mappings":"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","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"],"file":"encode-glb.js"}
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"}