Esempio n. 1
0
 public PoseError(BoneType first, BoneType second, float error)
 {
     plane        = BasePlanes.Frontal;
     boneTypes    = new BoneType[2];
     boneTypes[0] = first;
     boneTypes[1] = second;
     errorMargin  = error;
 }
Esempio n. 2
0
 public PoseError(BasePlanes reference, BoneType first, BoneType second, float error)
 {
     plane        = reference;
     boneTypes    = new BoneType[2];
     boneTypes[0] = first;
     boneTypes[1] = second;
     errorMargin  = error;
 }
Esempio n. 3
0
        public PlaneBasedBodyAngles(BasePlanes targetPlane)
        {
            plane  = targetPlane;
            angles = new Dictionary <BoneType, Dictionary <BoneType, float> >();

            for (int i = 0; i < Bone.boneTypeCount; i++)
            {
                angles[(BoneType)i] = new Dictionary <BoneType, float>();
            }
        }
Esempio n. 4
0
        public PlaneBasedBodyAngles(BodyJoints body, BasePlanes targetPlane)
        {
            plane  = targetPlane;
            angles = new Dictionary <BoneType, Dictionary <BoneType, float> >();

            for (int i = 0; i < Bone.boneTypeCount; i++)
            {
                angles.Add((BoneType)i, new Dictionary <BoneType, float>());
            }

            //init a PlaneBaseBodyAngles from the body

            var bones = MovementAnalyzer.ExtractBonesFromBodyJoints(body);

            var upperPlanes   = MovementAnalyzer.GenerateUpperBodyPlanes(body);
            var lowerPlanes   = MovementAnalyzer.GenerateLowerBodyPlanes(body);
            var centralPlanes = MovementAnalyzer.GenerateCentralTrunkPlanes(body);

            foreach (var entry in bones)
            {
                var type = entry.Key;
                var bone = entry.Value;

                switch (type)
                {
                case BoneType.UpperNeck:
                    CheckAndAddAngle(type, BoneType.LowerNeck, bones, upperPlanes[plane]);
                    break;

                case BoneType.LowerNeck:
                    CheckAndAddAngle(type, BoneType.UpperNeck, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.UpperBody, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightClavicule, bones, upperPlanes[plane]);
                    break;

                case BoneType.UpperBody:
                    CheckAndAddAngle(type, BoneType.LowerNeck, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LowerBody, bones, upperPlanes[plane]);
                    break;

                case BoneType.LeftClavicule:
                    CheckAndAddAngle(type, BoneType.LowerNeck, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.UpperBody, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftArm, bones, upperPlanes[plane]);
                    break;

                case BoneType.LeftArm:
                    CheckAndAddAngle(type, BoneType.LeftClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftForearm, bones, upperPlanes[plane]);
                    break;

                case BoneType.LeftForearm:
                    CheckAndAddAngle(type, BoneType.LeftArm, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftWrist, bones, lowerPlanes[plane]);
                    break;

                case BoneType.LeftWrist:
                    CheckAndAddAngle(type, BoneType.LeftForearm, bones, lowerPlanes[plane]);
                    break;

                case BoneType.RightClavicule:
                    CheckAndAddAngle(type, BoneType.LowerNeck, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.UpperBody, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightArm, bones, upperPlanes[plane]);
                    break;

                case BoneType.RightArm:
                    CheckAndAddAngle(type, BoneType.RightClavicule, bones, upperPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightForearm, bones, upperPlanes[plane]);
                    break;

                case BoneType.RightForearm:
                    CheckAndAddAngle(type, BoneType.RightArm, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightWrist, bones, lowerPlanes[plane]);
                    break;

                case BoneType.RightWrist:
                    CheckAndAddAngle(type, BoneType.RightForearm, bones, lowerPlanes[plane]);
                    break;

                case BoneType.LowerBody:
                    CheckAndAddAngle(type, BoneType.UpperBody, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftHipbone, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightHipbone, bones, lowerPlanes[plane]);
                    break;

                case BoneType.LeftHipbone:
                    CheckAndAddAngle(type, BoneType.LowerBody, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightHipbone, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftThigh, bones, lowerPlanes[plane]);
                    break;

                case BoneType.LeftThigh:
                    CheckAndAddAngle(type, BoneType.LeftHipbone, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftLeg, bones, lowerPlanes[plane]);
                    break;

                case BoneType.LeftLeg:
                    CheckAndAddAngle(type, BoneType.LeftThigh, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftAnkle, bones, lowerPlanes[plane]);
                    break;

                case BoneType.LeftAnkle:
                    CheckAndAddAngle(type, BoneType.LeftLeg, bones, lowerPlanes[plane]);
                    break;

                case BoneType.RightHipbone:
                    CheckAndAddAngle(type, BoneType.LowerBody, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.LeftHipbone, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightThigh, bones, lowerPlanes[plane]);
                    break;

                case BoneType.RightThigh:
                    CheckAndAddAngle(type, BoneType.RightHipbone, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightLeg, bones, lowerPlanes[plane]);
                    break;

                case BoneType.RightLeg:
                    CheckAndAddAngle(type, BoneType.RightThigh, bones, lowerPlanes[plane]);
                    CheckAndAddAngle(type, BoneType.RightAnkle, bones, lowerPlanes[plane]);
                    break;

                case BoneType.RightAnkle:
                    CheckAndAddAngle(type, BoneType.RightLeg, bones, lowerPlanes[plane]);
                    break;
                }
            }
        }