Konzeptmigrationsleitfaden von MRTK2 zu MRTK3

Beim Verwenden von MRTK3 werden Sie feststellen, dass mehrere Konzepte in MRTK v2 geändert, ersetzt oder entfernt wurden. Das liegt daran, dass MRTK3 das XR Interaction Toolkit (XRI) Framework von Unity für die Interaktion und das Unity Input System plus OpenXR für die Eingabe verwendet. Dieses Dokument soll helfen, die Lücke zwischen MRTK v2-Konzepten und ihren MRTK3-Gegenstücken zu schließen.

Wichtig

Wir empfehlen für Entwickler, die XRI noch nicht kennen, dass Sie zunächst die Dokumentation zur XRI-Architektur von Unity lesen. Alle XRI-Dokumentationen gelten auch für MRTK3, da die meisten Interaktions- und Eingabefeatures einfach von XRI geerbt werden.

Begriff

MRTK v2-Begriff MRTK3-Begriff Beschreibung
Zeiger Interaktor Interaktoren führen Interaktionen auf Interagierbaren aus. Einige (aber nicht alle) Interaktoren werden von Controllern gesteuert, von denen sie Eingabeaktionen und Posen erhalten. Andere Interaktoren funktionieren unabhängig von Controllern.

MRTK liefert mehrere benutzerdefinierte Interaktoren, die zusätzlich zu den grundlegenden von Unity bereitgestellten Interaktoren nützliche Mixed Reality-Interaktionen ermöglichen. Benutzerdefinierte Interaktoren können entweder durch Vererbung oder durch Implementieren der Interaktionsschnittstellen (IXRHoverInteractor, IXRSelectInteractor, usw.) erstellt werden. Weitere Informationen finden Sie in der Dokumentation zur Interaktorarchitektur.
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler Interaktionsfähig Interaktionsfähige Elemente sind die Empfänger von Interaktionen. MRTK liefert mehrere benutzerdefinierte interaktionsfähige Objekte, die zusätzlich zu den grundlegenden von Unity bereitgestellten interaktionsfähigen Objekten nützliche Mixed Reality-Interaktionen ermöglichen. Interaktionsfähige Objekte können entweder durch Vererbung oder durch Implementieren der interagierbaren Schnittstellen (IXRHoverInteractable, IXRSelectInteractableusw.) erstellt werden. Weitere Informationen dazu, wie MRTK interaktive XRI-Objekte erweitert, finden Sie in der Dokumentation zur interaktiven Architektur.
Controller Controller Ein ActionBasedController ist eine Sammlung von Unity-Eingabeaktionen, die die Bindungen darstellen, die einem bestimmten Gerät zugeordnet sind. Die Sammlung von Eingabeaktionen kann von mehreren Geräten abgeleitet werden, da es keine 1:1-Beziehung zwischen ActionBasedControllers und zugrunde liegenden Eingabegeräten gibt. (DeviceBasedController ist eine 1:1-Zuordnung eines Eingabegeräts, aber wir verwenden sie nicht.)

Viele Interaktionspartner (ControllerBasedInteractors, insbesondere) hören Controller für Eingabeaktionen an; anders ausgedrückt bedeutet das, dass alle ControllerBasedInteractors unter einem XRController dieselbe Auswahlaktion teilen.
Teleportiersystem Locomotion-System Das Locomotion-System ermöglicht es dem Benutzer, sich während eines XR-Ereignisses in der Szene zu bewegen. Das System von MRTK v2 ermöglicht grundlegende Teleportation und Teleport-Hotspots mit einem hohen Maß an Anpassungsmöglichkeiten für den Teleport-Cursor und das Zeigerverhalten. XRI bietet die folgenden hinzugefügten Funktionen für Locomotion:
  • Ein Snap-Drehanbieter, der das Rig durch feste Winkel dreht
  • Ein kontinuierlicher Drehanbieter, der das Rig im Laufe der Zeit reibungslos dreht
  • Ein kontinuierlicher Bewegungsanbieter, der das Rig während der Zeit reibungslos bewegt
