Esempio n. 1
0
        void runtime_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
            bool receivedData = false;

            using (SkeletonFrame SFrame = e.OpenSkeletonFrame())
            {
                if (SFrame == null)
                {
                    // The image processing took too long. More than 2 frames behind.
                }
                else
                {
                    skeletons = new Skeleton[SFrame.SkeletonArrayLength];
                    SFrame.CopySkeletonDataTo(skeletons);
                    receivedData = true;
                }
            }

            if (receivedData)
            {
                Skeleton currentSkeleton = (from s in skeletons
                                            where s.TrackingState == SkeletonTrackingState.Tracked
                                            select s).FirstOrDefault();

                if (currentSkeleton != null)
                {
                    //Berechnungen einfügen
                    anglehandler.updateSkeleton(currentSkeleton);

                    SetEllipsePosition(head, currentSkeleton.Joints[JointType.Head]);
                    SetEllipsePosition(leftHand, currentSkeleton.Joints[JointType.HandLeft]);
                    SetEllipsePosition(rightHand, currentSkeleton.Joints[JointType.HandRight]);
                }
            }
        }
Esempio n. 2
0
        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            var currentSkeleton = this.Skeleton;

            // Don't render if we don't have a skeleton, or it isn't tracked
            if (drawingContext == null || currentSkeleton == null || currentSkeleton.TrackingState == SkeletonTrackingState.NotTracked)
            {
                return;
            }

            // Displays a gradient near the edge of the display where the skeleton is leaving the screen
            this.RenderClippedEdges(drawingContext);

            switch (currentSkeleton.TrackingState)
            {
            case SkeletonTrackingState.PositionOnly:
                if (this.ShowCenter)
                {
                    drawingContext.DrawEllipse(
                        this.centerPointBrush,
                        null,
                        this.Center,
                        BodyCenterThickness * this.ScaleFactor,
                        BodyCenterThickness * this.ScaleFactor);
                }

                break;

            case SkeletonTrackingState.Tracked:
                this.DrawBonesAndJoints(drawingContext);

                /*
                 *
                 * Berechnungen hier einfügen
                 *
                 * Console.WriteLine("Skeleton rdy!");
                 *
                 */
                //Console.WriteLine("Skeleton rdy!");
                //skeletonAngleHandler
                //Console.WriteLine("SKELETON");

                angleHandler.updateSkeleton(currentSkeleton);


                break;
            }
        }
Esempio n. 3
0
        private void runtime_AllFramesReady(object sender, AllFramesReadyEventArgs e)
        {
            bool receivedData = false;


            using (ColorImageFrame c = e.OpenColorImageFrame())
            {
                if (c == null)
                {
                    return;
                }

                using (SkeletonFrame sFrame = e.OpenSkeletonFrame())
                {
                    if (sFrame == null)
                    {
                        // The image processing took too long. More than 2 frames behind.
                        return;
                    }
                    else
                    {
                        skeletons = new Skeleton[sFrame.SkeletonArrayLength];
                        sFrame.CopySkeletonDataTo(skeletons);
                        receivedData = true;
                    }
                    if (receivedData)
                    {
                        Skeleton currentSkeleton = (from s in skeletons
                                                    where s.TrackingState == SkeletonTrackingState.Tracked
                                                    select s).FirstOrDefault();

                        if (currentSkeleton != null)
                        {
                            //Berechnungen einfügen
                            anglehandler.updateSkeleton(currentSkeleton);
                        }
                    }



                    c.CopyPixelDataTo(myPixelData);
                    sFrame.CopySkeletonDataTo(skeletons);

                    BitmapSource   bs             = BitmapSource.Create(640, 480, 96, 96, PixelFormats.Bgr32, null, myPixelData, 640 * 4);
                    DrawingVisual  drawingVisual  = new DrawingVisual();
                    DrawingContext drawingContext = drawingVisual.RenderOpen();
                    drawingContext.DrawImage(bs, new Rect(0, 0, 640, 480));

                    //Rendern
                    Pen armPen = new System.Windows.Media.Pen(new
                                                              SolidColorBrush(System.Windows.Media.Color.FromRgb(255, 0, 0)), 2);
                    Pen legPen = new System.Windows.Media.Pen(new
                                                              SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 0, 255)), 2);
                    Pen spinePen = new System.Windows.Media.Pen(new
                                                                SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 255, 0)), 2);


                    foreach (Skeleton aSkeleton in skeletons)
                    {
                        DrawBone(aSkeleton.Joints[JointType.HandLeft],
                                 aSkeleton.Joints[JointType.WristLeft], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.WristLeft],
                                 aSkeleton.Joints[JointType.ElbowLeft], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.ElbowLeft],
                                 aSkeleton.Joints[JointType.ShoulderLeft], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.ShoulderLeft],
                                 aSkeleton.Joints[JointType.ShoulderCenter], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.HandRight],
                                 aSkeleton.Joints[JointType.WristRight], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.WristRight],
                                 aSkeleton.Joints[JointType.ElbowRight], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.ElbowRight],
                                 aSkeleton.Joints[JointType.ShoulderRight], armPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.ShoulderRight],
                                 aSkeleton.Joints[JointType.ShoulderCenter], armPen, drawingContext);

                        DrawBone(aSkeleton.Joints[JointType.HipCenter],
                                 aSkeleton.Joints[JointType.HipLeft], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.HipLeft],
                                 aSkeleton.Joints[JointType.KneeLeft], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.KneeLeft],
                                 aSkeleton.Joints[JointType.AnkleLeft], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.AnkleLeft],
                                 aSkeleton.Joints[JointType.FootLeft], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.HipCenter],
                                 aSkeleton.Joints[JointType.HipRight], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.HipRight],
                                 aSkeleton.Joints[JointType.KneeRight], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.KneeRight],
                                 aSkeleton.Joints[JointType.AnkleRight], legPen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.AnkleRight],
                                 aSkeleton.Joints[JointType.FootRight], legPen, drawingContext);

                        DrawBone(aSkeleton.Joints[JointType.Head],
                                 aSkeleton.Joints[JointType.ShoulderCenter], spinePen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.ShoulderCenter],
                                 aSkeleton.Joints[JointType.Spine], spinePen, drawingContext);
                        DrawBone(aSkeleton.Joints[JointType.Spine],
                                 aSkeleton.Joints[JointType.HipCenter], spinePen, drawingContext);
                    }

                    drawingContext.Close();
                    RenderTargetBitmap myTarget = new RenderTargetBitmap(640, 480, 96, 96, PixelFormats.Pbgra32);
                    myTarget.Render(drawingVisual);
                    videoImage.Source = myTarget;
                }
            }

            /*olorImageFrame c = e.OpenColorImageFrame();
             * SkeletonFrame s = e.OpenSkeletonFrame();
             *
             * if (c == null || s == null) return;*/
        }