Sdílet prostřednictvím


Kalibrace očí — MRTK2

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

Přehled

Pokud je sledování očí základní součástí prostředí aplikace, můžete se ujistit, že kalibrace očí uživatele je platná. Hlavním důvodem, proč je neplatný, je to, že se uživatel rozhodl při uvedení zařízení vynechat kalibraci sledování očí.

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

  • Popisuje, jak zjistit, že uživatel má kalibrované oči.
  • Poskytuje ukázku, jak aktivovat oznámení uživatele s pokynem, aby uživatel prošel kalibrací očí.
    • Automatické zavření oznámení v případě, že se kalibrace očí stane platnou
    • Ruční zavření oznámení, pokud se uživatel rozhodne pokračovat bez kalibrace

Jak zjistit stav kalibrace očí

Konfigurace sledování očí v MRTK se konfiguruje prostřednictvím IMixedRealityEyeGazeProvider rozhraní.

Použití CoreServices.InputSystem.EyeGazeProvider poskytuje výchozí implementaci zprostředkovatele pohledu zaregistrovanou v sadě nástrojů za běhu. IMixedRealityEyeGazeProvider.IsEyeGazeValid bool? vrátí hodnotu null, pokud zatím nejsou k dispozici žádné informace ze sledování očí. Jakmile data obdržíte, vrátí buď hodnotu true, nebo false, což značí, že kalibrace sledování očí uživatele je platná nebo neplatná.

Oznámení o kalibraci vzorku očí – krok za krokem

  1. Otevřete balíček s ukázkou sledování očí MRTK (Assets/MRTK/Examples/Demos/EyeTracking).

  2. Načtení scény EyeTrackingDemo-00-RootScene.unity

  3. Podívejte se na EyeCalibrationChecker:

    • V této scéně už máme ukázku pro detekci, jestli je aktuální uživatel kalibrovaný pod objektem hry EyeCalibrationChecker. Jednoduše sdružuje několik textových sítí a obsahuje několik dalších triggerů pro prolnutí oznámení. To zahrnuje pomalé zvětšování jeho velikosti a neprůhlednosti při aktivaci. Po zavření oznámení se jeho velikost pomalu zmenší a zmizí.

    • K objektu hry EyeCalibrationChecker je připojen skript EyeCalibrationChecker, který zveřejňuje dvě události Unity:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Tyto události se aktivují pouze v případě, že se změní stav kalibrace. Pokud se tedy uživatel rozhodne oznámení zavřít, oznámení se znovu nezobrazí, dokud

      • Aplikace se restartuje.
      • Byl zjištěn platný uživatel a nový nekalibrovaný uživatel ho umístil do zařízení.
    • Pro testování, zda jsou animace a události správně aktivovány bool editorTestUserIsCalibrated , má skript EyeCalibrationChecker příznak. Například při spuštění v Editoru Unity můžete otestovat:

      1. Jestli se oznámení automaticky objeví, jakmile se stav kalibrace změní z true na false
      2. Jestli se oznámení automaticky znovu zavře, jakmile se stav změní z false na true.
    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é