Exemplo n.º 1
0
        /// <summary>
        ///     Draws a skeleton's bones and joints.
        /// </summary>
        /// <param name="skeleton"> Skeleton to draw. </param>
        /// <param name="drawingContext"> Drawing context to draw to. </param>
        private void DrawBonesAndJoints(Skeleton skeleton, DrawingContext drawingContext)
        {
            if (this.enabledSkeleton)
            {
                DrawBones(skeleton, drawingContext);
            }

            // Render Joints.
            foreach (Joint joint in skeleton.Joints)
            {
                if (enabledSkeleton)
                {
                    this.DrawJoint(drawingContext, joint);
                }

                //***************************TO DO *********************************
                // Si el joint está en estado JointTrackingState.Tracked y su tipo
                // es el que queremos seguir joint.JointType == JointType.HandRight
                // añadir la posición del Joint al reconocedor.

                if (joint.TrackingState == JointTrackingState.Tracked && joint.JointType == JointType.HandLeft)
                {
                    swipeGestureRecognizer.Add(joint.Position, sensor);
                }

                if (joint.TrackingState == JointTrackingState.Tracked && joint.JointType == JointType.HandRight)
                {
                    circleGestureRecognizer.Add(joint.Position, sensor);
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Draws a skeleton's bones and joints
 /// </summary>
 /// <param name="skeleton">skeleton to draw</param>
 /// <param name="drawingContext">drawing context to draw to</param>
 private void CatchGestures(Skeleton skeleton)
 {
     foreach (Joint joint in skeleton.Joints)
     {
         if (joint.JointType == JointType.HandRight && joint.TrackingState == JointTrackingState.Tracked)
         {
             swipeGestureDetector.Add(joint.Position, sensor);
         }
         if (joint.JointType == JointType.HandLeft && joint.TrackingState == JointTrackingState.Tracked)
         {
             circleGestureRecognizer.Add(joint.Position, sensor);
         }
     }
 }
Exemplo n.º 3
0
        void ProcessFrame(ReplaySkeletonFrame frame)
        {
            Dictionary <int, string> stabilities = new Dictionary <int, string>();

            foreach (var skeleton in frame.Skeletons)
            {
                if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
                {
                    continue;
                }

                barycenterHelper.Add(skeleton.Position.ToVector3(), skeleton.TrackingID);

                stabilities.Add(skeleton.TrackingID, barycenterHelper.IsStable(skeleton.TrackingID) ? "Stable" : "Unstable");
                if (!barycenterHelper.IsStable(skeleton.TrackingID))
                {
                    continue;
                }

                if (recordNextFrameForPosture)
                {
                    recordNextFrameForPosture = false;
                    templatePostureDetector.AddTemplate(skeleton);
                }

                foreach (Joint joint in skeleton.Joints)
                {
                    if (joint.Position.W < 0.8f || joint.TrackingState != JointTrackingState.Tracked)
                    {
                        continue;
                    }

                    if (joint.ID == JointID.HandRight)
                    {
                        swipeGestureRecognizer.Add(joint.Position, kinectRuntime.SkeletonEngine);
                        circleGestureRecognizer.Add(joint.Position, kinectRuntime.SkeletonEngine);
                    }
                }

                algorithmicPostureRecognizer.TrackPostures(skeleton);
                templatePostureDetector.TrackPostures(skeleton);
            }

            skeletonDisplayManager.Draw(frame);

            stabilitiesList.ItemsSource = stabilities;

            currentPosture.Text = "Current posture: " + algorithmicPostureRecognizer.CurrentPosture.ToString();
        }
        void ProcessFrame(ReplaySkeletonFrame frame)
        {
            Dictionary <int, string> stabilities = new Dictionary <int, string>();

            foreach (var skeleton in frame.Skeletons)
            {
                if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
                {
                    continue;
                }

                contextTracker.Add(skeleton.Position.ToVector3(), skeleton.TrackingId);
                stabilities.Add(skeleton.TrackingId, contextTracker.IsStableRelativeToCurrentSpeed(skeleton.TrackingId) ? "Stable" : "Non stable");
                if (!contextTracker.IsStableRelativeToCurrentSpeed(skeleton.TrackingId))
                {
                    continue;
                }

                foreach (Joint joint in skeleton.Joints) //오른손기능구현부
                {
                    if (joint.TrackingState != JointTrackingState.Tracked)
                    {
                        continue;
                    }

                    if (joint.JointType == JointType.HandRight)
                    {
                        circleGestureRecognizer.Add(joint.Position, kinectSensor);
                        triangleGestureRecognizer.Add(joint.Position, kinectSensor);
                        //Add Triangle
                        switch (swipeGestureRecognizer.icon_bit)
                        {
                        case 0:
                            if (swipeGestureRecognizer.cir_bit == 0x01)     //브라우져 영역
                            {
                                controlMouse.IsChecked  = true;
                                Browser_grid.Visibility = Visibility.Visible;
                            }
                            break;

                        case 1:
                            if (swipeGestureRecognizer.cir_bit == 0x01)     //빙맵 영역
                            {
                                BingMap_Loaded();
                            }
                            break;

                        case 2:
                            if (swipeGestureRecognizer.cir_bit == 0x01)
                            {
                                gdDoc.Visibility = Visibility.Visible;
                                btnDocument_Click();
                                PPT_Loaded();     //추가
                            }
                            break;

                        case 3:
                            if (swipeGestureRecognizer.cir_bit == 0x01)     //미디어 영역
                            {
                                Media_Loaded();
                            }
                            break;

                        case 4:
                            if (swipeGestureRecognizer.cir_bit == 0x01)
                            {
                                gdPicture.Visibility = Visibility.Visible;

                                if (swipeGestureRecognizer.cir_bit == 0x03)
                                {      //처음 서클비트가 1이들어가 그냥출력하게 해봄
                                    swipeGestureRecognizer.pic_bit = 0;
                                    gdPicture.Visibility           = Visibility.Hidden;
                                    gdPicture.Visibility           = Visibility.Visible;
                                    btnPicture_Click();
                                }
                                else
                                {
                                    btnPicture_Click();
                                }
                            }
                            break;

                        case 5:
                            if (swipeGestureRecognizer.cir_bit == 0x01)
                            {
                                gdVideo.Visibility = Visibility.Visible;
                                btnVideo_Click();
                            }
                            break;

                        default:

                            break;
                        }
                    }
                    else if (joint.JointType == JointType.HandLeft) //왼손 구현부
                    {
                        swipeGestureRecognizer.Add(joint.Position, kinectSensor);
                        if (controlMouse.IsChecked == true)
                        {
                            MouseController.Current.SetHandPosition(kinectSensor, joint, skeleton);
                        }

                        //sw1 = pic_bit;


                        switch (swipeGestureRecognizer.sw_bit) //프로세스 영역 죽이는 구현부
                        {
                        case 0x01:
                            controlMouse.IsChecked  = false;
                            Browser_grid.Visibility = Visibility.Hidden;     //인터넷창 없앰

                            foreach (Process p in Process.GetProcessesByName("iexplore"))
                            {
                                p.Kill();
                            }
                            foreach (Process p in Process.GetProcessesByName("wmplayer"))      //추가
                            {
                                p.Kill();
                            }

                            swipeGestureRecognizer.cir_bit = 0x00;     // Swipe Up 에 의한 Cir_bit의 초기화
                            break;

                        //Internet Swipe_Up => Run.... 닫기 동작에 대한 정의
                        case 0x02:
                            swipeGestureRecognizer.cir_bit = 0x00;
                            break;

                        //Bing Map => Run....
                        case 0x04:

                            gdDoc.Visibility = Visibility.Hidden;
                            foreach (Process p in Process.GetProcessesByName("POWERPNT"))
                            {
                                p.Kill();
                            }

                            swipeGestureRecognizer.cir_bit = 0x00;
                            break;

                        case 0x08:                                                        // Media Ended
                            foreach (Process p in Process.GetProcessesByName("wmplayer")) //추가
                            {
                                p.Kill();
                            }
                            swipeGestureRecognizer.cir_bit = 0x00;
                            break;

                        case 0x10:
                            gdPicture.Visibility           = Visibility.Hidden;
                            swipeGestureRecognizer.cir_bit = 0x00;
                            break;

                        case 0x20:
                            foreach (Process p in Process.GetProcessesByName("wmplayer"))      //추가
                            {
                                p.Kill();
                            }
                            gdVideo.Visibility             = Visibility.Hidden;
                            swipeGestureRecognizer.cir_bit = 0x00;
                            break;
                        }
                    }
                }

                algorithmicPostureRecognizer.TrackPostures(skeleton);
                templatePostureDetector.TrackPostures(skeleton);

                if (recordNextFrameForPosture)
                {
                    templatePostureDetector.AddTemplate(skeleton);
                    recordNextFrameForPosture = false;
                }
            }

            //skeletonDisplayManager.Draw(frame.Skeletons, seatedMode.IsChecked == true);

            stabilitiesList.ItemsSource = stabilities;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Draws a skeleton's bones and joints
        /// </summary>
        /// <param name="skeleton">skeleton to draw</param>
        /// <param name="drawingContext">drawing context to draw to</param>
        private void DrawBonesAndJoints(Skeleton skeleton, DrawingContext drawingContext)
        {
            // Render Torso
            this.DrawBone(skeleton, drawingContext, JointType.Head, JointType.ShoulderCenter);
            this.DrawBone(skeleton, drawingContext, JointType.ShoulderCenter, JointType.ShoulderLeft);
            this.DrawBone(skeleton, drawingContext, JointType.ShoulderCenter, JointType.ShoulderRight);
            this.DrawBone(skeleton, drawingContext, JointType.ShoulderCenter, JointType.Spine);
            this.DrawBone(skeleton, drawingContext, JointType.Spine, JointType.HipCenter);
            this.DrawBone(skeleton, drawingContext, JointType.HipCenter, JointType.HipLeft);
            this.DrawBone(skeleton, drawingContext, JointType.HipCenter, JointType.HipRight);

            // Left Arm
            this.DrawBone(skeleton, drawingContext, JointType.ShoulderLeft, JointType.ElbowLeft);
            this.DrawBone(skeleton, drawingContext, JointType.ElbowLeft, JointType.WristLeft);
            this.DrawBone(skeleton, drawingContext, JointType.WristLeft, JointType.HandLeft);

            // Right Arm
            this.DrawBone(skeleton, drawingContext, JointType.ShoulderRight, JointType.ElbowRight);
            this.DrawBone(skeleton, drawingContext, JointType.ElbowRight, JointType.WristRight);
            this.DrawBone(skeleton, drawingContext, JointType.WristRight, JointType.HandRight);

            // Left Leg
            this.DrawBone(skeleton, drawingContext, JointType.HipLeft, JointType.KneeLeft);
            this.DrawBone(skeleton, drawingContext, JointType.KneeLeft, JointType.AnkleLeft);
            this.DrawBone(skeleton, drawingContext, JointType.AnkleLeft, JointType.FootLeft);

            // Right Leg
            this.DrawBone(skeleton, drawingContext, JointType.HipRight, JointType.KneeRight);
            this.DrawBone(skeleton, drawingContext, JointType.KneeRight, JointType.AnkleRight);
            this.DrawBone(skeleton, drawingContext, JointType.AnkleRight, JointType.FootRight);

            // Render Joints
            foreach (Joint joint in skeleton.Joints)
            {
                Brush drawBrush = null;

                if (joint.TrackingState == JointTrackingState.Tracked)
                {
                    drawBrush = this.trackedJointBrush;
                }
                else if (joint.TrackingState == JointTrackingState.Inferred)
                {
                    drawBrush = this.inferredJointBrush;
                }

                if (drawBrush != null)
                {
                    drawingContext.DrawEllipse(drawBrush, null, this.SkeletonPointToScreen(joint.Position), JointThickness, JointThickness);
                }

                //***************************TO DO *********************************
                // Si el joint está en estado JointTrackingState.Tracked y su tipo
                // es el que queremos seguir joint.JointType == JointType.HandRight
                // añadir la posición del Joint al reconocedor
                if (joint.JointType == JointType.HandLeft)
                {
                    swipeGestureRecognizer.Add(joint.Position, sensor);
                }

                if (joint.JointType == JointType.HandRight && joint.TrackingState == JointTrackingState.Tracked)
                {
                    circleGestureRecognizer.Add(joint.Position, sensor);
                }
            }
        }
Exemplo n.º 6
0
        void ProcessFrame(ReplaySkeletonFrame frame)
        {
            Dictionary <int, string> stabilities = new Dictionary <int, string>();

            foreach (var skeleton in frame.Skeletons)
            {
                if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
                {
                    continue;
                }

                //if (eyeTracker == null)
                //    eyeTracker = new EyeTracker(kinectSensor);

                //eyeTracker.Track(skeleton);

                contextTracker.Add(skeleton.Position.ToVector3(), skeleton.TrackingId);
                stabilities.Add(skeleton.TrackingId, contextTracker.IsStableRelativeToCurrentSpeed(skeleton.TrackingId) ? "Stable" : "Non stable");
                if (!contextTracker.IsStableRelativeToCurrentSpeed(skeleton.TrackingId))
                {
                    continue;
                }

                //if (eyeTracker.IsLookingToSensor.HasValue && eyeTracker.IsLookingToSensor == false)
                //    continue;

                foreach (Joint joint in skeleton.Joints)
                {
                    if (joint.TrackingState != JointTrackingState.Tracked)
                    {
                        continue;
                    }

                    if (joint.JointType == JointType.HandRight)
                    {
                        circleGestureRecognizer.Add(joint.Position, kinectSensor);
                    }
                    else if (joint.JointType == JointType.HandLeft)
                    {
                        swipeGestureRecognizer.Add(joint.Position, kinectSensor);
                        if (controlMouse.IsChecked == true)
                        {
                            MouseController.Current.SetHandPosition(kinectSensor, joint, skeleton);
                        }
                    }
                }

                algorithmicPostureRecognizer.TrackPostures(skeleton);
                templatePostureDetector.TrackPostures(skeleton);

                if (recordNextFrameForPosture)
                {
                    templatePostureDetector.AddTemplate(skeleton);
                    recordNextFrameForPosture = false;
                }
            }

            skeletonDisplayManager.Draw(frame.Skeletons, seatedMode.IsChecked == true);

            stabilitiesList.ItemsSource = stabilities;
        }