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;