模型中的骨骼与 Mecanim 人体解剖学中的概念骨骼之间的映射。
Mecanim 人体骨骼和模型中的骨骼名称随限制肌肉值(用于在动画期间限制骨骼的旋转)一并存储。
using UnityEngine;
using System.Collections.Generic;
public class ExampleClass : MonoBehaviour
{
void Start()
{
Dictionary<string, string> boneName = new System.Collections.Generic.Dictionary<string, string>();
boneName["Chest"] = "Bip001 Spine2";
boneName["Head"] = "Bip001 Head";
boneName["Hips"] = "Bip001 Pelvis";
boneName["LeftFoot"] = "Bip001 L Foot";
boneName["LeftHand"] = "Bip001 L Hand";
boneName["LeftLowerArm"] = "Bip001 L Forearm";
boneName["LeftLowerLeg"] = "Bip001 L Calf";
boneName["LeftShoulder"] = "Bip001 L Clavicle";
boneName["LeftUpperArm"] = "Bip001 L UpperArm";
boneName["LeftUpperLeg"] = "Bip001 L Thigh";
boneName["RightFoot"] = "Bip001 R Foot";
boneName["RightHand"] = "Bip001 R Hand";
boneName["RightLowerArm"] = "Bip001 R Forearm";
boneName["RightLowerLeg"] = "Bip001 R Calf";
boneName["RightShoulder"] = "Bip001 R Clavicle";
boneName["RightUpperArm"] = "Bip001 R UpperArm";
boneName["RightUpperLeg"] = "Bip001 R Thigh";
boneName["Spine"] = "Bip001 Spine1";
string[] humanName = HumanTrait.BoneName;
HumanBone[] humanBones = new HumanBone[boneName.Count];
int j = 0;
int i = 0;
while (i < humanName.Length)
{
if (boneName.ContainsKey(humanName[i]))
{
HumanBone humanBone = new HumanBone();
humanBone.humanName = humanName[i];
humanBone.boneName = boneName[humanName[i]];
humanBone.limit.useDefaultValues = true;
humanBones[j++] = humanBone;
}
i++;
}
}
}