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.
@@ -797,13 +797,12 @@ __webpack_require__.r(__webpack_exports__);
797
797
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
798
798
  /* harmony export */ KHR_draco_mesh_compression: () => (/* binding */ KHR_draco_mesh_compression)
799
799
  /* harmony export */ });
800
- /* harmony import */ var babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Meshes/geometry */ "babylonjs/Misc/observable");
800
+ /* harmony import */ var babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Buffers/buffer */ "babylonjs/Misc/observable");
801
801
  /* harmony import */ var babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__);
802
802
  /* harmony import */ var _glTFLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../glTFLoader */ "../../../dev/loaders/src/glTF/2.0/glTFLoader.ts");
803
803
 
804
804
 
805
805
 
806
-
807
806
  var NAME = "KHR_draco_mesh_compression";
808
807
  /**
809
808
  * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md)
@@ -818,6 +817,10 @@ var KHR_draco_mesh_compression = /** @class */ (function () {
818
817
  * The name of this extension.
819
818
  */
820
819
  this.name = NAME;
820
+ /**
821
+ * Defines whether to use the normalized flag from the glTF accessor instead of the Draco data. Defaults to true.
822
+ */
823
+ this.useNormalizedFlagFromAccessor = true;
821
824
  this._loader = loader;
822
825
  this.enabled = babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.DracoCompression.DecoderAvailable && this._loader.isExtensionUsed(NAME);
823
826
  }
@@ -842,36 +845,23 @@ var KHR_draco_mesh_compression = /** @class */ (function () {
842
845
  }
843
846
  }
844
847
  var attributes = {};
845
- var dividers = {};
848
+ var normalized = {};
846
849
  var loadAttribute = function (name, kind) {
847
850
  var uniqueId = extension.attributes[name];
848
- if (uniqueId === undefined || primitive.attributes[name] === undefined) {
851
+ if (uniqueId == undefined) {
849
852
  return;
850
853
  }
851
- attributes[kind] = uniqueId;
852
- var accessor = _glTFLoader__WEBPACK_IMPORTED_MODULE_1__.ArrayItem.Get("".concat(context, "/attributes/").concat(name), _this._loader.gltf.accessors, primitive.attributes[name]);
853
- if (accessor.normalized && accessor.componentType !== 5126 /* AccessorComponentType.FLOAT */) {
854
- var divider = 1;
855
- switch (accessor.componentType) {
856
- case 5120 /* AccessorComponentType.BYTE */:
857
- divider = 127.0;
858
- break;
859
- case 5121 /* AccessorComponentType.UNSIGNED_BYTE */:
860
- divider = 255.0;
861
- break;
862
- case 5122 /* AccessorComponentType.SHORT */:
863
- divider = 32767.0;
864
- break;
865
- case 5123 /* AccessorComponentType.UNSIGNED_SHORT */:
866
- divider = 65535.0;
867
- break;
868
- }
869
- dividers[kind] = divider;
870
- }
871
854
  babylonMesh._delayInfo = babylonMesh._delayInfo || [];
872
855
  if (babylonMesh._delayInfo.indexOf(kind) === -1) {
873
856
  babylonMesh._delayInfo.push(kind);
874
857
  }
858
+ attributes[kind] = uniqueId;
859
+ if (_this.useNormalizedFlagFromAccessor) {
860
+ var accessor = _glTFLoader__WEBPACK_IMPORTED_MODULE_1__.ArrayItem.TryGet(_this._loader.gltf.accessors, primitive.attributes[name]);
861
+ if (accessor) {
862
+ normalized[kind] = accessor.normalized || false;
863
+ }
864
+ }
875
865
  };
876
866
  loadAttribute("POSITION", babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.VertexBuffer.PositionKind);
877
867
  loadAttribute("NORMAL", babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.VertexBuffer.NormalKind);
@@ -889,14 +879,7 @@ var KHR_draco_mesh_compression = /** @class */ (function () {
889
879
  if (!bufferView._dracoBabylonGeometry) {
890
880
  bufferView._dracoBabylonGeometry = _this._loader.loadBufferViewAsync("/bufferViews/".concat(bufferView.index), bufferView).then(function (data) {
891
881
  var dracoCompression = _this.dracoCompression || babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.DracoCompression.Default;
892
- return dracoCompression
893
- .decodeMeshAsync(data, attributes, dividers)
894
- .then(function (babylonVertexData) {
895
- var babylonGeometry = new babylonjs_Meshes_Compression_dracoCompression__WEBPACK_IMPORTED_MODULE_0__.Geometry(babylonMesh.name, _this._loader.babylonScene);
896
- babylonVertexData.applyToGeometry(babylonGeometry);
897
- return babylonGeometry;
898
- })
899
- .catch(function (error) {
882
+ return dracoCompression._decodeMeshToGeometryForGltfAsync(babylonMesh.name, _this._loader.babylonScene, data, attributes, normalized).catch(function (error) {
900
883
  throw new Error("".concat(context, ": ").concat(error.message));
901
884
  });
902
885
  });
@@ -3716,6 +3699,18 @@ var ArrayItem = /** @class */ (function () {
3716
3699
  }
3717
3700
  return array[index];
3718
3701
  };
3702
+ /**
3703
+ * Gets an item from the given array or returns null if not available.
3704
+ * @param array The array to get the item from
3705
+ * @param index The index to the array
3706
+ * @returns The array item or null
3707
+ */
3708
+ ArrayItem.TryGet = function (array, index) {
3709
+ if (!array || index == undefined || !array[index]) {
3710
+ return null;
3711
+ }
3712
+ return array[index];
3713
+ };
3719
3714
  /**
3720
3715
  * Assign an `index` field to each item of the given array.
3721
3716
  * @param array The array of items
@@ -4486,15 +4481,15 @@ var GLTFLoader = /** @class */ (function () {
4486
4481
  babylonGeometry.setIndices(data);
4487
4482
  }));
4488
4483
  }
4489
- var loadAttribute = function (attribute, kind, callback) {
4490
- if (attributes[attribute] == undefined) {
4484
+ var loadAttribute = function (name, kind, callback) {
4485
+ if (attributes[name] == undefined) {
4491
4486
  return;
4492
4487
  }
4493
4488
  babylonMesh._delayInfo = babylonMesh._delayInfo || [];
4494
4489
  if (babylonMesh._delayInfo.indexOf(kind) === -1) {
4495
4490
  babylonMesh._delayInfo.push(kind);
4496
4491
  }
4497
- var accessor = ArrayItem.Get("".concat(context, "/attributes/").concat(attribute), _this._gltf.accessors, attributes[attribute]);
4492
+ var accessor = ArrayItem.Get("".concat(context, "/attributes/").concat(name), _this._gltf.accessors, attributes[name]);
4498
4493
  promises.push(_this._loadVertexAccessorAsync("/accessors/".concat(accessor.index), accessor, kind).then(function (babylonVertexBuffer) {
4499
4494
  var _a, _b;
4500
4495
  if (babylonVertexBuffer.getKind() === babylonjs_Misc_deferred__WEBPACK_IMPORTED_MODULE_0__.VertexBuffer.PositionKind && !_this.parent.alwaysComputeBoundingBox && !babylonMesh.skeleton) {