diff --git a/Assets/VRM10/Runtime/Migration/Migration.cs b/Assets/VRM10/Runtime/Migration/Migration.cs index 9f8dfc81d..6b90b83ab 100644 --- a/Assets/VRM10/Runtime/Migration/Migration.cs +++ b/Assets/VRM10/Runtime/Migration/Migration.cs @@ -177,24 +177,71 @@ namespace UniVRM10 case "allowedUserName": { - var allowdUserType = kv.Value.GetString(); - switch (allowdUserType) + var allowedUserName = kv.Value.GetString(); + switch (allowedUserName) { - case "Everyone": meta.AvatarPermission = UniGLTF.Extensions.VRMC_vrm.AvatarPermissionType.everyone; break; - default: throw new NotImplementedException($"allowedUser: {allowdUserType}"); + case "OnlyAuthor": + meta.AvatarPermission = UniGLTF.Extensions.VRMC_vrm.AvatarPermissionType.onlyAuthor; + break; + case "ExplicitlyLicensedPerson": + meta.AvatarPermission = UniGLTF.Extensions.VRMC_vrm.AvatarPermissionType.explicitlyLicensedPerson; + break; + case "Everyone": + meta.AvatarPermission = UniGLTF.Extensions.VRMC_vrm.AvatarPermissionType.everyone; + break; + default: + throw new NotImplementedException($"{key}: {allowedUserName}"); } } break; - case "violentUssageName": meta.AllowExcessivelyViolentUsage = kv.Value.GetString().ToLower() == "allow"; break; - case "sexualUssageName": meta.AllowExcessivelySexualUsage = kv.Value.GetString().ToLower() == "allow"; break; - case "commercialUssageName": + case "violentUssageName": // Typo "Ussage" is VRM 0.x spec. { - var commercialUssageType = kv.Value.GetString(); - switch (commercialUssageType) + var violentUsageName = kv.Value.GetString(); + switch (violentUsageName) { - case "Allow": meta.CommercialUsage = UniGLTF.Extensions.VRMC_vrm.CommercialUsageType.personalProfit; break; - default: meta.CommercialUsage = UniGLTF.Extensions.VRMC_vrm.CommercialUsageType.personalNonProfit; break; + case "allow": + meta.AllowExcessivelyViolentUsage = true; + break; + case "disallow": + meta.AllowExcessivelyViolentUsage = false; + break; + default: + throw new NotImplementedException($"{key}: {violentUsageName}"); + } + } + break; + + case "sexualUssageName": // Typo "Ussage" is VRM 0.x spec. + { + var sexualUsageName = kv.Value.GetString(); + switch (sexualUsageName) + { + case "Allow": + meta.AllowExcessivelySexualUsage = true; + break; + case "Disallow": + meta.AllowExcessivelySexualUsage = false; + break; + default: + throw new NotImplementedException($"{key}: {sexualUsageName}"); + } + } + break; + + case "commercialUssageName": // Typo "Ussage" is VRM 0.x spec. + { + var commercialUsageName = kv.Value.GetString(); + switch (commercialUsageName) + { + case "Allow": + meta.CommercialUsage = UniGLTF.Extensions.VRMC_vrm.CommercialUsageType.personalProfit; + break; + case "Disallow": + meta.CommercialUsage = UniGLTF.Extensions.VRMC_vrm.CommercialUsageType.personalNonProfit; + break; + default: + throw new NotImplementedException($"{key}: {commercialUsageName}"); } } break; @@ -445,7 +492,7 @@ namespace UniVRM10 { var meshIndex = x["mesh"].GetInt32(); var morphTargetIndex = x["index"].GetInt32(); - var weight = x["weight"].GetInt32(); + var weight = x["weight"].GetSingle(); var bind = new UniGLTF.Extensions.VRMC_vrm.MorphTargetBind(); diff --git a/Assets/VRM10/Runtime/UnityBuilder/MeshLoader.cs b/Assets/VRM10/Runtime/UnityBuilder/MeshLoader.cs index 3f27534cc..d199dd2f8 100644 --- a/Assets/VRM10/Runtime/UnityBuilder/MeshLoader.cs +++ b/Assets/VRM10/Runtime/UnityBuilder/MeshLoader.cs @@ -46,29 +46,12 @@ namespace UniVRM10 } mesh.subMeshCount = src.Submeshes.Count; - -#if UNITY_2019 - var triangles = src.IndexBuffer.GetAsIntArray(); - mesh.triangles = triangles; - var flags = MeshUpdateFlags.DontRecalculateBounds | MeshUpdateFlags.DontResetBoneBounds; - for (int i = 0; i < src.Submeshes.Count; ++i) - { - var submesh = src.Submeshes[i]; - mesh.SetSubMesh(i, new SubMeshDescriptor - { - indexStart = submesh.Offset, - indexCount = submesh.DrawCount, - }, - flags); - } -#else var triangles = src.IndexBuffer.GetAsIntList(); for (int i = 0; i < src.Submeshes.Count; ++i) { var submesh = src.Submeshes[i]; mesh.SetTriangles(triangles.GetRange(submesh.Offset, submesh.DrawCount), i); } -#endif foreach (var morphTarget in src.MorphTargets) { @@ -78,10 +61,10 @@ namespace UniVRM10 : new Vector3[mesh.vertexCount] // dummy ; mesh.AddBlendShapeFrame(morphTarget.Name, 100.0f, positions, null, null); - - mesh.RecalculateBounds(); - mesh.RecalculateTangents(); } + + mesh.RecalculateBounds(); + mesh.RecalculateTangents(); } } }