Example #1
0
        public ISingleFrameResult GetData()
        {
            ISingleFrameResult result = ModelResolver.Resolve <ISingleFrameResult>();

            if (HeadPoints != null)
            {
                result.HeadPoints = HeadPoints.Select(x => x.GetPoint()).ToArray();
            }
            else
            {
                result.HeadPoints = null;
            }

            if (HeadPoint != null)
            {
                result.HeadPoint = HeadPoint.GetPoint();
            }

            if (SmoothedHeadPoint != null)
            {
                result.SmoothedHeadPoint = SmoothedHeadPoint.GetPoint();
            }

            if (Orientation != null)
            {
                result.Orientation = Orientation.GetVector();
            }

            result.CentroidSize    = CentroidSize;
            result.PelvicArea      = PelvicArea;
            result.Velocity        = Velocity;
            result.AngularVelocity = AngularVelocity;
            result.Distance        = Distance;
            result.PelvicArea2     = PelvicArea2;
            result.PelvicArea3     = PelvicArea3;
            result.PelvicArea4     = PelvicArea4;

            if (Centroid != null)
            {
                result.Centroid = Centroid.GetPoint();
            }

            result.DataLoadComplete();
            return(result);
        }
        // end of GetCamera point
        private void VolumeControl(RightHandPoint newRightHandPoint, HeadPoint newHeadPoint)
        {
            switch (VolumeState)
            {
                case 0:
                    if (newRightHandPoint.Y == newHeadPoint.Y)
                    {
                       // volumeLabel.Content = "Volume:" + VolumeSlider.Value;
                        //VolumeSlider.Visibility = System.Windows.Visibility.Visible;
                        VolumeState = 1;
                        //volumeLabel.Content = "Volume:" + VolumeSlider.Value;
                    }
                    break;
                case 1:
                    VolumeSlider.Value = PreviousVolumeValue + (newHeadPoint.Y - newRightHandPoint.Y);
                    VolumeSlider.Visibility = System.Windows.Visibility.Visible;
                    volumeLabel.Content = "Volume:" + VolumeSlider.Value;// ( newHeadPoint.Y - newRightHandPoint.Y )

                    if (newRightHandPoint.X - newHeadPoint.X < 50)
                    {
                        VolumeState = 2;
                        IsVolumeStart = true;
                        //MessageBox.Show("Value Changed1 ");
                    }

                    break;
                default:
                    break;
            }

            if (!VolumeStart && IsVolumeStart == true)
            {
                //if (!VolumeStart)
               // MessageBox.Show("Value Changed2 " + (newHeadPoint.Y - newRightHandPoint.Y));
                IsVolumeStart = false;
                PreviousVolumeValue = VolumeSlider.Value;
                volumeLabel.Content = "";
                VolumeSlider.Visibility = System.Windows.Visibility.Hidden;
                VolumeStart = true;
                VolumeState = 0;
                //VolumeSlider.Value += newHeadPoint.Y - RightHandPointsList.Last().Y;
                //return;
            }
            else
            {
                VolumeStart = false;
            }
        }
        private void GetCameraPoint(Skeleton first, AllFramesReadyEventArgs e)
        {
            using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())
            {
                if (depthFrame == null || _sensor == null)
                    return;

                // DepthImagePoint headDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);

                // right hand point information
                DepthImagePoint RightHandDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.HandRight].Position);
                RightHandPoint newRightHandPoint = new RightHandPoint()
                {
                    X = RightHandDepthPoint.X,
                    Y = RightHandDepthPoint.Y,
                    Z = RightHandDepthPoint.Depth,
                    T = DateTime.Now
                };

                //left hand point information
                DepthImagePoint LeftHandDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.HandLeft].Position);
                LeftHandPoint newLeftHandPoint = new LeftHandPoint()
                {
                    X = LeftHandDepthPoint.X,
                    Y = LeftHandDepthPoint.Y,
                    Z = LeftHandDepthPoint.Depth,
                    T = DateTime.Now
                };

                // right shoulder point information
                DepthImagePoint RightShoulderDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ShoulderRight].Position);
                RightShoulderPoint newRightShoulderPoint = new RightShoulderPoint()
                {
                    X = RightShoulderDepthPoint.X,
                    Y = RightShoulderDepthPoint.Y,
                    Z = RightShoulderDepthPoint.Depth,
                    T = DateTime.Now
                };

                // left shoulder point information
                DepthImagePoint LeftShoulderDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ShoulderLeft].Position);
                LeftShoulderPoint newLeftShoulderPoint = new LeftShoulderPoint()
                {
                    X = LeftShoulderDepthPoint.X,
                    Y = LeftShoulderDepthPoint.Y,
                    Z = LeftShoulderDepthPoint.Depth,
                    T = DateTime.Now
                };

                // right elbow point
                DepthImagePoint RightElbowDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ElbowRight].Position);
                RightElbowPoint newRightElbowPoint = new RightElbowPoint()
                {
                    X = RightElbowDepthPoint.X,
                    Y = RightElbowDepthPoint.Y,
                    Z = RightElbowDepthPoint.Depth,
                    T = DateTime.Now
                };

                // left elbow point
                DepthImagePoint LeftElbowDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ElbowLeft].Position);
                LeftElbowPoint newLeftElbowPoint = new LeftElbowPoint()
                {
                    X = LeftElbowDepthPoint.X,
                    Y = LeftElbowDepthPoint.Y,
                    Z = LeftElbowDepthPoint.Depth,
                    T = DateTime.Now
                };

                DepthImagePoint RightWristDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.WristRight].Position);
                RightWristPoint newRightWristPoint = new RightWristPoint()
                {
                    X = RightWristDepthPoint.X,
                    Y = RightWristDepthPoint.Y,
                    Z = RightWristDepthPoint.Depth,
                    T = DateTime.Now
                };

                DepthImagePoint HeadDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);
                HeadPoint newHeadPoint = new HeadPoint()
                {
                    X = HeadDepthPoint.X,
                    Y = HeadDepthPoint.Y,
                    Z = HeadDepthPoint.Depth,
                    T = DateTime.Now
                };

                //user should stand in the right place before eveything start
                // the two if condition requires the user to stand in front of Kinect in a box area
                if (newHeadPoint.Z < 1700 || newHeadPoint.Z > 2000)
                {
                    StatusLabel.Content = "";
                    ProgressBar.Visibility = System.Windows.Visibility.Hidden;
                    label1.Visibility = System.Windows.Visibility.Hidden;
                    label2.Visibility = System.Windows.Visibility.Hidden;
                    LeftHandPointsList.Clear();
                    return;
                }

                // user should stand right in front of Kinect
                //if (newHeadPoint.X > 320 || newHeadPoint.X < 280)
                //{
                //    StatusLabel.Content = "";
                //    return;
                //}

                StatusLabel.Content = "Control Mode(1.7m~2m): "+ newHeadPoint.Z/1000+ "m";
                ProgressBar.Visibility = System.Windows.Visibility.Visible;
                label1.Visibility = System.Windows.Visibility.Visible;
                label2.Visibility = System.Windows.Visibility.Visible;
                // the left hand  push event;
                if (newLeftHandPoint.X > newLeftElbowPoint.X)
                {
                    Push(newLeftHandPoint, newLeftElbowPoint);
                }

                if (newLeftHandPoint.Y < newHeadPoint.Y)// left hand wave to quit
                {
                    // MessageBox.Show("Left wave");
                    LeftHandWave(newLeftHandPoint, newHeadPoint, newLeftElbowPoint);
                }
                else
                {
                    IsLeftHandWave = false;
                }

                //Volume control
                if (Math.Abs(newRightHandPoint.Y - newHeadPoint.Y) < newRightShoulderPoint.Y - newHeadPoint.Y
                   && Math.Abs(newRightHandPoint.X - newRightShoulderPoint.X) < newRightShoulderPoint.X - newHeadPoint.X)
                {
                    VolumeControl(newRightHandPoint, newHeadPoint);
                }
                else
                {
                    IsVolumeStart = false;
                }

                if (newRightHandPoint.Y > newRightShoulderPoint.Y
                    && newRightHandPoint.X > newHeadPoint.X + 200)//right swipe
                {
                    //trigger the right swipe gesture
                    rightSwipeGesture();
                }
                else
                {
                    IsRightSwipeStart = false;
                }

                //left swipe
                if ( newLeftHandPoint.Y > newLeftShoulderPoint.Y && newLeftHandPoint.X < newHeadPoint.X - 200)
                {
                    leftSwipeGesture();
                }
                else
                {
                    IsLeftSwipeStart = false;
                }

            }// end of using statement
        }
        private void GetCameraPoint(Skeleton first, AllFramesReadyEventArgs e)
        {
            using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())
            {
                if (depthFrame == null || _sensor == null)
                    return;

                // DepthImagePoint headDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);

                //left hand point information
                DepthImagePoint LeftHandDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.HandLeft].Position);
                LeftHandPoint newLeftHandPoint = new LeftHandPoint()
                {
                    X = LeftHandDepthPoint.X,
                    Y = LeftHandDepthPoint.Y,
                    Z = LeftHandDepthPoint.Depth,
                    T = DateTime.Now
                };

                DepthImagePoint HeadDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);
                HeadPoint newHeadPoint = new HeadPoint()
                {
                    X = HeadDepthPoint.X,
                    Y = HeadDepthPoint.Y,
                    Z = HeadDepthPoint.Depth,
                    T = DateTime.Now
                };

                //user should stand in the right place before eveything start
                // the two if condition requires the user to stand in front of Kinect in a box area
                if (newHeadPoint.Z < 1700 || newHeadPoint.Z > 2000)
                {
                    StatusLabel.Visibility = System.Windows.Visibility.Hidden;
                    StatusLabel.Content = "";
                    return;
                }

                StatusLabel.Visibility = System.Windows.Visibility.Visible;
                StatusLabel.Content = "Control Mode(1.7m~2m): " + newHeadPoint.Z / 1000 + "m";
                // left hand wave to quit system
                if (newLeftHandPoint.Y < newHeadPoint.Y)
                {
                    // MessageBox.Show("Left wave");
                    LeftHandWave(newLeftHandPoint, newHeadPoint);
                }
                else
                {
                    IsLeftHandWave = false;
                }

            }// end of using statement
        }
        //a very simple version of left hand wave
        private void LeftHandWave(LeftHandPoint newLeftHandPoint, HeadPoint newHeadPoint, LeftElbowPoint newLeftElbowPoint)
        {
            //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
            if (!IsLeftHandWave && newHeadPoint.X - newLeftHandPoint.X > 200)
            //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
            {
                IsLeftHandWave = true;
                _sensor.AllFramesReady -= _sensor_AllFramesReady;
                (Application.Current.MainWindow.FindName("mainFrame") as Frame).Source = new Uri("Movie.xaml", UriKind.RelativeOrAbsolute);
            }

            // closing the event handler
        }
        public List<HeadPoint> GetBaseDots()
        {
            var pointsDict = new Dictionary<int, HeadPoint>();
            foreach (var rect in Rects)
            {
                if (!pointsDict.ContainsKey(rect.A))
                    pointsDict.Add(rect.A, new HeadPoint(rect.Points[0]) { Visible = rect.Type != MeshPartType.REar && rect.Type != MeshPartType.LEar });
                if (!pointsDict.ContainsKey(rect.B))
                    pointsDict.Add(rect.B, new HeadPoint(rect.Points.Last()) { Visible = rect.Type != MeshPartType.REar && rect.Type != MeshPartType.LEar });
            }
            var result = new HeadPoint[defaultDots.Count];
            foreach (var p in pointsDict)
                result[p.Key] = p.Value;
            for (var i = 0; i < result.Length; i++)
            {
                if (result[i] == null)
                    result[i] = defaultDots[i];
                result[i].OriginalValue = defaultDots[i].OriginalValue;
            }

            result[20].Visible = false;
            result[42].Visible = false;

            result[12].Visible = false;
            result[13].Visible = false;
            result[14].Visible = false;
            result[34].Visible = false;
            result[35].Visible = false;
            result[36].Visible = false;

            result[10].LinkedPoints.Add(12);
            result[33].LinkedPoints.Add(35);
            result[33].LinkedPoints.Add(36);
            result[11].LinkedPoints.Add(13);
            result[11].LinkedPoints.Add(14);
            result[32].LinkedPoints.Add(34);

            result[41].LinkedPoints.Add(42);
            result[19].LinkedPoints.Add(20);

            result[7].LinkedPoints.Add(47);      // уши
            result[8].LinkedPoints.Add(48);
            result[29].LinkedPoints.Add(49);
            result[30].LinkedPoints.Add(50);

            return result.ToList();
        }
 //a very simple version of left hand wave
 private void LeftHandWave(LeftHandPoint newLeftHandPoint, HeadPoint newHeadPoint)
 {
     if ( !IsLeftHandWave &&newHeadPoint.X - newLeftHandPoint.X > 200)
     //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
     {
         IsLeftHandWave = true;
        // System.Threading.Thread.Sleep(1000);
        // MessageBox.Show("MainMenu");
         Application.Current.Shutdown();
     }
 }
