protected void UpdateBones(HeadSensor sensor)
        {
            if (headTarget.head.target.confidence.position > KinectDevice.TrackingConfidence(KinectDevice.JointID.Head))
            {
                if (headTarget.humanoid.leftHandTarget.hand.target.confidence.position > KinectDevice.TrackingConfidence(KinectDevice.JointID.WristLeft) &&
                    headTarget.humanoid.rightHandTarget.hand.target.confidence.position > KinectDevice.TrackingConfidence(KinectDevice.JointID.WristRight))
                {
                    CalibrateWithHeadAndHands();
                }
                else
                {
                    CalibrateWithHead();
                }
                return;
            }

            //if (headTarget.head.target.confidence.rotation > 0) {
            //    headTarget.head.target.transform.rotation = Kinect2Tracker.SmoothRotation(headTarget.head.target.transform.rotation, sensor.head.rotation);
            //    headTarget.head.target.confidence.rotation = sensor.head.confidence.rotation;

            //    headTarget.head.target.transform.position = Kinect2Tracker.SmoothPosition(headTarget.head.target.transform.position, sensor.head.position);
            //    headTarget.head.target.confidence.position = sensor.head.confidence.position;
            //}

            //if (headTarget.neck.target.confidence.rotation > 0) {
            //    headTarget.neck.target.transform.rotation = Kinect2Tracker.SmoothRotation(headTarget.neck.target.transform.rotation, sensor.neck.rotation);
            //    headTarget.neck.target.confidence.rotation = sensor.neck.confidence.rotation;

            //    headTarget.neck.target.transform.position = Kinect2Tracker.SmoothPosition(headTarget.neck.target.transform.position, sensor.neck.position);
            //    headTarget.neck.target.confidence.position = sensor.neck.confidence.position;
            //}
            else
            {
                if (headTarget.neck.target.transform != null)
                {
                    headTarget.neck.target.transform.position = Target.ToVector3(sensor.neck.position);
                    headTarget.neck.target.transform.rotation = Target.ToQuaternion(sensor.neck.rotation);
                    headTarget.neck.target.confidence         = sensor.neck.confidence;
                }

                if (headTarget.head.target.transform != null)
                {
                    headTarget.head.target.transform.position = Target.ToVector3(sensor.head.position);
                    headTarget.head.target.transform.rotation = Target.ToQuaternion(sensor.head.rotation);
                    headTarget.head.target.confidence         = sensor.head.confidence;
                }


                if (rotationTrackingAxis == RotationTrackingAxis.XY)
                {
                    headTarget.head.target.transform.rotation = Quaternion.LookRotation(headTarget.head.target.transform.rotation * Vector3.forward);
                }
            }
            if (headTarget.virtual3d)
            {
                UpdateVirtual3D();
            }
        }
예제 #2
0
 protected virtual void UpdateHeadTargetTransform(HeadSensor headTracker)
 {
     if (headTarget.head.target.transform != null)
     {
         if (headTracker.head.confidence.rotation > 0)
         {
             headTarget.head.target.transform.rotation = Target.ToQuaternion(headTracker.head.rotation) * sensor2TargetRotation;
         }
         if (headTracker.head.confidence.position > 0)
         {
             headTarget.head.target.transform.position = Target.ToVector3(headTracker.head.position) + headTarget.head.target.transform.rotation * sensor2TargetPosition;
         }
         headTarget.head.target.confidence = headTracker.head.confidence;
     }
 }