@galacean/engine-loader 0.9.0 → 0.9.1

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
@@ -1807,21 +1807,31 @@ var MeshParser = /*#__PURE__*/ function(Parser1) {
1807
1807
  var vertexCount;
1808
1808
  var bufferBindIndex = 0;
1809
1809
  var positions;
1810
- keepMeshData && (positions = new Array(vertexCount));
1810
+ var boneIndices;
1811
+ var boneWeights;
1812
+ if (keepMeshData) {
1813
+ positions = new Array(vertexCount);
1814
+ boneIndices = new Array(vertexCount);
1815
+ boneWeights = new Array(vertexCount);
1816
+ }
1811
1817
  for(var attribute in attributes){
1812
1818
  var accessor = accessors[attributes[attribute]];
1813
1819
  var accessorBuffer = GLTFUtil.getAccessorBuffer(context, gltf, accessor);
1814
- var dataElmentSize = GLTFUtil.getAccessorTypeSize(accessor.type);
1815
- var attributeCount = accessor.count;
1820
+ var dataElementSize = GLTFUtil.getAccessorTypeSize(accessor.type);
1821
+ var accessorCount = accessor.count;
1816
1822
  var vertices = accessorBuffer.data;
1817
1823
  var vertexElement = void 0;
1818
1824
  var meshId = mesh.instanceId;
1819
1825
  var vertexBindingInfos = accessorBuffer.vertexBindingInfos;
1820
- var elementFormat = GLTFUtil.getElementFormat(accessor.componentType, dataElmentSize, accessor.normalized);
1826
+ var elementNormalized = accessor.normalized;
1827
+ var elementFormat = GLTFUtil.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);
1828
+ var scaleFactor = void 0;
1829
+ elementNormalized && (scaleFactor = GLTFUtil.getNormalizedComponentScale(accessor.componentType));
1830
+ var elementOffset = void 0;
1821
1831
  if (accessorBuffer.interleaved) {
1822
1832
  var byteOffset = accessor.byteOffset || 0;
1823
1833
  var stride = accessorBuffer.stride;
1824
- var elementOffset = byteOffset % stride;
1834
+ elementOffset = byteOffset % stride;
1825
1835
  if (vertexBindingInfos[meshId] === undefined) {
1826
1836
  vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
1827
1837
  var vertexBuffer = accessorBuffer.vertexBuffer;
@@ -1836,7 +1846,8 @@ var MeshParser = /*#__PURE__*/ function(Parser1) {
1836
1846
  vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);
1837
1847
  }
1838
1848
  } else {
1839
- vertexElement = new engineCore.VertexElement(attribute, 0, elementFormat, bufferBindIndex);
1849
+ elementOffset = 0;
1850
+ vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
1840
1851
  var vertexBuffer1 = new engineCore.Buffer(engine, engineCore.BufferBindFlag.VertexBuffer, vertices.byteLength, engineCore.BufferUsage.Static);
1841
1852
  vertexBuffer1.setData(vertices);
1842
1853
  mesh.setVertexBufferBinding(vertexBuffer1, accessorBuffer.stride, bufferBindIndex);
@@ -1844,35 +1855,60 @@ var MeshParser = /*#__PURE__*/ function(Parser1) {
1844
1855
  }
1845
1856
  vertexElements.push(vertexElement);
1846
1857
  if (attribute === "POSITION") {
1847
- vertexCount = attributeCount;
1858
+ vertexCount = accessorCount;
1848
1859
  var _mesh_bounds = mesh.bounds, min = _mesh_bounds.min, max = _mesh_bounds.max;
1849
1860
  if (accessor.min && accessor.max) {
1850
1861
  min.copyFromArray(accessor.min);
1851
1862
  max.copyFromArray(accessor.max);
1852
1863
  if (keepMeshData) {
1853
- var stride1 = vertices.length / attributeCount;
1854
- for(var j = 0; j < attributeCount; j++){
1855
- var offset = j * stride1;
1856
- positions[j] = new engineMath.Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
1864
+ var baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;
1865
+ var stride1 = vertices.length / accessorCount;
1866
+ for(var j = 0; j < accessorCount; j++){
1867
+ var offset = baseOffset + j * stride1;
1868
+ var position = new engineMath.Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
1869
+ elementNormalized && position.scale(scaleFactor);
1870
+ positions[j] = position;
1857
1871
  }
1858
1872
  }
1859
1873
  } else {
1860
- var position = MeshParser._tempVector3;
1874
+ var position1 = MeshParser._tempVector3;
1861
1875
  min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
1862
1876
  max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
1863
- var stride2 = vertices.length / attributeCount;
1864
- for(var j1 = 0; j1 < attributeCount; j1++){
1865
- var offset1 = j1 * stride2;
1866
- position.copyFromArray(vertices, offset1);
1867
- engineMath.Vector3.min(min, position, min);
1868
- engineMath.Vector3.max(max, position, max);
1869
- keepMeshData && (positions[j1] = position.clone());
1877
+ var baseOffset1 = elementOffset / vertices.BYTES_PER_ELEMENT;
1878
+ var stride2 = vertices.length / accessorCount;
1879
+ for(var j1 = 0; j1 < accessorCount; j1++){
1880
+ var offset1 = baseOffset1 + j1 * stride2;
1881
+ position1.copyFromArray(vertices, offset1);
1882
+ engineMath.Vector3.min(min, position1, min);
1883
+ engineMath.Vector3.max(max, position1, max);
1884
+ if (keepMeshData) {
1885
+ var clonePosition = position1.clone();
1886
+ elementNormalized && clonePosition.scale(scaleFactor);
1887
+ positions[j1] = clonePosition;
1888
+ }
1870
1889
  }
1871
1890
  }
1872
- if (accessor.normalized) {
1873
- var sacleFactor = GLTFUtil.getNormalizedComponentScale(accessor.componentType);
1874
- min.scale(sacleFactor);
1875
- max.scale(sacleFactor);
1891
+ if (elementNormalized) {
1892
+ min.scale(scaleFactor);
1893
+ max.scale(scaleFactor);
1894
+ }
1895
+ } else if (attribute === "JOINTS_0" && keepMeshData) {
1896
+ var baseOffset2 = elementOffset / vertices.BYTES_PER_ELEMENT;
1897
+ var stride3 = vertices.length / accessorCount;
1898
+ for(var j2 = 0; j2 < accessorCount; j2++){
1899
+ var offset2 = baseOffset2 + j2 * stride3;
1900
+ var boneIndex = new engineMath.Vector4(vertices[offset2], vertices[offset2 + 1], vertices[offset2 + 2], vertices[offset2 + 3]);
1901
+ elementNormalized && boneIndex.scale(scaleFactor);
1902
+ boneIndices[j2] = boneIndex;
1903
+ }
1904
+ } else if (attribute === "WEIGHTS_0" && keepMeshData) {
1905
+ var baseOffset3 = elementOffset / vertices.BYTES_PER_ELEMENT;
1906
+ var stride4 = vertices.length / accessorCount;
1907
+ for(var j3 = 0; j3 < accessorCount; j3++){
1908
+ var offset3 = baseOffset3 + j3 * stride4;
1909
+ var boneWeight = new engineMath.Vector4(vertices[offset3], vertices[offset3 + 1], vertices[offset3 + 2], vertices[offset3 + 3]);
1910
+ elementNormalized && boneWeight.scale(scaleFactor);
1911
+ boneWeights[j3] = boneWeight;
1876
1912
  }
1877
1913
  }
1878
1914
  }
@@ -1891,6 +1927,10 @@ var MeshParser = /*#__PURE__*/ function(Parser1) {
1891
1927
  mesh.uploadData(!keepMeshData);
1892
1928
  //@ts-ignore
1893
1929
  mesh._positions = positions;
1930
+ //@ts-ignore
1931
+ mesh._boneIndices = boneIndices;
1932
+ //@ts-ignore
1933
+ mesh._boneWeights = boneWeights;
1894
1934
  return Promise.resolve(mesh);
1895
1935
  };
1896
1936
  _proto._createBlendShape = function _createBlendShape(mesh, glTFMesh, glTFTargets, getBlendShapeData) {