Example #8
0
        public ISingleFrameExtendedResults GetData()
        {
            ISingleFrameExtendedResults result = ModelResolver.Resolve <ISingleFrameExtendedResults>();

            if (HeadPoints != null)
            {
                result.HeadPoints = HeadPoints.Select(x => x.GetPoint()).ToArray();
            }
            else
            {
                result.HeadPoints = null;
            }

            if (BodyContour != null)
            {
                result.BodyContour = BodyContour.Select(x => x.GetPoint()).ToArray();
            }
            else
            {
                result.BodyContour = null;
            }

            if (HeadPoint != null)
            {
                result.HeadPoint = HeadPoint.GetPoint();
                result.MidPoint  = MidPoint.GetPoint();
            }

            if (SmoothedHeadPoint != null)
            {
                result.SmoothedHeadPoint = SmoothedHeadPoint.GetPoint();
            }

            if (Orientation != null)
            {
                result.Orientation = Orientation.GetVector();
            }

            result.CentroidSize    = CentroidSize;
            result.PelvicArea      = PelvicArea;
            result.Velocity        = Velocity;
            result.AngularVelocity = AngularVelocity;
            result.Distance        = Distance;
            result.PelvicArea2     = PelvicArea2;
            result.PelvicArea3     = PelvicArea3;
            result.PelvicArea4     = PelvicArea4;

            if (Centroid != null)
            {
                result.Centroid = Centroid.GetPoint();
            }

            if (Whiskers != null)
            {
                result.Whiskers = Whiskers.GetWhiskerCollection();
            }

            if (AllWhiskers != null)
            {
                result.AllWhiskers = AllWhiskers.GetWhiskerCollection();
            }

            if (BestTrackedWhisker != null)
            {
                result.BestTrackedWhisker = BestTrackedWhisker.GetWhiskerCollection();
            }

            result.DataLoadComplete();
            return(result);
        }
 public void Transform(HeadPoint[] dots, bool needShape = false)
 {
     if (!needShape)
     {
         foreach (var r in Rects)
         {
             r.Transform(ref dots[r.A].Value, ref dots[r.B].Value);
             for (var i = 0; i < r.Points.Length; i++)
                 ShapeInfo.Points[r.ShapeIndices[i]].Value = r.Points[i];
         }
         return;
     }
     for (var i = 0; i < dots.Length; i++)
         Transform(dots[i].Value, i, false);
     headMeshesController.UpdateShape(ref ShapeInfo);
 }
