in body-tracking-samples/sample_unity_bodytracking/Assets/Skeleton/Skeleton.cs [223:448]
private void InitializeBodyParts()
{
bodyPartCache[BodyParts.RightHand] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("R_hand"),
BoneTransformation.Transformations.AlignJointToJoint,
new List<JointId> {
JointId.ElbowRight,
JointId.WristRight },
"x",
0.0f) };
bodyPartCache[BodyParts.LeftHand] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("L_hand"),
BoneTransformation.Transformations.AlignJointToJoint,
new List<JointId> {
JointId.ElbowLeft,
JointId.WristLeft },
"-x",
0.0f) };
bodyPartCache[BodyParts.Head] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("head"),
BoneTransformation.Transformations.AttachToJoint,
new List<JointId> { JointId.Neck },
"x",
0.0f),
new BoneTransformation(
transform.Find("head"),
BoneTransformation.Transformations.AlignJointToMiddleJoints,
new List<JointId> {
JointId.Neck,
JointId.EarRight,
JointId.EarLeft},
"-y",
0.0f)
};
bodyPartCache[BodyParts.Chest] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("chest"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.ShoulderLeft,
JointId.ShoulderRight },
"xz",
Vector3.Distance(
jointCache[JointId.ShoulderLeft].transformation.position,
jointCache[JointId.ShoulderRight].transformation.position)),
new BoneTransformation(
transform.Find("chest"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.SpineNavel,
JointId.ShoulderRight},
"y",
Vector3.Distance(jointCache[JointId.ShoulderLeft].transformation.position,
jointCache[JointId.SpineNavel].transformation.position)),
new BoneTransformation(
transform.Find("chest"),
BoneTransformation.Transformations.AttachToPositionJointAndMiddleJoints,
new List<JointId> {
JointId.SpineNavel,
JointId.ShoulderLeft,
JointId.ShoulderRight },
"x",
0.0f),
new BoneTransformation(
transform.Find("chest"),
BoneTransformation.Transformations.AlignJointToJoint,
new List<JointId> {
JointId.ShoulderLeft,
JointId.ShoulderRight },
"x",
0.0f),
new BoneTransformation(
transform.Find("chest"),
BoneTransformation.Transformations.AlignJointToJoint,
new List<JointId> {
JointId.SpineNavel,
JointId.Pelvis },
"y",
0.0f)
};
bodyPartCache[BodyParts.Hips] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("hips"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.HipLeft,
JointId.HipRight },
"x",
Vector3.Distance(
jointCache[JointId.HipLeft].transformation.position,
jointCache[JointId.HipRight].transformation.position)),
new BoneTransformation(
transform.Find("hips"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.SpineNavel,
JointId.HipRight },
"yz",
Vector3.Distance(
jointCache[JointId.SpineNavel].transformation.position,
jointCache[JointId.HipRight].transformation.position)),
new BoneTransformation(
transform.Find("hips"),
BoneTransformation.Transformations.AlignJointToJoint,
new List<JointId> {
JointId.HipLeft,
JointId.HipRight },
"x",
0.0f),
new BoneTransformation(
transform.Find("hips"),
BoneTransformation.Transformations.AlignJointToMiddleJoints,
new List<JointId> {
JointId.SpineNavel,
JointId.HipLeft,
JointId.HipRight },
"y",
0.0f),
new BoneTransformation(
transform.Find("hips"),
BoneTransformation.Transformations.AttachToPositionJointAndMiddleJoints,
new List<JointId> {
JointId.SpineNavel,
JointId.HipLeft,
JointId.HipRight },
"x",
0.0f)};
bodyPartCache[BodyParts.RightBicep] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("R_bicep"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.ShoulderRight,
JointId.ElbowRight },
"x",
Vector3.Distance(
jointCache[JointId.ShoulderRight].transformation.position,
jointCache[JointId.ElbowRight].transformation.position)) };
bodyPartCache[BodyParts.RightForeArm] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("R_forearm"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.ElbowRight,
JointId.WristRight },
"x",
Vector3.Distance(
jointCache[JointId.ElbowRight].transformation.position,
jointCache[JointId.WristRight].transformation.position)) };
bodyPartCache[BodyParts.LeftBicep] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("L_bicep"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.ShoulderLeft,
JointId.ElbowLeft },
"-x",
Vector3.Distance(jointCache[JointId.ShoulderLeft].transformation.position, jointCache[JointId.ElbowLeft].transformation.position)) };
bodyPartCache[BodyParts.LeftForeArm] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("L_forearm"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.ElbowLeft,
JointId.WristLeft},
"-x",
Vector3.Distance(jointCache[JointId.ElbowLeft].transformation.position, jointCache[JointId.WristLeft].transformation.position)) };
bodyPartCache[BodyParts.RightThigh] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("R_thigh"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.HipRight,
JointId.KneeRight },
"y",
Vector3.Distance(jointCache[JointId.HipRight].transformation.position, jointCache[JointId.KneeRight].transformation.position)) };
bodyPartCache[BodyParts.LeftThigh] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("L_thigh"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.HipLeft,
JointId.KneeLeft },
"y",
Vector3.Distance(jointCache[JointId.HipLeft].transformation.position, jointCache[JointId.KneeRight].transformation.position)) };
bodyPartCache[BodyParts.RightShin] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("R_shin"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.KneeRight,
JointId.AnkleRight },
"y",
Vector3.Distance(jointCache[JointId.KneeRight].transformation.position, jointCache[JointId.AnkleRight].transformation.position)) };
bodyPartCache[BodyParts.LeftShin] = new List<BoneTransformation>(){
new BoneTransformation(
transform.Find("L_shin"),
BoneTransformation.Transformations.ScaleBetweenJoints,
new List<JointId> {
JointId.KneeLeft,
JointId.AnkleLeft},
"y",
Vector3.Distance(jointCache[JointId.KneeLeft].transformation.position, jointCache[JointId.AnkleLeft].transformation.position)) };
}