DAE : Fix issues exporting models with only bone indices and no weights.
This commit is contained in:
parent
6e64dbc131
commit
c6287f2631
@ -387,8 +387,8 @@ namespace Toolbox.Library
|
|||||||
if (b > mesh.VertexSkinCount - 1)
|
if (b > mesh.VertexSkinCount - 1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (vertex.boneWeights.Count > b)
|
//Skip 0 weights
|
||||||
{
|
if (vertex.boneWeights.Count > b) {
|
||||||
if (vertex.boneWeights[b] == 0)
|
if (vertex.boneWeights[b] == 0)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -399,20 +399,26 @@ namespace Toolbox.Library
|
|||||||
else
|
else
|
||||||
index = (int)vertex.boneIds[b];
|
index = (int)vertex.boneIds[b];
|
||||||
|
|
||||||
if (index != -1 && index < skeleton?.bones.Count)
|
//Only map for valid weights/indices
|
||||||
|
bool hasValidIndex = index != -1 && index < skeleton?.bones.Count;
|
||||||
|
bool hasValidWeight = vertex.boneWeights.Count > b;
|
||||||
|
if (hasValidIndex)
|
||||||
bIndices.Add(index);
|
bIndices.Add(index);
|
||||||
|
|
||||||
if (vertex.boneWeights.Count > b)
|
if (hasValidWeight && hasValidIndex)
|
||||||
bWeights.Add(vertex.boneWeights[b]);
|
bWeights.Add(vertex.boneWeights[b]);
|
||||||
else
|
|
||||||
bWeights.Add(0);
|
|
||||||
}
|
}
|
||||||
|
//Rigid bodies with no direct bone indices
|
||||||
if (bIndices.Count == 0 && mesh.BoneIndex != -1) {
|
if (bIndices.Count == 0 && mesh.BoneIndex != -1) {
|
||||||
HasBoneIds = true;
|
HasBoneIds = true;
|
||||||
bIndices.Add(mesh.BoneIndex);
|
bIndices.Add(mesh.BoneIndex);
|
||||||
bWeights.Add(1);
|
bWeights.Add(1);
|
||||||
}
|
}
|
||||||
|
//Bone indices with no weights directly mapped
|
||||||
|
if (bWeights.Count == 0 && bIndices.Count > 0)
|
||||||
|
{
|
||||||
|
bWeights.Add(1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
BoneIndices.Add(bIndices.ToArray());
|
BoneIndices.Add(bIndices.ToArray());
|
||||||
BoneWeights.Add(bWeights.ToArray());
|
BoneWeights.Add(bWeights.ToArray());
|
||||||
|
Loading…
Reference in New Issue
Block a user