Example #10
0
        private void VolumeControl(RightHandPoint newRightHandPoint, HeadPoint newHeadPoint)
        {
            if(!IsVolumeStart)
            {
                IsVolumeStart = true;

                StopKinect(_sensor);

                statusLabel.Content = "Loading...";
                _sensor.AllFramesReady -= _sensor_AllFramesReady;
                PhotoVoiceControl newVoice = new PhotoVoiceControl("1",_sensor);
                this.NavigationService.Navigate(newVoice);
                return;
            }
        }
Example #11
0
        private void GetCameraPoint(Skeleton first, AllFramesReadyEventArgs e)
        {
            using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())
            {
                if (depthFrame == null || _sensor == null)
                    return;

                // DepthImagePoint headDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);

                // right hand point information
                DepthImagePoint RightHandDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.HandRight].Position);
                RightHandPoint newRightHandPoint = new RightHandPoint()
                {
                    X = RightHandDepthPoint.X,
                    Y = RightHandDepthPoint.Y,
                    Z = RightHandDepthPoint.Depth,
                    T = DateTime.Now
                };
                RightHandPoint startRightHandPoint;

                //left hand point information
                DepthImagePoint LeftHandDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.HandLeft].Position);
                LeftHandPoint newLeftHandPoint = new LeftHandPoint()
                {
                    X = LeftHandDepthPoint.X,
                    Y = LeftHandDepthPoint.Y,
                    Z = LeftHandDepthPoint.Depth,
                    T = DateTime.Now
                };
                LeftHandPoint startLeftHandPoint;
                // right shoulder point information
                DepthImagePoint RightShoulderDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ShoulderRight].Position);
                RightShoulderPoint newRightShoulderPoint = new RightShoulderPoint()
                {
                    X = RightShoulderDepthPoint.X,
                    Y = RightShoulderDepthPoint.Y,
                    Z = RightShoulderDepthPoint.Depth,
                    T = DateTime.Now
                };

                // left shoulder point information
                DepthImagePoint LeftShoulderDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ShoulderLeft].Position);
                LeftShoulderPoint newLeftShoulderPoint = new LeftShoulderPoint()
                {
                    X = LeftShoulderDepthPoint.X,
                    Y = LeftShoulderDepthPoint.Y,
                    Z = LeftShoulderDepthPoint.Depth,
                    T = DateTime.Now
                };

                // right elbow point
                DepthImagePoint RightElbowDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ElbowRight].Position);
                RightElbowPoint newRightElbowPoint = new RightElbowPoint()
                {
                    X = RightElbowDepthPoint.X,
                    Y = RightElbowDepthPoint.Y,
                    Z = RightElbowDepthPoint.Depth,
                    T = DateTime.Now
                };

                // left elbow point
                DepthImagePoint LeftElbowDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.ElbowLeft].Position);
                LeftElbowPoint newLeftElbowPoint = new LeftElbowPoint()
                {
                    X = LeftElbowDepthPoint.X,
                    Y = LeftElbowDepthPoint.Y,
                    Z = LeftElbowDepthPoint.Depth,
                    T = DateTime.Now
                };

                DepthImagePoint RightWristDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.WristRight].Position);
                RightWristPoint newRightWristPoint = new RightWristPoint()
                {
                    X = RightWristDepthPoint.X,
                    Y = RightWristDepthPoint.Y,
                    Z = RightWristDepthPoint.Depth,
                    T = DateTime.Now
                };

                DepthImagePoint HeadDepthPoint = depthFrame.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);
                HeadPoint newHeadPoint = new HeadPoint()
                {
                    X = HeadDepthPoint.X,
                    Y = HeadDepthPoint.Y,
                    Z = HeadDepthPoint.Depth,
                    T = DateTime.Now
                };

                if (newHeadPoint.Z < 1700 || newHeadPoint.Z > 2000)
                {
                    StatusLabel.Content = "";

                    return;
                }

                StatusLabel.Content = "Control Mode(1.7m~2m): "+ newHeadPoint.Z/1000+ "m";

               if (newRightHandPoint.Y - newHeadPoint.Y < 0
                   && newRightHandPoint.X - newRightShoulderPoint.X > -30)
                {
                    VolumeControl(newRightHandPoint, newHeadPoint);
                }
                else
                {
                    IsVolumeStart = false;
                }

               // left hand wave to quit
                 if (newLeftHandPoint.Y < newHeadPoint.Y)
                {
                   // MessageBox.Show("Left wave");
                    LeftHandWave(newLeftHandPoint, newHeadPoint);
                }
                else
                {
                    IsLeftHandWave = false;
                }

                 if (newRightHandPoint.Y > newRightShoulderPoint.Y
                     && newRightHandPoint.X > newHeadPoint.X + 200)//right swipe
                 {
                     //trigger the right swipe gesture
                     rightSwipeGesture();
                 }
                 else
                 {
                     IsRightSwipeStart = false;
                 }

                 //left swipe
                 if (newLeftHandPoint.Y > newLeftShoulderPoint.Y
                     && newLeftHandPoint.X < newHeadPoint.X - 200)
                 {
                     //MessageBox.Show("Swipe left");
                     leftSwipeGesture();
                 }
                 else
                 {
                     IsLeftSwipeStart = false;
                 }

            }
        }
