@galacean/engine-loader 1.0.0-beta.17 → 1.0.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -443,15 +443,18 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
443
443
  for(var _iterator2 = _create_for_of_iterator_helper_loose(meshInfo.blendShapes), _step2; !(_step2 = _iterator2()).done;){
444
444
  var restoreInfo = _step2.value;
445
445
  var frame = restoreInfo.blendShape.frames[0];
446
- var positionData = _this._getBufferData(buffers, restoreInfo.position);
447
- frame.deltaPositions = GLTFUtils.floatBufferToVector3Array(positionData);
446
+ var position = restoreInfo.position;
447
+ var positionData = _this._getBufferData(buffers, position.buffer);
448
+ frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.stride, position.byteOffset, position.count);
448
449
  if (restoreInfo.normal) {
449
- var normalData = _this._getBufferData(buffers, restoreInfo.normal);
450
- frame.deltaNormals = GLTFUtils.floatBufferToVector3Array(normalData);
450
+ var normal = restoreInfo.normal;
451
+ var normalData = _this._getBufferData(buffers, normal.buffer);
452
+ frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.stride, normal.byteOffset, normal.count);
451
453
  }
452
454
  if (restoreInfo.tangent) {
453
- var tangentData = _this._getBufferData(buffers, restoreInfo.tangent);
454
- frame.deltaTangents = GLTFUtils.floatBufferToVector3Array(tangentData);
455
+ var tangent = restoreInfo.tangent;
456
+ var tangentData = _this._getBufferData(buffers, tangent.buffer);
457
+ frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.stride, tangent.byteOffset, tangent.count);
455
458
  }
456
459
  }
457
460
  mesh.uploadData(true);
@@ -535,6 +538,14 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
535
538
  this.normal = normal;
536
539
  this.tangent = tangent;
537
540
  };
541
+ /**
542
+ * @internal
543
+ */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, stride, byteOffset, count) {
544
+ this.buffer = buffer;
545
+ this.stride = stride;
546
+ this.byteOffset = byteOffset;
547
+ this.count = count;
548
+ };
538
549
 
539
550
  /**
540
551
  * Module for glTF 2.0 Interface
@@ -837,8 +848,10 @@ var TextureWrapMode;
837
848
  return context.getBuffers().then(function(buffers) {
838
849
  var bufferIndex = bufferView.buffer;
839
850
  var buffer = buffers[bufferIndex];
840
- var bufferByteOffset = bufferView.byteOffset || 0;
841
- var byteOffset = accessor.byteOffset || 0;
851
+ var _bufferView_byteOffset;
852
+ var bufferByteOffset = (_bufferView_byteOffset = bufferView.byteOffset) != null ? _bufferView_byteOffset : 0;
853
+ var _accessor_byteOffset;
854
+ var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
842
855
  var TypedArray = GLTFUtils.getComponentType(componentType);
843
856
  var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
844
857
  var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
@@ -872,6 +885,17 @@ var TextureWrapMode;
872
885
  return bufferInfo;
873
886
  });
874
887
  };
888
+ GLTFUtils.bufferToVector3Array = function bufferToVector3Array(data, byteStride, accessorByteOffset, count) {
889
+ var bytesPerElement = data.BYTES_PER_ELEMENT;
890
+ var offset = accessorByteOffset % byteStride / bytesPerElement;
891
+ var stride = byteStride / bytesPerElement;
892
+ var vector3s = new Array(count);
893
+ for(var i = 0; i < count; i++){
894
+ var index = offset + i * stride;
895
+ vector3s[i] = new engineMath.Vector3(data[index], data[index + 1], data[index + 2]);
896
+ }
897
+ return vector3s;
898
+ };
875
899
  /**
876
900
  * @deprecated
877
901
  * Get accessor data.
@@ -1975,7 +1999,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1975
1999
  }
1976
2000
  // BlendShapes
1977
2001
  if (targets) {
1978
- promises.push(GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, targets, getBlendShapeData));
2002
+ promises.push(GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, accessors, targets, getBlendShapeData));
1979
2003
  }
1980
2004
  return Promise.all(promises).then(function() {
1981
2005
  mesh.uploadData(!keepMeshData);
@@ -1991,7 +2015,7 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1991
2015
  };
1992
2016
  /**
1993
2017
  * @internal
1994
- */ GLTFMeshParser._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, glTFTargets, getBlendShapeData) {
2018
+ */ GLTFMeshParser._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, accessors, glTFTargets, getBlendShapeData) {
1995
2019
  var _loop = function(i, n) {
1996
2020
  var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
1997
2021
  var promise = Promise.all([
@@ -1999,16 +2023,36 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1999
2023
  getBlendShapeData("NORMAL", i),
2000
2024
  getBlendShapeData("TANGENT", i)
2001
2025
  ]).then(function(infos) {
2002
- var deltaPosBufferInfo = infos[0];
2003
- var deltaNorBufferInfo = infos[1];
2004
- var deltaTanBufferInfo = infos[2];
2005
- var deltaPositions = deltaPosBufferInfo.data ? GLTFUtils.floatBufferToVector3Array(deltaPosBufferInfo.data) : null;
2006
- var deltaNormals = (deltaNorBufferInfo == null ? void 0 : deltaNorBufferInfo.data) ? GLTFUtils.floatBufferToVector3Array(deltaNorBufferInfo == null ? void 0 : deltaNorBufferInfo.data) : null;
2007
- var deltaTangents = (deltaTanBufferInfo == null ? void 0 : deltaTanBufferInfo.data) ? GLTFUtils.floatBufferToVector3Array(deltaTanBufferInfo == null ? void 0 : deltaTanBufferInfo.data) : null;
2026
+ var posBufferInfo = infos[0];
2027
+ var norBufferInfo = infos[1];
2028
+ var tanBufferInfo = infos[2];
2029
+ var target = glTFTargets[i];
2030
+ var posAccessor;
2031
+ var norAccessor;
2032
+ var tanAccessor;
2033
+ var positions = null;
2034
+ if (posBufferInfo) {
2035
+ posAccessor = accessors[target["POSITION"]];
2036
+ var _posAccessor_byteOffset;
2037
+ positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
2038
+ }
2039
+ var normals = null;
2040
+ if (norBufferInfo) {
2041
+ norAccessor = accessors[target["NORMAL"]];
2042
+ var _norAccessor_byteOffset;
2043
+ normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
2044
+ }
2045
+ var tangents = null;
2046
+ if (tanBufferInfo) {
2047
+ tanAccessor = accessors[target["NORMAL"]];
2048
+ var _tanAccessor_byteOffset;
2049
+ tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
2050
+ }
2008
2051
  var blendShape = new engineCore.BlendShape(name);
2009
- blendShape.addFrame(1.0, deltaPositions, deltaNormals, deltaTangents);
2052
+ blendShape.addFrame(1.0, positions, normals, tangents);
2010
2053
  mesh.addBlendShape(blendShape);
2011
- meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, deltaPosBufferInfo.restoreInfo, deltaNorBufferInfo == null ? void 0 : deltaNorBufferInfo.restoreInfo, deltaTanBufferInfo == null ? void 0 : deltaTanBufferInfo.restoreInfo));
2054
+ var _posAccessor_byteOffset1, _norAccessor_byteOffset1, _tanAccessor_byteOffset1;
2055
+ meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, new BlendShapeDataRestoreInfo(posBufferInfo.restoreInfo, posBufferInfo.stride, (_posAccessor_byteOffset1 = posAccessor.byteOffset) != null ? _posAccessor_byteOffset1 : 0, posAccessor.count), norBufferInfo ? new BlendShapeDataRestoreInfo(norBufferInfo.restoreInfo, norBufferInfo.stride, (_norAccessor_byteOffset1 = norAccessor.byteOffset) != null ? _norAccessor_byteOffset1 : 0, norAccessor.count) : null, tanBufferInfo ? new BlendShapeDataRestoreInfo(tanBufferInfo.restoreInfo, tanBufferInfo.stride, (_tanAccessor_byteOffset1 = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset1 : 0, tanAccessor.count) : null));
2012
2056
  });
