Merge pull request #332 from Kohei-Yanagida/feature_fix_export_vrm_when_change_blendShape

Feature fix export vrm when change blend shape
This commit is contained in:
ousttrue 2019-12-03 16:36:56 +09:00 committed by GitHub
commit c3a12807e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -322,7 +322,14 @@ namespace VRM
var mesh = srcMesh.Copy(false);
mesh.name = srcMesh.name + ".baked";
srcRenderer.BakeMesh(mesh);
var blendShapeValues = new Dictionary<int,float>();
for (int i = 0; i < srcMesh.blendShapeCount; i++)
{
var val = srcRenderer.GetBlendShapeWeight(i);
if (val > 0) blendShapeValues.Add(i, val);
}
mesh.boneWeights = MapBoneWeight(srcMesh.boneWeights, boneMap, srcRenderer.bones, dstBones); // restore weights. clear when BakeMesh
// recalc bindposes
@ -373,9 +380,12 @@ namespace VRM
{
throw new Exception("different vertex count");
}
srcRenderer.SetBlendShapeWeight(i, 0);
var value = blendShapeValues.ContainsKey(i) ? blendShapeValues[i] : 0;
srcRenderer.SetBlendShapeWeight(i, value);
Vector3[] vertices = blendShapeMesh.vertices;
for (int j = 0; j < vertices.Length; ++j)
{
if (originalBlendShapePositions[j] == Vector3.zero)
@ -394,6 +404,7 @@ namespace VRM
if (originalBlendShapeNormals[j] == Vector3.zero)
{
normals[j] = Vector3.zero;
}
else
{