mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-14 06:19:47 -05:00
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:
commit
c3a12807e9
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user