private void InitializeBodyParts()

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)) };
    }