Fokusanbieter XR-Interaktionsmanager Der XRInteractionManager ist der Unity-Mechanismus, der als Vermittler zwischen den Interaktoren und interaktionsfähigen Elementen in der Szene dient. Die Unity XRInteractionManager synchronisiert und vermittelt alle Interaktionen zwischen Interaktoren und interaktionsfähigen Elementen und bietet im Vergleich zum alten Fokusanbieter eine wesentlich größere Flexibilität.
Zeigervermittler Interaktionsmodus-Manager Der neue Interaktionsmodus-Manager wird verwendet, um Interaktionssätze je nach Kontext in der Szene zu aktivieren/deaktivieren. Weitere Informationen finden Sie in der Dokumentation zum Modus-Manager.
SceneQuerymask Interaktionsebenen XRI-Interaktionsebenen können Entwickler filtern, welche Interaktoren auf welche interaktionsfähigen Elementen reagieren können. Diese Ebenen unterscheiden sich von Unity-Physikebenen.
Fokus Darauf zeigen (Hover) Interaktoren zeigen Hover auf interaktionsfähigen Elementen an, wenn das interaktionsfähige Element ein gültiges Ziel für den Interaktor ist. Im Allgemeinen zeigt ein Hover die Absicht des Interaktors an, z. B. das Zielen mit einem Strahl, die Nähe der Hand zum Greifen oder ob der Benutzer das Objekt betrachtet.
Wählen/Poke/Greifen/Stimme usw. Select Interaktoren geben eine Auswahl auf interaktionsfähige Elemente aus, wenn das interaktionsfähige Element ein gültiges Ziel ist und der Interaktor dies so will. ControllerBasedInteractors geben im Allgemeinen eine Auswahl aus, wenn die Auswahl-Eingabeaktion des entsprechenden Controllers ausgelöst wird. Andere Interaktoren können eine komplexere Logik haben, um zu bestimmen, wann eine Auswahl an das gewünschte interaktionsfähige Element ausgegeben werden soll.

MRTK v2 behandelt verschiedene Arten von Interaktionen mit separaten Ereignissen und Codepfaden; in anderen Worten bedeutet das, dass eine Greifaktion eine grundlegend andere Interaktion als ein Ray Click oder Poke war, das durch separate Systeme generiert wird. In MRTK3 werden alle diese Methoden zum Auswählen eines Objekts unter derselben Auswahlinteraktion vereinheitlicht.

Wir empfehlen Entwicklern dringend, keine Interaktionslogik zu entwickeln, die auf einer bestimmten Art von Interaktion beruht. Schreiben Sie stattdessen verallgemeinerbaren Code, der generisch auf alle Auswahlen antwortet. Auf diese Weise funktionieren Ihre Interaktionen über alle Eingabemodalitäten hinweg. Sogar für Arten von Interaktionen, die noch entwickelt werden müssen. Lesen Sie im Abschnitt Interaktionsfähige Architektur nach, warum wir von diesem Kurs abraten.
Nicht zutreffend Aktivieren Aktivieren ist eine zusätzliche Aktion, die bei einem Objekt ausgelöst werden kann, das bereits ausgewählt wurde. Wenn ein Benutzer beispielsweise mit dem Griff des Controllers eine Wasserpistole auswählt, löst der Trigger diese mit einer Aktivieren-Aktion aus.
Datenanbieter XRSubsystem + Anbieter Die meisten Datenanbieter sind in MRTK3 nicht mehr notwendig, weil das Unity Input System und OpenXR die meisten plattformübergreifenden Eingabeaufgaben übernehmen. Für einige Ausreißer, die noch nicht von Unity abgedeckt werden, bieten wir jedoch XRSubsystems an, die Daten über verschiedene Plattformen hinweg liefern können, wie z. B. HandsAggregatorSubsystem und SpeechSubsystem. Weitere konzeptionelle Leseinformationen zu unserem Subsystems-Ansatz finden Sie in der Architekturdokumentation der Subsysteme.

Ereignisse

MRTK v2-Begriff XRI-Begriff Notizen
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
Notieren Sie sich die First und Last Präfixe. Diese sind in den Ereignisnamen enthalten, da eine beliebige Anzahl von Interaktoren gleichzeitig auf ein interaktionsfähiges Objekt zeigen kann. Sie können auch jeden einzelnen Mauszeiger mit HoverEnter und HoverExit abhören, obwohl dies weniger nützlich ist als die Überwachung des gesamten Mauszeigerstatus.
OnPointerDown/Up FirstSelectEnter
LastSelectExit
Notieren Sie sich die First und Last Präfixe. Diese sind in den Ereignisnamen enthalten, da eine beliebige Anzahl von Interaktoren gleichzeitig ein interaktionsfähiges Objekt auswählen kann (abhängig vom Auswahlmodus). Sie können auch jede einzelne Auswahl mit SelectEnter und SelectExit abhören, obwohl dies weniger nützlich ist als die Überwachung des gesamten Auswahlstatus.
OnPointerDragged Rufen Sie bei einer Auswahl einfach die interactorsSelecting angehängten Transformationen mit GetAttachTransform ab. Beachten Sie, dass je nach Auswahlmodus des interaktionsfähigen Elements eine unbegrenzte Anzahl von Interaktoren ein interaktionsfähiges Element auswählen (und bearbeiten) kann.
OnSourcePoseChanged, OnSourceDetected, OnSourceLost XRI löst diese Ereignisse nicht aus. Sie werden über die XRController-Überwachung ihres zugeordneten Eingabegeräts behandelt.