Merge pull request #707 from Santarh/migrateErrorFix

Fix VRM 0.x to VRM1.x migration errors.
This commit is contained in:
ousttrue 2021-01-29 18:46:48 +09:00 committed by GitHub
commit a2c27929b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 32 deletions

View File

@ -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();

View File

@ -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();
}
}
}