Example #12
0
        private void VolumeControl(RightHandPoint newRightHandPoint, HeadPoint newHeadPoint)
        {
            //volumeLabel.Content = "Volume:" + VolumeSlider.Value;
            // VolumeSlider.Visibility = System.Windows.Visibility.Visible;
            switch (VolumeState)
            {
                case 0:
                    if (newRightHandPoint.Y == newHeadPoint.Y)
                    {
                        VolumeState = 1;
                        GestureLabel.UpdateLayout();
                        if (GestureLabel.Visibility == Visibility.Hidden)
                        {
                            GestureLabel.Content = "Volume Control Stage 1";
                            GestureLabel.Visibility = Visibility.Visible;
                            timer = new System.Threading.Timer(
                                   (state) =>
                                   {
                                       GestureLabel.Dispatcher.BeginInvoke((Action)(() =>
                                       {
                                           GestureLabel.Visibility = Visibility.Hidden;
                                       }));
                                   }, null, 1000, Int32.MaxValue);

                        }
                        else
                        {
                            GestureLabel.Content = "Volume Control Stage 1";
                        }
                        //volumeLabel.Content = "Volume:" + VolumeSlider.Value;
                    }
                    break;
                case 1:
                    if (newRightHandPoint.X - newHeadPoint.X < 50)
                    {
                        VolumeState = 2;
                        IsVolumeStart = true;
                        GestureLabel.UpdateLayout();
                        if (GestureLabel.Visibility == Visibility.Hidden)
                        {
                            GestureLabel.Content = "Volume Control Stage 2";
                            GestureLabel.Visibility = Visibility.Visible;
                            timer = new System.Threading.Timer(
                                   (state) =>
                                   {
                                       GestureLabel.Dispatcher.BeginInvoke((Action)(() =>
                                       {
                                           GestureLabel.Visibility = Visibility.Hidden;
                                       }));
                                   }, null, 1000, Int32.MaxValue);

                        }
                        else
                        {
                            GestureLabel.Content = "Volume Control Stage 2";
                        }
                        //MessageBox.Show("Value Changed1 ");
                    }

                    break;
                default:
                    break;
            }

            if (!VolumeStart && IsVolumeStart == true)
            {

                IsVolumeStart = false;
                VolumeStart = true;
                VolumeState = 0;
                GestureLabel.UpdateLayout();
                if (GestureLabel.Visibility == Visibility.Hidden)
                {
                    GestureLabel.Content = "Volume Control Succeed!";
                    GestureLabel.Visibility = Visibility.Visible;
                    timer = new System.Threading.Timer(
                           (state) =>
                           {
                               GestureLabel.Dispatcher.BeginInvoke((Action)(() =>
                               {
                                   GestureLabel.Visibility = Visibility.Hidden;
                               }));
                           }, null, 1000, Int32.MaxValue);

                }
                else
                {
                    GestureLabel.Content = "Volume Control Succeed!";
                }

            }
            else
            {
                VolumeStart = false;
            }
        }
