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