Basic Unreal Setup
Section outline
-
-
Beim erstmaligen Starten der Unreal Engine (Version 5.2. oder höher) muss ein neues Projekt angelegt werden. Dieses Projekt soll als Grundlage für die Umsetzung der VR-MotionTracking-Anwendung dienen.
edu sharing objectAls Basis wird das Virtual Reality Preset von Unreal genutzt. Dies befindet sich unter dem Reiter „GAMES“. Der Pfad für das Projekt sowie ein entsprechender Name kann eingestellt werden. Über einen Klick auf „Create“ wird das Projekt für uns erstellt und geöffnet. Beim ersten Öffnen der Projektdatei können erhöhte Ladezeiten auftreten, da im Hintergrund noch einige Shader kompiliert werden müssen.
B.1. Basic Projekt-Einstellungen
B.1.1. Plugins und Projekteinstellungen
Sobald das Projekt vollständig geladen und geöffnet wurde, müssen zunächst einige grundlegende Einstellungen vorgenommen werden.
Für die Nutzung vom HTC Headset sowie den HTC Trackern müssen unterschiedliche Plugins aktiviert werden. Außerdem wird ein Plugin für die Control-Rig Funktion sowie die OSC-Integration benötigt.
- Öffnen der Plugins-Einstellungen unter: Edit – Plugins
- Notwendige Plugins:
o OpenXR
o OpenXRViveTracker
o Control Rig
o OSC (Open Sound Control)
Nachdem die Plugins aktiviert wurden, muss die Unreal Engine einen Neustart durchführen. Jetzt ist das Projekt so eingestellt, dass die VIVE Tracker genutzt und OSC-Daten empfangen sowie gesendet werden können. Außerdem ist das ControlRig nun verfügbar (weitere Informationen zur Einrichtung in Abschnitt B.4.).
B.1.2. VR-Pawn
Das Pawn-Blueprint ist die zentrale Komponente für die Umsetzung der Anwendung. Als Grundlage wird das VRPawn-Blueprint genutzt, dass sich im VRTemplate-Ordner befindet. Dieses Pawn beinhaltet bereits einige wichtige Voreinstellungen, sodass es gut für einen schnellen Einstieg genutzt werden kann. Es befindet sich im Content Browser:
All – Content – VR Template – Blueprints
- Für die weitere Bearbeitung sollte eine Kopie vom VRPawn erstellt werden
- VRPawn auswählen, STRG+D
- Kopie vom VRPawn umbenennen, individuellen Namen geben, zB. VRPawn_MotionTracking
Es werden unterschiedliche Components benötigt, um das VRPawn so zu konfigurieren, dass es für das FullBody-MotionTracking zur Steuerung eines Avatars genutzt werden kann (mehr dazu im Abschnitt B.1.4. sowie B.5.)
B.1.3. GameMode Setup
Sobald ein neues VRPawn-Blueprint erstellt wurde muss dieses als Default-Pawn eingestellt werden, damit die Anwendung erkennt, welcher Pawn vom Controller beim Starten der Anwendung übernommen werden soll.
- Neuen VRPawn als Standard einstellen in Project-Settings
- Edit – Project-Settings – Maps&Modes
- Default Pawn Class
- Neuen VRPawn im Drop-DownMenü auswählen
- Project Settings minimieren
edu sharing objectWenn für die Anwendung individuell eingestellte Klassen erstellt werden, können diese in diesem Bereich der Project-Settings verknüpft und für den Start der Anwendung übernommen werden.
B.1.4. Integration der Tracker
In Teil A wurde bereits erläutert, wie die Tracker in Steam VR eingerichtet und für die Nutzung in Unreal vorbereitet werden. Für jeden der fünf Tracker wird im VRPawn-Blueprint eine Motion-Controller-Component hinzugefügt. Dies funktioniert folgendermaßen:
- VR-Pawn-Blueprint öffnen
- In der Components-Übersicht auf „Add“ klicken
- Nach der „Motion-Controller“-Component suchen und durch einfachen Klick hinzufügen
- Motion-Controller-Component 4x duplizieren (STRG+D) und entsprechend den Tracker-Positionen umbenennen
edu sharing object
- Für jede einzelne Motion-Controller-Component eine Verlinkung zur Zuweisung in SteamVR herstellen
- Component auswählen à Details à Motion Source
- Beispiel: Tracker_RightFoot_5 Motion-Source „RightFoot“ festlegen
B.2. Basic Scene Setup
Neues Level erstellen im Content Browser
- Rechtsklick im Content Browser
- Level
- Neuem Level einen Namen geben
edu sharing object
Neues Level als Standardlevel einstellen in Project Settings:
- Edit – Project Settings – Maps&Modes
- Default Maps Menü ausklappen
- In Editor Startup Map sowie Game Default Map jeweils neu erstelltes Level auswählen
B.3. Import “Standard” Skeletal Mesh als Standard-Avatar
edu sharing object- Im Content Browser „Add“ à „Add Feature or Content Pack…“ à Third Person à Add to Project
- Verschiedene „Standard“ Skeletal Meshes können jetzt im Pawn als Mesh für den Avatar genutzt werden
B.4. Control Rig für Standard-Avatar erstellen
- Skeletal Mesh für die Nutzung als Mesh für den Avatar auswählen
- Die „Standard“ Skeletal Meshes befinden sich in All – Content – Characters – Mannequins – Meshes
edu sharing objectIm weiteren Verlauf wird das Skeletal Mesh „SKM_Quinn“ verwendet.
Ein Control Rig ist eine Funktion, die in Unreal mithilfe eines Plugins integriert ist. Diese Funktion ermöglicht es, ein Skeletal Mesh mit einer komplexen Rig/Skelett-Struktur mit wenigen „Controls“ zu bewegen. Besonders hilfreich sind dafür die IK (inverse Kinematik)- Nodes, da somit alle Teile des Körpers auf Basis simpler Regeln in Abhängigkeit zu den Controls mitbewegt werden.
Sobald also die Controls mithilfe der separaten Tracker angesteuert werden können, ermöglicht dieses Setup eine indirekte Echtzeit-Steuerung des virtuellen Körpers vom Avatar. Die Positionen der Controls im Control-Rig entsprechen somit idealerweise den Positionen der Tracker, die mithilfe der Straps am Körper der PerformerIn befestigt wurde.
Ein neues Control Rig kann für ein fest zugewiesenes Skeletal Mesh hinzugefügt werden, da die Struktur des Rigs vom Skeletal Mesh fest mit der Struktur des Control Rigs verknüpft wird.
edu sharing object- Rechtsklick auf das Skeletal Mesh
- Create
- Control Rig
- Control Rig entsprechend benennen, z.B. SKM_Quinn_CtrlRig
Zusätzlich erklärendes Video zum Erstellen des ControlRigs:
Video B_4
Die entsprechenden Nodes können jeweils im Blueprint vom Control Rig per Rechtsklick gesucht und hinzugefügt werden. Die Pole-Vektoren müssen, nachdem sie als Child-Objekte des Pelvis-Contols hinzugefügt und korrekt platziert wurden, noch in die Forward-Solve-Struktur eingebunden werden.
Aus Sicht des Avatars:
1. Pole Left Foot: Vorne Links
2. Pole Right Foot: Vorne Rechts
3. Pole Left Hand: Hinten Links
4. Pole Right Hand: Hinten Rechts
Per Get-Transform-Node können die Transform-Daten der Pole-Controls abgegriffen und als Vector-Input für die BasicIK-Nodes verfügbar gemacht werden.
edu sharing objectB.5. VR Pawn Blueprinting
B.5.1. Control Rig für Live-Tracking integrieren
- Custom VRPawn Blueprint öffnen
- Control Rig Component hinzufügen
edu sharing object- Control Rig Component auswählen und in Details mit neu erstellter Control Rig Class verknüpfen
- Control Rig – Control Rig Class - SKM_Quinn_CtrlRig auswählen
edu sharing objectIm folgenden Video wird gezeigt, wie das erstellte ControlRig mit dem VRPawn verbunden werden kann:
Video B_5_1
Für alle Motion-Controller-Components sowie auch die Kamera ist es sehr sinnvoll jeweils ein Child-Object zu erstellen, welches als transformiertes, repräsentatives Objekt für die jeweilige Komponente genutzt werden kann. In diesem Fall wurde dafür das simples Static Mesh Object benutzt. Dies ist sehr hilfreich, da so jeweils die Default-Rotation sowie bestimmte Offsets zwischen den tatsächlichen Tracker-Positionsdaten und deren Nutzung innerhalb des ControlRig-Systems eingestellt werden können. So können die Transform-Daten des transformierten Child-Objekts genutzt werden, da es sich ja ansonsten aufgrund der Parent-Child-Hierarchie mit dem Tracker, also der MotionController-Komponente „mitbewegt“.
Im Beispielbild sowie im Video werden die Hände und somit sämtliche Armbewegungen mittels zwei VIVE-Trackern gesteuert, die jeweils nah am Handgelenk befestigt sind. Die Controller können ebenfalls – und auch zusätzlich – als MotionController-Komponente im VRPawn eingebunden und genutzt werden. Dies bietet sich beispielsweise gut an, um die Controller in eine Performance einzubinden und ein virtuelles Objekt daran zu binden, mit dem die PerformerIn interagieren kann.
edu sharing objectB.5.2. Aktivieren / Deaktivieren Live-Tracking
Im VRPawn-Blueprint können nun viele weitere Features hinzugefügt werden, wie beispielsweise das Aktivieren und Deaktivieren des Live-Trackings.
In diesem Beispiel wird ein starrer Body Dummy eingeblendet, sobald das Tracking deaktiviert wird. Auch die Sichtbarkeit des getrackten Body Meshes wird entsprechend umgeschaltet.
edu sharing object
Die Bool-Variable „Set Full Body Tracking Active“ kann nun per Branch-Node die Verbindung des Forward-Solve-Events im VRPawn-Blueprint kontrollieren:
edu sharing object
-