diff --git a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs index 778923f5f..09d7bd788 100644 --- a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs +++ b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs @@ -320,23 +320,33 @@ namespace VRM mesh.name = src.name + "(transformed)"; mesh.vertices = src.vertices.Select(x => m.MultiplyPoint(x)).ToArray(); - if(src.normals!=null)mesh.normals = src.normals.Select(x => m.MultiplyVector(x)).ToArray(); - if(src.tangents!=null)mesh.tangents = src.tangents.Select(x => + if (src.normals != null && src.normals.Length > 0) { - var v = m.MultiplyVector(x); - return new Vector4(v.x, v.y, v.z, x.w); - }).ToArray(); - mesh.uv = src.uv; - mesh.uv2 = src.uv2; - mesh.uv3 = src.uv3; - mesh.uv4 = src.uv4; - mesh.colors = src.colors; + mesh.normals = src.normals.Select(x => m.MultiplyVector(x)).ToArray(); + } + if (src.tangents != null && src.tangents.Length > 0) + { + mesh.tangents = src.tangents.Select(x => + { + var t = m.MultiplyVector((Vector3)x); + return new Vector4(t.x, t.y, t.z, x.w); + }).ToArray(); + } + + if (src.colors != null && src.colors.Length > 0) mesh.colors = src.colors; + if (src.uv != null && src.uv.Length > 0) mesh.uv = src.uv; + if (src.uv2 != null && src.uv2.Length > 0) mesh.uv2 = src.uv2; + if (src.uv3 != null && src.uv3.Length > 0) mesh.uv3 = src.uv3; + if (src.uv4 != null && src.uv4.Length > 0) mesh.uv4 = src.uv4; + mesh.subMeshCount = src.subMeshCount; for(int i=0; i