示例#1
0
        public override void UpdateTracker()
        {
            if (!enabled)
            {
                return;
            }

            if (RealsenseDevice.present)
            {
                //if ((humanoid.leftHandTarget.realsenseHand.enabled && humanoid.leftHandTarget.realsenseHand.status == Status.Tracking) ||
                //    (humanoid.rightHandTarget.realsenseHand.enabled && humanoid.rightHandTarget.realsenseHand.status == Status.Tracking))
                //    status = Status.Tracking;
                //else
                status = Status.Present;
            }
            else
            {
                status = Status.Unavailable;
            }

            realsenseDevice.position    = Target.ToVector(trackerTransform.transform.position);
            realsenseDevice.orientation = Target.ToRotation(trackerTransform.transform.rotation);

            RealsenseDevice.Update();
        }
示例#2
0
        public override void StartTracker(HumanoidControl humanoid)
        {
            base.StartTracker(humanoid);

            if (!enabled)
            {
                return;
            }

            RealsenseDevice.Start();
        }
示例#3
0
        private void UpdateBones()
        {
            Vector localNeckPosition = RealsenseDevice.GetFaceLocalPosition();

            neck.position            = device.ToWorldPosition(localNeckPosition);
            neck.confidence.position = RealsenseDevice.GetFaceTargetConfidence();

            Rotation localNeckRotation = RealsenseDevice.GetFaceLocalOrientation();

            neck.rotation            = localNeckRotation;
            neck.confidence.rotation = RealsenseDevice.GetFaceTargetConfidence();
        }
        private void DrawFace()
        {
            //Debug.DrawRay(headTarget.neck.target.transform.position + Target.ToVector3(RealsenseDevice.facePosition), Vector3.up, Color.red);
            Vector  point;
            Vector3 referencePoint = headTarget.face.nose.tip.target.transform.position;

            for (int i = 0; i < RealsenseDevice.FacePointsCount(); i++)
            {
                if (RealsenseDevice.GetFacePoint(i, out point))
                {
                    Vector3 facePoint = Target.ToVector3(point) + headTarget.head.target.transform.position;
                    Debug.DrawRay(facePoint, Vector3.forward * 0.01F);
                }
            }
        }
示例#5
0
        public override Status Update()
        {
            if (RealsenseDevice.GetFaceTargetConfidence() <= 0)
            {
                status = RealsenseDevice.present ? Status.Present : Status.Unavailable;
                return(status);
            }

            status = Status.Tracking;

            if (headTracking)
            {
                UpdateBones();
            }

            return(status);
        }
        private void UpdateEyes()
        {
            Debug.Log("A");
            if (headTarget.unityVRHead.camera == null)
            {
                return;
            }

            float eyesTurnLeft  = RealsenseDevice.GetFaceExpression(RealsenseDevice.FaceExpression.EyesTurnLeft);
            float eyesTurnRight = RealsenseDevice.GetFaceExpression(RealsenseDevice.FaceExpression.EyesTurnRight);
            float eyesX         = eyesTurnRight - eyesTurnLeft;
            float eyesUp        = RealsenseDevice.GetFaceExpression(RealsenseDevice.FaceExpression.EyesUp);
            float eyesDown      = RealsenseDevice.GetFaceExpression(RealsenseDevice.FaceExpression.EyesDown);
            float eyesY         = eyesDown - eyesUp;

            Vector3 lookDirection = headTarget.unityVRHead.camera.ViewportPointToRay(new Vector3(eyesX, eyesY, 2)).direction;

            headTarget.face.SetGazeDirection(lookDirection, 0.8F);
            Debug.Log("B");
        }
示例#7
0
 public override void Calibrate()
 {
     RealsenseDevice.Calibrate();
 }