@galacean/engine-loader 1.0.0-beta.5 → 1.0.0-beta.7
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 +60 -27
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +60 -27
- package/dist/module.js +60 -27
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/gltf/GLTFUtil.d.ts +1 -1
package/dist/main.js
CHANGED
|
@@ -502,12 +502,6 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
502
502
|
this.vertexBuffers = [];
|
|
503
503
|
this.blendShapes = [];
|
|
504
504
|
};
|
|
505
|
-
/**
|
|
506
|
-
* @internal
|
|
507
|
-
*/ var BufferRestoreInfo = function BufferRestoreInfo(buffer, data) {
|
|
508
|
-
this.buffer = buffer;
|
|
509
|
-
this.data = data;
|
|
510
|
-
};
|
|
511
505
|
/**
|
|
512
506
|
* @internal
|
|
513
507
|
*/ var BufferDataRestoreInfo = function BufferDataRestoreInfo(main, typeSize, sparseCount, sparseIndices, sparseValues) {
|
|
@@ -1823,21 +1817,31 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1823
1817
|
var vertexCount;
|
|
1824
1818
|
var bufferBindIndex = 0;
|
|
1825
1819
|
var positions;
|
|
1826
|
-
|
|
1820
|
+
var boneIndices;
|
|
1821
|
+
var boneWeights;
|
|
1822
|
+
if (keepMeshData) {
|
|
1823
|
+
positions = new Array(vertexCount);
|
|
1824
|
+
boneIndices = new Array(vertexCount);
|
|
1825
|
+
boneWeights = new Array(vertexCount);
|
|
1826
|
+
}
|
|
1827
1827
|
for(var attribute in attributes){
|
|
1828
1828
|
var accessor = accessors[attributes[attribute]];
|
|
1829
1829
|
var accessorBuffer = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor);
|
|
1830
1830
|
var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
|
|
1831
|
-
var
|
|
1831
|
+
var accessorCount = accessor.count;
|
|
1832
1832
|
var vertices = accessorBuffer.data;
|
|
1833
1833
|
var vertexElement = void 0;
|
|
1834
1834
|
var meshId = mesh.instanceId;
|
|
1835
1835
|
var vertexBindingInfos = accessorBuffer.vertexBindingInfos;
|
|
1836
|
-
var
|
|
1836
|
+
var elementNormalized = accessor.normalized;
|
|
1837
|
+
var elementFormat = GLTFUtils.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);
|
|
1838
|
+
var scaleFactor = void 0;
|
|
1839
|
+
elementNormalized && (scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType));
|
|
1840
|
+
var elementOffset = void 0;
|
|
1837
1841
|
if (accessorBuffer.interleaved) {
|
|
1838
1842
|
var byteOffset = accessor.byteOffset || 0;
|
|
1839
1843
|
var stride = accessorBuffer.stride;
|
|
1840
|
-
|
|
1844
|
+
elementOffset = byteOffset % stride;
|
|
1841
1845
|
if (vertexBindingInfos[meshId] === undefined) {
|
|
1842
1846
|
vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
|
|
1843
1847
|
var vertexBuffer = accessorBuffer.vertexBuffer;
|
|
@@ -1845,7 +1849,6 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1845
1849
|
vertexBuffer = new engineCore.Buffer(engine, engineCore.BufferBindFlag.VertexBuffer, vertices.byteLength, engineCore.BufferUsage.Static);
|
|
1846
1850
|
vertexBuffer.setData(vertices);
|
|
1847
1851
|
accessorBuffer.vertexBuffer = vertexBuffer;
|
|
1848
|
-
meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer, accessorBuffer.restoreInfo));
|
|
1849
1852
|
}
|
|
1850
1853
|
mesh.setVertexBufferBinding(vertexBuffer, stride, bufferBindIndex);
|
|
1851
1854
|
vertexBindingInfos[meshId] = bufferBindIndex++;
|
|
@@ -1853,44 +1856,70 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1853
1856
|
vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);
|
|
1854
1857
|
}
|
|
1855
1858
|
} else {
|
|
1856
|
-
|
|
1859
|
+
elementOffset = 0;
|
|
1860
|
+
vertexElement = new engineCore.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
|
|
1857
1861
|
var vertexBuffer1 = new engineCore.Buffer(engine, engineCore.BufferBindFlag.VertexBuffer, vertices.byteLength, engineCore.BufferUsage.Static);
|
|
1858
1862
|
vertexBuffer1.setData(vertices);
|
|
1859
|
-
meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer1, accessorBuffer.restoreInfo));
|
|
1860
1863
|
mesh.setVertexBufferBinding(vertexBuffer1, accessorBuffer.stride, bufferBindIndex);
|
|
1861
1864
|
vertexBindingInfos[meshId] = bufferBindIndex++;
|
|
1862
1865
|
}
|
|
1863
1866
|
vertexElements.push(vertexElement);
|
|
1864
1867
|
if (attribute === "POSITION") {
|
|
1865
|
-
vertexCount =
|
|
1868
|
+
vertexCount = accessorCount;
|
|
1866
1869
|
var _mesh_bounds = mesh.bounds, min = _mesh_bounds.min, max = _mesh_bounds.max;
|
|
1867
1870
|
if (accessor.min && accessor.max) {
|
|
1868
1871
|
min.copyFromArray(accessor.min);
|
|
1869
1872
|
max.copyFromArray(accessor.max);
|
|
1870
1873
|
if (keepMeshData) {
|
|
1871
|
-
var
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1874
|
+
var baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1875
|
+
var stride1 = vertices.length / accessorCount;
|
|
1876
|
+
for(var j = 0; j < accessorCount; j++){
|
|
1877
|
+
var offset = baseOffset + j * stride1;
|
|
1878
|
+
var position = new engineMath.Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
|
|
1879
|
+
elementNormalized && position.scale(scaleFactor);
|
|
1880
|
+
positions[j] = position;
|
|
1875
1881
|
}
|
|
1876
1882
|
}
|
|
1877
1883
|
} else {
|
|
1878
|
-
var
|
|
1884
|
+
var position1 = GLTFMeshParser._tempVector3;
|
|
1879
1885
|
min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
|
|
1880
1886
|
max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
|
|
1881
|
-
var
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
engineMath.Vector3.
|
|
1887
|
+
var baseOffset1 = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1888
|
+
var stride2 = vertices.length / accessorCount;
|
|
1889
|
+
for(var j1 = 0; j1 < accessorCount; j1++){
|
|
1890
|
+
var offset1 = baseOffset1 + j1 * stride2;
|
|
1891
|
+
position1.copyFromArray(vertices, offset1);
|
|
1892
|
+
engineMath.Vector3.min(min, position1, min);
|
|
1893
|
+
engineMath.Vector3.max(max, position1, max);
|
|
1894
|
+
if (keepMeshData) {
|
|
1895
|
+
var clonePosition = position1.clone();
|
|
1896
|
+
elementNormalized && clonePosition.scale(scaleFactor);
|
|
1897
|
+
positions[j1] = clonePosition;
|
|
1898
|
+
}
|
|
1887
1899
|
}
|
|
1888
1900
|
}
|
|
1889
|
-
if (
|
|
1890
|
-
var scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType);
|
|
1901
|
+
if (elementNormalized) {
|
|
1891
1902
|
min.scale(scaleFactor);
|
|
1892
1903
|
max.scale(scaleFactor);
|
|
1893
1904
|
}
|
|
1905
|
+
} else if (attribute === "JOINTS_0" && keepMeshData) {
|
|
1906
|
+
var baseOffset2 = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1907
|
+
var stride3 = vertices.length / accessorCount;
|
|
1908
|
+
for(var j2 = 0; j2 < accessorCount; j2++){
|
|
1909
|
+
var offset2 = baseOffset2 + j2 * stride3;
|
|
1910
|
+
var boneIndex = new engineMath.Vector4(vertices[offset2], vertices[offset2 + 1], vertices[offset2 + 2], vertices[offset2 + 3]);
|
|
1911
|
+
elementNormalized && boneIndex.scale(scaleFactor);
|
|
1912
|
+
boneIndices[j2] = boneIndex;
|
|
1913
|
+
}
|
|
1914
|
+
} else if (attribute === "WEIGHTS_0" && keepMeshData) {
|
|
1915
|
+
var baseOffset3 = elementOffset / vertices.BYTES_PER_ELEMENT;
|
|
1916
|
+
var stride4 = vertices.length / accessorCount;
|
|
1917
|
+
for(var j3 = 0; j3 < accessorCount; j3++){
|
|
1918
|
+
var offset3 = baseOffset3 + j3 * stride4;
|
|
1919
|
+
var boneWeight = new engineMath.Vector4(vertices[offset3], vertices[offset3 + 1], vertices[offset3 + 2], vertices[offset3 + 3]);
|
|
1920
|
+
elementNormalized && boneWeight.scale(scaleFactor);
|
|
1921
|
+
boneWeights[j3] = boneWeight;
|
|
1922
|
+
}
|
|
1894
1923
|
}
|
|
1895
1924
|
}
|
|
1896
1925
|
mesh.setVertexElements(vertexElements);
|
|
@@ -1909,6 +1938,10 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
1909
1938
|
mesh.uploadData(!keepMeshData);
|
|
1910
1939
|
//@ts-ignore
|
|
1911
1940
|
mesh._positions = positions;
|
|
1941
|
+
//@ts-ignore
|
|
1942
|
+
mesh._boneIndices = boneIndices;
|
|
1943
|
+
//@ts-ignore
|
|
1944
|
+
mesh._boneWeights = boneWeights;
|
|
1912
1945
|
return Promise.resolve(mesh);
|
|
1913
1946
|
};
|
|
1914
1947
|
/**
|