Szemszétebráció

Képernyőkép a szemredő értesítésekről

Áttekintés

Ha a szemkövetés alapvető részét képezi az alkalmazásnak, akkor előfordulhat, hogy biztosítani szeretné, hogy a felhasználó szemének szemreszabadútja érvényes legyen. Az érvénytelenítés fő oka az, hogy a felhasználó úgy döntött, hogy kihagyja a szemkövetést az eszköz üzembe ugrása során.

Ez az oldal a következőket tartalmazza:

  • Ez a cikk azt ismerteti, hogyan lehet észlelni, ha a felhasználó szemre van beállítva
  • Minta a felhasználói értesítések aktiválásához, amely arra utasítja a felhasználót, hogy ássa be a szemét
    • Automatikus mellőzés értesítése, ha a szemre vonatkozó figyelmeztetés érvényessé válik
    • Értesítés manuális elvetését, ha a felhasználó úgy dönt, hogy folytatja a folytatást

A szemszibráció állapotának észlelése

Az MRTK szemkövetési konfigurációja az interfészen keresztül van IMixedRealityEyeGazeProvider konfigurálva.

A CoreServices.InputSystem.EyeGazeProvider használata biztosítja az eszközkészletben futásidőben regisztrált alapértelmezett tekintetszolgáltatói implementációt. IMixedRealityEyeGazeProvider.IsEyeGazeValid A egy bool? null értéket ad vissza, ha a szemkövető még nem tartalmaz információt. Az adatok a be megkapása után igaz vagy hamis értéket fognak visszaadni, ami azt jelzi, hogy a felhasználó szemkövetési mozgása érvényes vagy érvénytelen.

A szemre vonatkozó értesítésminta – lépésről lépésre

  1. Nyissa meg az MRTK szemkövetési példacsomagot (Assets/MRTK/Examples/Demos/EyeTracking)

  2. Az EyeTrackingDemo-00-RootScene.unity jelenet betöltése

  3. Tekintse meg a Következőt: EyeCalibrationChecker:

    • Ebben a jelenetben már van egy minta, amely azt észleli, hogy az aktuális felhasználó az EyeCalibrationChecker játékobjektum alatt van-e beállítva. Csupán néhány szöveges hálót tartalmaz, és további eseményindítókat is tartalmaz az értesítés be- és kiegyezésére. Ez magában foglalja a méret és az átlátszatlanság lassú növelését az aktiváláskor. Az értesítés elvetését követően lassan csökken a mérete, és elhalványul.

    • Az EyeCalibrationChecker játékobjektumhoz csatolt az EyeCalibrationChecker szkript, amely két Unity-eseményt fed fel:

      • OnEyeCalibrationDetected()
      • OnNoEyeCalibrationDetected()
    • Ezek az események csak akkor aktiválódnak, ha a állapota megváltozik. Ezért ha egy felhasználó úgy dönt, hogy elveti az értesítést, az értesítés csak akkor jelenik meg újra, ha

      • Az alkalmazás újraindul
      • A rendszer egy érvényes felhasználót észlelt, majd egy új, nem minősített felhasználó
    • Annak tesztelésére, hogy az animációk és események megfelelően aktiválódtak-e, az EyeCalibrationChecker szkript rendelkezik egy bool editorTestUserIsCalibrated jelzővel. A Unity-szerkesztőben való futtatáskor például tesztelheti a következőt:

      1. Automatikusan megjelenik-e az értesítés, ha a állapota igazról hamisra változik
      2. Azt határozza meg, hogy a rendszer automatikusan elveti-e az értesítést, ha az állapot false értékről true (igaz) állapotra változik.
    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;
      }
   }

Lásd még