Kernsystem

Das Kernstück des Eingabesystems ist inputSystem.Dabei handelt es sich um einen Dienst, der für die Initialisierung und den Betrieb aller eingabebezogenen Funktionen verantwortlich ist, die dem MRTK zugeordnet sind.

Hinweis

Es wird davon ausgegangen, dass Leser den Abschnitt "Terminologie" bereits gelesen haben und grundlegende Kenntnisse haben.

Dieser Dienst ist für Folgendes verantwortlich:

  • Lesen des Eingabesystemprofils
  • Starten der konfigurierten Datenanbieter (z. B. Windows Mixed Reality Device Manager und OpenVR Device Manager ).
  • Instanziierung von GazeProvider,einer Komponente, die für die Bereitstellung von Anvisierungsinformationen im HoloLens-Stil (1. Generation) zusätzlich zu HoloLens 2 Anvisierungsinformationen im Anvisierungsstil verantwortlich ist.
  • Instanziierung des FocusProvider,bei dem es sich um eine Komponente handelt, die für die Bestimmung von Objekten zuständig ist, die den Fokus haben. Dies wird im Abschnitt Zeiger und Fokus der Dokumentation genauer beschrieben.
  • Bereitstellen von Registrierungspunkten für alle Eingabeereignisse (als globale Listener).
  • Bereitstellen von Ereignis dispatch-Funktionen für diese Eingabeereignisse.

Eingabeereignisse

Eingabeereignisse werden in der Regel auf zwei verschiedenen Kanälen ausgelöst:

Objekte im Fokus

Ereignisse können direkt an ein GameObject gesendet werden, das den Fokus besitzt. Ein Objekt kann beispielsweise über ein Skript verfügen, das IMixedRealityTouchHandler implementiert. Dieses Objekt würde Berührungsereignisse erhalten, wenn es von einer Hand, die sich in der Nähe befindet, fokussiert wird. Diese Ereignistypen werden in der GameObject-Hierarchie "nach oben" angezeigt, bis ein GameObject gefunden wird, das das Ereignis behandeln kann.

Dies erfolgt mithilfe von ExecuteHierarchy innerhalb der Standardimplementierung des Eingabesystems.

Globale Listener

Ereignisse können an globale Listener gesendet werden. Es ist möglich, sich mithilfe der -Schnittstelle des Eingabesystems für alle Eingabeereignisse zu IMixedRealityEventSystem registrieren. Es wird empfohlen, die RegisterHandler-Methode zum Registrieren für globale Ereignisse zu verwenden. Die veraltete Funktion verursacht, dass Listener über ALLE Eingabeereignisse benachrichtigt werden, anstatt nur Eingabeereignisse eines bestimmten Typs (wobei der Typ von der Ereignisschnittstelle definiert Register wird).

Beachten Sie, dass Fallbacklistener eine weitere Art von globalen Listenern sind, von denen ebenfalls abgeraten wird, da sie jedes einzelne Eingabeereignis empfangen, das nicht an anderer Stelle in der Szene behandelt wurde.

Reihenfolge der Ereignissendung

Im Allgemeinen werden Ereignisse auf folgende Weise an Listener gesendet. Beachten Sie, dass der Ereignis dispatch-Prozess beendet wird, wenn einer der folgenden Schritte das Ereignis als behandelt bezeichnet.

  1. Das Ereignis wird an globale Listener gesendet.
  2. Das Ereignis wird an modale Dialoge des fokussierten Objekts gesendet.
  3. Das Ereignis wird an das fokussierte Objekt gesendet.
  4. Das Ereignis wird an Fallbacklistener gesendet.

Geräte-Manager und Datenanbieter

Diese Entitäten sind für die Interfacing mit APIs auf niedrigerer Ebene (z. B. Windows Mixed Reality-APIs oder OpenVR-APIs) und für die Übersetzung von Daten aus diesen Systemen in Solche zuständig, die den Eingabeabstraktionen des MRTK auf höherer Ebene passen. Sie sind für die Erkennung, Erstellung und Verwaltung der Lebensdauer von Controllern verantwortlich.

Der grundlegende Ablauf eines Geräte-Managers umfasst:

  1. Der Geräte-Manager wird vom Eingabesystemdienst instanziiert.
  2. Der Geräte-Manager registriert sich bei seinem zugrunde liegenden System (z. B. registriert Windows Mixed Reality Geräte-Manager für Eingabe- und Gestenereignisse.
  3. Er erstellt Controller, die er aus dem zugrunde liegenden System ermittelt (z. B. könnte der Anbieter das Vorhandensein von artikulierten Händen erkennen).
  4. Rufen Sie in der Update()-Schleife UpdateController() auf, um den neuen Zustand des zugrunde liegenden Systems zu erhalten und seine Controllerdarstellung zu aktualisieren.