@loaders.gl/gltf 4.0.0-alpha.6 → 4.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/dist.min.js +1661 -1459
  2. package/dist/es5/glb-loader.js +2 -2
  3. package/dist/es5/glb-loader.js.map +1 -1
  4. package/dist/es5/glb-writer.js +3 -4
  5. package/dist/es5/glb-writer.js.map +1 -1
  6. package/dist/es5/gltf-loader.js +3 -3
  7. package/dist/es5/gltf-loader.js.map +1 -1
  8. package/dist/es5/index.js +9 -3
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  11. package/dist/es5/lib/api/gltf-scenegraph.js +52 -32
  12. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  13. package/dist/es5/lib/api/post-process-gltf.js +164 -116
  14. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  15. package/dist/es5/lib/encoders/encode-glb.js +1 -1
  16. package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
  17. package/dist/es5/lib/encoders/encode-gltf.js +2 -3
  18. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
  19. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +3 -5
  20. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  21. package/dist/es5/lib/extensions/EXT_texture_webp.js +2 -3
  22. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
  23. package/dist/es5/lib/extensions/KHR_binary_gltf.js +2 -3
  24. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  25. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +6 -5
  26. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  27. package/dist/es5/lib/extensions/KHR_texture_basisu.js +3 -4
  28. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
  29. package/dist/es5/lib/extensions/KHR_texture_transform.js +9 -8
  30. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
  31. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +195 -17
  32. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  33. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +3 -3
  34. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  35. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +3 -3
  36. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  37. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -2
  38. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  39. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  40. package/dist/es5/lib/gltf-utils/gltf-utils.js +24 -0
  41. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  42. package/dist/es5/lib/parsers/parse-glb.js +10 -10
  43. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  44. package/dist/es5/lib/parsers/parse-gltf.js +18 -25
  45. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  46. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
  47. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -1
  48. package/dist/es5/lib/types/gltf-types.js.map +1 -1
  49. package/dist/es5/lib/utils/version.js +1 -1
  50. package/dist/esm/glb-loader.js +1 -1
  51. package/dist/esm/glb-loader.js.map +1 -1
  52. package/dist/esm/glb-writer.js +1 -1
  53. package/dist/esm/glb-writer.js.map +1 -1
  54. package/dist/esm/gltf-loader.js +3 -3
  55. package/dist/esm/gltf-loader.js.map +1 -1
  56. package/dist/esm/index.js +2 -1
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
  59. package/dist/esm/lib/api/gltf-scenegraph.js +45 -31
  60. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
  61. package/dist/esm/lib/api/post-process-gltf.js +167 -112
  62. package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
  63. package/dist/esm/lib/encoders/encode-glb.js +1 -1
  64. package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
  65. package/dist/esm/lib/encoders/encode-gltf.js +1 -1
  66. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
  67. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +2 -3
  68. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  69. package/dist/esm/lib/extensions/EXT_texture_webp.js +1 -1
  70. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
  71. package/dist/esm/lib/extensions/KHR_binary_gltf.js +1 -1
  72. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
  73. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +5 -4
  74. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  75. package/dist/esm/lib/extensions/KHR_texture_basisu.js +2 -2
  76. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
  77. package/dist/esm/lib/extensions/KHR_texture_transform.js +7 -6
  78. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
  79. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +161 -15
  80. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  81. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +1 -1
  82. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  83. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +1 -1
  84. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  85. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +1 -1
  86. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  87. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  88. package/dist/esm/lib/gltf-utils/gltf-utils.js +20 -0
  89. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  90. package/dist/esm/lib/parsers/parse-glb.js +10 -10
  91. package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
  92. package/dist/esm/lib/parsers/parse-gltf.js +7 -12
  93. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
  94. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
  95. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -1
  96. package/dist/esm/lib/types/gltf-types.js.map +1 -1
  97. package/dist/esm/lib/utils/version.js +1 -1
  98. package/dist/glb-loader.d.ts +2 -2
  99. package/dist/glb-loader.js +2 -5
  100. package/dist/glb-writer.d.ts.map +1 -1
  101. package/dist/glb-writer.js +4 -6
  102. package/dist/gltf-loader.d.ts +5 -5
  103. package/dist/gltf-loader.d.ts.map +1 -1
  104. package/dist/gltf-loader.js +3 -3
  105. package/dist/index.d.ts +8 -5
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +12 -5
  108. package/dist/lib/api/gltf-extensions.d.ts +1 -1
  109. package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
  110. package/dist/lib/api/gltf-extensions.js +1 -1
  111. package/dist/lib/api/gltf-scenegraph.d.ts +8 -5
  112. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  113. package/dist/lib/api/gltf-scenegraph.js +47 -33
  114. package/dist/lib/api/post-process-gltf.d.ts +4 -1
  115. package/dist/lib/api/post-process-gltf.d.ts.map +1 -1
  116. package/dist/lib/api/post-process-gltf.js +186 -123
  117. package/dist/lib/encoders/encode-glb.d.ts +13 -1
  118. package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
  119. package/dist/lib/encoders/encode-glb.js +15 -4
  120. package/dist/lib/encoders/encode-gltf.js +2 -5
  121. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +1 -1
  122. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
  123. package/dist/lib/extensions/EXT_meshopt_compression.js +3 -7
  124. package/dist/lib/extensions/EXT_texture_webp.d.ts +1 -1
  125. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  126. package/dist/lib/extensions/EXT_texture_webp.js +2 -5
  127. package/dist/lib/extensions/KHR_binary_gltf.d.ts +1 -1
  128. package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -1
  129. package/dist/lib/extensions/KHR_binary_gltf.js +2 -5
  130. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +1 -1
  131. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  132. package/dist/lib/extensions/KHR_draco_mesh_compression.js +5 -8
  133. package/dist/lib/extensions/KHR_texture_basisu.d.ts +1 -1
  134. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
  135. package/dist/lib/extensions/KHR_texture_basisu.js +3 -6
  136. package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -1
  137. package/dist/lib/extensions/KHR_texture_transform.js +7 -10
  138. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +3 -2
  139. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
  140. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +195 -23
  141. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +1 -1
  142. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -1
  143. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +3 -6
  144. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +1 -1
  145. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -1
  146. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +3 -6
  147. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +1 -1
  148. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
  149. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -5
  150. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +1 -1
  151. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -1
  152. package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
  153. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  154. package/dist/lib/gltf-utils/gltf-utils.js +28 -1
  155. package/dist/lib/parsers/parse-glb.d.ts +15 -3
  156. package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
  157. package/dist/lib/parsers/parse-glb.js +43 -18
  158. package/dist/lib/parsers/parse-gltf.d.ts +8 -4
  159. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
  160. package/dist/lib/parsers/parse-gltf.js +17 -41
  161. package/dist/lib/types/gltf-json-schema.d.ts +153 -139
  162. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  163. package/dist/lib/types/gltf-postprocessed-schema.d.ts +174 -209
  164. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
  165. package/dist/lib/types/gltf-postprocessed-schema.js +1 -1
  166. package/dist/lib/types/gltf-types.d.ts +18 -6
  167. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  168. package/package.json +6 -6
  169. package/src/glb-loader.ts +3 -3
  170. package/src/glb-writer.ts +3 -1
  171. package/src/gltf-loader.ts +12 -8
  172. package/src/index.ts +32 -13
  173. package/src/lib/api/gltf-extensions.ts +1 -1
  174. package/src/lib/api/gltf-scenegraph.ts +60 -41
  175. package/src/lib/api/post-process-gltf.ts +275 -150
  176. package/src/lib/encoders/encode-glb.ts +15 -5
  177. package/src/lib/encoders/encode-gltf.ts +1 -1
  178. package/src/lib/extensions/EXT_meshopt_compression.ts +4 -6
  179. package/src/lib/extensions/EXT_texture_webp.ts +2 -2
  180. package/src/lib/extensions/KHR_binary_gltf.ts +2 -2
  181. package/src/lib/extensions/KHR_draco_mesh_compression.ts +7 -7
  182. package/src/lib/extensions/KHR_texture_basisu.ts +3 -3
  183. package/src/lib/extensions/KHR_texture_transform.ts +22 -19
  184. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +264 -23
  185. package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
  186. package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +2 -2
  187. package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +2 -2
  188. package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
  189. package/src/lib/gltf-utils/gltf-utils.ts +31 -0
  190. package/src/lib/parsers/parse-glb.ts +50 -24
  191. package/src/lib/parsers/parse-gltf.ts +26 -25
  192. package/src/lib/types/gltf-json-schema.ts +168 -138
  193. package/src/lib/types/gltf-postprocessed-schema.ts +289 -212
  194. package/src/lib/types/gltf-types.ts +35 -59