Example #13
0
        //a very simple version of left hand wave
        private void LeftHandWave(LeftHandPoint newLeftHandPoint, HeadPoint newHeadPoint)
        {
            //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
            if (!IsLeftHandWave && newHeadPoint.X - newLeftHandPoint.X > 200)
            //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
            {
                IsLeftHandWave = true;
                GestureLabel.UpdateLayout();
                if (GestureLabel.Visibility == Visibility.Hidden)
                {
                    GestureLabel.Content = "Quit";
                    GestureLabel.Visibility = Visibility.Visible;
                    timer = new System.Threading.Timer(
                           (state) =>
                           {
                               GestureLabel.Dispatcher.BeginInvoke((Action)(() =>
                               {
                                   GestureLabel.Visibility = Visibility.Hidden;
                               }));
                           }, null, 1000, Int32.MaxValue);

                }
                else
                {
                    GestureLabel.Content = "Quit";
                }
                _sensor.AllFramesReady -= _sensor_AllFramesReady;
                (Application.Current.MainWindow.FindName("mainFrame") as Frame).Source = new Uri("MainMenu.xaml", UriKind.RelativeOrAbsolute);

            }
        }
Example #14
0
        //a very simple version of left hand wave
        private void LeftHandWave(LeftHandPoint newLeftHandPoint, HeadPoint newHeadPoint)
        {
            //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
                 if (!IsLeftHandWave && newHeadPoint.X - newLeftHandPoint.X > 200)
                 //left hand wave gesture(start = 0, raisehand = 1, rightside = 2, leftside = 3, putdown = 4)
                 {
                     IsLeftHandWave = true;
                     (Application.Current.MainWindow.FindName("mainFrame") as Frame).Source = new Uri("MainMenu.xaml", UriKind.RelativeOrAbsolute);

                 }
        }
