@galacean/engine-loader 0.9.0 → 0.9.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.
- package/dist/main.js +63 -23
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +63 -23
- package/dist/module.js +63 -23
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
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
|
-
|
|
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
|
|
1815
|
-
var
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
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
|
|
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
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
engineMath.Vector3.
|
|
1869
|
-
|
|
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 (
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
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) {
|