private void BodyFrameReaderOnFrameArrived(object sender, KinectV2::Microsoft.Kinect.BodyFrameArrivedEventArgs bodyFrameArrivedEventArgs) { if (ReadBodyFrame(bodyFrameArrivedEventArgs)) { UpdateSkeletons(); } }
private void UpdateSkeleton(KinectV2::Microsoft.Kinect.Body body, ISkeleton newSkeleton) { foreach (KeyValuePair<JointType, KinectV2::Microsoft.Kinect.JointType> jointMapping in mapping) { var joint = new OrientedJoint { JointType = jointMapping.Key, Point = ToVec3(body.Joints[jointMapping.Value].Position), Orientation = ToVec4(body.JointOrientations[jointMapping.Value].Orientation), Valid = body.Joints[jointMapping.Value].TrackingState == KinectV2::Microsoft.Kinect.TrackingState.Tracked }; newSkeleton.UpdateSkeleton(joint.JointType, joint); } }
private ISkeleton CreateSkeleton(KinectV2::Microsoft.Kinect.Body body) { var newSkeleton = new InMapSkeleton { ID = (uint) body.TrackingId }; UpdateSkeleton(body, newSkeleton); return newSkeleton; }
/// <summary> /// Tos the vec4. /// </summary> /// <returns>The vec4.</returns> /// <param name="v">V.</param> private static Vector4 ToVec4(KinectV2::Microsoft.Kinect.Vector4 v) { return new Vector4(v.X, v.Y, v.Z, v.W); }
/// <summary> /// Absolutes to relative. /// </summary> /// <returns>The to relative.</returns> /// <param name="point">point.</param> private static Vector3 ToVec3(KinectV2::Microsoft.Kinect.CameraSpacePoint point) { return new Vector3(point.X, point.Y, point.Z) * 1000; }
private void KinectSensorOnIsAvailableChanged(object sender, KinectV2::Microsoft.Kinect.IsAvailableChangedEventArgs isAvailableChangedEventArgs) { Console.WriteLine("Kinect availability status changed to {0}." , isAvailableChangedEventArgs.IsAvailable); }
/// <summary> /// Tries to read the new frame and returns wether actual data was read. /// </summary> /// <param name="bodyFrameArrivedEventArgs"></param> /// <returns></returns> private bool ReadBodyFrame(KinectV2::Microsoft.Kinect.BodyFrameArrivedEventArgs bodyFrameArrivedEventArgs) { using (KinectV2::Microsoft.Kinect.BodyFrame bodyFrame = bodyFrameArrivedEventArgs.FrameReference.AcquireFrame()) { if (bodyFrame != null) { if (_bodyDataBuffer == null || _bodyDataBuffer.Length != bodyFrame.BodyCount) { _bodyDataBuffer = new KinectV2::Microsoft.Kinect.Body[bodyFrame.BodyCount]; } bodyFrame.GetAndRefreshBodyData(_bodyDataBuffer); return true; } } return false; }