Göz kalibrasyonu — MRTK2

Gözle kalibrasyon bildiriminin ekran görüntüsü

Genel Bakış

Gözle izleme uygulama deneyiminizin temel bir parçasıysa, kullanıcının göz kalibrasyonunun geçerli olduğundan emin olmak isteyebilirsiniz. Geçersiz olmasının temel nedeni, kullanıcının cihazı koyarken göz izleme kalibrasyonunu atlamayı seçmiş olmasıdır.

Bu sayfa aşağıdakileri kapsar:

  • Bir kullanıcının göz kalibre edilmiş olduğunu algılamayı açıklar
  • Kullanıcıya göz ayarından geçmesi talimatını veren bir kullanıcı bildiriminin nasıl tetiklenmesine yönelik bir örnek sağlar
    • Gözle kalibrasyon geçerli hale gelirse bildirimi otomatik olarak kapat
    • Kullanıcı ayarlama olmadan devam etmeyi seçerse bildirimi el ile kapatma

Göz kalibrasyon durumunu algılama

MRTK'de gözle izleme yapılandırması arabirim aracılığıyla IMixedRealityEyeGazeProvider yapılandırılır.

CoreServices.InputSystem.EyeGazeProvider kullanılarak çalışma zamanında araç setinde kayıtlı varsayılan bakış sağlayıcısı uygulaması sağlanır. IMixedRealityEyeGazeProvider.IsEyeGazeValid henüz göz izleyicisinden herhangi bir bilgi yoksa null olan bir bool? döndürür. Veriler alındıktan sonra, kullanıcının göz izleme kalibrasyonunun geçerli veya geçersiz olduğunu belirtmek için true veya false döndürür.

Örnek göz kalibrasyonu bildirimi - adım adım

  1. MRTK göz izleme örnek paketini açın (Assets/MRTK/Examples/Demos/EyeTracking)

  2. EyeTrackingDemo-00-RootScene.unity sahnesini yükleme

  3. EyeCalibrationChecker'a göz atın:

    • Bu sahnede, geçerli kullanıcının EyeCalibrationChecker oyun nesnesi altında ayarlanıp ayarlanmadığını algılamaya yönelik bir örneğimiz zaten var. Yalnızca birkaç metin kısa çizgiyle besler ve bildirimin içine ve dışına karıştırılması için bazı ek tetikleyiciler içerir. Bu, etkinleştirmede boyutunu ve opaklığını yavaşça artırmayı içerir. Bildirim kapatıldıktan sonra boyutunu yavaşça küçültecek ve kaybolacaktır.

    • EyeCalibrationChecker oyun nesnesine eklenmiş olan EyeCalibrationChecker betiği iki Unity Olayını kullanıma sunar:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Bu olaylar yalnızca kalibrasyon durumu değiştiğinde tetiklenir. Bu nedenle, kullanıcı bildirimi kapatmayı seçerse, bildirim

      • Uygulama yeniden başlatılır
      • Geçerli bir kullanıcı algılandı ve ardından yeni bir hesaplanmamış kullanıcı cihazı
    • Animasyonların ve olayların doğru tetiklenip tetiklenmediğini test için EyeCalibrationChecker betiğinde bir bool editorTestUserIsCalibrated bayrak bulunur. Örneğin, Unity Düzenleyicisi'nde çalışırken test edilebilir:

      1. Ayar durumu true'dan false'a değiştiğinde bildirimin otomatik olarak açılıp görünmediği
      2. Durum false yerine true olarak değiştiğinde bildirimin otomatik olarak kapatılıp kapatılmayacağı.
    private bool? prevCalibrationStatus = null;
    ...

   void Update()
   {
      // Get the latest calibration state from the EyeGazeProvider
      bool? calibrationStatus = CoreServices.InputSystem?.EyeGazeProvider?.IsEyeCalibrationValid;

      ...

      if (calibrationStatus != null)
      {
         if (prevCalibrationStatus != calibrationStatus)
         {
            if (calibrationStatus == false)
            {
               OnNoEyeCalibrationDetected.Invoke();
            }
         else
         {
            OnEyeCalibrationDetected.Invoke();
         }

         prevCalibrationStatus = calibrationStatus;
      }
   }

Ayrıca bkz.