From a0ea3ad2e59fcc3e8c269d63484135b0dc2e8925 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 24 Jun 2024 17:54:14 +0900 Subject: [PATCH] cleanup --- .../Runtime/MeshUtility/MeshExtensions.cs | 4 ++ .../Runtime/MeshUtility/MeshFreezer.cs | 51 +------------------ 2 files changed, 6 insertions(+), 49 deletions(-) diff --git a/Assets/UniGLTF/Runtime/MeshUtility/MeshExtensions.cs b/Assets/UniGLTF/Runtime/MeshUtility/MeshExtensions.cs index b22e263db..d9bb59ba7 100644 --- a/Assets/UniGLTF/Runtime/MeshUtility/MeshExtensions.cs +++ b/Assets/UniGLTF/Runtime/MeshUtility/MeshExtensions.cs @@ -168,6 +168,10 @@ namespace UniGLTF.MeshUtility src.ClearBlendShapes(); foreach (var blendshape in blendshapes) { + // blendshape の normal, tangent はちゃんと動作しなかった。 + // position とロジックが違うのかもしれない。詳細不明。 + // 法線に不要な変化が発生し、MToon の outline が乱れたりする。 + // 変化しないようにする。 src.AddBlendShapeFrame(blendshape.Name, blendshape.FrameWeight, blendshape.Vertices, null, null); } diff --git a/Assets/UniGLTF/Runtime/MeshUtility/MeshFreezer.cs b/Assets/UniGLTF/Runtime/MeshUtility/MeshFreezer.cs index 276826c41..d6ec269ef 100644 --- a/Assets/UniGLTF/Runtime/MeshUtility/MeshFreezer.cs +++ b/Assets/UniGLTF/Runtime/MeshUtility/MeshFreezer.cs @@ -122,13 +122,6 @@ namespace UniGLTF.MeshUtility return newBoneWeights; } - /// - /// - /// - /// - /// 正規化前のボーンから正規化後のボーンを得る - /// - /// public static Mesh NormalizeSkinnedMesh(SkinnedMeshRenderer src) { if (src == null @@ -151,6 +144,7 @@ namespace UniGLTF.MeshUtility // BakeMesh var mesh = src.sharedMesh.Copy(false, ".baked"); + // TODO: scale に関する第2引数があるが true にすると mesh がつぶれた。どうやって使うのか src.BakeMesh(mesh); CopyBlendShapes(src, mesh); @@ -158,15 +152,6 @@ namespace UniGLTF.MeshUtility var m = Matrix4x4.TRS(Vector3.zero, src.transform.rotation, Vector3.one); mesh.ApplyMatrixAlsoBlendShapes(m); - // - // BlendShapes - // - // { - // var m = src.localToWorldMatrix; // include scaling - // m.SetColumn(3, new Vector4(0, 0, 0, 1)); // no translation - // CopyBlendShapes(src, srcMesh, mesh, m); - // } - return mesh; } @@ -201,12 +186,6 @@ namespace UniGLTF.MeshUtility private static void CopyBlendShapes(SkinnedMeshRenderer src, Mesh mesh) { var srcMesh = src.sharedMesh; - var blendShapeValues = new Dictionary(); - for (int i = 0; i < srcMesh.blendShapeCount; i++) - { - var val = src.GetBlendShapeWeight(i); - if (val > 0) blendShapeValues.Add(i, val); - } // clear blendShape always var backcup = new List(); @@ -256,36 +235,18 @@ namespace UniGLTF.MeshUtility throw new Exception("different vertex count"); } - var value = blendShapeValues.ContainsKey(i) ? blendShapeValues[i] : 0; - src.SetBlendShapeWeight(i, value); + src.SetBlendShapeWeight(i, backcup[i]); Vector3[] vertices = blendShapeMesh.vertices; for (int j = 0; j < vertices.Length; ++j) { - // if (originalBlendShapePositions[j] == Vector3.zero) - // { - // vertices[j] = Vector3.zero; - // } - // else - // { - // vertices[j] = m.MultiplyPoint(vertices[j] - meshVertices[j]); - // } vertices[j] = vertices[j] - meshVertices[j]; } Vector3[] normals = blendShapeMesh.normals; for (int j = 0; j < normals.Length; ++j) { - // if (originalBlendShapeNormals[j] == Vector3.zero) - // { - // normals[j] = Vector3.zero; - - // } - // else - // { - // normals[j] = m.MultiplyVector(normals[j].normalized) - meshNormals[j]; - // } normals[j] = normals[j] - meshNormals[j]; } @@ -294,14 +255,6 @@ namespace UniGLTF.MeshUtility { for (int j = 0; j < tangents.Length; ++j) { - // if (originalBlendShapeTangents[j] == Vector3.zero) - // { - // tangents[j] = Vector3.zero; - // } - // else - // { - // tangents[j] = m.MultiplyVector(tangents[j]) - meshTangents[j]; - // } tangents[j] = tangents[j] - meshTangents[j]; } }