public DeltaPoint(SkeletonPoint point, bool isTracked) { Position = point; IsTracked = isTracked; WasTracked = isTracked; RelativeRotationNow = null; AbsoluteRotationNow = null; }
public static ReplayBoneRotation FromBoneRotation(BoneRotation boneRotation) { return new ReplayBoneRotation() { Matrix = ReplayMatrix4.FromMatrix4(boneRotation.Matrix), Quaternion = ReplayVector4.FromVector4(boneRotation.Quaternion) }; }
public static Matrix GetMatrix(this BoneRotation r) { var m = r.Matrix; return(new Matrix( m.M11, m.M12, m.M13, m.M14, m.M21, m.M22, m.M23, m.M24, m.M31, m.M32, m.M33, m.M34, m.M41, m.M42, m.M43, m.M44)); }
internal void SetRotations(BoneOrientation boneOrientation) { RelativeRotationNow = boneOrientation.HierarchicalRotation; AbsoluteRotationNow = boneOrientation.AbsoluteRotation; }
public void Evaluate(int SpreadMax) { if (this.FInvalidateConnect) { if (runtime != null) { this.runtime.SkeletonFrameReady -= SkeletonReady; } if (this.FInRuntime.IsConnected) { //Cache runtime node this.runtime = this.FInRuntime[0]; if (runtime != null) { this.FInRuntime[0].SkeletonFrameReady += SkeletonReady; } } this.FInvalidateConnect = false; } if (this.FInvalidate) { if (this.lastframe != null) { List <Skeleton> skels = new List <Skeleton>(); lock (m_lock) { foreach (Skeleton sk in this.lastframe) { if (sk.TrackingState == SkeletonTrackingState.Tracked) { skels.Add(sk); } } } int cnt = skels.Count; this.FOutCount[0] = cnt; this.FOutPosition.SliceCount = cnt; this.FOutUserIndex.SliceCount = cnt; this.FOutClipped.SliceCount = cnt; this.FOutJointPosition.SliceCount = cnt * 20; this.FOutJointColorPosition.SliceCount = cnt * 20; this.FOutJointDepthPosition.SliceCount = cnt * 20; this.FOutJointState.SliceCount = cnt * 20; this.FOutJointID.SliceCount = cnt * 20; this.FOutJointOrientation.SliceCount = cnt * 20; this.FOutJointWOrientation.SliceCount = cnt * 20; this.FOutJointTo.SliceCount = cnt * 20; this.FOutJointFrom.SliceCount = cnt * 20; this.FOutFrameNumber[0] = this.frameid; int jc = 0; for (int i = 0; i < cnt; i++) { Skeleton sk = skels[i]; this.FOutPosition[i] = new Vector3(sk.Position.X, sk.Position.Y, sk.Position.Z); this.FOutUserIndex[i] = sk.TrackingId; Vector4 clip = Vector4.Zero; clip.X = Convert.ToSingle(sk.ClippedEdges.HasFlag(FrameEdges.Left)); clip.Y = Convert.ToSingle(sk.ClippedEdges.HasFlag(FrameEdges.Right)); clip.Z = Convert.ToSingle(sk.ClippedEdges.HasFlag(FrameEdges.Top)); clip.W = Convert.ToSingle(sk.ClippedEdges.HasFlag(FrameEdges.Bottom)); this.FOutClipped[i] = clip; foreach (Joint joint in sk.Joints) { this.FOutJointFrom[jc] = sk.BoneOrientations[joint.JointType].StartJoint.ToString(); this.FOutJointTo[jc] = sk.BoneOrientations[joint.JointType].EndJoint.ToString(); BoneRotation bo = sk.BoneOrientations[joint.JointType].HierarchicalRotation; BoneRotation bow = sk.BoneOrientations[joint.JointType].AbsoluteRotation; this.FOutJointID[jc] = joint.JointType.ToString(); this.FOutJointPosition[jc] = new Vector3(joint.Position.X, joint.Position.Y, joint.Position.Z); ColorImagePoint cp = this.runtime.Runtime.CoordinateMapper.MapSkeletonPointToColorPoint(joint.Position, ColorImageFormat.RgbResolution640x480Fps30); this.FOutJointColorPosition[jc] = new Vector2(cp.X, cp.Y); DepthImagePoint dp = this.runtime.Runtime.CoordinateMapper.MapSkeletonPointToDepthPoint(joint.Position, DepthImageFormat.Resolution320x240Fps30); #pragma warning disable this.FOutJointDepthPosition[jc] = new Vector4(dp.X, dp.Y, dp.Depth, dp.PlayerIndex); #pragma warning restore this.FOutJointOrientation[jc] = new Quaternion(bo.Quaternion.X, bo.Quaternion.Y, bo.Quaternion.Z, bo.Quaternion.W); this.FOutJointWOrientation[jc] = new Quaternion(bow.Quaternion.X, bow.Quaternion.Y, bow.Quaternion.Z, bow.Quaternion.W); this.FOutJointState[jc] = joint.TrackingState.ToString(); jc++; } } } else { this.FOutCount[0] = 0; this.FOutPosition.SliceCount = 0; this.FOutUserIndex.SliceCount = 0; this.FOutJointID.SliceCount = 0; this.FOutJointPosition.SliceCount = 0; this.FOutJointState.SliceCount = 0; this.FOutFrameNumber[0] = 0; this.FOutJointOrientation.SliceCount = 0; this.FOutJointWOrientation.SliceCount = 0; this.FOutJointTo.SliceCount = 0; this.FOutJointFrom.SliceCount = 0; this.FOutJointColorPosition.SliceCount = 0; this.FOutJointDepthPosition.SliceCount = 0; } this.FInvalidate = false; } }