|
@@ -40,7 +40,14 @@ public enum EditableBodyPart
|
|
|
LowerLegUp = 17,
|
|
|
LowerLegDown = 18,
|
|
|
Head = 19,
|
|
|
- None = 20,
|
|
|
+ Acromion = 20,//肩峰
|
|
|
+ Waist = 21,//腰
|
|
|
+ Wrist = 22,//手腕
|
|
|
+ Crotch = 23,//胯部
|
|
|
+ Hips = 24,//臀部
|
|
|
+ Knee = 25,//膝盖
|
|
|
+ Ankle = 26,//脚腕
|
|
|
+ None = 27,
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 编辑类型
|
|
@@ -65,13 +72,13 @@ public static class CustomRoleUtility
|
|
|
Transform transR = null;
|
|
|
Vector3 beforeScale = Vector3.one;
|
|
|
List<Transform> childList = new List<Transform>();
|
|
|
+
|
|
|
bool keepChildWorldScale = false;
|
|
|
switch (part)
|
|
|
{
|
|
|
case EditableBodyPart.UpperArm:
|
|
|
transL = ani.GetBoneTransform(HumanBodyBones.LeftUpperArm);
|
|
|
transR = ani.GetBoneTransform(HumanBodyBones.RightUpperArm);
|
|
|
- keepChildWorldScale = true;
|
|
|
break;
|
|
|
case EditableBodyPart.LowerArm:
|
|
|
transL = ani.GetBoneTransform(HumanBodyBones.LeftLowerArm);
|
|
@@ -142,6 +149,107 @@ public static class CustomRoleUtility
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public static Transform[] GetRelativeTransform(Animator ani,EditableBodyPart part)
|
|
|
+ {
|
|
|
+ Transform[] result = null;
|
|
|
+ switch (part)
|
|
|
+ {
|
|
|
+ case EditableBodyPart.UpperArm:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftUpperArm);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightUpperArm);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.LowerArm:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftLowerArm);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightLowerArm);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Hand:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftHand);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightHand);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.UpperLeg:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftUpperLeg);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightUpperLeg);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.LowerLeg:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftLowerLeg);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightLowerLeg);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Foot:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftFoot);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightFoot);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.All:
|
|
|
+ result = new Transform[1];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.Spine);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Neck:
|
|
|
+ result = new Transform[1];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.Neck);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Clavicle:
|
|
|
+ result = new Transform[1];
|
|
|
+ //result[0] = ani.GetBoneTransform(HumanBodyBones.cl);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Shoulder:
|
|
|
+ result = new Transform[2];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.LeftShoulder);
|
|
|
+ result[1] = ani.GetBoneTransform(HumanBodyBones.RightShoulder);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Chest:
|
|
|
+ result = new Transform[2];
|
|
|
+ var p = ani.GetBoneTransform(HumanBodyBones.Chest);
|
|
|
+ result[0] = GetChild(p, "Chest_L");
|
|
|
+ result[1] = GetChild(p, "Chest_R");
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Pleural:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Belly:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.UpperArmUp:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.UpperArmDown:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.UpperLegUp:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.UpperLegDown:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.LowerLegUp:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.LowerLegDown:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Head:
|
|
|
+ result = new Transform[1];
|
|
|
+ result[0] = ani.GetBoneTransform(HumanBodyBones.Head);
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Acromion:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Waist:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Wrist:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Crotch:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Hips:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Knee:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.Ankle:
|
|
|
+ break;
|
|
|
+ case EditableBodyPart.None:
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
public static void GetNormalAniBonesScale(Animator ani,ref Dictionary<string, Vector3> boneDic)
|
|
|
{
|
|
|
for (int i = 0; i < Enum.GetValues(typeof(HumanBodyBones)).Length - 1; i++)
|