babylonjs-loaders 6.21.0 → 6.21.2

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.
@@ -3284,13 +3284,12 @@ __webpack_require__.r(__webpack_exports__);
3284
3284
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3285
3285
  /* harmony export */ KHR_draco_mesh_compression: () => (/* binding */ KHR_draco_mesh_compression)
3286
3286
  /* harmony export */ });
3287
- /* harmony import */ var babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Meshes/geometry */ "babylonjs/Misc/observable");
3287
+ /* harmony import */ var babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Buffers/buffer */ "babylonjs/Misc/observable");
3288
3288
  /* harmony import */ var babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__);
3289
3289
  /* harmony import */ var _glTFLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../glTFLoader */ "../../../dev/loaders/src/glTF/2.0/glTFLoader.ts");
3290
3290
 
3291
3291
 
3292
3292
 
3293
-
3294
3293
  var NAME = "KHR_draco_mesh_compression";
3295
3294
  /**
3296
3295
  * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md)
@@ -3305,6 +3304,10 @@ var KHR_draco_mesh_compression = /** @class */ (function () {
3305
3304
  * The name of this extension.
3306
3305
  */
3307
3306
  this.name = NAME;
3307
+ /**
3308
+ * Defines whether to use the normalized flag from the glTF accessor instead of the Draco data. Defaults to true.
3309
+ */
3310
+ this.useNormalizedFlagFromAccessor = true;
3308
3311
  this._loader = loader;
3309
3312
  this.enabled = babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.DracoCompression.DecoderAvailable && this._loader.isExtensionUsed(NAME);
3310
3313
  }
@@ -3329,36 +3332,23 @@ var KHR_draco_mesh_compression = /** @class */ (function () {
3329
3332
  }
3330
3333
  }
3331
3334
  var attributes = {};
3332
- var dividers = {};
3335
+ var normalized = {};
3333
3336
  var loadAttribute = function (name, kind) {
3334
3337
  var uniqueId = extension.attributes[name];
3335
- if (uniqueId === undefined || primitive.attributes[name] === undefined) {
3338
+ if (uniqueId == undefined) {
3336
3339
  return;
3337
3340
  }
3338
- attributes[kind] = uniqueId;
3339
- var accessor = _glTFLoader__WEBPACK_IMPORTED_MODULE_1__.ArrayItem.Get("".concat(context, "/attributes/").concat(name), _this._loader.gltf.accessors, primitive.attributes[name]);
3340
- if (accessor.normalized && accessor.componentType !== 5126 /* AccessorComponentType.FLOAT */) {
3341
- var divider = 1;
3342
- switch (accessor.componentType) {
3343
- case 5120 /* AccessorComponentType.BYTE */:
3344
- divider = 127.0;
3345
- break;
3346
- case 5121 /* AccessorComponentType.UNSIGNED_BYTE */:
3347
- divider = 255.0;
3348
- break;
3349
- case 5122 /* AccessorComponentType.SHORT */:
3350
- divider = 32767.0;
3351
- break;
3352
- case 5123 /* AccessorComponentType.UNSIGNED_SHORT */:
3353
- divider = 65535.0;
3354
- break;
3355
- }
3356
- dividers[kind] = divider;
3357
- }
3358
3341
  babylonMesh._delayInfo = babylonMesh._delayInfo || [];
3359
3342
  if (babylonMesh._delayInfo.indexOf(kind) === -1) {
3360
3343
  babylonMesh._delayInfo.push(kind);
3361
3344
  }
3345
+ attributes[kind] = uniqueId;
3346
+ if (_this.useNormalizedFlagFromAccessor) {
3347
+ var accessor = _glTFLoader__WEBPACK_IMPORTED_MODULE_1__.ArrayItem.TryGet(_this._loader.gltf.accessors, primitive.attributes[name]);
3348
+ if (accessor) {
3349
+ normalized[kind] = accessor.normalized || false;
3350
+ }
3351
+ }
3362
3352
  };
3363
3353
  loadAttribute("POSITION", babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.VertexBuffer.PositionKind);
3364
3354
  loadAttribute("NORMAL", babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.VertexBuffer.NormalKind);
@@ -3376,14 +3366,7 @@ var KHR_draco_mesh_compression = /** @class */ (function () {
3376
3366
  if (!bufferView._dracoBabylonGeometry) {
3377
3367
  bufferView._dracoBabylonGeometry = _this._loader.loadBufferViewAsync("/bufferViews/".concat(bufferView.index), bufferView).then(function (data) {
3378
3368
  var dracoCompression = _this.dracoCompression || babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.DracoCompression.Default;
3379
- return dracoCompression
3380
- .decodeMeshAsync(data, attributes, dividers)
3381
- .then(function (babylonVertexData) {
3382
- var babylonGeometry = new babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.Geometry(babylonMesh.name, _this._loader.babylonScene);
3383
- babylonVertexData.applyToGeometry(babylonGeometry);
3384
- return babylonGeometry;
3385
- })
3386
- .catch(function (error) {
3369
+ return dracoCompression._decodeMeshToGeometryForGltfAsync(babylonMesh.name, _this._loader.babylonScene, data, attributes, normalized).catch(function (error) {
3387
3370
  throw new Error("".concat(context, ": ").concat(error.message));
3388
3371
  });
3389
3372
  });
@@ -6203,6 +6186,18 @@ var ArrayItem = /** @class */ (function () {
6203
6186
  }
6204
6187
  return array[index];
6205
6188
  };
6189
+ /**
6190
+ * Gets an item from the given array or returns null if not available.
6191
+ * @param array The array to get the item from
6192
+ * @param index The index to the array
6193
+ * @returns The array item or null
6194
+ */
6195
+ ArrayItem.TryGet = function (array, index) {
6196
+ if (!array || index == undefined || !array[index]) {
6197
+ return null;
6198
+ }
6199
+ return array[index];
6200
+ };
6206
6201
  /**
6207
6202
  * Assign an `index` field to each item of the given array.
6208
6203
  * @param array The array of items
@@ -6973,15 +6968,15 @@ var GLTFLoader = /** @class */ (function () {
6973
6968
  babylonGeometry.setIndices(data);
6974
6969
  }));
6975
6970
  }
6976
- var loadAttribute = function (attribute, kind, callback) {
6977
- if (attributes[attribute] == undefined) {
6971
+ var loadAttribute = function (name, kind, callback) {
6972
+ if (attributes[name] == undefined) {
6978
6973
  return;
6979
6974
  }
6980
6975
  babylonMesh._delayInfo = babylonMesh._delayInfo || [];
6981
6976
  if (babylonMesh._delayInfo.indexOf(kind) === -1) {
6982
6977
  babylonMesh._delayInfo.push(kind);
6983
6978
  }
6984
- var accessor = ArrayItem.Get("".concat(context, "/attributes/").concat(attribute), _this._gltf.accessors, attributes[attribute]);
6979
+ var accessor = ArrayItem.Get("".concat(context, "/attributes/").concat(name), _this._gltf.accessors, attributes[name]);
6985
6980
  promises.push(_this._loadVertexAccessorAsync("/accessors/".concat(accessor.index), accessor, kind).then(function (babylonVertexBuffer) {
6986
6981
  var _a, _b;
6987
6982
  if (babylonVertexBuffer.getKind() === babylonjs_Misc_deferred__WEBPACK_IMPORTED_MODULE_0__.VertexBuffer.PositionKind && !_this.parent.alwaysComputeBoundingBox && !babylonMesh.skeleton) {