Meta Quest 3 Unreal Engine eigener Raum als Level
In diesem Tutorial zeige ich wie man den eigenen Raum als Level in der Unreal Engine für die Meta Quest 3 erstellt. Damit lassen sich virtuelle Räume aus tatsächlichen Geometrien des gescannten Raumes erstellen.
Meta Quest 3 Unreal Engine eigener Raum als Level
Als Basis für dieses Tutorial gilt mein bereits aufgesetztes Meta Quest 3 Unreal Engine Demoprojekt mit aktivem Passthrough. Passthrough ist zwar nicht Voraussetzung um den eigenen Raum zu verwenden, für das initiale Setup aber durchaus hilfreich. Der Link zur offiziellen Dokumentation, falls noch Fragen auftauchen sollten die ich hier nicht beantwortet habe.
Materialen und Meshes
Der Oculus XR Scene Actor der über das Meta XR Plugin kommt kann unterschiedliche Objekte im gescannten Raum erkennen. Das sind mehr oder weniger übliche Gegenstände die man so im Arbeits- oder Wohnzimmer stehen hat. Fügt man einen solchen Scene Node der Scene hinzu kann man sich die vollständige Liste ansehen.
Damit man die Scene mit den erkannten Objekten an den jeweiligen Positionen anreichern kann benötigt es Meshes. Für jedes dieser bekannten Objekte kann man nun Platzhalter Meshes mit jeweils eigenen Materialien anlegen. Diese Platzhalter sind einfache Cubes, das Beispielprojekt von Meta hat für jede Kategorie eine andere knallige Farbe hinterlegt. Das ist toll für das Debugging, kann man später aber mit spannenderen Materialien ersetzen. Als Beispiel das Bett in türkis mit dem Wort Bed und als Mesh ein langweiliger Cube.
Neues Level
Um ein neues Level mit der physisch vorhandenen Raum Geometrie zu erstellen benötigt es einen Oculus XR Scene Actor. Das ist einfach ein Objekt ohne Mesh, das man auf dem Koordinatenursprung ablegt.
Um die Daten vom Raum in der Unreal Engine Scene zu laden muss im Meta XR das folgende Flag Scene Support unter den Einstellungen gesetzt werden:
Im nächsten Schritt muss man nun die erstellten Meshes mit den Materialien den bekannten Objekten des Scene Actors zuweisen. Actor Component ist jeweils OculusXRSceneAnchor.
Raum einrichten
Voraussetzung für die Scene im eigenen Raum ist ein gescannter Raum in dem die Einrichtungsgegenstände definiert wurden. Dazu findet man in den Settings der Meta Quest 3 unter Physischer Raum den Punkt Raum einrichten. Über den Button Einrichten wird man über das UI durch die Erstellung des eigenen Raumes geleitet. Neben dem Scan der Umgebung für die Kollisionsabfrage können übliche Objekte wie Tische, Schränke, Fenster und so weiter markiert werden.
Erster Testlauf
Aktuell funktioniert die Ausgabe wie im Screenshot ersichtlich nur mit der gebauten App. Ich baue deshalb im Unreal Engine Editor das Projekt:
Danach lässt sich diese App über das Install *.bat Skript auf die angeschlossene Meta Quest 3 installieren. Unter den Apps unbekannter Quelle startet man nun die App. Wichtig: beim ersten Start einer neu installierten App wird die Benachrichtigung über den Zugriff auf den gescannten Raum abgefragt. Diesen bestätigen, die App beenden und nun nochmals neu starten. Erst danach wird der Raum wie folgt dargestellt:
Kollisionsabfrage
Das aktuelle Setup stellt lediglich die Szene visuell dar. Für ein Szene benötigt man üblicherweise noch für Kollisionsabfragen ein eigenes Modell. Die gescannte Geometrie des Raumes kann auch dafür direkt verwendet werden. In der Szene muss man dafür lediglich eine OculusXRSceneGlobalMesh Componente dem Scene Actor hinzufügen (über +Add). Dort aktiviert man das Collision Flag und setzt das Profil auf BlockAll. Für einen Testlauf kann man das Mesh noch mit dem Visible Flag sichtbar machen, dafür kann man ein beliebiges Material hinzufügen.
Meine Szene sieht mit dem darüber sichtbar gemachten Kollisions Mesh gleich etwas anders aus. Man erkennt beispielsweise sehr gut die Sessel hinter dem Tisch, die keine eigenen Objekte sind, trotzdem aber eine Kollision ausführen würden.
Fazit
Ich habe eine einfache Szene in der Unreal Engine erstellt die einen zuvor gescannten Raum darstellen kann. So kann man ein für den Benutzer speziell angepasste virtuelle Welt darstellen und die eigenen vier Wände auf ganz neue Art erkunden lassen.