mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-28 13:54:45 -05:00
Merge pull request #1305 from ousttrue/fix10/fix_migrate_load
[1.0] Migration の修正
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user