2013
2057
  promises.push(promise);
2014
2058
  };
@@ -2338,13 +2382,13 @@ var GLTFTextureParser = /*#__PURE__*/ function(GLTFParser) {
2338
2382
  };
2339
2383
  _proto._parseSampler = function _parseSampler(texture, samplerInfo) {
2340
2384
  var filterMode = samplerInfo.filterMode, wrapModeU = samplerInfo.wrapModeU, wrapModeV = samplerInfo.wrapModeV;
2341
- if (filterMode) {
2385
+ if (filterMode !== undefined) {
2342
2386
  texture.filterMode = filterMode;
2343
2387
  }
2344
- if (wrapModeU) {
2388
+ if (wrapModeU !== undefined) {
2345
2389
  texture.wrapModeU = wrapModeU;
2346
2390
  }
2347
- if (wrapModeV) {
2391
+ if (wrapModeV !== undefined) {
2348
2392
  texture.wrapModeV = wrapModeV;
2349
2393
  }
2350
2394
  };
@@ -2482,7 +2526,7 @@ var GLTFLoader = /*#__PURE__*/ function(Loader) {
2482
2526
  resourceManager.addContentRestorer(restorer);
2483
2527
  masterPromiseInfo.resolve(glTFResource);
2484
2528
  }).catch(function(e) {
2485
- var msg = "Error loading glTF model from " + url + " .";
2529
+ var msg = "Error loading glTF model from " + url + " : " + e;
2486
2530
  engineCore.Logger.error(msg);
2487
2531
  masterPromiseInfo.reject(msg);
2488
2532
  context.defaultSceneRootPromiseInfo.reject(e);
@@ -4720,7 +4764,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
4720
4764
  mesh.addSubMesh(0, vertexCount, mode);
4721
4765
  }
4722
4766
  // BlendShapes
4723
- targets && GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, targets, getBlendShapeData);
4767
+ targets && GLTFMeshParser._createBlendShape(mesh, null, gltfMesh, accessors, targets, getBlendShapeData);
4724
4768
  mesh.uploadData(!keepMeshData);
4725
4769
  return Promise.resolve(mesh);
4726
4770
  };