Freigeben über


Eyetracking – MRTK3

Übersicht

Das Eyetracking wird nativ vom Unity-Eingabesystem durchgeführt, aber MRTK3 bietet nützliche Helfer, um das Hinzufügen von Eyetracking zu vereinfachen.

Standardmäßig verfügt das MRTK XR Rig Prefab bereits über den MRTK3-Blickcontroller. Wenn Sie den Blickcontroller von MRTK3 nicht verwenden MRTK XR Rig und verwenden möchten, fügen Sie das MRTK Gaze Controller Prefab Ihrer Unity-Szene hinzu.

Das Prefab des MRTK-Blickcontrollers verfügt über einen Unity XR Controller und Interactor, der an die Augen- und Kopfanzeigeeingabe von Unity gebunden ist. Die Aktionen des Controllers sind so eingerichtet, dass der Blick gegenüber dem Blick auf den Kopf bevorzugt wird. Wenn der Blick deaktiviert, nicht konfiguriert oder nicht kalibriert ist, verwendet der Controller stattdessen die Kopf-Blickhaltung. Weitere Informationen dazu, wie die Aktionsbindungen des MRTK3-Blickcontrollers konfiguriert wurden, finden Sie in der enthaltenen UNITY-Ressource mrTK-Standardeingabeaktionen .

Abbildung der Einstellungen für die Blickaktion im Unity-Objekt der MRTK-Standardeingabeaktion.

Wichtig

Wenn Sie das Eyetracking bei Verwendung von OpenXR aktivieren möchten, muss das Interaktionsprofil der Interaktionsprofil von OpenXR hinzugefügt werden. Weitere Informationen zum Konfigurieren von OpenXR-Einstellungen in Unity finden Sie unter Einrichten eines neuen OpenXR-Projekts mit MRTK .

Wenn Sie die Universelle Windows-Plattform verwenden, müssen Sie außerdem die GazeInput-Funktion unter Funktionen für Veröffentlichungseinstellungen > für Projektprojekteinstellungen >>hinzufügen.

Fuzzy-Blickinteraktor

Der MRTK3-Blickcontroller wurde so eingerichtet, dass er verwendet FuzzyGazeInteractor, ein Unity-Interaktor, der eine Fuzzy-Blickinteraktionstechnik implementiert, bei der Objekte innerhalb eines bestimmten Kegelwinkels und Entfernungsbereichs basierend auf der Blickrichtung des Benutzers ausgerichtet und mit ihnen interagiert werden. Das Bewertungssystem hilft dabei, potenzielle Ziele basierend auf ihrer Eignung für die Interaktion zu priorisieren.

Das Skript definiert mehrere Felder und Eigenschaften, die das Verhalten des Blickinteraktionenors steuern. Zu den wichtigen Bereichen gehören:

  • coneAngle: Der Winkel, in dem Objekte für das Anvisieren durch Den Blick betrachtet werden.
  • minGazeDistance und maxGazeDistance: Die minimalen und maximalen Entfernungen, auf die Objekte durch Anvisieren ausgerichtet werden können. distanceWeight, angleWeight, distanceToCenterWeight und angleToCenterWeight: Gewichtungen, die verschiedenen Kriterien zugewiesen sind, mit denen die "Blickbewertung" eines Objekts bestimmt wird.
  • Genauigkeit: Ein Wert, der verwendet wird, um die Genauigkeit der Raycasts für die Physik des Fuzzy-Blicks anzupassen.
  • performAdditionalRaycast: Ein Flag, das angibt, ob ein zusätzlicher Raycast nach dem Blick durchgeführt wird, um die Bewertungsergebnisse zu verbessern.
  • precisionCurve: Eine Animationskurve, die verwendet wird, um die Genauigkeitsstufe basierend auf dem Abstand zum Ziel zu steuern.

Das Skript überschreibt einige Methoden aus der Basisklasse XRRayInteractor , um eine eigene Implementierung bereitzustellen. Zu den wichtigsten überschriebenen Methoden gehören:

  • IsHitValid: Bestimmt, ob ein Treffer auf ein interagierbares Objekt basierend auf den durch die Felder coneAngle, minGazeDistance und maxGazeDistance definierten Winkel- und Entfernungskriterien als gültig betrachtet wird.
  • ScoreHit: Bewertet einen interagierbaren und den zugehörigen Raycasttreffer basierend auf Entfernung, Raycasttrefferwinkel und Zielmittelwinkel. Die Bewertung ist eine Kombination aus gewichteten Faktoren.
  • ConecastScoreCompare: Vergleicht Raycasttreffer anhand ihrer Ergebnisse in aufsteigender Reihenfolge.
  • GetValidTargets: Ruft die gültigen Ziele für den Blickinteraktor basierend auf Raycasttreffern und deren Bewertungen ab.

Interactor Dwell Manager

Der Blickcontroller von MRTK3 wird ebenfalls mit einer InteractorDwellManager Skriptkomponente eingerichtet. Dieses Skript implementiert mithilfe des XR Interaction Toolkits in Unity eine auf Verweilen basierende Auswahl für interagierbare Objekte. Es verwaltet die Verweilzeitgeber, löst die Auswahl aus und verfolgt den Verweilzustand der interagierbaren Elemente für den angegebenen Interaktor. Um die Auswahl des Blickverweiltseins StatefulInteractable zu verwenden, muss das Ziel interagierbar MRTK3 sein und das Use Gaze Dwell Flag festgelegt sein.

Hinweis

Eine auf Dem Verweilen basierende Auswahl wird nicht empfohlen, wenn eine Hand- oder Spracheingabe möglich ist, da das Verweilen zu unvorhersehbaren oder unbeabsichtigten Aktivierungen von UI-Elementen führen kann. Anwendungen möchten möglicherweise weiterhin Dwelleingaben aus Gründen der Barrierefreiheit oder in Szenarien in Betracht ziehen, in denen keine Sprach- und Handeingaben verfügbar sind. Entwurfsanleitungen zur optimalen Verwendung des Verweilens finden Sie unter Blick und Verweilen mit Blick auf den Blick und das Verweilen mit dem Kopf.

Nachdem er den Hoverzustand eingegeben hat, wählt dieser Interaktivierer weiterhin aus, bevor die Zeit für den Dwelltrigger verstreicht. Danach wird die Auswahl für das interagierbare ausgelöst. Die Einstellungen für das Verweilen können wie folgt konfiguriert werden:

  • DwellTriggerTime: Bestimmt, wie lange der Interaktor nach dem Wechsel in den darauf gezeigten Zustand ein interagierbares Element auswählt.