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)]; }
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))); }
////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()); } } }
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)]; } }
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); }
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); }
public override Wrapper VisitElbows(PreposeGesturesParser.ElbowsContext context) { var joints = JointTypeHelper.GetElbows(); return(new Wrapper(new JointGroup(joints))); }
public override Wrapper VisitHands_tips(PreposeGesturesParser.Hands_tipsContext context) { var joints = JointTypeHelper.GetHandsTips(); return(new Wrapper(new JointGroup(joints))); }