We verkennen de Mixed Reality-capaciteiten van de Meta Quest 3 met Unreal Engine en de MetaXR-plugin door een kleine en eenvoudige demo-applicatie te maken waarin virtuele kubussen in je kamer verschijnen, die je kunt neerschieten met een virtueel pistool om ze te laten verdwijnen.
Wat is Mixed Reality
In tegenstelling tot Virtual Reality, waarbij de gebruiker een volledig virtuele wereld krijgt gepresenteerd om mee te interacteren, combineert Mixed Reality de echte wereld met virtuele elementen om nieuwe ervaringen te creëren in bestaande omgevingen. Dit kan vele vormen aannemen, zoals simpelweg het plaatsen van virtuele items in een kamer (zoals het plaatsen van een virtueel schilderij op je muur), het veranderen van het uiterlijk van de kamer (bijvoorbeeld door de kleur van je plafond te veranderen), tot het laten interacteren van virtuele items met de kamergeometrie (denk aan een virtuele bal die botst tegen je muren/vloer/plafond).
Hoewel dit veel interessante mogelijkheden biedt, komt het met verhoogde complexiteit vergeleken met Virtual Reality, vooral vanwege het vrijwel onbeperkte aantal kameroppervlakten/configuraties die mogelijk zijn. Tenzij je een ervaring bouwt voor een vooraf gedefinieerde kameroppervlakte, moet je in principe je virtuele wereld volledig procedureel genereren, of vertrouwen op de gebruiker om virtuele items te plaatsen.
Tech Stack
Voor deze verkenning gebruiken we de volgende tech stack:
De demo uitvoeren
Voordat we bij de technische details komen, laten we zien wat de demo-app eigenlijk doet. We hebben een paar variaties gemaakt om te laten zien hoe de virtuele wereld kan mengen met de echte wereld.
Let op: aangezien dit een devlog/tech-demo is, is het opzettelijk niet mooi/glanzend.
De eerste variatie is om verschillende virtuele items in de kamer te plaatsen, waar de kamer verder volledig zichtbaar is.
Hier kun je zien dat de virtuele kubus rust op het echte bureauoppervlak, dat werd geïdentificeerd tijdens de kamer-scan, en nu ook een virtuele representatie heeft (die hier onzichtbaar is, maar nog steeds collision heeft zodat virtuele items er niet doorheen vallen).

De tweede variatie is om de virtuele items in een kamer te plaatsen waar sommige delen van de echte wereld zichtbaar zijn, en sommige delen zijn vervangen door een virtueel mesh/materiaal.
Hier kun je zien dat het bureau is vervangen door een virtuele representatie, en de vloer ook. Er zijn enkele visuele fouten in deze specifieke blend, bijvoorbeeld kun je zien dat die speaker op het bureau aan de onderkant is 'afgesneden', omdat de kamer-scan er geen representatie voor heeft. Een vergelijkbaar probleem is te zien linksboven van de virtuele vloer in de kamer, die in de deur snijdt.

De laatste variatie is om virtuele items te plaatsen in een kamer waar niets behalve echte deur-/raamopeningen zichtbaar is, alle andere delen zijn vervangen door een virtueel mesh/materiaal.
Hier kun je zien dat de visuele fouten van de vorige variatie zijn 'opgelost' door simpelweg de speaker/deur volledig uit het zicht te verwijderen. Uiteraard zijn ze nog steeds aanwezig in de echte wereld, dus voorzichtigheid is geboden bij het werken in dergelijke omgevingen om fysieke schade te voorkomen, het is verrassend gemakkelijk om per ongeluk de speaker van het bureau te stoten.

Interessant detail is dat de deuropening geen collision heeft, wat betekent dat projectielen erdoorheen gaan, terwijl ze worden geblokkeerd door de muren en meubels in de kamer, zoals hieronder getoond.

Het eindresultaat, inclusief het neerschieten van enkele kubussen, is te zien in de video hieronder.

Als je op de afspeelknop klikt, wordt de YouTube-speler ingesloten en kunnen cookies van derden worden ingesteld en gegevens van YouTube worden verzameld.
De demo bouwen
We hebben de volgende aanpak gebruikt om de demo te bouwen.
Voorbereiding
- Installeer Unreal Engine en de MetaXR plugin
- Maak een nieuw Unreal Engine-project aan met behulp van de Virtual Reality template en activeer de MetaXR plugin
- Build en deploy naar een Meta Quest-apparaat om ervoor te zorgen dat alles goed werkt (met behulp van het standaard VR-level)
- Maak een leeg level voor Mixed Reality
Maak Blueprints om de vereiste functionaliteit te implementeren
We hebben Blueprints gemaakt om de volgende functies te bieden, en ze toegevoegd aan het lege level.
Let op: de Blueprint-afbeeldingen tonen alleen de belangrijkste delen van de Blueprint, ze tonen mogelijk niet alle implementatiedetails voor de beknoptheid.
- Activeer persistent passthrough wanneer het level start, en deactiveer het wanneer het level eindigt

- Vraag de Android-toestemming om de Scene (d.w.z. kamerdata) te gebruiken van de Meta Quest

- Maak of laad de kamerdata, en maak een gedetailleerd mesh hiervan

- Spawn meshes voor geïdentificeerde kamerelementen (bijv. muren, vloer, tafels, ...) en pas materialen toe

- Kubus die kan worden neergeschoten met een projectiel en dan verdwijnt

- Kubus-spawner die een bepaald aantal kubussen spawn op de muren/plafond/vloer/meubels binnen de kamer

Dit zijn de belangrijkste vereiste Blueprints voor de demo, die nu bijna klaar is.
Laatste aanpassingen
Er moeten nog een paar dingen worden gedaan voor een goede ervaring:
- Deactiveer locomotie voor de VRPawn zodat de gebruiker alleen fysiek kan bewegen (in plaats van joysticks te gebruiken zoals gebruikelijk in VR)

- Voeg een Pointlight toe zodat virtuele meshes daadwerkelijk zichtbaar zijn
- Voeg een statische kubus toe met een virtueel Pistool (van de VR-template) zodat de gebruiker het kan pakken en de kubussen kan neerschieten

En dat is het! Nu kunnen we de demo-app bouwen en deployen naar de headset om het uit te voeren.
Conclusie
Mixed Reality is een opwindende manier om unieke ervaringen te creëren die de echte en virtuele wereld mengen. Het komt met een reeks uitdagingen vanwege een vrijwel onbeperkt aantal kameroppervlakten/configuraties, maar wanneer het goed wordt gedaan is de immersie onverslaanbaar.
Wij bij Immerstory zijn enthousiast om onze klanten te ondersteunen met hun immersieve ervaringen, en kijken ernaar uit om binnenkort meer verkenning voortgang te delen.
Welke immersieve ervaring zou je graag willen zien? Laat het ons weten!
Aanvullende bronnen
Documentatie voor de MetaXR plugin, specifiek de Mixed Reality Utility Kit die voor deze demo werd gebruikt, is te vinden hier
Geluideffecten in de demo-app zijn gelukkig afkomstig van Sonniss GameAudioGDC
