Kalibrace očí

Snímek obrazovky s oznámením o kalibraci očí

Přehled

Pokud je sledování očí základní součástí prostředí vaší aplikace, může se stát, že budete chtít zajistit, aby byla kalibrace očí uživatele platná. Hlavní důvod, který má být neplatný, je, že se uživatel rozhodl přeskočit kalibraci sledování očí při vložení do zařízení.

Tato stránka obsahuje následující:

  • Popisuje, jak zjistit, zda je uživatel kalibrován jako oko.
  • Poskytuje ukázku, jak aktivovat oznámení uživateli a dát uživateli pokyn, aby procházel kalibrací očí.
    • Automaticky zavřít oznámení, pokud je kalibrace očí platná
    • Ručně zavřít oznámení, pokud se uživatel rozhodne pokračovat bez kalibrace

Jak detekovat stav kalibrace oka

Konfigurace sledování očí v MRTK je nakonfigurována prostřednictvím IMixedRealityEyeGazeProvider rozhraní.

Použití CoreServices. InputSystem. EyeGazeProvider poskytuje výchozí implementaci poskytovatele pohledu registrovanou v sadě Toolkit za běhu. IMixedRealityEyeGazeProvider.IsEyeGazeValid Vrátí hodnotu bool? null, pokud není zatím k dispozici žádné informace z sledování očí. Po přijetí dat vrátí buď hodnotu true, nebo false, aby označovala, že kalibrace sledování očí uživatele je platná nebo neplatná.

Ukázka upozornění na kalibraci očí – krok za krokem

  1. Otevřete ukázkový balíček sledování očí MRTK (Assety/MRTK/příklady/ukázky/EyeTracking).

  2. Načíst EyeTrackingDemo-00-RootScene. Unity – scéna

  3. Podívejte se na EyeCalibrationChecker:

    • V této scéně jsme již našli ukázku zjišťování, zda je aktuální uživatel kalibrován pod objektem hry EyeCalibrationChecker. Slouží pouze k vytvoření několika textových mřížek a obsahuje několik dalších triggerů pro prolnutí a vyřízení oznámení. To zahrnuje pomalé zvyšování velikosti a neprůhlednosti při aktivaci. Po zmizení oznámení se jeho velikost zpomalí a zmenšuje.

    • Připojení k objektu hry EyeCalibrationChecker je skript EyeCalibrationChecker , který zpřístupňuje dvě události Unity:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Tyto události budou aktivovány pouze v případě, že dojde ke změně stavu kalibrace. Proto pokud se uživatel rozhodne zavřít oznámení, oznámení se znovu nezobrazí, dokud

      • Aplikace se restartuje.
      • Byl zjištěn platný uživatel a následně bylo zařízení umístěno v novém nekalibrovaném uživateli.
    • Pro testování, zda jsou animace a události aktivovány správně, má skript EyeCalibrationChecker bool editorTestUserIsCalibrated příznak. Například při spuštění v editoru Unity může jedna otestovat:

      1. Určuje, zda se oznámení automaticky zobrazí, jakmile se stav kalibrace změní z hodnoty true na false.
      2. Bez ohledu na to, zda bude oznámení po změně stavu z false na hodnotu true automaticky ododesláno.
    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;
      }
   }

Viz také