示例#1
0
        private void getGesture(Astra.Joint joint)
        {
            var mainWin = Application.Current.Windows
                          .Cast <Window>()
                          .FirstOrDefault(window => window is test123) as test123;

            Stopwatch timer = new Stopwatch();

            timer.Start();
            if (joint.WorldPosition.X == 0.07) // first action? // when do i determine that, tat its the before or after position
            {
                timer.Stop();
                firstPos = joint.WorldPosition.X;
                //store time
                //before (1) action
            }
            timer.Start();
            if (joint.WorldPosition.X > 0.07) // second action?
            {
                timer.Stop();
                //store time
                secPos = joint.WorldPosition.X;
            }
            diff = firstPos - secPos;
            if (diff >= 0)//what action // tbd
            {
                mainWin.result.Text = "hand moving left";
            }
            else if (diff <= 0) //tbd
            {
                mainWin.result.Text = "hand moving right";
            }
        }
示例#2
0
        // Draws text with 3D coordinates of joint near joint circle
        private void DrawJointLabel(DrawingContext dc, Astra.Joint joint, double radius)
        {
            // joint.WorldPosition - is in millimeters
            // format as meters with centimeters after decimal point
            var label = string.Format("{0}\r\nX: {1:0.00} m\r\nY: {2:0.00} m\r\nZ: {3:0.00} m",
                                      /*{0}*/ joint.Type,
                                      /*{1}*/ MillimetersToMeters(joint.WorldPosition.X),
                                      /*{2}*/ MillimetersToMeters(joint.WorldPosition.Y),
                                      /*{3}*/ MillimetersToMeters(joint.WorldPosition.Z));

            // formated text of label
            var txt = new FormattedText(label, CultureInfo.InvariantCulture, FlowDirection.LeftToRight,
                                        Fonts.SystemTypefaces.First(), JointLabelFontSizeEm, JointLabelShadow);

            txt.SetFontFamily(JointLabelFontFamily);
            txt.SetFontStretch(FontStretches.Normal);
            txt.SetFontStyle(FontStyles.Normal);
            txt.SetFontWeight(FontWeights.Heavy);
            txt.SetFontSize(25);

            // left-top corner of text label
            var labelPositionOnImage = ToImagePoint(joint);

            labelPositionOnImage.X += 1.5 * radius;
            labelPositionOnImage.Y -= txt.Height / 2.0;

            //// draw shadow
            //dc.DrawText(txt, labelPositionOnImage);

            // draw foreground with slight shift
            txt.SetForegroundBrush(JointLabelForeground);
            labelPositionOnImage.X -= 2;
            labelPositionOnImage.Y -= 2;
            dc.DrawText(txt, labelPositionOnImage);
        }
示例#3
0
 private void detectRight(float x, float y, float z, Astra.Joint joint)
 {
     if (joint.WorldPosition.X > 0.1 && joint.WorldPosition.Y == 0 && joint.WorldPosition.Z == 0.1) // getting hand position at right side x if its bigger than *, Y and Z stay put
     {
         //----
     }
 }
示例#4
0
 private void DrawLine(Astra.Joint startJoint, Astra.Joint endJoint, int index)
 {
     if (startJoint.Status == Astra.JointStatus.Tracked && endJoint.Status == Astra.JointStatus.Tracked)
     {
         var jointPos = startJoint.WorldPosition;
         var startPos = transform.TransformVector(jointPos.X, jointPos.Y, jointPos.Z);
         jointPos = endJoint.WorldPosition;
         var endPos = transform.TransformVector(jointPos.X, jointPos.Y, jointPos.Z);
         jointLines[index].SetPositions(new Vector3[] { startPos, endPos });
         jointLines[index].gameObject.SetActive(true);
     }
     else
     {
         jointLines[index].gameObject.SetActive(false);
     }
 }
示例#5
0
 private static Point ToImagePoint(Astra.Joint joint)
 => new Point(joint.DepthPosition.X, joint.DepthPosition.Y);
示例#6
0
        //new Bone(Astra.JointType.ShoulderSpine, Astra.JointType.RightShoulder),
        //    new Bone(Astra.JointType.RightShoulder, Astra.JointType.RightElbow),
        //    new Bone(Astra.JointType.RightElbow, Astra.JointType.RightWrist),
        //    new Bone(Astra.JointType.RightWrist, Astra.JointType.RightHand),
        //private void DetectRightArmJoint(Astra.Body body, Astra.Joint joint)
        //{
        //    foreach (var bone in bones)
        //    {
        //        var HandJoint = FindJoint(body, Astra.JointType.RightHand);
        //        if (IsJointOk(HandJoint))
        //        {
        //            var WristJoint = FindJoint(body, Astra.JointType.RightWrist);
        //            if (IsJointOk(WristJoint))
        //            {
        //                var ElbowJoint = FindJoint(body, Astra.JointType.RightElbow);
        //                if (IsJointOk(ElbowJoint))
        //                {
        //                    var ShoulderJoint = FindJoint(body, Astra.JointType.RightShoulder);
        //                    if (IsJointOk(ShoulderJoint))
        //                    {
        //                        var isTracked = HandJoint.Status == Astra.JointStatus.Tracked
        //                        && WristJoint.Status == Astra.JointStatus.Tracked && ElbowJoint.Status == Astra.JointStatus.Tracked
        //                        && ShoulderJoint.Status == Astra.JointStatus.Tracked;


        //                        // if right arm is raised... what happen
        //                    }
        //                }

        //            }
        //        }
        //    }
        //}
        private static bool IsJointOk(Astra.Joint joint)
        => joint != null && joint.Status != Astra.JointStatus.NotTracked;
示例#7
0
 private string GetJointName(Astra.Joint joint)
 {
     return((joint.ToString().Split(' ')[1]).Split(',')[0]);
 }
示例#8
0
 private Vector3 V3(Astra.Joint joint1, Astra.Joint joint2)
 {
     Astra.Vector3D value1 = joint1.WorldPosition;
     Astra.Vector3D value2 = joint2.WorldPosition;
     return(new Vector3(value2.X - value1.X, value2.Y - value1.Y, value2.Z - value1.Z));
 }