Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Eingabesystem ist eines der größten Systeme von allen Funktionen, die MRTK bietet. So viele Dinge innerhalb des Toolkits bauen darauf auf (Zeiger, Fokus, Prefabs). Der Code innerhalb des Eingabesystems ermöglicht natürliche Interaktionen wie Greifen und Drehen über Plattformen hinweg.
Das Eingabesystem verfügt über eine eigene Terminologie, die es wert ist, folgendes zu definieren:
Datenanbieter
Die Eingabeeinstellungen im Eingabeprofil enthalten Verweise auf Entitäten, die als Datenanbieter bezeichnet werden. Ein weiteres Wort, das beschreibt, dass dies Geräte-Manager sind. Dies sind Komponenten, deren Aufgabe darin besteht, das MRTK-Eingabesystem zu erweitern, indem es mit einem bestimmten zugrunde liegenden System interfaciert wird. Ein Beispiel für einen Anbieter ist der Windows Mixed Reality Anbieter, dessen Aufgabe es ist, mit den zugrunde liegenden Windows Mixed Reality-APIs zu kommunizieren und die Daten aus diesen APIs dann unten in MRTK-spezifische Eingabekonzepte zu übersetzen. Ein weiteres Beispiel wäre der OpenVR-Anbieter (dessen Aufgabe es ist, mit unity-abstrahierten Versionen von OpenVR-APIs zu kommunizieren und diese Daten dann in MRTK-Eingabekonzepte zu übersetzen).
Controller
Eine Darstellung eines physischen Controllers (unabhängig davon, ob es sich um einen 6-Grad-Freiheitscontroller, eine Hand im HoloLens 1-Stil mit Gestenunterstützung, eine vollständig artikulierte Hand, einen Schaltbewegungscontroller usw.) handelt. Controller werden von Geräte-Managern erstellt (d. h. der WMR-Geräte-Manager erzeugt einen Controller und verwaltet seine Lebensdauer, wenn eine artikulierte Hand ins Leben kommt).
Zeiger
Controller verwenden Zeiger, um mit Spielobjekten zu interagieren. Der Nahinteraktionszeiger ist z. B. dafür verantwortlich, zu erkennen, wann sich die Hand (bei der es sich um einen Controller handelt) in der Nähe von Objekten befindet, die sich selbst als Unterstützung der "Nahinteraktion" ankündigen. Andere Beispiele für Zeiger sind Teleportation oder Fernzeiger (d. h. der Schalenhandstrahlzeiger), die weit entfernte Raycasts verwenden, um mit Inhalten zu interagieren, die länger als die Arme des Benutzers sind.
Zeiger werden vom Geräte-Manager erstellt und dann an eine Eingabequelle angefügt. Gehen Sie folgendermaßen vor, um alle Zeiger für einen Controller abzurufen:
controller.InputSource.Pointers
Beachten Sie, dass ein Controller vielen verschiedenen Zeigern gleichzeitig zugeordnet werden kann. Um sicherzustellen, dass dies nicht zu Chaos führt, gibt es einen Zeigervermittler, der steuert, welche Zeiger aktiv sein dürfen (z. B. deaktiviert der Mediator weit entfernte Interaktionszeiger, wenn nahe Interaktion erkannt wird).
Konferenzzustandsobjekt
Zeigerereignisse werden an Objekte im Fokus gesendet. Die Fokusauswahl variiert je nach Zeigertyp. ein Handstrahlzeiger verwendet Raycasts, während ein Poke-Zeiger Spherecasts verwendet. Ein Objekt muss IMixedRealityFocusHandler implementieren, um den Fokus zu erhalten. Es ist möglich, ein Objekt global zu registrieren, um ungefilterte Zeigerereignisse zu empfangen. Dieser Ansatz wird jedoch nicht empfohlen.
Die Komponente, die aktualisiert, welche Objekte den Fokus haben, ist focusProvider.
Cursor
Eine Entität, die einem Zeiger zugeordnet ist, der zusätzliche visuelle Hinweise zur Zeigerinteraktion gibt. Der FingerCursor rendert z. B. einen Ring um Ihren Finger und kann diesen Ring drehen, wenn sich Ihr Finger in der Nähe von Objekten befindet, die "nahezu interagierbar" sind. Ein Zeiger kann einem einzelnen Cursor zugeordnet werden.
Interaktion und Manipulation
Objekte können mit einem Interaktions- oder Bearbeitungsskript gekennzeichnet werden. Dies kann über ein
Interactable
oder etwas wieNearInteractionGrabbable
/ManipulationHandler
erfolgen.Beispielsweise ermöglichen NearInteractionGrabbable und NearInteractionTouchable, dass bestimmte Zeiger (insbesondere in der Nähe von Interaktionszeigern) wissen, auf welche Objekte sich konzentrieren können.
Interactable und ManipulationHandler sind Beispiele für Komponenten, die auf Zeigerereignisse lauschen, um visuals der Benutzeroberfläche zu ändern oder Spielobjekte zu verschieben/skalieren/drehen.
Die folgende Abbildung erfasst den allgemeinen Aufbau (von unten nach oben) des MRTK-Eingabestapels: