static void AssignHumanoid(List <Node> nodes, VrmProtobuf.HumanBone humanBone, VrmLib.HumanoidBones key) { if (humanBone.Node.HasValue) { nodes[humanBone.Node.Value].HumanoidBone = key; } }
public void ExportVrmHumanoid(Dictionary <HumanoidBones, Node> map, List <Node> nodes) { Gltf.Extensions.VRMCVrm.Humanoid = new VrmProtobuf.Humanoid(); foreach (var kv in map.OrderBy(kv => kv.Key)) { var humanoidBone = new VrmProtobuf.HumanBone { Node = nodes.IndexOfThrow(kv.Value), }; switch (kv.Key) { case HumanoidBones.hips: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Hips = humanoidBone; break; case HumanoidBones.leftUpperLeg: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftUpperLeg = humanoidBone; break; case HumanoidBones.rightUpperLeg: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightUpperLeg = humanoidBone; break; case HumanoidBones.leftLowerLeg: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftLowerLeg = humanoidBone; break; case HumanoidBones.rightLowerLeg: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightLowerLeg = humanoidBone; break; case HumanoidBones.leftFoot: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftFoot = humanoidBone; break; case HumanoidBones.rightFoot: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightFoot = humanoidBone; break; case HumanoidBones.spine: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Spine = humanoidBone; break; case HumanoidBones.chest: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Chest = humanoidBone; break; case HumanoidBones.neck: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Neck = humanoidBone; break; case HumanoidBones.head: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Head = humanoidBone; break; case HumanoidBones.leftShoulder: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftShoulder = humanoidBone; break; case HumanoidBones.rightShoulder: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightShoulder = humanoidBone; break; case HumanoidBones.leftUpperArm: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftUpperArm = humanoidBone; break; case HumanoidBones.rightUpperArm: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightUpperArm = humanoidBone; break; case HumanoidBones.leftLowerArm: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftLowerArm = humanoidBone; break; case HumanoidBones.rightLowerArm: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightLowerArm = humanoidBone; break; case HumanoidBones.leftHand: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftHand = humanoidBone; break; case HumanoidBones.rightHand: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightHand = humanoidBone; break; case HumanoidBones.leftToes: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftToes = humanoidBone; break; case HumanoidBones.rightToes: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightToes = humanoidBone; break; case HumanoidBones.leftEye: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftEye = humanoidBone; break; case HumanoidBones.rightEye: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightEye = humanoidBone; break; case HumanoidBones.jaw: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Jaw = humanoidBone; break; case HumanoidBones.leftThumbProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftThumbProximal = humanoidBone; break; case HumanoidBones.leftThumbIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftThumbIntermediate = humanoidBone; break; case HumanoidBones.leftThumbDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftThumbDistal = humanoidBone; break; case HumanoidBones.leftIndexProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftIndexProximal = humanoidBone; break; case HumanoidBones.leftIndexIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftIndexIntermediate = humanoidBone; break; case HumanoidBones.leftIndexDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftIndexDistal = humanoidBone; break; case HumanoidBones.leftMiddleProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftMiddleProximal = humanoidBone; break; case HumanoidBones.leftMiddleIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftMiddleIntermediate = humanoidBone; break; case HumanoidBones.leftMiddleDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftMiddleDistal = humanoidBone; break; case HumanoidBones.leftRingProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftRingProximal = humanoidBone; break; case HumanoidBones.leftRingIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftRingIntermediate = humanoidBone; break; case HumanoidBones.leftRingDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftRingDistal = humanoidBone; break; case HumanoidBones.leftLittleProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftLittleProximal = humanoidBone; break; case HumanoidBones.leftLittleIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftLittleIntermediate = humanoidBone; break; case HumanoidBones.leftLittleDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.LeftLittleDistal = humanoidBone; break; case HumanoidBones.rightThumbProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightThumbProximal = humanoidBone; break; case HumanoidBones.rightThumbIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightThumbIntermediate = humanoidBone; break; case HumanoidBones.rightThumbDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightThumbDistal = humanoidBone; break; case HumanoidBones.rightIndexProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightIndexProximal = humanoidBone; break; case HumanoidBones.rightIndexIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightIndexIntermediate = humanoidBone; break; case HumanoidBones.rightIndexDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightIndexDistal = humanoidBone; break; case HumanoidBones.rightMiddleProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightMiddleProximal = humanoidBone; break; case HumanoidBones.rightMiddleIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightMiddleIntermediate = humanoidBone; break; case HumanoidBones.rightMiddleDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightMiddleDistal = humanoidBone; break; case HumanoidBones.rightRingProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightRingProximal = humanoidBone; break; case HumanoidBones.rightRingIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightRingIntermediate = humanoidBone; break; case HumanoidBones.rightRingDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightRingDistal = humanoidBone; break; case HumanoidBones.rightLittleProximal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightLittleProximal = humanoidBone; break; case HumanoidBones.rightLittleIntermediate: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightLittleIntermediate = humanoidBone; break; case HumanoidBones.rightLittleDistal: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.RightLittleDistal = humanoidBone; break; case HumanoidBones.upperChest: Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.UpperChest = humanoidBone; break; } // Gltf.Extensions.VRMCVrm.Humanoid.HumanBones.Add(kv.Key.ToString(), humanoidBone); } }