Meta Quest 3 Hand Tracking in Unreal Engine
In diesem Tutorial zeige ich wie man mit der Meta Quest 3 Hand Tracking in Unreal Engine verwendet und implementiert. Damit wird die AR Szene noch realer, da man keine Controller halten muss und direkt mit Objekten interagieren kann.
Meta Quest 3 Hand Tracking in Unreal Engine
Dieses Tutorial baut auf mein erstes Tutorial zur Unreal Engine und die Meta Quest 3 auf. Alternativ kann man über die Meta XR Dokumentation auch eine neue Szene aufsetzen. Sofern man eine AR App erstellen möchten ist der Artikel über Passthrough interessant. Ich gehe davon aus du hast eine bereits funktionierende VR Beispielszene im Unreal Editor offen. Das Meta XR Plugin ist aktiviert, die drei OpenXR Plugins sind deaktiviert.
Die Meta Quest unterstützt die Hände als Eingabemöglichkeit. Durch die Kamera auf der Außenseite werden diese erkannt und können dank Software statt den physischen Controllern verwendet werden. Das Erlernen der Steuerung mit den Gesten ist gewöhnungsbedürftig, doch hat man sich auf die neue Art der Interaktion gewöhnt will man gar keine Controller mehr verwenden. Auch in der Unreal Engine kann man mit den Objekten der Szene „natürlich“ rein mit den Händen interagieren. Dazu müssen diese aber einmal in der Engine erkannt werden.
Projekt Einstellungen
In den Projekteinstellungen ist die erste Anpassung das aktivieren vom Alpha Channel. Dieses wird auf „Allow through tonemapper“ gestellt.
Weiter unten bei den Plugins sind für das Meta XR Plugin noch folgende Änderungen an den Einstellungen notwendig:
Ich habe den Support für die aktuellen Meta VR Brillen hinzugefügt. Danach das Composite Depth aktiviert. Für das Hand Tracking stelle ich auf „Hands Only“ und danach die Frequenz der Synchronisation auch High, ebenso die aktuellste Version des Protokolls. Bei den folgenden Flags ist „Passthrough Enabled“ notwendig, die folgenden obligatorisch, je nachdem ob man diese im Projekt benötigt.
Bei „Controller Pose Alignment“ habe ich „Aim“ eingestellt. Am besten man probiert selber welches Setting hier am besten passt.
Pawn
Als nächstes muss der VRPawn vom Beispielprojekt angepasst werden. Unter der Kamera füge ich mit Add einen OculusXRPassthroughLayer ein. Rechts bei den Einstellungen dazu wird „Supports Depth“ und „No Alpha Channel“ aktiviert. Stereo Layer Shape wirde auf „Reconstructed Passthrough“ gesetzt und Layer Placement auf „Underlay“.
Der Default VRPawn kommt mit 2 Hand Objekten, da wir unsere eigenen Hände verwenden löschen wir die raus:
Ohne die Objekte lässt sich der Blueprint Code nicht mehr kompilieren, deshalb muss man den Fehlerhaften Code löschen:
Für die MotionController Grip Komponenten setzt man jeweils die Motion Source auf „Left“ beziehungsweise „Right“.
Statt den zuvor gelöschten Hand Objekten fügen wir nun jeweils für Rechts und Links eine OculusXRHand Komponente ein:
Für die Komponente werden die Einstellungen entsprechend der Seite „Hand Left“ gesetzt. Ich habe noch ein Material hinzugefügt und für die Positionierung eine leichte Anpassung der Koordinaten gemacht. Die Anpassung der Koordinaten an die eigenen Hänge muss man etwas anpassen. Damit die Hände korrekt durch die eigenen ersetzt werden sollte man das PokeAHomeMaterial aus dem Meta XR Plugin verwenden. Ich hab mir dieses aus dem Plugin Ordner in mein Projekt kopiert…
Dieses kann man dann im Editor den Händen zuweisen:
Über einen Doppelklick auf das Material öffnet sich der Material Editor. Dort muss man noch das Flag „Used with Skeletal Mesh“ setzen, ansonsten funktioniert es bei den Händen nicht.
Testlauf
Beim Testlauf über den Unreal Editor sind die Hände noch als schwarze Modelle dargestellt. Deren Bewegung stimmt schon mit den eigenen Händen überein, die Texturierung aber noch nicht. Das funktioniert so aktuell auch leider nicht. Baut man diese App als Android APK und führt diese auf der Meta Quest 3 aus, dann sieht das Ergebnis so aus wie im Artikelscreenshot ganz oben im Artikel. Die schwarzen Hände sind nur Masken die ausgeschnitten werden und die echten Hände dahinter zeigen.
Fazit
Dank des Meta XR Plugins ist das Setup für das Hand Tracking sehr einfach. Dank der Depth Map funktioniert auch die Überlappung mit den 3D Objekten. Durch diesen Effekt fühlt es sich so an, als würden diese 3D Würfel tatsächlich bei mir im Zimmer schweben und man ist versucht diese zu nehmen und zu bewegen. Aber dazu in einem folgenden Artikel mehr…