@@ -11,7 +11,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
11
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
12
  var _assert = require("../utils/assert");
13
13
  var _gltfUtils = require("../gltf-utils/gltf-utils");
14
- var _DEFAULT_SAMPLER;
14
+ var _DEFAULT_SAMPLER_PARA;
15
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
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; }
17
17
  var COMPONENTS = {
@@ -46,7 +46,13 @@ var SAMPLER_PARAMETER_GLTF_TO_GL = {
46
46
  wrapS: GL_SAMPLER.TEXTURE_WRAP_S,
47
47
  wrapT: GL_SAMPLER.TEXTURE_WRAP_T
48
48
  };
49
- 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);
49
+ var DEFAULT_SAMPLER_PARAMETERS = (_DEFAULT_SAMPLER_PARA = {}, (0, _defineProperty2.default)(_DEFAULT_SAMPLER_PARA, GL_SAMPLER.TEXTURE_MAG_FILTER, GL_SAMPLER.LINEAR), (0, _defineProperty2.default)(_DEFAULT_SAMPLER_PARA, GL_SAMPLER.TEXTURE_MIN_FILTER, GL_SAMPLER.NEAREST_MIPMAP_LINEAR), (0, _defineProperty2.default)(_DEFAULT_SAMPLER_PARA, GL_SAMPLER.TEXTURE_WRAP_S, GL_SAMPLER.REPEAT), (0, _defineProperty2.default)(_DEFAULT_SAMPLER_PARA, GL_SAMPLER.TEXTURE_WRAP_T, GL_SAMPLER.REPEAT), _DEFAULT_SAMPLER_PARA);
50
+ function makeDefaultSampler() {
51
+ return {
52
+ id: 'default-sampler',
53
+ parameters: DEFAULT_SAMPLER_PARAMETERS
54
+ };
55
+ }
50
56
  function getBytesFromComponentType(componentType) {
51
57
  return BYTES[componentType];
52
58
  }
