Merge pull request #1305 from ousttrue/fix10/fix_migrate_load

[1.0] Migration の修正
This commit is contained in:
ousttrue
2021-10-14 17:36:38 +09:00
committed by GitHub
3 changed files with 39 additions and 28 deletions

View File

@@ -82,6 +82,7 @@ namespace UniVRM10
var uv = AddAccessor<Vector2>(mesh.VertexBuffer.TexCoords);
var weights = AddAccessor<Vector4>(mesh.VertexBuffer.Weights);
var joints = AddAccessor<UShort4>(mesh.VertexBuffer.Joints);
var color = AddAccessor<Vector4>(mesh.VertexBuffer.Colors);
var morphTargets = new MorphAccessor[] { };
if (mesh.MorphTargets != null)
@@ -99,13 +100,17 @@ namespace UniVRM10
gltfPrim.indices = AddAccessor(subIndices);
gltfPrim.attributes.POSITION = position.Value;
gltfPrim.attributes.NORMAL = normal.Value;
gltfPrim.attributes.TANGENT = -1;
gltfPrim.attributes.COLOR_0 = color.GetValueOrDefault(-1);
gltfPrim.attributes.TEXCOORD_0 = uv.Value;
gltfPrim.attributes.TEXCOORD_1 = -1;
gltfPrim.attributes.WEIGHTS_0 = weights.GetValueOrDefault(-1);
gltfPrim.attributes.JOINTS_0 = joints.GetValueOrDefault(-1);
foreach (var (gltfMorph, morph) in Enumerable.Zip(gltfPrim.targets, morphTargets, (l, r) => (l, r)))
{
gltfMorph.POSITION = morph.Position.GetValueOrDefault(-1);
gltfMorph.NORMAL = morph.Normal.GetValueOrDefault(-1);
gltfMorph.TANGENT = -1;
}
}
}

View File

@@ -129,10 +129,13 @@ namespace UniVRM10
// その差異に対応して、7cmの遠さに node を追加する。
foreach (var x in sa["boneGroups"].ArrayItems())
{
foreach (var y in x["bones"].ArrayItems())
if (x.ContainsKey("bones"))
{
var joints = TraverseFirstChild(gltf.nodes, gltf.nodes[y.GetInt32()]).ToArray();
AddTail7cm(gltf, joints);
foreach (var y in x["bones"].ArrayItems())
{
var joints = TraverseFirstChild(gltf.nodes, gltf.nodes[y.GetInt32()]).ToArray();
AddTail7cm(gltf, joints);
}
}
}
@@ -163,30 +166,33 @@ namespace UniVRM10
// 5
// ]
// },
foreach (var y in x["bones"].ArrayItems())
if (x.ContainsKey("bones"))
{
var comment = x.GetObjectValueOrDefault("comment", "");
var spring = new UniGLTF.Extensions.VRMC_springBone.Spring
foreach (var y in x["bones"].ArrayItems())
{
Name = comment,
ColliderGroups = x["colliderGroups"].ArrayItems().Select(z => z.GetInt32()).ToArray(),
Joints = new List<UniGLTF.Extensions.VRMC_springBone.SpringBoneJoint>(),
};
foreach (var z in TraverseFirstChild(gltf.nodes, gltf.nodes[y.GetInt32()]))
{
spring.Joints.Add(new UniGLTF.Extensions.VRMC_springBone.SpringBoneJoint
var comment = x.GetObjectValueOrDefault("comment", "");
var spring = new UniGLTF.Extensions.VRMC_springBone.Spring
{
Node = gltf.nodes.IndexOf(z),
DragForce = x["dragForce"].GetSingle(),
GravityDir = MigrateVector3.Migrate(x["gravityDir"]),
GravityPower = x["gravityPower"].GetSingle(),
HitRadius = x["hitRadius"].GetSingle(),
Stiffness = x["stiffiness"].GetSingle(),
});
}
Name = comment,
ColliderGroups = x["colliderGroups"].ArrayItems().Select(z => z.GetInt32()).ToArray(),
Joints = new List<UniGLTF.Extensions.VRMC_springBone.SpringBoneJoint>(),
};
springBone.Springs.Add(spring);
foreach (var z in TraverseFirstChild(gltf.nodes, gltf.nodes[y.GetInt32()]))
{
spring.Joints.Add(new UniGLTF.Extensions.VRMC_springBone.SpringBoneJoint
{
Node = gltf.nodes.IndexOf(z),
DragForce = x["dragForce"].GetSingle(),
GravityDir = MigrateVector3.Migrate(x["gravityDir"]),
GravityPower = x["gravityPower"].GetSingle(),
HitRadius = x["hitRadius"].GetSingle(),
Stiffness = x["stiffiness"].GetSingle(),
});
}
springBone.Springs.Add(spring);
}
}
}

View File

@@ -198,13 +198,13 @@ namespace UniVRM10
foreach (var gltf in EnumerateGltfFiles(root))
{
var bytes = File.ReadAllBytes(gltf.FullName);
try
{
var migrated = MigrationVrm.Migrate(bytes);
var data = new GlbLowLevelParser(gltf.FullName, migrated).Parse();
UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.TryGet(data.GLTF.extensions, out UniGLTF.Extensions.VRMC_vrm.VRMC_vrm vrm);
Assert.NotNull(vrm);
Vrm10Data.TryParseOrMigrate(gltf.FullName, true, out Vrm10Data vrm);
using (var loader = new Vrm10Importer(vrm))
{
loader.LoadAsync().Wait();
}
}
catch (UnNormalizedException)
{