From 92501ae8ab75d6fa623641cbb090faf728a89d1f Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 30 Jul 2018 15:52:06 +0900 Subject: [PATCH] Code cleanups --- .../Editor/VRMHumanoidNormalizerMenu.cs | 5 ++-- Scripts/SkinnedMeshUtility/BoneNormalizer.cs | 29 +++++++------------ Scripts/SkinnedMeshUtility/MeshExtensions.cs | 3 ++ 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/Scripts/Format/Editor/VRMHumanoidNormalizerMenu.cs b/Scripts/Format/Editor/VRMHumanoidNormalizerMenu.cs index f990d15b9..55c7f7bc9 100644 --- a/Scripts/Format/Editor/VRMHumanoidNormalizerMenu.cs +++ b/Scripts/Format/Editor/VRMHumanoidNormalizerMenu.cs @@ -47,11 +47,12 @@ namespace VRM private static void ExportFromMenu() { var go = Selection.activeObject as GameObject; - Undo.RecordObjects(go.transform.Traverse().ToArray(), "before normalize"); var normalized = VRM.BoneNormalizer.Execute(go, true); VRMExportSettings.CopyVRMComponents(go, normalized.Root, normalized.BoneMap); - Undo.PerformUndo(); + Selection.activeGameObject = normalized.Root; + + Undo.RegisterCreatedObjectUndo(normalized.Root, "normalize"); } } } diff --git a/Scripts/SkinnedMeshUtility/BoneNormalizer.cs b/Scripts/SkinnedMeshUtility/BoneNormalizer.cs index 59933612f..48e3cb661 100644 --- a/Scripts/SkinnedMeshUtility/BoneNormalizer.cs +++ b/Scripts/SkinnedMeshUtility/BoneNormalizer.cs @@ -121,24 +121,20 @@ namespace VRM } /// - /// 各メッシュから回転・スケールを取り除いてBinding行列を再計算する + /// srcのSkinnedMeshRendererを正規化して、dstにアタッチする /// - /// - /// - /// + /// 正規化前のSkinnedMeshRendererのTransform + /// 正規化後のSkinnedMeshRendererのTransform + /// 正規化前のボーンから正規化後のボーンを得る static void NormalizeSkinnedMesh(Transform src, Transform dst, Dictionary boneMap) { - // - // SkinnedMesh - // var srcRenderer = src.GetComponent(); - if (srcRenderer != null && srcRenderer.enabled - && srcRenderer.sharedMesh != null - && srcRenderer.sharedMesh.vertexCount > 0) - { - } - else + if (srcRenderer == null + || !srcRenderer.enabled + || srcRenderer.sharedMesh == null + || srcRenderer.sharedMesh.vertexCount == 0) { + // 有効なSkinnedMeshRendererが無かった return; } @@ -149,12 +145,9 @@ namespace VRM srcRenderer.SetBlendShapeWeight(i, 0); } - var mesh = new Mesh(); + // BakeMesh + var mesh = srcMesh.Copy(); mesh.name = srcMesh.name + ".baked"; -#if UNITY_2017_3_OR_NEWER - mesh.indexFormat = srcMesh.indexFormat; -#endif - srcRenderer.BakeMesh(mesh); //var m = src.localToWorldMatrix; diff --git a/Scripts/SkinnedMeshUtility/MeshExtensions.cs b/Scripts/SkinnedMeshUtility/MeshExtensions.cs index eca854f44..e95143feb 100644 --- a/Scripts/SkinnedMeshUtility/MeshExtensions.cs +++ b/Scripts/SkinnedMeshUtility/MeshExtensions.cs @@ -10,6 +10,9 @@ namespace VRM { var dst = new Mesh(); dst.name = src.name + "(copy)"; +#if UNITY_2017_3_OR_NEWER + dst.indexFormat = src.indexFormat; +#endif dst.vertices = src.vertices; dst.normals = src.normals;