Пример #1
0
 void OnDisable()
 {
     ArMarkers.Remove(this);
     if (ArMarkerTracker.Instance)
     {
         ArMarkerTracker.Instance.NewPoseDetected -= OnArPose;
     }
 }
Пример #2
0
 void OnEnable()
 {
     ArMarkers.Add(this);
     if (ArMarkerTracker.Instance)
     {
         ArMarkerTracker.Instance.NewPoseDetected += OnArPose;
     }
     else
     {
         Debug.LogWarning("No ArMarkerTracker found!");
     }
 }
Пример #3
0
        private void PerformCalibration()
        {
            var validMarkers = ArMarkers.GetAll().Where(m => IsArMarkerValid(m));

            if (validMarkers.Count() > 0)
            {
                var camPositions   = validMarkers.Select(m => m.DetectedCameraPosition);
                var avgCamPosition = MathUtility.Average(camPositions);
                //var optitrackPose = OptitrackListener.GetPose(Globals.OptitrackHmdName);
                //Debug.Assert(optitrackPose != null, "OptitrackPose shall not be null, since we checked for that in ShouldCalibrate??");
                var hmdRotation = VRListener.CurrentRotation;
                var hmdPosition = VRListener.CurrentPosition;
                CalibrationParams.PositionOffset = Quaternion.Inverse(hmdRotation) * (avgCamPosition - hmdPosition);

                var camRotations   = validMarkers.Select(m => m.DetectedCameraRotation);
                var avgCamRotation = MathUtility.Average(camRotations);

                CalibrationParams.RotationOffset = Quaternion.Inverse(hmdRotation) * avgCamRotation;
            }
        }