@@ -57,7 +63,8 @@ var GLTFPostProcessor = function () {
57
63
  function GLTFPostProcessor() {
58
64
  (0, _classCallCheck2.default)(this, GLTFPostProcessor);
59
65
  (0, _defineProperty2.default)(this, "baseUri", '');
60
- (0, _defineProperty2.default)(this, "json", {});
66
+ (0, _defineProperty2.default)(this, "jsonUnprocessed", void 0);
67
+ (0, _defineProperty2.default)(this, "json", void 0);
61
68
  (0, _defineProperty2.default)(this, "buffers", []);
62
69
  (0, _defineProperty2.default)(this, "images", []);
63
70
  }
@@ -69,135 +76,141 @@ var GLTFPostProcessor = function () {
69
76
  _gltf$buffers = gltf.buffers,
70
77
  buffers = _gltf$buffers === void 0 ? [] : _gltf$buffers,
71
78
  _gltf$images = gltf.images,
72
- images = _gltf$images === void 0 ? [] : _gltf$images,
73
- _gltf$baseUri = gltf.baseUri,
79
+ images = _gltf$images === void 0 ? [] : _gltf$images;
80
+ var _gltf$baseUri = gltf.baseUri,
74
81
  baseUri = _gltf$baseUri === void 0 ? '' : _gltf$baseUri;
75
82
  (0, _assert.assert)(json);
76
83
  this.baseUri = baseUri;
77
- this.json = json;
78
84
  this.buffers = buffers;
79
85
  this.images = images;
80
- this._resolveTree(this.json, options);
86
+ this.jsonUnprocessed = json;
87
+ this.json = this._resolveTree(gltf.json, options);
81
88
  return this.json;
82
89
  }
83
90
  }, {
84
91
  key: "_resolveTree",
85
- value: function _resolveTree(json) {
92
+ value: function _resolveTree(gltf) {
86
93
  var _this = this;
87
94
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
88
- if (json.bufferViews) {
89
- json.bufferViews = json.bufferViews.map(function (bufView, i) {
95
+ var json = _objectSpread({}, gltf);
96
+ this.json = json;
97
+ if (gltf.bufferViews) {
98
+ json.bufferViews = gltf.bufferViews.map(function (bufView, i) {
90
99
  return _this._resolveBufferView(bufView, i);
91
100
  });
92
101
  }
93
- if (json.images) {
94
- json.images = json.images.map(function (image, i) {
102
+ if (gltf.images) {
103
+ json.images = gltf.images.map(function (image, i) {
95
104
  return _this._resolveImage(image, i);
96
105
  });
97
106
  }
98
- if (json.samplers) {
99
- json.samplers = json.samplers.map(function (sampler, i) {
107
+ if (gltf.samplers) {
108
+ json.samplers = gltf.samplers.map(function (sampler, i) {
100
109
  return _this._resolveSampler(sampler, i);
101
110
  });
102
111
  }
103
- if (json.textures) {
104
- json.textures = json.textures.map(function (texture, i) {
112
+ if (gltf.textures) {
113
+ json.textures = gltf.textures.map(function (texture, i) {
105
114
  return _this._resolveTexture(texture, i);
106
115
  });
107
116
  }
108
- if (json.accessors) {
109
- json.accessors = json.accessors.map(function (accessor, i) {
117
+ if (gltf.accessors) {
118
+ json.accessors = gltf.accessors.map(function (accessor, i) {
110
119
  return _this._resolveAccessor(accessor, i);
111
120
  });
112
121
  }
113
- if (json.materials) {
114
- json.materials = json.materials.map(function (material, i) {
122
+ if (gltf.materials) {
123
+ json.materials = gltf.materials.map(function (material, i) {
115
124
  return _this._resolveMaterial(material, i);
116
125
  });
117
126
  }
118
- if (json.meshes) {
119
- json.meshes = json.meshes.map(function (mesh, i) {
127
+ if (gltf.meshes) {
128
+ json.meshes = gltf.meshes.map(function (mesh, i) {
120
129
  return _this._resolveMesh(mesh, i);
121
130
  });
122
131
  }
123
- if (json.nodes) {
124
- json.nodes = json.nodes.map(function (node, i) {
132
+ if (gltf.nodes) {
133
+ json.nodes = gltf.nodes.map(function (node, i) {
125
134
  return _this._resolveNode(node, i);
126
135
  });
136
+ json.nodes = json.nodes.map(function (node, i) {
137
+ return _this._resolveNodeChildren(node);
138
+ });
127
139
  }
128
- if (json.skins) {
129
- json.skins = json.skins.map(function (skin, i) {
140
+ if (gltf.skins) {
141
+ json.skins = gltf.skins.map(function (skin, i) {
130
142
  return _this._resolveSkin(skin, i);
131
143
  });
132
144
  }
133
- if (json.scenes) {
134
- json.scenes = json.scenes.map(function (scene, i) {
145
+ if (gltf.scenes) {
146
+ json.scenes = gltf.scenes.map(function (scene, i) {
135
147
  return _this._resolveScene(scene, i);
136
148
  });
137
149
  }
138
- if (json.scene !== undefined) {
150
+ if (typeof this.json.scene === 'number' && json.scenes) {
139
151
  json.scene = json.scenes[this.json.scene];
140
152
  }
153
+ return json;
141
154
  }
142
155
  }, {
143
156
  key: "getScene",
144
157
  value: function getScene(index) {
145
- return this._get('scenes', index);
158
+ return this._get(this.json.scenes, index);
146
159
  }
147
160
  }, {
148
161
  key: "getNode",
149
162
  value: function getNode(index) {
150
- return this._get('nodes', index);
163
+ return this._get(this.json.nodes, index);
151
164
  }
152
165
  }, {
153
166
  key: "getSkin",
154
167
  value: function getSkin(index) {
155
- return this._get('skins', index);
168
+ return this._get(this.json.skins, index);
156
169
  }
157
170
  }, {
158
171
  key: "getMesh",
159
172
  value: function getMesh(index) {
160
- return this._get('meshes', index);
173
+ return this._get(this.json.meshes, index);
161
174
  }
162
175
  }, {
163
176
  key: "getMaterial",
164
177
  value: function getMaterial(index) {
165
- return this._get('materials', index);
178
+ return this._get(this.json.materials, index);
166
179
  }
167
180
  }, {
168
181
  key: "getAccessor",
169
182
  value: function getAccessor(index) {
170
- return this._get('accessors', index);
183
+ return this._get(this.json.accessors, index);
171
184
  }
172
185
  }, {
173
186
  key: "getCamera",
174
187
  value: function getCamera(index) {
175
- return null;
188
+ return this._get(this.json.cameras, index);
176
189
  }
177
190
  }, {
178
191
  key: "getTexture",
179
192
  value: function getTexture(index) {
180
- return this._get('textures', index);
193
+ return this._get(this.json.textures, index);
181
194
  }
182
195
  }, {
183
196
  key: "getSampler",
184
197
  value: function getSampler(index) {
185
- return this._get('samplers', index);
198
+ return this._get(this.json.samplers, index);
186
199
  }
187
200
  }, {
188
201
  key: "getImage",
189
202
  value: function getImage(index) {
190
- return this._get('images', index);
203
+ return this._get(this.json.images, index);
191
204
  }
192
205
  }, {
193
206
  key: "getBufferView",
194
207
  value: function getBufferView(index) {
195
- return this._get('bufferViews', index);
208
+ return this._get(this.json.bufferViews, index);
196
209
  }
197
210
  }, {
198
211
  key: "getBuffer",
199
212
  value: function getBuffer(index) {
200
- return this._get('buffers', index);
213
+ return this._get(this.json.buffers, index);
201
214
  }
202
215
  }, {
203
216
  key: "_get",
@@ -205,7 +218,7 @@ var GLTFPostProcessor = function () {
205
218
  if ((0, _typeof2.default)(index) === 'object') {
206
219
  return index;
207
220
  }
208
- var object = this.json[array] && this.json[array][index];
221
+ var object = array && array[index];
209
222
  if (!object) {
210
223
  console.warn("glTF file error: Could not find ".concat(array, "[").concat(index, "]"));
211
224
  }
@@ -215,26 +228,31 @@ var GLTFPostProcessor = function () {
215
228
  key: "_resolveScene",
216
229
  value: function _resolveScene(scene, index) {
217
230
  var _this2 = this;
218
- scene.id = scene.id || "scene-".concat(index);
219
- scene.nodes = (scene.nodes || []).map(function (node) {
220
- return _this2.getNode(node);
231
+ return _objectSpread(_objectSpread({}, scene), {}, {
232
+ id: scene.id || "scene-".concat(index),
233
+ nodes: (scene.nodes || []).map(function (node) {
234
+ return _this2.getNode(node);
235
+ })
221
236
  });
222
- return scene;
223
237
  }
224
238
  }, {
225
239
  key: "_resolveNode",
226
- value: function _resolveNode(node, index) {
240
+ value: function _resolveNode(gltfNode, index) {
227
241
  var _this3 = this;
228
- node.id = node.id || "node-".concat(index);
229
- if (node.children) {
230
- node.children = node.children.map(function (child) {
231
- return _this3.getNode(child);
232
- });
242
+ var node = _objectSpread(_objectSpread({}, gltfNode), {}, {
243
+ id: (gltfNode === null || gltfNode === void 0 ? void 0 : gltfNode.id) || "node-".concat(index)
244
+ });
245
+ if (gltfNode.mesh !== undefined) {
246
+ node.mesh = this.getMesh(gltfNode.mesh);
247
+ }
248
+ if (gltfNode.camera !== undefined) {
249
+ node.camera = this.getCamera(gltfNode.camera);
233
250
  }
234
- if (node.mesh !== undefined) {
235
- node.mesh = this.getMesh(node.mesh);
236
- } else if (node.meshes !== undefined && node.meshes.length) {
237
- node.mesh = node.meshes.reduce(function (accum, meshIndex) {
251
+ if (gltfNode.skin !== undefined) {
252
+ node.skin = this.getSkin(gltfNode.skin);
253
+ }
254
+ if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {
255
+ node.mesh = gltfNode.meshes.reduce(function (accum, meshIndex) {
238
256
  var mesh = _this3.getMesh(meshIndex);
239
257
  accum.id = mesh.id;
240
258
  accum.primitives = accum.primitives.concat(mesh.primitives);
@@ -243,39 +261,52 @@ var GLTFPostProcessor = function () {
243
261
  primitives: []
244
262
  });
245
263
  }
246
- if (node.camera !== undefined) {
247
- node.camera = this.getCamera(node.camera);
248
- }
249
- if (node.skin !== undefined) {
250
- node.skin = this.getSkin(node.skin);
264
+ return node;
265
+ }
266
+ }, {
267
+ key: "_resolveNodeChildren",
268
+ value: function _resolveNodeChildren(node) {
269
+ var _this4 = this;
270
+ if (node.children) {
271
+ node.children = node.children.map(function (child) {
272
+ return _this4.getNode(child);
273
+ });
251
274
  }
252
275
  return node;
253
276
  }
254
277
  }, {
255
278
  key: "_resolveSkin",
256
- value: function _resolveSkin(skin, index) {
257
- skin.id = skin.id || "skin-".concat(index);
258
- skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);
259
- return skin;
279
+ value: function _resolveSkin(gltfSkin, index) {
280
+ var inverseBindMatrices = typeof gltfSkin.inverseBindMatrices === 'number' ? this.getAccessor(gltfSkin.inverseBindMatrices) : undefined;
281
+ return _objectSpread(_objectSpread({}, gltfSkin), {}, {
282
+ id: gltfSkin.id || "skin-".concat(index),
283
+ inverseBindMatrices: inverseBindMatrices
284
+ });
260
285
  }
261
286
  }, {
262
287
  key: "_resolveMesh",
263
- value: function _resolveMesh(mesh, index) {
264
- var _this4 = this;
265
- mesh.id = mesh.id || "mesh-".concat(index);
266
- if (mesh.primitives) {
267
- mesh.primitives = mesh.primitives.map(function (primitive) {
268
- primitive = _objectSpread({}, primitive);
269
- var attributes = primitive.attributes;
270
- primitive.attributes = {};
288
+ value: function _resolveMesh(gltfMesh, index) {
289
+ var _this5 = this;
290
+ var mesh = _objectSpread(_objectSpread({}, gltfMesh), {}, {
291
+ id: gltfMesh.id || "mesh-".concat(index),
292
+ primitives: []
293
+ });
294
+ if (gltfMesh.primitives) {
295
+ mesh.primitives = gltfMesh.primitives.map(function (gltfPrimitive) {
296
+ var primitive = _objectSpread(_objectSpread({}, gltfPrimitive), {}, {
297
+ attributes: {},
298
+ indices: undefined,
299
+ material: undefined
300
+ });
301
+ var attributes = gltfPrimitive.attributes;
271
302
  for (var attribute in attributes) {
272
- primitive.attributes[attribute] = _this4.getAccessor(attributes[attribute]);
303
+ primitive.attributes[attribute] = _this5.getAccessor(attributes[attribute]);
273
304
  }
274
- if (primitive.indices !== undefined) {
275
- primitive.indices = _this4.getAccessor(primitive.indices);
305
+ if (gltfPrimitive.indices !== undefined) {
306
+ primitive.indices = _this5.getAccessor(gltfPrimitive.indices);
276
307
  }
277
- if (primitive.material !== undefined) {
278
- primitive.material = _this4.getMaterial(primitive.material);
308
+ if (gltfPrimitive.material !== undefined) {
309
+ primitive.material = _this5.getMaterial(gltfPrimitive.material);
279
310
  }
280
311
  return primitive;
281
312
  });
@@ -284,22 +315,24 @@ var GLTFPostProcessor = function () {
284
315
  }
285
316
  }, {
286
317
  key: "_resolveMaterial",
287
- value: function _resolveMaterial(material, index) {
288
- material.id = material.id || "material-".concat(index);
318
+ value: function _resolveMaterial(gltfMaterial, index) {
319
+ var material = _objectSpread(_objectSpread({}, gltfMaterial), {}, {
320
+ id: gltfMaterial.id || "material-".concat(index)
321
+ });
289
322
  if (material.normalTexture) {
290
323
  material.normalTexture = _objectSpread({}, material.normalTexture);
291
324
  material.normalTexture.texture = this.getTexture(material.normalTexture.index);
292
325
  }
293
326
  if (material.occlusionTexture) {
294
- material.occlustionTexture = _objectSpread({}, material.occlustionTexture);
327
+ material.occlusionTexture = _objectSpread({}, material.occlusionTexture);
295
328
  material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);
296
329
  }
297
330
  if (material.emissiveTexture) {
298
- material.emmisiveTexture = _objectSpread({}, material.emmisiveTexture);
331
+ material.emissiveTexture = _objectSpread({}, material.emissiveTexture);
299
332
  material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);
300
333
  }
301
334
  if (!material.emissiveFactor) {
302
- material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];
335
+ material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];
303
336
  }
304
337
  if (material.pbrMetallicRoughness) {
305
338
  material.pbrMetallicRoughness = _objectSpread({}, material.pbrMetallicRoughness);
@@ -317,14 +350,22 @@ var GLTFPostProcessor = function () {
317
350
  }
318
351
  }, {
319
352
  key: "_resolveAccessor",
320
- value: function _resolveAccessor(accessor, index) {
321
- accessor.id = accessor.id || "accessor-".concat(index);
322
- if (accessor.bufferView !== undefined) {
323
- accessor.bufferView = this.getBufferView(accessor.bufferView);
353
+ value: function _resolveAccessor(gltfAccessor, index) {
354
+ var bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);
355
+ var components = getSizeFromAccessorType(gltfAccessor.type);
356
+ var bytesPerElement = bytesPerComponent * components;
357
+ var accessor = _objectSpread(_objectSpread({}, gltfAccessor), {}, {
358
+ id: gltfAccessor.id || "accessor-".concat(index),
359
+ bytesPerComponent: bytesPerComponent,
360
+ components: components,
361
+ bytesPerElement: bytesPerElement,
362
+ value: undefined,
363
+ bufferView: undefined,
364
+ sparse: undefined
365
+ });
366
+ if (gltfAccessor.bufferView !== undefined) {
367
+ accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);
324
368
  }
325
- accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);
326
- accessor.components = getSizeFromAccessorType(accessor.type);
327
- accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;
328
369
  if (accessor.bufferView) {
329
370
  var buffer = accessor.bufferView.buffer;
330
371
  var _getAccessorArrayType = (0, _gltfUtils.getAccessorArrayTypeAndLength)(accessor, accessor.bufferView),
@@ -351,17 +392,21 @@ var GLTFPostProcessor = function () {
351
392
  }
352
393
  }, {
353
394
  key: "_resolveTexture",
354
- value: function _resolveTexture(texture, index) {
355
- texture.id = texture.id || "texture-".concat(index);
356
- texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;
357
- texture.source = this.getImage(texture.source);
358
- return texture;
395
+ value: function _resolveTexture(gltfTexture, index) {
396
+ return _objectSpread(_objectSpread({}, gltfTexture), {}, {
397
+ id: gltfTexture.id || "texture-".concat(index),
398
+ sampler: typeof gltfTexture.sampler === 'number' ? this.getSampler(gltfTexture.sampler) : makeDefaultSampler(),
399
+ source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined
400
+ });
359
401
  }
360
402
  }, {
361
403
  key: "_resolveSampler",
362
- value: function _resolveSampler(sampler, index) {
363
- sampler.id = sampler.id || "sampler-".concat(index);
364
- sampler.parameters = {};
404
+ value: function _resolveSampler(gltfSampler, index) {
405
+ var sampler = _objectSpread(_objectSpread({
406
+ id: gltfSampler.id || "sampler-".concat(index)
407
+ }, gltfSampler), {}, {
408
+ parameters: {}
409
+ });
365
410
  for (var key in sampler) {
366
411
  var glEnum = this._enumSamplerParameter(key);
367
412
  if (glEnum !== undefined) {
@@ -377,11 +422,12 @@ var GLTFPostProcessor = function () {
377
422
  }
378
423
  }, {
379
424
  key: "_resolveImage",
380
- value: function _resolveImage(image, index) {
381
- image.id = image.id || "image-".concat(index);
382
- if (image.bufferView !== undefined) {
383
- image.bufferView = this.getBufferView(image.bufferView);
384
- }
425
+ value: function _resolveImage(gltfImage, index) {
426
+ var image = _objectSpread(_objectSpread({}, gltfImage), {}, {
427
+ id: gltfImage.id || "image-".concat(index),
428
+ image: null,
429
+ bufferView: gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined
430
+ });
385
431
  var preloadedImage = this.images[index];
386
432
  if (preloadedImage) {
387
433
  image.image = preloadedImage;
@@ -390,25 +436,27 @@ var GLTFPostProcessor = function () {
390
436
  }
391
437
  }, {
392
438
  key: "_resolveBufferView",
393
- value: function _resolveBufferView(bufferView, index) {
394
- var bufferIndex = bufferView.buffer;
395
- var result = _objectSpread(_objectSpread({
396
- id: "bufferView-".concat(index)
397
- }, bufferView), {}, {
398
- buffer: this.buffers[bufferIndex]
399
- });
439
+ value: function _resolveBufferView(gltfBufferView, index) {
440
+ var bufferIndex = gltfBufferView.buffer;
400
441
  var arrayBuffer = this.buffers[bufferIndex].arrayBuffer;
401
442
  var byteOffset = this.buffers[bufferIndex].byteOffset || 0;
402
- if ('byteOffset' in bufferView) {
403
- byteOffset += bufferView.byteOffset;
443
+ if (gltfBufferView.byteOffset) {
444
+ byteOffset += gltfBufferView.byteOffset;
404
445
  }
405
- result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);
406
- return result;
446
+ var bufferView = _objectSpread(_objectSpread({
447
+ id: "bufferView-".concat(index)
448
+ }, gltfBufferView), {}, {
449
+ buffer: this.buffers[bufferIndex],
450
+ data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)
451
+ });
452
+ return bufferView;
407
453
  }
408
454
  }, {
409
455
  key: "_resolveCamera",
410
- value: function _resolveCamera(camera, index) {
411
- camera.id = camera.id || "camera-".concat(index);
456
+ value: function _resolveCamera(gltfCamera, index) {
457
+ var camera = _objectSpread(_objectSpread({}, gltfCamera), {}, {
458
+ id: gltfCamera.id || "camera-".concat(index)
459
+ });
412
460
  if (camera.perspective) {}
413
461
  if (camera.orthographic) {}
414
462
  return camera;