4. Interaktives Gestalten der Szene
Im vorhergehenden Tutorial haben Sie „ARSession“, „Pawn“ und den Spielemodus hinzugefügt, um die Einrichtung der Schach-App für Mixed Reality durchzuführen. In diesem Abschnitt wird das Open Source-Plug-In Mixed Reality Toolkit UX Tools behandelt, das Tools enthält, um die Interaktion mit der Szene zu ermöglichen. Am Ende dieses Abschnitts werden Ihre Schachfiguren durch Benutzereingaben bewegt.
Ziele
- Installieren des UX-Tools-Plug-Ins für Mixed Reality
- Hinzufügen von Handinteraktionsakteuren für Ihre Fingerspitzen
- Erstellen und Hinzufügen von Manipulatoren zu Objekten in der Szene
- Überprüfen des Projekts mithilfe der Eingabesimulation
Herunterladen des UX-Tools-Plug-Ins für Mixed Reality
Bevor Sie mit Benutzereingaben arbeiten können, müssen Sie dem Projekt das UX-Tools-Plug-In für Mixed Reality hinzufügen. Weitere Informationen zu UX-Tools finden Sie in dem Projekt auf GitHub.
- Öffnen Sie den Epic Games Launcher. Navigieren Sie zum Unreal Engine Marketplace, und suchen Sie nach „Mixed Reality UX Tools“. Installieren Sie das Plug-In in Ihrer Engine.
- Zurück im Unreal-Editor, wechseln Sie zu Projekteinstellungen>Plug-Ins, und suchen Sie nach „Mixed Reality UX Tools“. Stellen Sie sicher, dass das Plug-In aktiviert ist, und starten Sie den Editor neu, wenn Sie dazu aufgefordert werden.
- Das UXTools-Plug-In besitzt einen Ordner „Content“ mit den Unterordnern Buttons (Schaltflächen), XR Simulation (XR-Simulation) und Pointers (Zeiger) und einen Ordner „C++ Classes“ mit zusätzlichem Code.
Hinweis
Wenn Sie den Abschnitt UXTools-Inhalt im Inhaltsbrowser nicht sehen, aktivieren Sie Ansichtsoptionen> Engine-Inhalt anzeigen und *Ansichtsoptionen > Plugin-Inhalt anzeigen.
Weitere Plug-In-Dokumentation finden Sie im GitHub-Repository der UX-Tools für Mixed Reality.
Sobald das Plug-In installiert ist, können Sie die Tools verwenden. Beginnen Sie dabei mit den Handinteraktionsakteuren.
Erzeugen von Handinteraktionsakteuren
Die Handinteraktion mit UX-Elementen erfolgt über Handinteraktionsakteure, die die Zeiger und Visuals für Nah- und Ferninteraktionen generieren und steuern.
- Nahinteraktionen: Greifen von Elementen mit Zeigefinger und Daumen oder durch Anstupsen mit einer Fingerspitze.
- Ferninteraktionen:Ziehen eines Strahls von der virtuellen Hand zu einem Element und Zusammendrücken von Zeigefinger und Daumen.
Wenn Sie in diesem Fall MRPawn einen Handinteraktionsakteur hinzufügen, geschieht Folgendes:
- Den Fingerspitzen der Zeigefinger des Pawns wird ein Cursor hinzugefügt.
- Es werden freie Handeingabeereignisse bereitgestellt, die über den Pawn gesteuert werden können.
- Eingabeereignisse für die Ferninteraktion werden durch Handstrahlen ermöglicht, die von den Ballen der virtuellen Hände ausgehen.
Wir empfehlen, vor dem Fortfahren die Dokumentation zu Handinteraktionen zu lesen.
Anschließend öffnen Sie die Blaupause MRPawn, und wechseln Sie zum Ereignisdiagramm.
Ziehen Sie den Ausführungspin von Event BeginPlay, und lassen Sie ihn los, um einen neuen Knoten zu platzieren.
- Wählen Sie Spawn Actor from Class (Akteur aus Klasse erstellen) aus, klicken Sie auf die Dropdownliste neben dem Pin Class, und suchen Sie nach Uxt Hand Interaction Actor (UXT-Handinteraktionsakteur).
Erzeugen Sie einen zweiten Uxt Hand Interaction Actor, wobei Sie Right (Rechts) für die Hand festlegen. Wenn das Ereignis beginnt, wird auf jeder Hand ein UXT-Handinteraktionsakteur erzeugt.
Das Ereignisdiagramm sollte wie im folgenden Screenshot aussehen:
Beide UXT-Handinteraktionsakteure benötigen Besitzer und Ausgangspositionen für die Transformation. Die Ausgangstransformation spielt in diesem Fall keine Rolle, da bei den UX-Tools die Handinteraktionsakteure zu den virtuellen Händen springen, sobald sie sichtbar sind. Die Funktion SpawnActor
erfordert jedoch eine Transformationseingabe, um einen Compilerfehler zu vermeiden. Verwenden Sie daher die Standardwerte.
Ziehen Sie den Pin aus einer den Pins Spawn Transform (Transformation generieren), und lassen Sie ihn los, um einen neuen Knoten zu platzieren.
- Suchen Sie nach dem Knoten Make Transform (Transformation erstellen), und ziehen Sie dann den Return Value (Rückgabewert) auf Spawn Transform der anderen Hand, sodass beide SpawnActor-Knoten verbunden sind.
Wählen Sie im unteren Bereich beider SpawnActor-Knoten den Pfeil nach unten aus, um den Owner-Pin (Besitzer) anzuzeigen.
- Ziehen Sie den Pin aus einem der Pins vom Typ Owner (Besitzer), und lassen Sie ihn los, um einen neuen Knoten zu platzieren.
- Suchen Sie nach self, und wählen Sie die Variable Get a reference to self (Selbstverweis abrufen) aus.
- Erstellen Sie eine Verknüpfung zwischen dem Objektverweisknoten für Self und dem Besitzerpin des anderen Handinteraktionsakteurs.
Aktivieren Sie zu guter Letzt das Kontrollkästchen Show Near Cursor on Grab Targets (Nahcursor für Greifziele anzeigen) für beide Handinteraktionsakteure. Am Greifziel sollte ein Cursor angezeigt werden, wenn sich Ihr Zeigefinger ihm annähert, sodass Sie sehen können, wo sich Ihr Finger relativ zum Ziel befindet.
- Kompilieren und speichern Sie Ihre Arbeit, und kehren Sie anschließend zum Hauptfenster zurück.
Stellen Sie sicher, dass die Verbindungen dem folgenden Screenshot entsprechen, Sie können die Knoten jedoch zur besseren Übersichtlichkeit auf der Blaupause verschieben.
Weitere Informationen zu Handinteraktionsakteuren finden Sie in der Dokumentation der UX-Tools.
Mit den virtuellen Händen im Projekt können Objekte jetzt ausgewählt, aber immer noch nicht manipuliert werden. Die letzte Aufgabe vor dem Testen der App besteht darin, den Akteuren in der Szene Manipulatorkomponenten hinzuzufügen.
Anfügen von Manipulatoren
Ein Manipulator ist eine Komponente, die auf eine freie Handeingabe reagiert und gegriffen, gedreht und verschoben werden kann. Durch Anwenden der Manipulatortransformation auf eine Akteurtransformation können direkte Akteurmanipulationen durchführt werden.
- Öffnen Sie die Blaupause Board, klicken Sie auf Add Component (Komponente hinzufügen), und suchen Sie im Bereich Components (Komponenten) nach Uxt Generic Manipulator (Allgemeiner UXT-Manipulator).
- Erweitern Sie im Bereich Details den Abschnitt Generic Manipulator (Allgemeiner Manipulator). Hier können Sie die einhändige oder zweihändige Manipulation, den Rotationsmodus und die Glättung festlegen. Wählen Sie die gewünschten Modi aus, und kompilieren und speichern Sie „Board“.
- Wiederholen Sie die Schritte oben für den Akteur WhiteKing.
Weitere Informationen zu den Manipulatorkomponenten aus dem UX-Tools-Plug-In für Mixed Reality finden Sie in der Dokumentation.
Testen der Szene
Fast geschafft! Jetzt können Sie die App mit den neuen virtuellen Händen und Benutzereingaben testen. Drücken Sie im Hauptfenster auf Play (Wiedergabe). Daraufhin werden zwei Gittermodellhände angezeigt, bei denen jeweils ein Handstrahl von den Handflächen ausgeht. Sie können die Hände und ihre Interaktionen wie folgt steuern:
- Halten Sie die linke ALT-TASTE gedrückt, um die linke Hand zu steuern, und die linke UMSCHALTTASTE, um die rechte Hand zu steuern.
- Bewegen Sie die Maus, um die Hand zu verschieben. Scrollen Sie mit dem Mausrad, um die Hand vor- oder zurückzubewegen.
- Verwenden Sie die linke Maustaste zum Zusammendrücken und die mittlere Maustaste zum Anstupsen.
Hinweis
Die Eingabesimulation funktioniert möglicherweise nicht, wenn mehrere Headsets an Ihren PC angeschlossen sind. Wen bei Ihnen Probleme auftreten, versuchen Sie, Ihre anderen Headsets zu trennen.
Verwenden Sie die simulierten Hände, um den weißen König aufzunehmen, zu bewegen und abzustellen sowie um das Brett zu manipulieren. Experimentieren Sie sowohl mit der Nah- als auch mit der Ferninteraktion, und beachten Sie dabei, dass der Handstrahl durch einen Fingercursor an der Spitze des Zeigefingers ersetzt wird, wenn sich die Hand dem Schachbrett oder dem König so weit nähert, um direkt damit zu interagieren.
Weitere Informationen zu den simulierten Händen aus dem MRTK UX Tools-Plug-In finden Sie in der Dokumentation.
Nachdem die virtuellen Hände jetzt mit Objekten interagieren können, können Sie mit dem nächsten Tutorial fortfahren, um Benutzeroberflächen und Ereignisse hinzuzufügen.
Nächster Abschnitt: 5. Hinzufügen einer Taste und Zurücksetzen von Figurenpositionen