Exemplo n.º 1
0
    public void Zig_UpdateUser(ZigTrackedUser user)
    {
        ZgTrackedUser zguser = new ZgTrackedUser(user.Id);

        zguser.Position        = user.Position;
        zguser.PositionTracked = user.PositionTracked;
        zguser.SkeletonTracked = user.SkeletonTracked;
        zguser.Skeleton        = user.Skeleton.Select(e => ToZgInputJoint(e)).ToArray();
        ManagerManager.Manager.mZigManager.Zig_UpdateUser(zguser);
    }
Exemplo n.º 2
0
    //calls this function whenever user info has been updated
    public void Zig_UpdateUser(ZgTrackedUser user)
    {
        LastTrackedUser = user;
        if (user.SkeletonTracked)
        {
            foreach (ZgInputJoint joint in user.Skeleton)
            {
                //if(joint.GoodPosition && joint.GoodRotation)
                {
                    Joints[joint.Id] = joint;
                }
            }
        }


        //mManager.mDebugString = Joints[ZigJointId.LeftHand].Position.ToString();
    }
Exemplo n.º 3
0
    public void Update()
    {
        //BODY
        //bool bodyReadSuccess = SensorManager.bodyFrameReader.AcquireLatestFrame(JointCoordType.DepthSpace);
        SensorManager.bodyFrameReader.AcquireLatestFrame(JointCoordType.DepthSpace);

        List <ulong> trackedIds = new List <ulong>();


        foreach (var e in SensorManager.BodyList.list)
        {
            if (e.isTracked)
            {
                trackedIds.Add(e.trackingId);
            }
        }

        if (trackedIds.Count > 0)
        {
            if (!trackedIds.Contains(mTrackingId))
            {
                mTrackingId = trackedIds [0];
                ManagerManager.Log("tracking " + mTrackingId);
            }
            IsTracking = true;
        }
        else
        {
            IsTracking = false;
        }

        //if(IsTracking)
        //ManagerManager.Manager.mDebugString2 = "tracking " + ((int)mTrackingId).ToString();
        //else ManagerManager.Manager.mDebugString2 = "NOT tracking " + ((int)mTrackingId).ToString();


        foreach (var e in SensorManager.BodyList.list)
        {
            if (IsTracking && e.trackingId == mTrackingId)
            {
                //ManagerManager.Manager.mDebugString2 = "real tracking " + ((int)mTrackingId).ToString();
                ZgTrackedUser tu = new ZgTrackedUser((int)mTrackingId);
                tu.SkeletonTracked = true;
                tu.PositionTracked = true;
                var jointsSeg = e.joints;
                for (int i = jointsSeg.Offset; i < (jointsSeg.Offset + jointsSeg.Count); i++)
                {
                    var jp = jointsSeg.Array[i];
                    for (int j = 0; j < tu.Skeleton.Count(); j++)
                    {
                        if (sJointTypeMap.ContainsKey(jp.jointType) && sJointTypeMap[jp.jointType] == tu.Skeleton[j].Id)
                        {
                            tu.Skeleton[j].Position     = GetVector3FromJoint(jp);
                            tu.Skeleton[j].GoodPosition = true;
                            //TODO rotation
                        }
                    }
                }

                /* this way does not seem to work for osme reason..
                 *              for(int i = 0; i < tu.Skeleton.Count(); i++)
                 *              {
                 *                      if(sJointTypeMap.Keys.Contains(tu.Skeleton[i].Id))
                 *                      {
                 *      try{
                 *                              tu.Skeleton[i].Position = GetVector3FromJoint(e.joints.Array.First(f=>f.jointType == sJointTypeMap[tu.Skeleton[i].Id]));
                 *                              tu.Skeleton[i].GoodPosition = true;
                 *      }catch{Debug.Log ("couldn't find joint " + tu.Skeleton[i].Id);}
                 *
                 *                      }
                 *              }*/
                ManagerManager.Manager.mZigManager.Zig_UpdateUser(tu);
                break;
            }
        }

        //TODO temporarily disabled to solf wrong format bug
        //DEPTH/IMAGE/USE
        FrameDescription depthFrameDesc;
        bool             depthFrameDescSuccess = SensorManager.depthFrameReader.GetFrameDescription(out depthFrameDesc);

        if (depthFrameDescSuccess)
        {
            //mDepthTexture = new Texture2D(depthFrameDesc.Width, depthFrameDesc.Height, TextureFormat.R16, false);
            //byte[] depthRawData = new byte[depthFrameDesc.BytesPerPixel * depthFrameDesc.LengthInPixels];
            //depthFrameDescSuccess = SensorManager.depthFrameReader.AcquireLatestFrame(mDepthTexture.GetNativeTexturePtr());
        }

        FrameDescription colorFrameDesc;
        bool             colorFrameDescSuccess = SensorManager.colorFrameReader.GetFrameDescription(out colorFrameDesc);

        if (colorFrameDescSuccess)
        {
            //byte[] colorRawData = new byte[colorFrameDesc.BytesPerPixel * colorFrameDesc.LengthInPixels];
            //colorFrameDescSuccess = SensorManager.colorFrameReader.AcquireLatestFrame(mColorTexture.GetNativeTexturePtr());
        }

        FrameDescription labelFrameDesc;
        bool             labelFrameDescSuccess = SensorManager.bodyIndexFrameReader.GetFrameDescription(out labelFrameDesc);

        if (labelFrameDescSuccess)
        {
            //byte[] labelRawData = new byte[labelFrameDesc.BytesPerPixel * labelFrameDesc.LengthInPixels];
            //labelFrameDescSuccess = SensorManager.bodyIndexFrameReader.AcquireLatestFrame(mLabelTexture.GetNativeTexturePtr());
        }
        //ManagerManager.Manager.mZigManager.DepthView.up
    }