Ejemplo n.º 1
0
        public SkeletonBone(SkeletonBoneType type, JointTrackingState trackingState, double x, double y, double z)
        {
            this.type          = type;
            this.trackingState = trackingState;

            vector = new Vector3D(x, y, z);
            vector.Normalize();
        }
Ejemplo n.º 2
0
        public SkeletonBone(SkeletonBoneType type, JointTrackingState trackingState, double x, double y, double z)
        {
            this.type = type;
            this.trackingState = trackingState;

            vector = new Vector3D(x, y, z);
            vector.Normalize();
        }
Ejemplo n.º 3
0
        private SkeletonBone getBone(SkeletonBoneType boneType)
        {
            if (!bones.ContainsKey(boneType))
            {
                Joint j1;
                Joint j2;

                switch (boneType)
                {
                case SkeletonBoneType.LowerLegLeft:
                    j1 = skeleton.Joints[JointType.KneeLeft];
                    j2 = skeleton.Joints[JointType.AnkleLeft];
                    break;

                case SkeletonBoneType.LowerLegRight:
                    j1 = skeleton.Joints[JointType.KneeRight];
                    j2 = skeleton.Joints[JointType.AnkleRight];
                    break;

                case SkeletonBoneType.UpperLegLeft:
                    j1 = skeleton.Joints[JointType.HipLeft];
                    j2 = skeleton.Joints[JointType.KneeLeft];
                    break;

                case SkeletonBoneType.UpperLegRight:
                    j1 = skeleton.Joints[JointType.HipRight];
                    j2 = skeleton.Joints[JointType.KneeRight];
                    break;

                case SkeletonBoneType.BackLower:
                    j1 = skeleton.Joints[JointType.HipCenter];
                    j2 = skeleton.Joints[JointType.Spine];
                    break;

                default:
                    throw new InvalidEnumArgumentException();
                }

                JointTrackingState trackingState;

                if (j1.TrackingState.Equals(JointTrackingState.Tracked) &&
                    j2.TrackingState.Equals(JointTrackingState.Tracked))
                {
                    trackingState = JointTrackingState.Tracked;
                }
                else if (j1.TrackingState.Equals(JointTrackingState.NotTracked) ||
                         j2.TrackingState.Equals(JointTrackingState.NotTracked))
                {
                    trackingState = JointTrackingState.NotTracked;
                }
                else
                {
                    trackingState = JointTrackingState.Inferred;
                }

                SkeletonBone bone = new SkeletonBone(
                    boneType,
                    trackingState,
                    j2.Position.X - j1.Position.X,
                    j2.Position.Y - j1.Position.Y,
                    j2.Position.Z - j1.Position.Z
                    );

                bones[boneType] = bone;

                return(bone);
            }

            return(bones[boneType]);
        }
Ejemplo n.º 4
0
        private SkeletonBone getBone(SkeletonBoneType boneType)
        {
            if (!bones.ContainsKey(boneType))
            {
                Joint j1;
                Joint j2;

                switch (boneType)
                {
                    case SkeletonBoneType.LowerLegLeft:
                        j1 = skeleton.Joints[JointType.KneeLeft];
                        j2 = skeleton.Joints[JointType.AnkleLeft];
                        break;
                    case SkeletonBoneType.LowerLegRight:
                        j1 = skeleton.Joints[JointType.KneeRight];
                        j2 = skeleton.Joints[JointType.AnkleRight];
                        break;
                    case SkeletonBoneType.UpperLegLeft:
                        j1 = skeleton.Joints[JointType.HipLeft];
                        j2 = skeleton.Joints[JointType.KneeLeft];
                        break;
                    case SkeletonBoneType.UpperLegRight:
                        j1 = skeleton.Joints[JointType.HipRight];
                        j2 = skeleton.Joints[JointType.KneeRight];
                        break;
                    case SkeletonBoneType.BackLower:
                        j1 = skeleton.Joints[JointType.HipCenter];
                        j2 = skeleton.Joints[JointType.Spine];
                        break;
                    default:
                        throw new InvalidEnumArgumentException();
                }

                JointTrackingState trackingState;

                if (j1.TrackingState.Equals(JointTrackingState.Tracked)
                    && j2.TrackingState.Equals(JointTrackingState.Tracked))
                {
                    trackingState = JointTrackingState.Tracked;
                }
                else if (j1.TrackingState.Equals(JointTrackingState.NotTracked)
                    || j2.TrackingState.Equals(JointTrackingState.NotTracked))
                {
                    trackingState = JointTrackingState.NotTracked;
                }
                else
                {
                    trackingState = JointTrackingState.Inferred;
                }

                SkeletonBone bone = new SkeletonBone(
                    boneType,
                    trackingState,
                    j2.Position.X - j1.Position.X,
                    j2.Position.Y - j1.Position.Y,
                    j2.Position.Z - j1.Position.Z
                    );

                bones[boneType] = bone;

                return bone;
            }

            return bones[boneType];
        }