Example #15
0
        /// <summary> Load project from path </summary>
        public static Project FromStream(string path)
        {
            Project result;

            using (var br = new BinaryReader(File.Open(path, FileMode.Open)))
            {
                var projectFi = new FileInfo(path);

                var projectName = br.ReadString();

                #region template image

                var templateImagePath = br.ReadString();
                if (!string.IsNullOrEmpty(templateImagePath))
                {
                    var fiName = Path.Combine(projectFi.DirectoryName, templateImagePath);
                    var fi     = new FileInfo(fiName);
                    if (!fi.Exists)
                    {
                        ProgramCore.EchoToLog("Can't find template image in project.", EchoMessageType.Warning);
                        templateImagePath = string.Empty;
                    }
                }

                #endregion

                var headModelPath = br.ReadString();

                var genesisType = (GenesisType)br.ReadInt32();
                var manType     = (ManType)br.ReadInt32();
                var textureFlip = (FlipType)br.ReadInt32();
                var shapeFlip   = (FlipType)br.ReadInt32();

                var isOpenSmile = br.ReadBoolean();

                var textureSize = 1024;
                switch (ProgramCore.CurrentProgram)
                {
                case ProgramCore.ProgramMode.HeadShop_OneClick:
                case ProgramCore.ProgramMode.HeadShop_v11:
                case ProgramCore.ProgramMode.FaceAge2_Partial:
                case ProgramCore.ProgramMode.HeadShop_OneClick_v2:
                case ProgramCore.ProgramMode.HeadShop_Rotator:
                    textureSize = 2048;              // если поставит ьу нас в проге 4096 - то все крашится к хуям. Пусть уж только на экспорте будет.
                    break;

                    /*   textureSize = 4096;
                     * break;*/
                }

                result = new Project(projectName, projectFi.DirectoryName, templateImagePath, genesisType, manType, headModelPath, false, textureSize, isOpenSmile);
                result.LoadMeshes();
                result.TextureFlip = textureFlip;
                result.ShapeFlip   = shapeFlip;

                var partsCount = br.ReadInt32(); //part's library
                for (var i = 0; i < partsCount; i++)
                {
                    var title       = br.ReadString();
                    var meshType    = br.ReadBoolean() ? MeshType.Accessory : MeshType.Hair;
                    var meshVisible = br.ReadBoolean();
                    var meshPath    = br.ReadString();

                    var meshCounts = br.ReadInt32();
                    for (var j = 0; j < meshCounts; j++)
                    {
                        var meshTitle = br.ReadString();
                        DynamicRenderMesh mesh;
                        if (meshType == MeshType.Accessory)
                        {
                            mesh = ProgramCore.MainForm.ctrlRenderControl.pickingController.AccesoryMeshes[meshTitle];
                        }
                        else
                        {
                            mesh = ProgramCore.MainForm.ctrlRenderControl.pickingController.HairMeshes[meshTitle];
                        }
                        if (mesh == null)
                        {
                            continue;
                        }

                        mesh.Title     = title + "_" + j;
                        mesh.IsVisible = meshVisible;
                        mesh.Path      = meshPath;

                        if (!ProgramCore.MainForm.ctrlRenderControl.PartsLibraryMeshes.ContainsKey(title))
                        {
                            ProgramCore.MainForm.ctrlRenderControl.PartsLibraryMeshes.Add(title, new DynamicRenderMeshes());
                        }
                        ProgramCore.MainForm.ctrlRenderControl.PartsLibraryMeshes[title].Add(mesh);
                    }
                }

                result.AutodotsUsed = br.ReadBoolean();

                result.RotatedAngle = br.ReadDouble();

                // загружаем прямоугольник лица (фронт)
                result.FaceRectRelative = new RectangleF(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle());

                result.MouthCenter    = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.LeftEyeCenter  = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.RightEyeCenter = new Vector2(br.ReadSingle(), br.ReadSingle());

                result.NoseUserCenter     = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.MouthUserCenter    = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.LeftEyeUserCenter  = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.RightEyeUserCenter = new Vector2(br.ReadSingle(), br.ReadSingle());

                result.AgeCoefficient = br.ReadSingle();
                result.FatCoefficient = br.ReadSingle();

                //Сохраняем цвет головы
                result.FaceColor = new Vector4(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), 1.0f);

                #region Информация о модели головы

                var rmPath = Path.Combine(projectFi.DirectoryName, "Model", "MeshParts.rm");
                result.RenderMainHelper.headMeshesController.RenderMesh.Load(rmPath);
                foreach (var part in result.RenderMainHelper.headMeshesController.RenderMesh.Parts)
                {
                    if (!string.IsNullOrEmpty(part.TextureName))
                    {
                        part.Texture = ProgramCore.MainForm.ctrlRenderControl.GetTexture(part.TextureName);
                    }
                    if (!string.IsNullOrEmpty(part.TransparentTextureName))
                    {
                        part.TransparentTexture = ProgramCore.MainForm.ctrlRenderControl.GetTexture(part.TransparentTextureName);
                    }
                }

                var baseDotsCount = br.ReadInt32();
                for (var i = 0; i < baseDotsCount; i++)
                {
                    result.BaseDots.Add(HeadPoint.FromStream(br));
                }

                var profileBaseDotsCount = br.ReadInt32();
                for (var i = 0; i < profileBaseDotsCount; i++)
                {
                    result.ProfileBaseDots.Add(HeadPoint.FromStream(br));
                }

                result.RenderMainHelper.autodotsShapeHelper.ShapeInfo        = TexturingInfo.FromStream(br);
                result.RenderMainHelper.autodotsShapeHelper.ShapeProfileInfo = TexturingInfo.FromStream(br);

                result.RenderMainHelper.headMeshesController.TexturingInfo = TexturingInfo.FromStream(br);

                result.RenderMainHelper.headController.AutoDotsv2.Clear();
                result.RenderMainHelper.headController.ShapeDots.Clear();
                var cnt = br.ReadInt32();
                for (var i = 0; i < cnt; i++)
                {
                    result.RenderMainHelper.headController.ShapeDots.Add(MirroredHeadPoint.FromStreamW(br));
                }
                cnt = br.ReadInt32();
                for (var i = 0; i < cnt; i++)
                {
                    result.RenderMainHelper.headController.AutoDotsv2.Add(HeadPoint.FromStream(br));
                }

                result.CustomHeadNeedProfileSetup = br.ReadBoolean();

                #endregion

                result.ProfileEyeLocation   = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.ProfileMouthLocation = new Vector2(br.ReadSingle(), br.ReadSingle());

                var fi1 = new FileInfo(Path.Combine(projectFi.DirectoryName, "ProfileImage.jpg"));
                if (fi1.Exists)
                {
                    using (var fs = new FileStream(fi1.FullName, FileMode.Open))
                    {
                        using (var bmp = new Bitmap(fs))
                            result.ProfileImage = (Bitmap)bmp.Clone();
                    }
                }

                try
                {
                    var hasStage = br.ReadBoolean();
                    if (hasStage)
                    {
                        ProgramCore.MainForm.ctrlRenderControl.BackgroundTexture = br.ReadString();
                    }

                    ProgramCore.MainForm.activePanel = br.ReadInt32();

                    result.projectCamera       = new Camera();
                    result.projectCamera.Scale = br.ReadSingle();
                    result.projectCamera.beta  = br.ReadDouble();
                    result.projectCamera._dy   = br.ReadSingle();
                }
                catch
                {
                }

                try
                {
                    result.MorphingScale = br.ReadSingle();
                }
                catch
                {
                }

                try
                {
                    result.TextureSize = br.ReadInt32();
                }
                catch
                {
                }
            }

            return(result);
        }
