Наследование: MonoBehaviour
Пример #1
0
 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)
     };
 }
Пример #3
0
        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));
        }
Пример #4
0
 internal void SetRotations(BoneOrientation boneOrientation)
 {
     RelativeRotationNow = boneOrientation.HierarchicalRotation;
     AbsoluteRotationNow = boneOrientation.AbsoluteRotation;
 }
Пример #5
0
        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;
            }
        }