Exemple #1
0
 private static void SumWithFatherPosition(
     Dictionary <Microsoft.Kinect.JointType, Vector3D> jointVectors,
     Microsoft.Kinect.JointType jointType)
 {
     jointVectors[jointType] +=
         jointVectors[(Microsoft.Kinect.JointType)JointTypeHelper.GetFather((PreposeGestures.JointType)jointType)];
 }
Exemple #2
0
        public override Wrapper VisitArm(PreposeGesturesParser.ArmContext context)
        {
            var side   = (JointSide)this.Visit(context.side());
            var joints = JointTypeHelper.GetArm(side);

            return(new Wrapper(new JointGroup(joints)));
        }
Exemple #3
0
        ////keep_restriction :   'keep' 'your'? body_part relative_constraint ;
        //public override Wrapper VisitKeep_restriction(PreposeGesturesParser.Keep_restrictionContext context)
        //{
        //    var joint = (JointGroup)this.Visit(context.body_part());
        //    var direction = (Direction)this.Visit(context.relative_constraint().direction());
        //    CompositeBodyRestriction restriction = joint.Aggregate(j => new KeepRestriction(j, direction));

        //    return new Wrapper(restriction);
        //}

        public override Wrapper VisitJoint(PreposeGesturesParser.JointContext context)
        {
            if (context.side() != null)
            {
                var side = (JointSide)this.Visit(context.side());
                switch (context.sided_joint().GetText())
                {
                case "shoulder": return(side == JointSide.Left ? new Wrapper(JointType.ShoulderLeft) : new Wrapper(JointType.ShoulderRight));

                case "elbow": return(side == JointSide.Left ? new Wrapper(JointType.ElbowLeft) : new Wrapper(JointType.ElbowRight));

                case "hand": return(side == JointSide.Left ? new Wrapper(JointType.HandLeft) : new Wrapper(JointType.HandRight));

                case "hip": return(side == JointSide.Left ? new Wrapper(JointType.HipLeft) : new Wrapper(JointType.HipRight));

                case "wrist": return(side == JointSide.Left ? new Wrapper(JointType.WristLeft) : new Wrapper(JointType.WristRight));

                case "handtip": return(side == JointSide.Left ? new Wrapper(JointType.HandTipLeft) : new Wrapper(JointType.HandTipRight));

                case "thumb": return(side == JointSide.Left ? new Wrapper(JointType.ThumbLeft) : new Wrapper(JointType.ThumbRight));

                case "knee": return(side == JointSide.Left ? new Wrapper(JointType.KneeLeft) : new Wrapper(JointType.KneeRight));

                case "ankle": return(side == JointSide.Left ? new Wrapper(JointType.AnkleLeft) : new Wrapper(JointType.AnkleRight));

                case "foot": return(side == JointSide.Left ? new Wrapper(JointType.FootLeft) : new Wrapper(JointType.FootRight));

                default: throw new ArgumentException(context.center_joint().GetText());
                }
            }
            else
            {
                switch (context.center_joint().GetText())
                {
                case "spinemid": return(new Wrapper(JointType.SpineMid));

                case "spinebase": return(new Wrapper(JointType.SpineBase));

                case "spineshoulder": return(new Wrapper(JointType.SpineShoulder));

                case "neck": return(new Wrapper(JointType.Neck));

                case "head": return(new Wrapper(JointType.Head));

                case "hips": return(new Wrapper(new JointGroup(new JointType[] { JointTypeHelper.GetSidedJointType(SidedJointName.Hip, JointSide.Left), JointTypeHelper.GetSidedJointType(SidedJointName.Hip, JointSide.Right) })));

                case "back": return(new Wrapper(new JointGroup(JointTypeHelper.GetBack())));

                case "you": return(new Wrapper(new JointGroup(JointTypeHelper.GetYou())));

                default: throw new ArgumentException(context.center_joint().GetText());
                }
            }
        }
Exemple #4
0
 private static void SumWithFatherPosition(
     Dictionary <Microsoft.Kinect.JointType, Vector3D> jointVectors,
     List <PreposeGestures.JointType> targetCalculatedJoints,
     Microsoft.Kinect.JointType jointType)
 {
     if (targetCalculatedJoints.Contains((PreposeGestures.JointType)jointType))
     {
         jointVectors[jointType] +=
             jointVectors[(Microsoft.Kinect.JointType)JointTypeHelper.GetFather((PreposeGestures.JointType)jointType)];
     }
 }
Exemple #5
0
        public static Vector3D CalcAbsoluteJointPosition(
            Dictionary <Microsoft.Kinect.JointType, Vector3D> jointVectors,
            Microsoft.Kinect.JointType jointType)
        {
            var result          = jointVectors[jointType];
            var fatherJointType = (Microsoft.Kinect.JointType)JointTypeHelper.GetFather((PreposeGestures.JointType)jointType);

            if (jointType != Microsoft.Kinect.JointType.SpineBase)
            {
                result += CalcAbsoluteJointPosition(jointVectors, fatherJointType);
            }

            return(result);
        }
Exemple #6
0
        private static void AddZ3JointToVectors3D(
            Z3Body targetBody,
            IReadOnlyDictionary <Microsoft.Kinect.JointType, Microsoft.Kinect.Joint> baseJoints,
            Dictionary <Microsoft.Kinect.JointType, Vector3D> jointVectors,
            PreposeGestures.JointType jointType)
        {
            var vector3D = new Vector3D(
                targetBody.Joints[jointType].GetXValue(),
                targetBody.Joints[jointType].GetYValue(),
                -targetBody.Joints[jointType].GetZValue());

            //var norm = Z3Math.GetRealValue(targetBody.Norms[jointType]);
            var norm =
                new Vector3D(
                    baseJoints[(Microsoft.Kinect.JointType)jointType].Position.X - baseJoints[(Microsoft.Kinect.JointType)JointTypeHelper.GetFather(jointType)].Position.X,
                    baseJoints[(Microsoft.Kinect.JointType)jointType].Position.Y - baseJoints[(Microsoft.Kinect.JointType)JointTypeHelper.GetFather(jointType)].Position.Y,
                    baseJoints[(Microsoft.Kinect.JointType)jointType].Position.Z - baseJoints[(Microsoft.Kinect.JointType)JointTypeHelper.GetFather(jointType)].Position.Z).Length;

            vector3D = vector3D * norm;

            jointVectors.Add((Microsoft.Kinect.JointType)jointType, vector3D);
        }
Exemple #7
0
        public override Wrapper VisitElbows(PreposeGesturesParser.ElbowsContext context)
        {
            var joints = JointTypeHelper.GetElbows();

            return(new Wrapper(new JointGroup(joints)));
        }
Exemple #8
0
        public override Wrapper VisitHands_tips(PreposeGesturesParser.Hands_tipsContext context)
        {
            var joints = JointTypeHelper.GetHandsTips();

            return(new Wrapper(new JointGroup(joints)));
        }