diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/NodeImporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/NodeImporter.cs index df8e4832e..b0356fd70 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/NodeImporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/NodeImporter.cs @@ -8,9 +8,14 @@ namespace UniGLTF { public static class NodeImporter { + static int n = 0; public static GameObject ImportNode(glTFNode node, int nodeIndex) { var nodeName = node.name; + if (nodeName == "ENDSITE") + { + nodeName = $"ENDSITE{n++}"; + } if (!string.IsNullOrEmpty(nodeName) && nodeName.Contains("/")) { Debug.LogWarningFormat("node {0} contains /. replace _", node.name); @@ -120,7 +125,7 @@ namespace UniGLTF // invisible in loading renderer.enabled = false; - if (mesh.ShouldSetRendererNodeAsBone ) + if (mesh.ShouldSetRendererNodeAsBone) { renderer.bones = new[] { renderer.transform }; diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/IO/BvhImporterContext.cs b/Assets/UniGLTF/Runtime/UniHumanoid/IO/BvhImporterContext.cs index 5bdf53d8b..8bdafda8f 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/IO/BvhImporterContext.cs +++ b/Assets/UniGLTF/Runtime/UniHumanoid/IO/BvhImporterContext.cs @@ -95,15 +95,6 @@ namespace UniHumanoid hips.position = new Vector3(0, scaledHeight, 0); // foot to ground } - // - // avatar - // - Avatar = description.CreateAvatar(Root.transform); - Avatar.name = "Avatar"; - AvatarDescription = description; - var animator = Root.AddComponent(); - animator.avatar = Avatar; - // // create AnimationClip // @@ -117,15 +108,14 @@ namespace UniHumanoid animation.clip = Animation; animation.Play(); - var humanPoseTransfer = Root.AddComponent(); - humanPoseTransfer.Avatar = Avatar; - - // create SkinnedMesh for bone visualize - var renderer = SkeletonMeshUtility.CreateRenderer(animator); - Material = new Material(Shader.Find("Standard")); - renderer.sharedMaterial = Material; - Mesh = renderer.sharedMesh; - Mesh.name = "box-man"; + // + // avatar + // + Avatar = description.CreateAvatar(Root.transform); + Avatar.name = "Avatar"; + AvatarDescription = description; + var animator = Root.AddComponent(); + animator.avatar = Avatar; } static Transform BuildHierarchy(Transform parent, BvhNode node, float toMeter) diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs b/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs index 486432692..eed24c030 100644 --- a/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs +++ b/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs @@ -19,6 +19,7 @@ namespace UniVRM10 Transform m_root; Transform m_hips; private readonly Dictionary m_bones = new Dictionary(); + private readonly Dictionary m_worldMap = new Dictionary(); public Vector3 HipTPoseWorldPosition => throw new System.NotImplementedException(); @@ -28,6 +29,7 @@ namespace UniVRM10 foreach (var (t, bone) in humanoid.BoneMap) { m_bones.Add(bone, new BoneInitialRotation(t)); + m_worldMap.Add(bone, new EuclideanTransform(root.localToWorldMatrix * t.localToWorldMatrix)); } m_hips = m_bones[HumanBodyBones.Hips].Transform; } @@ -53,13 +55,20 @@ namespace UniVRM10 } else { - throw new System.NotImplementedException(); + return m_root.worldToLocalMatrix.MultiplyPoint(m_hips.position); } } EuclideanTransform? ITPoseProvider.GetWorldTransform(HumanBodyBones bone) { - throw new System.NotImplementedException(); + if (m_worldMap.TryGetValue(bone, out var t)) + { + return t; + } + else + { + return default; + } } } } diff --git a/Assets/VRM10/Runtime/Format/Animation/Deserializer.g.cs b/Assets/VRM10/Runtime/Format/Animation/Deserializer.g.cs index ce629ef61..d74221b5b 100644 --- a/Assets/VRM10/Runtime/Format/Animation/Deserializer.g.cs +++ b/Assets/VRM10/Runtime/Format/Animation/Deserializer.g.cs @@ -75,6 +75,33 @@ public static Humanoid Deserialize_Humanoid(JsonNode parsed) { var value = new Humanoid(); + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="extensions"){ + value.Extensions = new glTFExtensionImport(kv.Value); + continue; + } + + if(key=="extras"){ + value.Extras = new glTFExtensionImport(kv.Value); + continue; + } + + if(key=="humanBones"){ + value.HumanBones = __humanoid_Deserialize_HumanBones(kv.Value); + continue; + } + + } + return value; +} + +public static HumanBones __humanoid_Deserialize_HumanBones(JsonNode parsed) +{ + var value = new HumanBones(); + foreach(var kv in parsed.ObjectItems()) { var key = kv.Key.GetString(); @@ -90,267 +117,267 @@ public static Humanoid Deserialize_Humanoid(JsonNode parsed) } if(key=="hips"){ - value.Hips = __humanoid_Deserialize_Hips(kv.Value); + value.Hips = __humanoid__humanBones_Deserialize_Hips(kv.Value); continue; } if(key=="spine"){ - value.Spine = __humanoid_Deserialize_Spine(kv.Value); + value.Spine = __humanoid__humanBones_Deserialize_Spine(kv.Value); continue; } if(key=="chest"){ - value.Chest = __humanoid_Deserialize_Chest(kv.Value); + value.Chest = __humanoid__humanBones_Deserialize_Chest(kv.Value); continue; } if(key=="upperChest"){ - value.UpperChest = __humanoid_Deserialize_UpperChest(kv.Value); + value.UpperChest = __humanoid__humanBones_Deserialize_UpperChest(kv.Value); continue; } if(key=="neck"){ - value.Neck = __humanoid_Deserialize_Neck(kv.Value); + value.Neck = __humanoid__humanBones_Deserialize_Neck(kv.Value); continue; } if(key=="head"){ - value.Head = __humanoid_Deserialize_Head(kv.Value); + value.Head = __humanoid__humanBones_Deserialize_Head(kv.Value); continue; } if(key=="jaw"){ - value.Jaw = __humanoid_Deserialize_Jaw(kv.Value); + value.Jaw = __humanoid__humanBones_Deserialize_Jaw(kv.Value); continue; } if(key=="leftUpperLeg"){ - value.LeftUpperLeg = __humanoid_Deserialize_LeftUpperLeg(kv.Value); + value.LeftUpperLeg = __humanoid__humanBones_Deserialize_LeftUpperLeg(kv.Value); continue; } if(key=="leftLowerLeg"){ - value.LeftLowerLeg = __humanoid_Deserialize_LeftLowerLeg(kv.Value); + value.LeftLowerLeg = __humanoid__humanBones_Deserialize_LeftLowerLeg(kv.Value); continue; } if(key=="leftFoot"){ - value.LeftFoot = __humanoid_Deserialize_LeftFoot(kv.Value); + value.LeftFoot = __humanoid__humanBones_Deserialize_LeftFoot(kv.Value); continue; } if(key=="leftToes"){ - value.LeftToes = __humanoid_Deserialize_LeftToes(kv.Value); + value.LeftToes = __humanoid__humanBones_Deserialize_LeftToes(kv.Value); continue; } if(key=="rightUpperLeg"){ - value.RightUpperLeg = __humanoid_Deserialize_RightUpperLeg(kv.Value); + value.RightUpperLeg = __humanoid__humanBones_Deserialize_RightUpperLeg(kv.Value); continue; } if(key=="rightLowerLeg"){ - value.RightLowerLeg = __humanoid_Deserialize_RightLowerLeg(kv.Value); + value.RightLowerLeg = __humanoid__humanBones_Deserialize_RightLowerLeg(kv.Value); continue; } if(key=="rightFoot"){ - value.RightFoot = __humanoid_Deserialize_RightFoot(kv.Value); + value.RightFoot = __humanoid__humanBones_Deserialize_RightFoot(kv.Value); continue; } if(key=="rightToes"){ - value.RightToes = __humanoid_Deserialize_RightToes(kv.Value); + value.RightToes = __humanoid__humanBones_Deserialize_RightToes(kv.Value); continue; } if(key=="leftShoulder"){ - value.LeftShoulder = __humanoid_Deserialize_LeftShoulder(kv.Value); + value.LeftShoulder = __humanoid__humanBones_Deserialize_LeftShoulder(kv.Value); continue; } if(key=="leftUpperArm"){ - value.LeftUpperArm = __humanoid_Deserialize_LeftUpperArm(kv.Value); + value.LeftUpperArm = __humanoid__humanBones_Deserialize_LeftUpperArm(kv.Value); continue; } if(key=="leftLowerArm"){ - value.LeftLowerArm = __humanoid_Deserialize_LeftLowerArm(kv.Value); + value.LeftLowerArm = __humanoid__humanBones_Deserialize_LeftLowerArm(kv.Value); continue; } if(key=="leftHand"){ - value.LeftHand = __humanoid_Deserialize_LeftHand(kv.Value); + value.LeftHand = __humanoid__humanBones_Deserialize_LeftHand(kv.Value); continue; } if(key=="rightShoulder"){ - value.RightShoulder = __humanoid_Deserialize_RightShoulder(kv.Value); + value.RightShoulder = __humanoid__humanBones_Deserialize_RightShoulder(kv.Value); continue; } if(key=="rightUpperArm"){ - value.RightUpperArm = __humanoid_Deserialize_RightUpperArm(kv.Value); + value.RightUpperArm = __humanoid__humanBones_Deserialize_RightUpperArm(kv.Value); continue; } if(key=="rightLowerArm"){ - value.RightLowerArm = __humanoid_Deserialize_RightLowerArm(kv.Value); + value.RightLowerArm = __humanoid__humanBones_Deserialize_RightLowerArm(kv.Value); continue; } if(key=="rightHand"){ - value.RightHand = __humanoid_Deserialize_RightHand(kv.Value); + value.RightHand = __humanoid__humanBones_Deserialize_RightHand(kv.Value); continue; } if(key=="leftThumbMetacarpal"){ - value.LeftThumbMetacarpal = __humanoid_Deserialize_LeftThumbMetacarpal(kv.Value); + value.LeftThumbMetacarpal = __humanoid__humanBones_Deserialize_LeftThumbMetacarpal(kv.Value); continue; } if(key=="leftThumbProximal"){ - value.LeftThumbProximal = __humanoid_Deserialize_LeftThumbProximal(kv.Value); + value.LeftThumbProximal = __humanoid__humanBones_Deserialize_LeftThumbProximal(kv.Value); continue; } if(key=="leftThumbDistal"){ - value.LeftThumbDistal = __humanoid_Deserialize_LeftThumbDistal(kv.Value); + value.LeftThumbDistal = __humanoid__humanBones_Deserialize_LeftThumbDistal(kv.Value); continue; } if(key=="leftIndexProximal"){ - value.LeftIndexProximal = __humanoid_Deserialize_LeftIndexProximal(kv.Value); + value.LeftIndexProximal = __humanoid__humanBones_Deserialize_LeftIndexProximal(kv.Value); continue; } if(key=="leftIndexIntermediate"){ - value.LeftIndexIntermediate = __humanoid_Deserialize_LeftIndexIntermediate(kv.Value); + value.LeftIndexIntermediate = __humanoid__humanBones_Deserialize_LeftIndexIntermediate(kv.Value); continue; } if(key=="leftIndexDistal"){ - value.LeftIndexDistal = __humanoid_Deserialize_LeftIndexDistal(kv.Value); + value.LeftIndexDistal = __humanoid__humanBones_Deserialize_LeftIndexDistal(kv.Value); continue; } if(key=="leftMiddleProximal"){ - value.LeftMiddleProximal = __humanoid_Deserialize_LeftMiddleProximal(kv.Value); + value.LeftMiddleProximal = __humanoid__humanBones_Deserialize_LeftMiddleProximal(kv.Value); continue; } if(key=="leftMiddleIntermediate"){ - value.LeftMiddleIntermediate = __humanoid_Deserialize_LeftMiddleIntermediate(kv.Value); + value.LeftMiddleIntermediate = __humanoid__humanBones_Deserialize_LeftMiddleIntermediate(kv.Value); continue; } if(key=="leftMiddleDistal"){ - value.LeftMiddleDistal = __humanoid_Deserialize_LeftMiddleDistal(kv.Value); + value.LeftMiddleDistal = __humanoid__humanBones_Deserialize_LeftMiddleDistal(kv.Value); continue; } if(key=="leftRingProximal"){ - value.LeftRingProximal = __humanoid_Deserialize_LeftRingProximal(kv.Value); + value.LeftRingProximal = __humanoid__humanBones_Deserialize_LeftRingProximal(kv.Value); continue; } if(key=="leftRingIntermediate"){ - value.LeftRingIntermediate = __humanoid_Deserialize_LeftRingIntermediate(kv.Value); + value.LeftRingIntermediate = __humanoid__humanBones_Deserialize_LeftRingIntermediate(kv.Value); continue; } if(key=="leftRingDistal"){ - value.LeftRingDistal = __humanoid_Deserialize_LeftRingDistal(kv.Value); + value.LeftRingDistal = __humanoid__humanBones_Deserialize_LeftRingDistal(kv.Value); continue; } if(key=="leftLittleProximal"){ - value.LeftLittleProximal = __humanoid_Deserialize_LeftLittleProximal(kv.Value); + value.LeftLittleProximal = __humanoid__humanBones_Deserialize_LeftLittleProximal(kv.Value); continue; } if(key=="leftLittleIntermediate"){ - value.LeftLittleIntermediate = __humanoid_Deserialize_LeftLittleIntermediate(kv.Value); + value.LeftLittleIntermediate = __humanoid__humanBones_Deserialize_LeftLittleIntermediate(kv.Value); continue; } if(key=="leftLittleDistal"){ - value.LeftLittleDistal = __humanoid_Deserialize_LeftLittleDistal(kv.Value); + value.LeftLittleDistal = __humanoid__humanBones_Deserialize_LeftLittleDistal(kv.Value); continue; } if(key=="rightThumbMetacarpal"){ - value.RightThumbMetacarpal = __humanoid_Deserialize_RightThumbMetacarpal(kv.Value); + value.RightThumbMetacarpal = __humanoid__humanBones_Deserialize_RightThumbMetacarpal(kv.Value); continue; } if(key=="rightThumbProximal"){ - value.RightThumbProximal = __humanoid_Deserialize_RightThumbProximal(kv.Value); + value.RightThumbProximal = __humanoid__humanBones_Deserialize_RightThumbProximal(kv.Value); continue; } if(key=="rightThumbDistal"){ - value.RightThumbDistal = __humanoid_Deserialize_RightThumbDistal(kv.Value); + value.RightThumbDistal = __humanoid__humanBones_Deserialize_RightThumbDistal(kv.Value); continue; } if(key=="rightIndexProximal"){ - value.RightIndexProximal = __humanoid_Deserialize_RightIndexProximal(kv.Value); + value.RightIndexProximal = __humanoid__humanBones_Deserialize_RightIndexProximal(kv.Value); continue; } if(key=="rightIndexIntermediate"){ - value.RightIndexIntermediate = __humanoid_Deserialize_RightIndexIntermediate(kv.Value); + value.RightIndexIntermediate = __humanoid__humanBones_Deserialize_RightIndexIntermediate(kv.Value); continue; } if(key=="rightIndexDistal"){ - value.RightIndexDistal = __humanoid_Deserialize_RightIndexDistal(kv.Value); + value.RightIndexDistal = __humanoid__humanBones_Deserialize_RightIndexDistal(kv.Value); continue; } if(key=="rightMiddleProximal"){ - value.RightMiddleProximal = __humanoid_Deserialize_RightMiddleProximal(kv.Value); + value.RightMiddleProximal = __humanoid__humanBones_Deserialize_RightMiddleProximal(kv.Value); continue; } if(key=="rightMiddleIntermediate"){ - value.RightMiddleIntermediate = __humanoid_Deserialize_RightMiddleIntermediate(kv.Value); + value.RightMiddleIntermediate = __humanoid__humanBones_Deserialize_RightMiddleIntermediate(kv.Value); continue; } if(key=="rightMiddleDistal"){ - value.RightMiddleDistal = __humanoid_Deserialize_RightMiddleDistal(kv.Value); + value.RightMiddleDistal = __humanoid__humanBones_Deserialize_RightMiddleDistal(kv.Value); continue; } if(key=="rightRingProximal"){ - value.RightRingProximal = __humanoid_Deserialize_RightRingProximal(kv.Value); + value.RightRingProximal = __humanoid__humanBones_Deserialize_RightRingProximal(kv.Value); continue; } if(key=="rightRingIntermediate"){ - value.RightRingIntermediate = __humanoid_Deserialize_RightRingIntermediate(kv.Value); + value.RightRingIntermediate = __humanoid__humanBones_Deserialize_RightRingIntermediate(kv.Value); continue; } if(key=="rightRingDistal"){ - value.RightRingDistal = __humanoid_Deserialize_RightRingDistal(kv.Value); + value.RightRingDistal = __humanoid__humanBones_Deserialize_RightRingDistal(kv.Value); continue; } if(key=="rightLittleProximal"){ - value.RightLittleProximal = __humanoid_Deserialize_RightLittleProximal(kv.Value); + value.RightLittleProximal = __humanoid__humanBones_Deserialize_RightLittleProximal(kv.Value); continue; } if(key=="rightLittleIntermediate"){ - value.RightLittleIntermediate = __humanoid_Deserialize_RightLittleIntermediate(kv.Value); + value.RightLittleIntermediate = __humanoid__humanBones_Deserialize_RightLittleIntermediate(kv.Value); continue; } if(key=="rightLittleDistal"){ - value.RightLittleDistal = __humanoid_Deserialize_RightLittleDistal(kv.Value); + value.RightLittleDistal = __humanoid__humanBones_Deserialize_RightLittleDistal(kv.Value); continue; } @@ -358,7 +385,7 @@ public static Humanoid Deserialize_Humanoid(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_Hips(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_Hips(JsonNode parsed) { var value = new HumanBone(); @@ -385,7 +412,7 @@ public static HumanBone __humanoid_Deserialize_Hips(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_Spine(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_Spine(JsonNode parsed) { var value = new HumanBone(); @@ -412,7 +439,7 @@ public static HumanBone __humanoid_Deserialize_Spine(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_Chest(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_Chest(JsonNode parsed) { var value = new HumanBone(); @@ -439,7 +466,7 @@ public static HumanBone __humanoid_Deserialize_Chest(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_UpperChest(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_UpperChest(JsonNode parsed) { var value = new HumanBone(); @@ -466,7 +493,7 @@ public static HumanBone __humanoid_Deserialize_UpperChest(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_Neck(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_Neck(JsonNode parsed) { var value = new HumanBone(); @@ -493,7 +520,7 @@ public static HumanBone __humanoid_Deserialize_Neck(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_Head(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_Head(JsonNode parsed) { var value = new HumanBone(); @@ -520,7 +547,7 @@ public static HumanBone __humanoid_Deserialize_Head(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_Jaw(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_Jaw(JsonNode parsed) { var value = new HumanBone(); @@ -547,7 +574,7 @@ public static HumanBone __humanoid_Deserialize_Jaw(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftUpperLeg(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftUpperLeg(JsonNode parsed) { var value = new HumanBone(); @@ -574,7 +601,7 @@ public static HumanBone __humanoid_Deserialize_LeftUpperLeg(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftLowerLeg(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftLowerLeg(JsonNode parsed) { var value = new HumanBone(); @@ -601,7 +628,7 @@ public static HumanBone __humanoid_Deserialize_LeftLowerLeg(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftFoot(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftFoot(JsonNode parsed) { var value = new HumanBone(); @@ -628,7 +655,7 @@ public static HumanBone __humanoid_Deserialize_LeftFoot(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftToes(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftToes(JsonNode parsed) { var value = new HumanBone(); @@ -655,7 +682,7 @@ public static HumanBone __humanoid_Deserialize_LeftToes(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightUpperLeg(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightUpperLeg(JsonNode parsed) { var value = new HumanBone(); @@ -682,7 +709,7 @@ public static HumanBone __humanoid_Deserialize_RightUpperLeg(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightLowerLeg(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightLowerLeg(JsonNode parsed) { var value = new HumanBone(); @@ -709,7 +736,7 @@ public static HumanBone __humanoid_Deserialize_RightLowerLeg(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightFoot(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightFoot(JsonNode parsed) { var value = new HumanBone(); @@ -736,7 +763,7 @@ public static HumanBone __humanoid_Deserialize_RightFoot(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightToes(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightToes(JsonNode parsed) { var value = new HumanBone(); @@ -763,7 +790,7 @@ public static HumanBone __humanoid_Deserialize_RightToes(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftShoulder(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftShoulder(JsonNode parsed) { var value = new HumanBone(); @@ -790,7 +817,7 @@ public static HumanBone __humanoid_Deserialize_LeftShoulder(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftUpperArm(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftUpperArm(JsonNode parsed) { var value = new HumanBone(); @@ -817,7 +844,7 @@ public static HumanBone __humanoid_Deserialize_LeftUpperArm(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftLowerArm(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftLowerArm(JsonNode parsed) { var value = new HumanBone(); @@ -844,7 +871,7 @@ public static HumanBone __humanoid_Deserialize_LeftLowerArm(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftHand(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftHand(JsonNode parsed) { var value = new HumanBone(); @@ -871,7 +898,7 @@ public static HumanBone __humanoid_Deserialize_LeftHand(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightShoulder(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightShoulder(JsonNode parsed) { var value = new HumanBone(); @@ -898,7 +925,7 @@ public static HumanBone __humanoid_Deserialize_RightShoulder(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightUpperArm(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightUpperArm(JsonNode parsed) { var value = new HumanBone(); @@ -925,7 +952,7 @@ public static HumanBone __humanoid_Deserialize_RightUpperArm(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightLowerArm(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightLowerArm(JsonNode parsed) { var value = new HumanBone(); @@ -952,7 +979,7 @@ public static HumanBone __humanoid_Deserialize_RightLowerArm(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightHand(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightHand(JsonNode parsed) { var value = new HumanBone(); @@ -979,7 +1006,7 @@ public static HumanBone __humanoid_Deserialize_RightHand(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftThumbMetacarpal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftThumbMetacarpal(JsonNode parsed) { var value = new HumanBone(); @@ -1006,7 +1033,7 @@ public static HumanBone __humanoid_Deserialize_LeftThumbMetacarpal(JsonNode pars return value; } -public static HumanBone __humanoid_Deserialize_LeftThumbProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftThumbProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1033,7 +1060,7 @@ public static HumanBone __humanoid_Deserialize_LeftThumbProximal(JsonNode parsed return value; } -public static HumanBone __humanoid_Deserialize_LeftThumbDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftThumbDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1060,7 +1087,7 @@ public static HumanBone __humanoid_Deserialize_LeftThumbDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftIndexProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftIndexProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1087,7 +1114,7 @@ public static HumanBone __humanoid_Deserialize_LeftIndexProximal(JsonNode parsed return value; } -public static HumanBone __humanoid_Deserialize_LeftIndexIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftIndexIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1114,7 +1141,7 @@ public static HumanBone __humanoid_Deserialize_LeftIndexIntermediate(JsonNode pa return value; } -public static HumanBone __humanoid_Deserialize_LeftIndexDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftIndexDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1141,7 +1168,7 @@ public static HumanBone __humanoid_Deserialize_LeftIndexDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftMiddleProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftMiddleProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1168,7 +1195,7 @@ public static HumanBone __humanoid_Deserialize_LeftMiddleProximal(JsonNode parse return value; } -public static HumanBone __humanoid_Deserialize_LeftMiddleIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftMiddleIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1195,7 +1222,7 @@ public static HumanBone __humanoid_Deserialize_LeftMiddleIntermediate(JsonNode p return value; } -public static HumanBone __humanoid_Deserialize_LeftMiddleDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftMiddleDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1222,7 +1249,7 @@ public static HumanBone __humanoid_Deserialize_LeftMiddleDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftRingProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftRingProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1249,7 +1276,7 @@ public static HumanBone __humanoid_Deserialize_LeftRingProximal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftRingIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftRingIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1276,7 +1303,7 @@ public static HumanBone __humanoid_Deserialize_LeftRingIntermediate(JsonNode par return value; } -public static HumanBone __humanoid_Deserialize_LeftRingDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftRingDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1303,7 +1330,7 @@ public static HumanBone __humanoid_Deserialize_LeftRingDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_LeftLittleProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftLittleProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1330,7 +1357,7 @@ public static HumanBone __humanoid_Deserialize_LeftLittleProximal(JsonNode parse return value; } -public static HumanBone __humanoid_Deserialize_LeftLittleIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftLittleIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1357,7 +1384,7 @@ public static HumanBone __humanoid_Deserialize_LeftLittleIntermediate(JsonNode p return value; } -public static HumanBone __humanoid_Deserialize_LeftLittleDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_LeftLittleDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1384,7 +1411,7 @@ public static HumanBone __humanoid_Deserialize_LeftLittleDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightThumbMetacarpal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightThumbMetacarpal(JsonNode parsed) { var value = new HumanBone(); @@ -1411,7 +1438,7 @@ public static HumanBone __humanoid_Deserialize_RightThumbMetacarpal(JsonNode par return value; } -public static HumanBone __humanoid_Deserialize_RightThumbProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightThumbProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1438,7 +1465,7 @@ public static HumanBone __humanoid_Deserialize_RightThumbProximal(JsonNode parse return value; } -public static HumanBone __humanoid_Deserialize_RightThumbDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightThumbDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1465,7 +1492,7 @@ public static HumanBone __humanoid_Deserialize_RightThumbDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightIndexProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightIndexProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1492,7 +1519,7 @@ public static HumanBone __humanoid_Deserialize_RightIndexProximal(JsonNode parse return value; } -public static HumanBone __humanoid_Deserialize_RightIndexIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightIndexIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1519,7 +1546,7 @@ public static HumanBone __humanoid_Deserialize_RightIndexIntermediate(JsonNode p return value; } -public static HumanBone __humanoid_Deserialize_RightIndexDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightIndexDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1546,7 +1573,7 @@ public static HumanBone __humanoid_Deserialize_RightIndexDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightMiddleProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightMiddleProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1573,7 +1600,7 @@ public static HumanBone __humanoid_Deserialize_RightMiddleProximal(JsonNode pars return value; } -public static HumanBone __humanoid_Deserialize_RightMiddleIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightMiddleIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1600,7 +1627,7 @@ public static HumanBone __humanoid_Deserialize_RightMiddleIntermediate(JsonNode return value; } -public static HumanBone __humanoid_Deserialize_RightMiddleDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightMiddleDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1627,7 +1654,7 @@ public static HumanBone __humanoid_Deserialize_RightMiddleDistal(JsonNode parsed return value; } -public static HumanBone __humanoid_Deserialize_RightRingProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightRingProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1654,7 +1681,7 @@ public static HumanBone __humanoid_Deserialize_RightRingProximal(JsonNode parsed return value; } -public static HumanBone __humanoid_Deserialize_RightRingIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightRingIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1681,7 +1708,7 @@ public static HumanBone __humanoid_Deserialize_RightRingIntermediate(JsonNode pa return value; } -public static HumanBone __humanoid_Deserialize_RightRingDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightRingDistal(JsonNode parsed) { var value = new HumanBone(); @@ -1708,7 +1735,7 @@ public static HumanBone __humanoid_Deserialize_RightRingDistal(JsonNode parsed) return value; } -public static HumanBone __humanoid_Deserialize_RightLittleProximal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightLittleProximal(JsonNode parsed) { var value = new HumanBone(); @@ -1735,7 +1762,7 @@ public static HumanBone __humanoid_Deserialize_RightLittleProximal(JsonNode pars return value; } -public static HumanBone __humanoid_Deserialize_RightLittleIntermediate(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightLittleIntermediate(JsonNode parsed) { var value = new HumanBone(); @@ -1762,7 +1789,7 @@ public static HumanBone __humanoid_Deserialize_RightLittleIntermediate(JsonNode return value; } -public static HumanBone __humanoid_Deserialize_RightLittleDistal(JsonNode parsed) +public static HumanBone __humanoid__humanBones_Deserialize_RightLittleDistal(JsonNode parsed) { var value = new HumanBone(); diff --git a/Assets/VRM10/Runtime/Format/Animation/Format.g.cs b/Assets/VRM10/Runtime/Format/Animation/Format.g.cs index 2ecde1a0b..df697d818 100644 --- a/Assets/VRM10/Runtime/Format/Animation/Format.g.cs +++ b/Assets/VRM10/Runtime/Format/Animation/Format.g.cs @@ -18,7 +18,7 @@ namespace UniGLTF.Extensions.VRMC_vrm_animation public int? Node; } - public class Humanoid + public class HumanBones { // Dictionary object with extension-specific objects. public object Extensions; @@ -186,6 +186,18 @@ namespace UniGLTF.Extensions.VRMC_vrm_animation public HumanBone RightLittleDistal; } + public class Humanoid + { + // Dictionary object with extension-specific objects. + public object Extensions; + + // Application-specific data. + public object Extras; + + // An object which maps humanoid bones to nodes. + public HumanBones HumanBones; + } + public class Expression { // Dictionary object with extension-specific objects. @@ -295,7 +307,7 @@ namespace UniGLTF.Extensions.VRMC_vrm_animation // Specification version of VRMC_vrm_animation public string SpecVersion; - // An object which maps humanoid bones to nodes. + // An object which describes about humanoid bones. public Humanoid Humanoid; // An object which maps expressions to nodes. diff --git a/Assets/VRM10/Runtime/Format/Animation/Serializer.g.cs b/Assets/VRM10/Runtime/Format/Animation/Serializer.g.cs index 23f4b8e47..d27bd05a6 100644 --- a/Assets/VRM10/Runtime/Format/Animation/Serializer.g.cs +++ b/Assets/VRM10/Runtime/Format/Animation/Serializer.g.cs @@ -71,6 +71,29 @@ public static void Serialize_Humanoid(JsonFormatter f, Humanoid value) f.BeginMap(); + if(value.Extensions!=null){ + f.Key("extensions"); + (value.Extensions as glTFExtension).Serialize(f); + } + + if(value.Extras!=null){ + f.Key("extras"); + (value.Extras as glTFExtension).Serialize(f); + } + + if(value.HumanBones!=null){ + f.Key("humanBones"); + __humanoid_Serialize_HumanBones(f, value.HumanBones); + } + + f.EndMap(); +} + +public static void __humanoid_Serialize_HumanBones(JsonFormatter f, HumanBones value) +{ + f.BeginMap(); + + if(value.Extensions!=null){ f.Key("extensions"); (value.Extensions as glTFExtension).Serialize(f); @@ -83,273 +106,273 @@ public static void Serialize_Humanoid(JsonFormatter f, Humanoid value) if(value.Hips!=null){ f.Key("hips"); - __humanoid_Serialize_Hips(f, value.Hips); + __humanoid__humanBones_Serialize_Hips(f, value.Hips); } if(value.Spine!=null){ f.Key("spine"); - __humanoid_Serialize_Spine(f, value.Spine); + __humanoid__humanBones_Serialize_Spine(f, value.Spine); } if(value.Chest!=null){ f.Key("chest"); - __humanoid_Serialize_Chest(f, value.Chest); + __humanoid__humanBones_Serialize_Chest(f, value.Chest); } if(value.UpperChest!=null){ f.Key("upperChest"); - __humanoid_Serialize_UpperChest(f, value.UpperChest); + __humanoid__humanBones_Serialize_UpperChest(f, value.UpperChest); } if(value.Neck!=null){ f.Key("neck"); - __humanoid_Serialize_Neck(f, value.Neck); + __humanoid__humanBones_Serialize_Neck(f, value.Neck); } if(value.Head!=null){ f.Key("head"); - __humanoid_Serialize_Head(f, value.Head); + __humanoid__humanBones_Serialize_Head(f, value.Head); } if(value.Jaw!=null){ f.Key("jaw"); - __humanoid_Serialize_Jaw(f, value.Jaw); + __humanoid__humanBones_Serialize_Jaw(f, value.Jaw); } if(value.LeftUpperLeg!=null){ f.Key("leftUpperLeg"); - __humanoid_Serialize_LeftUpperLeg(f, value.LeftUpperLeg); + __humanoid__humanBones_Serialize_LeftUpperLeg(f, value.LeftUpperLeg); } if(value.LeftLowerLeg!=null){ f.Key("leftLowerLeg"); - __humanoid_Serialize_LeftLowerLeg(f, value.LeftLowerLeg); + __humanoid__humanBones_Serialize_LeftLowerLeg(f, value.LeftLowerLeg); } if(value.LeftFoot!=null){ f.Key("leftFoot"); - __humanoid_Serialize_LeftFoot(f, value.LeftFoot); + __humanoid__humanBones_Serialize_LeftFoot(f, value.LeftFoot); } if(value.LeftToes!=null){ f.Key("leftToes"); - __humanoid_Serialize_LeftToes(f, value.LeftToes); + __humanoid__humanBones_Serialize_LeftToes(f, value.LeftToes); } if(value.RightUpperLeg!=null){ f.Key("rightUpperLeg"); - __humanoid_Serialize_RightUpperLeg(f, value.RightUpperLeg); + __humanoid__humanBones_Serialize_RightUpperLeg(f, value.RightUpperLeg); } if(value.RightLowerLeg!=null){ f.Key("rightLowerLeg"); - __humanoid_Serialize_RightLowerLeg(f, value.RightLowerLeg); + __humanoid__humanBones_Serialize_RightLowerLeg(f, value.RightLowerLeg); } if(value.RightFoot!=null){ f.Key("rightFoot"); - __humanoid_Serialize_RightFoot(f, value.RightFoot); + __humanoid__humanBones_Serialize_RightFoot(f, value.RightFoot); } if(value.RightToes!=null){ f.Key("rightToes"); - __humanoid_Serialize_RightToes(f, value.RightToes); + __humanoid__humanBones_Serialize_RightToes(f, value.RightToes); } if(value.LeftShoulder!=null){ f.Key("leftShoulder"); - __humanoid_Serialize_LeftShoulder(f, value.LeftShoulder); + __humanoid__humanBones_Serialize_LeftShoulder(f, value.LeftShoulder); } if(value.LeftUpperArm!=null){ f.Key("leftUpperArm"); - __humanoid_Serialize_LeftUpperArm(f, value.LeftUpperArm); + __humanoid__humanBones_Serialize_LeftUpperArm(f, value.LeftUpperArm); } if(value.LeftLowerArm!=null){ f.Key("leftLowerArm"); - __humanoid_Serialize_LeftLowerArm(f, value.LeftLowerArm); + __humanoid__humanBones_Serialize_LeftLowerArm(f, value.LeftLowerArm); } if(value.LeftHand!=null){ f.Key("leftHand"); - __humanoid_Serialize_LeftHand(f, value.LeftHand); + __humanoid__humanBones_Serialize_LeftHand(f, value.LeftHand); } if(value.RightShoulder!=null){ f.Key("rightShoulder"); - __humanoid_Serialize_RightShoulder(f, value.RightShoulder); + __humanoid__humanBones_Serialize_RightShoulder(f, value.RightShoulder); } if(value.RightUpperArm!=null){ f.Key("rightUpperArm"); - __humanoid_Serialize_RightUpperArm(f, value.RightUpperArm); + __humanoid__humanBones_Serialize_RightUpperArm(f, value.RightUpperArm); } if(value.RightLowerArm!=null){ f.Key("rightLowerArm"); - __humanoid_Serialize_RightLowerArm(f, value.RightLowerArm); + __humanoid__humanBones_Serialize_RightLowerArm(f, value.RightLowerArm); } if(value.RightHand!=null){ f.Key("rightHand"); - __humanoid_Serialize_RightHand(f, value.RightHand); + __humanoid__humanBones_Serialize_RightHand(f, value.RightHand); } if(value.LeftThumbMetacarpal!=null){ f.Key("leftThumbMetacarpal"); - __humanoid_Serialize_LeftThumbMetacarpal(f, value.LeftThumbMetacarpal); + __humanoid__humanBones_Serialize_LeftThumbMetacarpal(f, value.LeftThumbMetacarpal); } if(value.LeftThumbProximal!=null){ f.Key("leftThumbProximal"); - __humanoid_Serialize_LeftThumbProximal(f, value.LeftThumbProximal); + __humanoid__humanBones_Serialize_LeftThumbProximal(f, value.LeftThumbProximal); } if(value.LeftThumbDistal!=null){ f.Key("leftThumbDistal"); - __humanoid_Serialize_LeftThumbDistal(f, value.LeftThumbDistal); + __humanoid__humanBones_Serialize_LeftThumbDistal(f, value.LeftThumbDistal); } if(value.LeftIndexProximal!=null){ f.Key("leftIndexProximal"); - __humanoid_Serialize_LeftIndexProximal(f, value.LeftIndexProximal); + __humanoid__humanBones_Serialize_LeftIndexProximal(f, value.LeftIndexProximal); } if(value.LeftIndexIntermediate!=null){ f.Key("leftIndexIntermediate"); - __humanoid_Serialize_LeftIndexIntermediate(f, value.LeftIndexIntermediate); + __humanoid__humanBones_Serialize_LeftIndexIntermediate(f, value.LeftIndexIntermediate); } if(value.LeftIndexDistal!=null){ f.Key("leftIndexDistal"); - __humanoid_Serialize_LeftIndexDistal(f, value.LeftIndexDistal); + __humanoid__humanBones_Serialize_LeftIndexDistal(f, value.LeftIndexDistal); } if(value.LeftMiddleProximal!=null){ f.Key("leftMiddleProximal"); - __humanoid_Serialize_LeftMiddleProximal(f, value.LeftMiddleProximal); + __humanoid__humanBones_Serialize_LeftMiddleProximal(f, value.LeftMiddleProximal); } if(value.LeftMiddleIntermediate!=null){ f.Key("leftMiddleIntermediate"); - __humanoid_Serialize_LeftMiddleIntermediate(f, value.LeftMiddleIntermediate); + __humanoid__humanBones_Serialize_LeftMiddleIntermediate(f, value.LeftMiddleIntermediate); } if(value.LeftMiddleDistal!=null){ f.Key("leftMiddleDistal"); - __humanoid_Serialize_LeftMiddleDistal(f, value.LeftMiddleDistal); + __humanoid__humanBones_Serialize_LeftMiddleDistal(f, value.LeftMiddleDistal); } if(value.LeftRingProximal!=null){ f.Key("leftRingProximal"); - __humanoid_Serialize_LeftRingProximal(f, value.LeftRingProximal); + __humanoid__humanBones_Serialize_LeftRingProximal(f, value.LeftRingProximal); } if(value.LeftRingIntermediate!=null){ f.Key("leftRingIntermediate"); - __humanoid_Serialize_LeftRingIntermediate(f, value.LeftRingIntermediate); + __humanoid__humanBones_Serialize_LeftRingIntermediate(f, value.LeftRingIntermediate); } if(value.LeftRingDistal!=null){ f.Key("leftRingDistal"); - __humanoid_Serialize_LeftRingDistal(f, value.LeftRingDistal); + __humanoid__humanBones_Serialize_LeftRingDistal(f, value.LeftRingDistal); } if(value.LeftLittleProximal!=null){ f.Key("leftLittleProximal"); - __humanoid_Serialize_LeftLittleProximal(f, value.LeftLittleProximal); + __humanoid__humanBones_Serialize_LeftLittleProximal(f, value.LeftLittleProximal); } if(value.LeftLittleIntermediate!=null){ f.Key("leftLittleIntermediate"); - __humanoid_Serialize_LeftLittleIntermediate(f, value.LeftLittleIntermediate); + __humanoid__humanBones_Serialize_LeftLittleIntermediate(f, value.LeftLittleIntermediate); } if(value.LeftLittleDistal!=null){ f.Key("leftLittleDistal"); - __humanoid_Serialize_LeftLittleDistal(f, value.LeftLittleDistal); + __humanoid__humanBones_Serialize_LeftLittleDistal(f, value.LeftLittleDistal); } if(value.RightThumbMetacarpal!=null){ f.Key("rightThumbMetacarpal"); - __humanoid_Serialize_RightThumbMetacarpal(f, value.RightThumbMetacarpal); + __humanoid__humanBones_Serialize_RightThumbMetacarpal(f, value.RightThumbMetacarpal); } if(value.RightThumbProximal!=null){ f.Key("rightThumbProximal"); - __humanoid_Serialize_RightThumbProximal(f, value.RightThumbProximal); + __humanoid__humanBones_Serialize_RightThumbProximal(f, value.RightThumbProximal); } if(value.RightThumbDistal!=null){ f.Key("rightThumbDistal"); - __humanoid_Serialize_RightThumbDistal(f, value.RightThumbDistal); + __humanoid__humanBones_Serialize_RightThumbDistal(f, value.RightThumbDistal); } if(value.RightIndexProximal!=null){ f.Key("rightIndexProximal"); - __humanoid_Serialize_RightIndexProximal(f, value.RightIndexProximal); + __humanoid__humanBones_Serialize_RightIndexProximal(f, value.RightIndexProximal); } if(value.RightIndexIntermediate!=null){ f.Key("rightIndexIntermediate"); - __humanoid_Serialize_RightIndexIntermediate(f, value.RightIndexIntermediate); + __humanoid__humanBones_Serialize_RightIndexIntermediate(f, value.RightIndexIntermediate); } if(value.RightIndexDistal!=null){ f.Key("rightIndexDistal"); - __humanoid_Serialize_RightIndexDistal(f, value.RightIndexDistal); + __humanoid__humanBones_Serialize_RightIndexDistal(f, value.RightIndexDistal); } if(value.RightMiddleProximal!=null){ f.Key("rightMiddleProximal"); - __humanoid_Serialize_RightMiddleProximal(f, value.RightMiddleProximal); + __humanoid__humanBones_Serialize_RightMiddleProximal(f, value.RightMiddleProximal); } if(value.RightMiddleIntermediate!=null){ f.Key("rightMiddleIntermediate"); - __humanoid_Serialize_RightMiddleIntermediate(f, value.RightMiddleIntermediate); + __humanoid__humanBones_Serialize_RightMiddleIntermediate(f, value.RightMiddleIntermediate); } if(value.RightMiddleDistal!=null){ f.Key("rightMiddleDistal"); - __humanoid_Serialize_RightMiddleDistal(f, value.RightMiddleDistal); + __humanoid__humanBones_Serialize_RightMiddleDistal(f, value.RightMiddleDistal); } if(value.RightRingProximal!=null){ f.Key("rightRingProximal"); - __humanoid_Serialize_RightRingProximal(f, value.RightRingProximal); + __humanoid__humanBones_Serialize_RightRingProximal(f, value.RightRingProximal); } if(value.RightRingIntermediate!=null){ f.Key("rightRingIntermediate"); - __humanoid_Serialize_RightRingIntermediate(f, value.RightRingIntermediate); + __humanoid__humanBones_Serialize_RightRingIntermediate(f, value.RightRingIntermediate); } if(value.RightRingDistal!=null){ f.Key("rightRingDistal"); - __humanoid_Serialize_RightRingDistal(f, value.RightRingDistal); + __humanoid__humanBones_Serialize_RightRingDistal(f, value.RightRingDistal); } if(value.RightLittleProximal!=null){ f.Key("rightLittleProximal"); - __humanoid_Serialize_RightLittleProximal(f, value.RightLittleProximal); + __humanoid__humanBones_Serialize_RightLittleProximal(f, value.RightLittleProximal); } if(value.RightLittleIntermediate!=null){ f.Key("rightLittleIntermediate"); - __humanoid_Serialize_RightLittleIntermediate(f, value.RightLittleIntermediate); + __humanoid__humanBones_Serialize_RightLittleIntermediate(f, value.RightLittleIntermediate); } if(value.RightLittleDistal!=null){ f.Key("rightLittleDistal"); - __humanoid_Serialize_RightLittleDistal(f, value.RightLittleDistal); + __humanoid__humanBones_Serialize_RightLittleDistal(f, value.RightLittleDistal); } f.EndMap(); } -public static void __humanoid_Serialize_Hips(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_Hips(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -372,7 +395,7 @@ public static void __humanoid_Serialize_Hips(JsonFormatter f, HumanBone value) f.EndMap(); } -public static void __humanoid_Serialize_Spine(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_Spine(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -395,7 +418,7 @@ public static void __humanoid_Serialize_Spine(JsonFormatter f, HumanBone value) f.EndMap(); } -public static void __humanoid_Serialize_Chest(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_Chest(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -418,7 +441,7 @@ public static void __humanoid_Serialize_Chest(JsonFormatter f, HumanBone value) f.EndMap(); } -public static void __humanoid_Serialize_UpperChest(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_UpperChest(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -441,7 +464,7 @@ public static void __humanoid_Serialize_UpperChest(JsonFormatter f, HumanBone va f.EndMap(); } -public static void __humanoid_Serialize_Neck(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_Neck(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -464,7 +487,7 @@ public static void __humanoid_Serialize_Neck(JsonFormatter f, HumanBone value) f.EndMap(); } -public static void __humanoid_Serialize_Head(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_Head(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -487,7 +510,7 @@ public static void __humanoid_Serialize_Head(JsonFormatter f, HumanBone value) f.EndMap(); } -public static void __humanoid_Serialize_Jaw(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_Jaw(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -510,7 +533,7 @@ public static void __humanoid_Serialize_Jaw(JsonFormatter f, HumanBone value) f.EndMap(); } -public static void __humanoid_Serialize_LeftUpperLeg(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftUpperLeg(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -533,7 +556,7 @@ public static void __humanoid_Serialize_LeftUpperLeg(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_LeftLowerLeg(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftLowerLeg(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -556,7 +579,7 @@ public static void __humanoid_Serialize_LeftLowerLeg(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_LeftFoot(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftFoot(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -579,7 +602,7 @@ public static void __humanoid_Serialize_LeftFoot(JsonFormatter f, HumanBone valu f.EndMap(); } -public static void __humanoid_Serialize_LeftToes(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftToes(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -602,7 +625,7 @@ public static void __humanoid_Serialize_LeftToes(JsonFormatter f, HumanBone valu f.EndMap(); } -public static void __humanoid_Serialize_RightUpperLeg(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightUpperLeg(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -625,7 +648,7 @@ public static void __humanoid_Serialize_RightUpperLeg(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_RightLowerLeg(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightLowerLeg(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -648,7 +671,7 @@ public static void __humanoid_Serialize_RightLowerLeg(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_RightFoot(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightFoot(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -671,7 +694,7 @@ public static void __humanoid_Serialize_RightFoot(JsonFormatter f, HumanBone val f.EndMap(); } -public static void __humanoid_Serialize_RightToes(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightToes(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -694,7 +717,7 @@ public static void __humanoid_Serialize_RightToes(JsonFormatter f, HumanBone val f.EndMap(); } -public static void __humanoid_Serialize_LeftShoulder(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftShoulder(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -717,7 +740,7 @@ public static void __humanoid_Serialize_LeftShoulder(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_LeftUpperArm(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftUpperArm(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -740,7 +763,7 @@ public static void __humanoid_Serialize_LeftUpperArm(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_LeftLowerArm(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftLowerArm(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -763,7 +786,7 @@ public static void __humanoid_Serialize_LeftLowerArm(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_LeftHand(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftHand(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -786,7 +809,7 @@ public static void __humanoid_Serialize_LeftHand(JsonFormatter f, HumanBone valu f.EndMap(); } -public static void __humanoid_Serialize_RightShoulder(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightShoulder(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -809,7 +832,7 @@ public static void __humanoid_Serialize_RightShoulder(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_RightUpperArm(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightUpperArm(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -832,7 +855,7 @@ public static void __humanoid_Serialize_RightUpperArm(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_RightLowerArm(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightLowerArm(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -855,7 +878,7 @@ public static void __humanoid_Serialize_RightLowerArm(JsonFormatter f, HumanBone f.EndMap(); } -public static void __humanoid_Serialize_RightHand(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightHand(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -878,7 +901,7 @@ public static void __humanoid_Serialize_RightHand(JsonFormatter f, HumanBone val f.EndMap(); } -public static void __humanoid_Serialize_LeftThumbMetacarpal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftThumbMetacarpal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -901,7 +924,7 @@ public static void __humanoid_Serialize_LeftThumbMetacarpal(JsonFormatter f, Hum f.EndMap(); } -public static void __humanoid_Serialize_LeftThumbProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftThumbProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -924,7 +947,7 @@ public static void __humanoid_Serialize_LeftThumbProximal(JsonFormatter f, Human f.EndMap(); } -public static void __humanoid_Serialize_LeftThumbDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftThumbDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -947,7 +970,7 @@ public static void __humanoid_Serialize_LeftThumbDistal(JsonFormatter f, HumanBo f.EndMap(); } -public static void __humanoid_Serialize_LeftIndexProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftIndexProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -970,7 +993,7 @@ public static void __humanoid_Serialize_LeftIndexProximal(JsonFormatter f, Human f.EndMap(); } -public static void __humanoid_Serialize_LeftIndexIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftIndexIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -993,7 +1016,7 @@ public static void __humanoid_Serialize_LeftIndexIntermediate(JsonFormatter f, H f.EndMap(); } -public static void __humanoid_Serialize_LeftIndexDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftIndexDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1016,7 +1039,7 @@ public static void __humanoid_Serialize_LeftIndexDistal(JsonFormatter f, HumanBo f.EndMap(); } -public static void __humanoid_Serialize_LeftMiddleProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftMiddleProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1039,7 +1062,7 @@ public static void __humanoid_Serialize_LeftMiddleProximal(JsonFormatter f, Huma f.EndMap(); } -public static void __humanoid_Serialize_LeftMiddleIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftMiddleIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1062,7 +1085,7 @@ public static void __humanoid_Serialize_LeftMiddleIntermediate(JsonFormatter f, f.EndMap(); } -public static void __humanoid_Serialize_LeftMiddleDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftMiddleDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1085,7 +1108,7 @@ public static void __humanoid_Serialize_LeftMiddleDistal(JsonFormatter f, HumanB f.EndMap(); } -public static void __humanoid_Serialize_LeftRingProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftRingProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1108,7 +1131,7 @@ public static void __humanoid_Serialize_LeftRingProximal(JsonFormatter f, HumanB f.EndMap(); } -public static void __humanoid_Serialize_LeftRingIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftRingIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1131,7 +1154,7 @@ public static void __humanoid_Serialize_LeftRingIntermediate(JsonFormatter f, Hu f.EndMap(); } -public static void __humanoid_Serialize_LeftRingDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftRingDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1154,7 +1177,7 @@ public static void __humanoid_Serialize_LeftRingDistal(JsonFormatter f, HumanBon f.EndMap(); } -public static void __humanoid_Serialize_LeftLittleProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftLittleProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1177,7 +1200,7 @@ public static void __humanoid_Serialize_LeftLittleProximal(JsonFormatter f, Huma f.EndMap(); } -public static void __humanoid_Serialize_LeftLittleIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftLittleIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1200,7 +1223,7 @@ public static void __humanoid_Serialize_LeftLittleIntermediate(JsonFormatter f, f.EndMap(); } -public static void __humanoid_Serialize_LeftLittleDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_LeftLittleDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1223,7 +1246,7 @@ public static void __humanoid_Serialize_LeftLittleDistal(JsonFormatter f, HumanB f.EndMap(); } -public static void __humanoid_Serialize_RightThumbMetacarpal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightThumbMetacarpal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1246,7 +1269,7 @@ public static void __humanoid_Serialize_RightThumbMetacarpal(JsonFormatter f, Hu f.EndMap(); } -public static void __humanoid_Serialize_RightThumbProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightThumbProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1269,7 +1292,7 @@ public static void __humanoid_Serialize_RightThumbProximal(JsonFormatter f, Huma f.EndMap(); } -public static void __humanoid_Serialize_RightThumbDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightThumbDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1292,7 +1315,7 @@ public static void __humanoid_Serialize_RightThumbDistal(JsonFormatter f, HumanB f.EndMap(); } -public static void __humanoid_Serialize_RightIndexProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightIndexProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1315,7 +1338,7 @@ public static void __humanoid_Serialize_RightIndexProximal(JsonFormatter f, Huma f.EndMap(); } -public static void __humanoid_Serialize_RightIndexIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightIndexIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1338,7 +1361,7 @@ public static void __humanoid_Serialize_RightIndexIntermediate(JsonFormatter f, f.EndMap(); } -public static void __humanoid_Serialize_RightIndexDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightIndexDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1361,7 +1384,7 @@ public static void __humanoid_Serialize_RightIndexDistal(JsonFormatter f, HumanB f.EndMap(); } -public static void __humanoid_Serialize_RightMiddleProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightMiddleProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1384,7 +1407,7 @@ public static void __humanoid_Serialize_RightMiddleProximal(JsonFormatter f, Hum f.EndMap(); } -public static void __humanoid_Serialize_RightMiddleIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightMiddleIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1407,7 +1430,7 @@ public static void __humanoid_Serialize_RightMiddleIntermediate(JsonFormatter f, f.EndMap(); } -public static void __humanoid_Serialize_RightMiddleDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightMiddleDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1430,7 +1453,7 @@ public static void __humanoid_Serialize_RightMiddleDistal(JsonFormatter f, Human f.EndMap(); } -public static void __humanoid_Serialize_RightRingProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightRingProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1453,7 +1476,7 @@ public static void __humanoid_Serialize_RightRingProximal(JsonFormatter f, Human f.EndMap(); } -public static void __humanoid_Serialize_RightRingIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightRingIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1476,7 +1499,7 @@ public static void __humanoid_Serialize_RightRingIntermediate(JsonFormatter f, H f.EndMap(); } -public static void __humanoid_Serialize_RightRingDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightRingDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1499,7 +1522,7 @@ public static void __humanoid_Serialize_RightRingDistal(JsonFormatter f, HumanBo f.EndMap(); } -public static void __humanoid_Serialize_RightLittleProximal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightLittleProximal(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1522,7 +1545,7 @@ public static void __humanoid_Serialize_RightLittleProximal(JsonFormatter f, Hum f.EndMap(); } -public static void __humanoid_Serialize_RightLittleIntermediate(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightLittleIntermediate(JsonFormatter f, HumanBone value) { f.BeginMap(); @@ -1545,7 +1568,7 @@ public static void __humanoid_Serialize_RightLittleIntermediate(JsonFormatter f, f.EndMap(); } -public static void __humanoid_Serialize_RightLittleDistal(JsonFormatter f, HumanBone value) +public static void __humanoid__humanBones_Serialize_RightLittleDistal(JsonFormatter f, HumanBone value) { f.BeginMap(); diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10Motion.cs b/Assets/VRM10_Samples/VRM10Viewer/VRM10Motion.cs index 89ae35c64..fc49d1ab1 100644 --- a/Assets/VRM10_Samples/VRM10Viewer/VRM10Motion.cs +++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10Motion.cs @@ -11,123 +11,157 @@ using VRMShaders; namespace UniVRM10.VRM10Viewer { - public class VRM10Motion + public interface IMotion : IDisposable { - public (INormalizedPoseProvider, ITPoseProvider) ControlRig; + (INormalizedPoseProvider, ITPoseProvider) ControlRig { get; } + void ShowBoxMan(bool enable); + } + public class BvhMotion : IMotion + { UniHumanoid.BvhImporterContext m_context; - UniGLTF.RuntimeGltfInstance m_instance; - public Transform Root => m_context?.Root.transform; - - public VRM10Motion(UniHumanoid.BvhImporterContext context) + public SkinnedMeshRenderer m_boxMan; + public SkinnedMeshRenderer BoxMan => m_boxMan; + (INormalizedPoseProvider, ITPoseProvider) m_controlRig; + (INormalizedPoseProvider, ITPoseProvider) IMotion.ControlRig => m_controlRig; + public BvhMotion(UniHumanoid.BvhImporterContext context) { m_context = context; var provider = new AnimatorPoseProvider(m_context.Root.transform, m_context.Root.GetComponent()); - ControlRig = (provider, provider); + m_controlRig = (provider, provider); + + // create SkinnedMesh for bone visualize + var animator = m_context.Root.GetComponent(); + m_boxMan = SkeletonMeshUtility.CreateRenderer(animator); + var material = new Material(Shader.Find("Standard")); + BoxMan.sharedMaterial = material; + var mesh = BoxMan.sharedMesh; + mesh.name = "box-man"; } - public VRM10Motion(UniGLTF.RuntimeGltfInstance instance) + public static BvhMotion LoadBvhFromText(string source, string path = "tmp.bvh") + { + var context = new UniHumanoid.BvhImporterContext(); + context.Parse(path, source); + context.Load(); + return new BvhMotion(context); + } + public static BvhMotion LoadBvhFromPath(string path) + { + return LoadBvhFromText(File.ReadAllText(path), path); + } + + public void ShowBoxMan(bool enable) + { + m_boxMan.enabled = enable; + } + + public void Dispose() + { + GameObject.Destroy(m_context.Root); + } + } + + public class VrmAnimation : IMotion + { + UniGLTF.RuntimeGltfInstance m_instance; + public SkinnedMeshRenderer m_boxMan; + public SkinnedMeshRenderer BoxMan => m_boxMan; + (INormalizedPoseProvider, ITPoseProvider) m_controlRig; + (INormalizedPoseProvider, ITPoseProvider) IMotion.ControlRig => m_controlRig; + public VrmAnimation(UniGLTF.RuntimeGltfInstance instance) { m_instance = instance; if (instance.GetComponent() is Animation animation) { animation.Play(); } + + var humanoid = instance.gameObject.AddComponent(); + humanoid.AssignBonesFromAnimator(); + + var provider = new InitRotationPoseProvider(instance.transform, humanoid); + m_controlRig = (provider, provider); + + // create SkinnedMesh for bone visualize + var animator = instance.GetComponent(); + m_boxMan = SkeletonMeshUtility.CreateRenderer(animator); + var material = new Material(Shader.Find("Standard")); + BoxMan.sharedMaterial = material; + var mesh = BoxMan.sharedMesh; + mesh.name = "box-man"; } - public void ShowBoxMan(bool showBoxMan) + public void ShowBoxMan(bool enable) { - if (m_context != null) - { - m_context.Root.GetComponent().enabled = showBoxMan; - } + m_boxMan.enabled = enable; } - public static VRM10Motion LoadBvhFromText(string source, string path = "tmp.bvh") + public void Dispose() { - var context = new UniHumanoid.BvhImporterContext(); - context.Parse(path, source); - context.Load(); - return new VRM10Motion(context); - } - - public static VRM10Motion LoadBvhFromPath(string path) - { - return LoadBvhFromText(File.ReadAllText(path), path); - } - - static IEnumerable Traverse(Transform t) - { - yield return t; - foreach (Transform child in t) - { - foreach (var x in Traverse(child)) - { - yield return x; - } - } + GameObject.Destroy(m_boxMan.gameObject); } static int? GetNodeIndex(UniGLTF.Extensions.VRMC_vrm_animation.Humanoid humanoid, HumanBodyBones bone) { switch (bone) { - case HumanBodyBones.Hips: return humanoid.Hips?.Node; - case HumanBodyBones.LeftUpperLeg: return humanoid.LeftUpperLeg?.Node; - case HumanBodyBones.RightUpperLeg: return humanoid.RightUpperLeg?.Node; - case HumanBodyBones.LeftLowerLeg: return humanoid.LeftLowerLeg?.Node; - case HumanBodyBones.RightLowerLeg: return humanoid.RightLowerLeg?.Node; - case HumanBodyBones.LeftFoot: return humanoid.LeftFoot?.Node; - case HumanBodyBones.RightFoot: return humanoid.RightFoot?.Node; - case HumanBodyBones.Spine: return humanoid.Spine?.Node; - case HumanBodyBones.Chest: return humanoid.Chest?.Node; - case HumanBodyBones.Neck: return humanoid.Neck?.Node; - case HumanBodyBones.Head: return humanoid.Head?.Node; - case HumanBodyBones.LeftShoulder: return humanoid.LeftShoulder?.Node; - case HumanBodyBones.RightShoulder: return humanoid.RightShoulder?.Node; - case HumanBodyBones.LeftUpperArm: return humanoid.LeftUpperArm?.Node; - case HumanBodyBones.RightUpperArm: return humanoid.RightUpperArm?.Node; - case HumanBodyBones.LeftLowerArm: return humanoid.LeftLowerArm?.Node; - case HumanBodyBones.RightLowerArm: return humanoid.RightLowerArm?.Node; - case HumanBodyBones.LeftHand: return humanoid.LeftHand?.Node; - case HumanBodyBones.RightHand: return humanoid.RightHand?.Node; - case HumanBodyBones.LeftToes: return humanoid.LeftToes?.Node; - case HumanBodyBones.RightToes: return humanoid.RightToes?.Node; - // case HumanBodyBones.LeftEye: return humanoid.LeftEye?.Node; - // case HumanBodyBones.RightEye: return humanoid.RightEye?.Node; - case HumanBodyBones.Jaw: return humanoid.Jaw?.Node; - case HumanBodyBones.LeftThumbProximal: return humanoid.LeftThumbMetacarpal?.Node; // Metacarpal - case HumanBodyBones.LeftThumbIntermediate: return humanoid.LeftThumbProximal?.Node; // Proximal - case HumanBodyBones.LeftThumbDistal: return humanoid.LeftThumbDistal?.Node; - case HumanBodyBones.LeftIndexProximal: return humanoid.LeftIndexProximal?.Node; - case HumanBodyBones.LeftIndexIntermediate: return humanoid.LeftIndexIntermediate?.Node; - case HumanBodyBones.LeftIndexDistal: return humanoid.LeftIndexDistal?.Node; - case HumanBodyBones.LeftMiddleProximal: return humanoid.LeftMiddleProximal?.Node; - case HumanBodyBones.LeftMiddleIntermediate: return humanoid.LeftMiddleIntermediate?.Node; - case HumanBodyBones.LeftMiddleDistal: return humanoid.LeftMiddleDistal?.Node; - case HumanBodyBones.LeftRingProximal: return humanoid.LeftRingProximal?.Node; - case HumanBodyBones.LeftRingIntermediate: return humanoid.LeftRingIntermediate?.Node; - case HumanBodyBones.LeftRingDistal: return humanoid.LeftRingDistal?.Node; - case HumanBodyBones.LeftLittleProximal: return humanoid.LeftLittleProximal?.Node; - case HumanBodyBones.LeftLittleIntermediate: return humanoid.LeftLittleIntermediate?.Node; - case HumanBodyBones.LeftLittleDistal: return humanoid.LeftLittleDistal?.Node; - case HumanBodyBones.RightThumbProximal: return humanoid.RightThumbMetacarpal?.Node; // Metacarpal - case HumanBodyBones.RightThumbIntermediate: return humanoid.RightThumbProximal?.Node; // Proximal - case HumanBodyBones.RightThumbDistal: return humanoid.RightThumbDistal?.Node; - case HumanBodyBones.RightIndexProximal: return humanoid.RightIndexProximal?.Node; - case HumanBodyBones.RightIndexIntermediate: return humanoid.RightIndexIntermediate?.Node; - case HumanBodyBones.RightIndexDistal: return humanoid.RightIndexDistal?.Node; - case HumanBodyBones.RightMiddleProximal: return humanoid.RightMiddleProximal?.Node; - case HumanBodyBones.RightMiddleIntermediate: return humanoid.RightMiddleIntermediate?.Node; - case HumanBodyBones.RightMiddleDistal: return humanoid.RightMiddleDistal?.Node; - case HumanBodyBones.RightRingProximal: return humanoid.RightRingProximal?.Node; - case HumanBodyBones.RightRingIntermediate: return humanoid.RightRingIntermediate?.Node; - case HumanBodyBones.RightRingDistal: return humanoid.RightRingDistal?.Node; - case HumanBodyBones.RightLittleProximal: return humanoid.RightLittleProximal?.Node; - case HumanBodyBones.RightLittleIntermediate: return humanoid.RightLittleIntermediate?.Node; - case HumanBodyBones.RightLittleDistal: return humanoid.RightLittleDistal?.Node; - case HumanBodyBones.UpperChest: return humanoid.UpperChest?.Node; + case HumanBodyBones.Hips: return humanoid.HumanBones.Hips?.Node; + case HumanBodyBones.LeftUpperLeg: return humanoid.HumanBones.LeftUpperLeg?.Node; + case HumanBodyBones.RightUpperLeg: return humanoid.HumanBones.RightUpperLeg?.Node; + case HumanBodyBones.LeftLowerLeg: return humanoid.HumanBones.LeftLowerLeg?.Node; + case HumanBodyBones.RightLowerLeg: return humanoid.HumanBones.RightLowerLeg?.Node; + case HumanBodyBones.LeftFoot: return humanoid.HumanBones.LeftFoot?.Node; + case HumanBodyBones.RightFoot: return humanoid.HumanBones.RightFoot?.Node; + case HumanBodyBones.Spine: return humanoid.HumanBones.Spine?.Node; + case HumanBodyBones.Chest: return humanoid.HumanBones.Chest?.Node; + case HumanBodyBones.Neck: return humanoid.HumanBones.Neck?.Node; + case HumanBodyBones.Head: return humanoid.HumanBones.Head?.Node; + case HumanBodyBones.LeftShoulder: return humanoid.HumanBones.LeftShoulder?.Node; + case HumanBodyBones.RightShoulder: return humanoid.HumanBones.RightShoulder?.Node; + case HumanBodyBones.LeftUpperArm: return humanoid.HumanBones.LeftUpperArm?.Node; + case HumanBodyBones.RightUpperArm: return humanoid.HumanBones.RightUpperArm?.Node; + case HumanBodyBones.LeftLowerArm: return humanoid.HumanBones.LeftLowerArm?.Node; + case HumanBodyBones.RightLowerArm: return humanoid.HumanBones.RightLowerArm?.Node; + case HumanBodyBones.LeftHand: return humanoid.HumanBones.LeftHand?.Node; + case HumanBodyBones.RightHand: return humanoid.HumanBones.RightHand?.Node; + case HumanBodyBones.LeftToes: return humanoid.HumanBones.LeftToes?.Node; + case HumanBodyBones.RightToes: return humanoid.HumanBones.RightToes?.Node; + // case HumanBodyBones.LeftEye: return humanoid.HumanBones.LeftEye?.Node; + // case HumanBodyBones.RightEye: return humanoid.HumanBones.RightEye?.Node; + case HumanBodyBones.Jaw: return humanoid.HumanBones.Jaw?.Node; + case HumanBodyBones.LeftThumbProximal: return humanoid.HumanBones.LeftThumbMetacarpal?.Node; // Metacarpal + case HumanBodyBones.LeftThumbIntermediate: return humanoid.HumanBones.LeftThumbProximal?.Node; // Proximal + case HumanBodyBones.LeftThumbDistal: return humanoid.HumanBones.LeftThumbDistal?.Node; + case HumanBodyBones.LeftIndexProximal: return humanoid.HumanBones.LeftIndexProximal?.Node; + case HumanBodyBones.LeftIndexIntermediate: return humanoid.HumanBones.LeftIndexIntermediate?.Node; + case HumanBodyBones.LeftIndexDistal: return humanoid.HumanBones.LeftIndexDistal?.Node; + case HumanBodyBones.LeftMiddleProximal: return humanoid.HumanBones.LeftMiddleProximal?.Node; + case HumanBodyBones.LeftMiddleIntermediate: return humanoid.HumanBones.LeftMiddleIntermediate?.Node; + case HumanBodyBones.LeftMiddleDistal: return humanoid.HumanBones.LeftMiddleDistal?.Node; + case HumanBodyBones.LeftRingProximal: return humanoid.HumanBones.LeftRingProximal?.Node; + case HumanBodyBones.LeftRingIntermediate: return humanoid.HumanBones.LeftRingIntermediate?.Node; + case HumanBodyBones.LeftRingDistal: return humanoid.HumanBones.LeftRingDistal?.Node; + case HumanBodyBones.LeftLittleProximal: return humanoid.HumanBones.LeftLittleProximal?.Node; + case HumanBodyBones.LeftLittleIntermediate: return humanoid.HumanBones.LeftLittleIntermediate?.Node; + case HumanBodyBones.LeftLittleDistal: return humanoid.HumanBones.LeftLittleDistal?.Node; + case HumanBodyBones.RightThumbProximal: return humanoid.HumanBones.RightThumbMetacarpal?.Node; // Metacarpal + case HumanBodyBones.RightThumbIntermediate: return humanoid.HumanBones.RightThumbProximal?.Node; // Proximal + case HumanBodyBones.RightThumbDistal: return humanoid.HumanBones.RightThumbDistal?.Node; + case HumanBodyBones.RightIndexProximal: return humanoid.HumanBones.RightIndexProximal?.Node; + case HumanBodyBones.RightIndexIntermediate: return humanoid.HumanBones.RightIndexIntermediate?.Node; + case HumanBodyBones.RightIndexDistal: return humanoid.HumanBones.RightIndexDistal?.Node; + case HumanBodyBones.RightMiddleProximal: return humanoid.HumanBones.RightMiddleProximal?.Node; + case HumanBodyBones.RightMiddleIntermediate: return humanoid.HumanBones.RightMiddleIntermediate?.Node; + case HumanBodyBones.RightMiddleDistal: return humanoid.HumanBones.RightMiddleDistal?.Node; + case HumanBodyBones.RightRingProximal: return humanoid.HumanBones.RightRingProximal?.Node; + case HumanBodyBones.RightRingIntermediate: return humanoid.HumanBones.RightRingIntermediate?.Node; + case HumanBodyBones.RightRingDistal: return humanoid.HumanBones.RightRingDistal?.Node; + case HumanBodyBones.RightLittleProximal: return humanoid.HumanBones.RightLittleProximal?.Node; + case HumanBodyBones.RightLittleIntermediate: return humanoid.HumanBones.RightLittleIntermediate?.Node; + case HumanBodyBones.RightLittleDistal: return humanoid.HumanBones.RightLittleDistal?.Node; + case HumanBodyBones.UpperChest: return humanoid.HumanBones.UpperChest?.Node; } return default; } @@ -159,7 +193,7 @@ namespace UniVRM10.VRM10Viewer return humanMap; } - public static async Task LoadVrmAnimationFromPathAsync(string path) + public static async Task LoadVrmAnimationFromPathAsync(string path) { // // GetHumanoid Mapping @@ -175,7 +209,6 @@ namespace UniVRM10.VRM10Viewer { throw new ArgumentException("fail to load VRMC_vrm_animation"); } - var description = AvatarDescription.Create(humanMap); // @@ -187,19 +220,7 @@ namespace UniVRM10.VRM10Viewer var animator = instance.gameObject.AddComponent(); animator.avatar = avatar; - // create SkinnedMesh for bone visualize - var renderer = SkeletonMeshUtility.CreateRenderer(animator); - var material = new Material(Shader.Find("Standard")); - renderer.sharedMaterial = material; - var mesh = renderer.sharedMesh; - mesh.name = "box-man"; - - var humanoid = instance.gameObject.AddComponent(); - humanoid.AssignBonesFromAnimator(); - var motion = new VRM10Motion(instance); - var provider = new InitRotationPoseProvider(instance.transform, humanoid); - motion.ControlRig = (provider, provider); - return motion; + return new VrmAnimation(instance); } } } diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity b/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity index b6a73865f..bd211cd41 100644 --- a/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity +++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity @@ -230,7 +230,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 12 + m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -763,7 +763,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1219,10 +1219,11 @@ RectTransform: - {fileID: 1621794411} - {fileID: 2009818432} - {fileID: 168425995} - - {fileID: 1557052150} - {fileID: 224350191} - {fileID: 1791103379} - {fileID: 1311520909} + - {fileID: 1557052150} + - {fileID: 1767706907} - {fileID: 974864191} - {fileID: 597950322} - {fileID: 935566651} @@ -1717,7 +1718,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1797,7 +1798,7 @@ RectTransform: - {fileID: 154330168} - {fileID: 1954133885} m_Father: {fileID: 339774397} - m_RootOrder: 14 + m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1883,7 +1884,7 @@ RectTransform: - {fileID: 2010083454} - {fileID: 1081455630} m_Father: {fileID: 339774397} - m_RootOrder: 10 + m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1938,6 +1939,85 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_IsOn: 1 +--- !u!1 &642985707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 642985708} + - component: {fileID: 642985710} + - component: {fileID: 642985709} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &642985708 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 642985707} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1767706907} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &642985709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 642985707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ShowBoxMan +--- !u!222 &642985710 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 642985707} + m_CullTransparentMesh: 1 --- !u!1 &644517399 GameObject: m_ObjectHideFlags: 0 @@ -2401,6 +2481,82 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 806723448} m_CullTransparentMesh: 0 +--- !u!1 &826167455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 826167456} + - component: {fileID: 826167458} + - component: {fileID: 826167457} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &826167456 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 826167455} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1987265555} + m_Father: {fileID: 1767706907} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &826167457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 826167455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &826167458 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 826167455} + m_CullTransparentMesh: 1 --- !u!1 &827174940 GameObject: m_ObjectHideFlags: 0 @@ -3036,7 +3192,7 @@ RectTransform: - {fileID: 175751363} - {fileID: 1904789319} m_Father: {fileID: 339774397} - m_RootOrder: 9 + m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3073,7 +3229,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -4563,7 +4719,7 @@ RectTransform: - {fileID: 1866921958} - {fileID: 1767669911} m_Father: {fileID: 339774397} - m_RootOrder: 6 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -4776,7 +4932,7 @@ RectTransform: - {fileID: 452923209} - {fileID: 2090837017} m_Father: {fileID: 339774397} - m_RootOrder: 13 + m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -4940,7 +5096,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 3 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5485,6 +5641,92 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1767669910} m_CullTransparentMesh: 0 +--- !u!1 &1767706906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1767706907} + - component: {fileID: 1767706908} + m_Layer: 5 + m_Name: ShowBoxMan + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1767706907 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1767706906} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 826167456} + - {fileID: 642985708} + m_Father: {fileID: 339774397} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1767706908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1767706906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 826167457} + toggleTransition: 1 + graphic: {fileID: 1987265556} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 --- !u!1 &1767738853 GameObject: m_ObjectHideFlags: 0 @@ -5516,7 +5758,7 @@ RectTransform: - {fileID: 62367395} - {fileID: 1037763549} m_Father: {fileID: 339774397} - m_RootOrder: 11 + m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5687,6 +5929,7 @@ MonoBehaviour: m_version: {fileID: 1268276256} m_openModel: {fileID: 2009818433} m_openMotion: {fileID: 168425996} + m_showBoxMan: {fileID: 1767706908} m_enableLipSync: {fileID: 935566650} m_enableAutoBlink: {fileID: 634488422} m_enableAutoExpression: {fileID: 1767738855} @@ -5743,7 +5986,7 @@ RectTransform: - {fileID: 1166391799} - {fileID: 1140410864} m_Father: {fileID: 339774397} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6274,6 +6517,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1963417398} m_CullTransparentMesh: 0 +--- !u!1 &1987265554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1987265555} + - component: {fileID: 1987265557} + - component: {fileID: 1987265556} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1987265555 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1987265554} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 826167456} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1987265556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1987265554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1987265557 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1987265554} + m_CullTransparentMesh: 1 --- !u!1 &2009818431 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs b/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs index aadfa0104..6537bc35c 100644 --- a/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs +++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs @@ -21,6 +21,9 @@ namespace UniVRM10.VRM10Viewer [SerializeField] Button m_openMotion = default; + [SerializeField] + Toggle m_showBoxMan = default; + [SerializeField] Toggle m_enableLipSync = default; @@ -44,7 +47,19 @@ namespace UniVRM10.VRM10Viewer GameObject Root = default; - VRM10Motion m_src = default; + IMotion m_src = default; + public IMotion Motion + { + get { return m_src; } + set + { + if (m_src != null) + { + m_src.Dispose(); + } + m_src = value; + } + } private CancellationTokenSource _cancellationTokenSource; @@ -206,6 +221,7 @@ namespace UniVRM10.VRM10Viewer m_openMotion = buttons.First(x => x.name == "OpenMotion"); var toggles = GameObject.FindObjectsOfType(); + m_showBoxMan = toggles.First(x => x.name == "ShowBoxMan"); m_enableLipSync = toggles.First(x => x.name == "EnableLipSync"); m_enableAutoBlink = toggles.First(x => x.name == "EnableAutoBlink"); m_enableAutoExpression = toggles.First(x => x.name == "EnableAutoExpression"); @@ -235,7 +251,7 @@ namespace UniVRM10.VRM10Viewer // load initial bvh if (m_motion != null) { - m_src = VRM10Motion.LoadBvhFromText(m_motion.text); + Motion = BvhMotion.LoadBvhFromText(m_motion.text); } string[] cmds = System.Environment.GetCommandLineArgs(); @@ -257,13 +273,6 @@ namespace UniVRM10.VRM10Viewer private void Update() { - if (m_loaded != null) - { - m_loaded.EnableLipSyncValue = m_enableLipSync.isOn; - m_loaded.EnableBlinkValue = m_enableAutoBlink.isOn; - m_loaded.EnableAutoExpressionValue = m_enableAutoExpression.isOn; - } - if (Input.GetKeyDown(KeyCode.Tab)) { if (Root != null) Root.SetActive(!Root.activeSelf); @@ -277,11 +286,20 @@ namespace UniVRM10.VRM10Viewer } } + if (Motion != null) + { + Motion.ShowBoxMan(m_showBoxMan.isOn); + } + if (m_loaded != null) { - if (m_ui.IsBvhEnabled && m_src != null) + m_loaded.EnableLipSyncValue = m_enableLipSync.isOn; + m_loaded.EnableBlinkValue = m_enableAutoBlink.isOn; + m_loaded.EnableAutoExpressionValue = m_enableAutoExpression.isOn; + + if (m_ui.IsBvhEnabled && Motion != null) { - VRM10Retarget.Retarget(m_src.ControlRig, (m_loaded.ControlRig, m_loaded.ControlRig)); + VRM10Retarget.Retarget(Motion.ControlRig, (m_loaded.ControlRig, m_loaded.ControlRig)); } else { @@ -331,12 +349,12 @@ namespace UniVRM10.VRM10Viewer var ext = Path.GetExtension(path).ToLower(); if (ext == ".bvh") { - m_src = VRM10Motion.LoadBvhFromPath(path); + Motion = BvhMotion.LoadBvhFromPath(path); return; } // gltf, glb etc... - m_src = await VRM10Motion.LoadVrmAnimationFromPathAsync(path); + Motion = await VrmAnimation.LoadVrmAnimationFromPathAsync(path); } static IMaterialDescriptorGenerator GetVrmMaterialDescriptorGenerator(bool useUrp) diff --git a/vrm-specification b/vrm-specification index 29195d565..0bcc3d4c5 160000 --- a/vrm-specification +++ b/vrm-specification @@ -1 +1 @@ -Subproject commit 29195d5659d4af3d936204ac1bda4d784ce406a8 +Subproject commit 0bcc3d4c56311ea36905049b10908a4eb60aa327