Example #16
0
        /// <summary> Load project from path </summary>
        public static Project FromStream(string path)
        {
            Project result;

            using (var br = new BinaryReader(File.Open(path, FileMode.Open)))
            {
                var projectFi = new FileInfo(path);

                var projectName = br.ReadString();

                #region template image

                var templateImagePath = br.ReadString();
                if (!string.IsNullOrEmpty(templateImagePath))
                {
                    var fiName = Path.Combine(projectFi.DirectoryName, templateImagePath);
                    var fi     = new FileInfo(fiName);
                    if (!fi.Exists)
                    {
                        ProgramCore.EchoToLog("Can't find template image in project.", EchoMessageType.Warning);
                        templateImagePath = string.Empty;
                    }
                }

                #endregion

                var headModelPath = br.ReadString();

                var manType     = (ManType)br.ReadInt32();
                var textureFlip = (FlipType)br.ReadInt32();
                var shapeFlip   = (FlipType)br.ReadInt32();

                result             = new Project(projectName, projectFi.DirectoryName, templateImagePath, manType, headModelPath, false);
                result.TextureFlip = textureFlip;
                result.ShapeFlip   = shapeFlip;

                var partsCount = br.ReadInt32(); //part's library
                for (var i = 0; i < partsCount; i++)
                {
                    var title       = br.ReadString();
                    var meshType    = br.ReadBoolean() ? MeshType.Accessory : MeshType.Hair;
                    var meshVisible = br.ReadBoolean();

                    var meshCounts = br.ReadInt32();
                    for (var j = 0; j < meshCounts; j++)
                    {
                        var meshTitle = br.ReadString();
                        DynamicRenderMesh mesh;
                        if (meshType == MeshType.Accessory)
                        {
                            mesh = ProgramCore.MainForm.ctrlRenderControl.pickingController.AccesoryMeshes[meshTitle];
                        }
                        else
                        {
                            mesh = ProgramCore.MainForm.ctrlRenderControl.pickingController.HairMeshes[meshTitle];
                        }
                        if (mesh == null)
                        {
                            continue;
                        }

                        mesh.Title     = title + "_" + j;
                        mesh.IsVisible = meshVisible;

                        if (!ProgramCore.MainForm.ctrlRenderControl.PartsLibraryMeshes.ContainsKey(title))
                        {
                            ProgramCore.MainForm.ctrlRenderControl.PartsLibraryMeshes.Add(title, new DynamicRenderMeshes());
                        }
                        ProgramCore.MainForm.ctrlRenderControl.PartsLibraryMeshes[title].Add(mesh);
                    }
                }

                result.AutodotsUsed = br.ReadBoolean();

                // загружаем прямоугольник лица (фронт)
                result.FaceRectRelative = new RectangleF(br.ReadSingle(), br.ReadSingle(), br.ReadSingle(), br.ReadSingle());

                result.MouthCenter    = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.LeftEyeCenter  = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.RightEyeCenter = new Vector2(br.ReadSingle(), br.ReadSingle());

                result.NoseUserCenter     = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.MouthUserCenter    = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.LeftEyeUserCenter  = new Vector2(br.ReadSingle(), br.ReadSingle());
                result.RightEyeUserCenter = new Vector2(br.ReadSingle(), br.ReadSingle());

                result.AgeCoefficient = br.ReadSingle();
                result.FatCoefficient = br.ReadSingle();

                #region Информация о модели головы


                var rmPath = Path.Combine(projectFi.DirectoryName, "Model", "MeshParts.rm");
                ProgramCore.MainForm.ctrlRenderControl.headMeshesController.RenderMesh.Load(rmPath);
                foreach (var part in ProgramCore.MainForm.ctrlRenderControl.headMeshesController.RenderMesh.Parts)
                {
                    if (!string.IsNullOrEmpty(part.TextureName))
                    {
                        part.Texture = ProgramCore.MainForm.ctrlRenderControl.GetTexture(part.TextureName);
                    }
                    if (!string.IsNullOrEmpty(part.TransparentTextureName))
                    {
                        part.TransparentTexture = ProgramCore.MainForm.ctrlRenderControl.GetTexture(part.TransparentTextureName);
                    }
                }

                var baseDotsCount = br.ReadInt32();
                for (var i = 0; i < baseDotsCount; i++)
                {
                    result.BaseDots.Add(HeadPoint.FromStream(br));
                }

                var profileBaseDotsCount = br.ReadInt32();
                for (var i = 0; i < profileBaseDotsCount; i++)
                {
                    result.ProfileBaseDots.Add(HeadPoint.FromStream(br));
                }

                ProgramCore.MainForm.ctrlRenderControl.autodotsShapeHelper.ShapeInfo        = TexturingInfo.FromStream(br);
                ProgramCore.MainForm.ctrlRenderControl.autodotsShapeHelper.ShapeProfileInfo = TexturingInfo.FromStream(br);

                ProgramCore.MainForm.ctrlRenderControl.headMeshesController.TexturingInfo = TexturingInfo.FromStream(br);

                ProgramCore.MainForm.ctrlRenderControl.headController.AutoDots.Clear();
                ProgramCore.MainForm.ctrlRenderControl.headController.ShapeDots.Clear();
                var cnt = br.ReadInt32();
                for (var i = 0; i < cnt; i++)
                {
                    ProgramCore.MainForm.ctrlRenderControl.headController.ShapeDots.Add(MirroredHeadPoint.FromStreamW(br));
                }
                cnt = br.ReadInt32();
                for (var i = 0; i < cnt; i++)
                {
                    ProgramCore.MainForm.ctrlRenderControl.headController.AutoDots.Add(MirroredHeadPoint.FromStreamW(br));
                }

                result.CustomHeadNeedProfileSetup = br.ReadBoolean();

                #endregion

                var fi1 = new FileInfo(Path.Combine(projectFi.DirectoryName, "ProfileImage.jpg"));
                if (fi1.Exists)
                {
                    using (var fs = new FileStream(fi1.FullName, FileMode.Open))
                    {
                        var bmp = new Bitmap(fs);
                        result.ProfileImage = (Bitmap)bmp.Clone();
                    }
                }
            }

            return(result);
        }