Vývoj AR aplikací pro Quest v Unreal Engine

Vývoj AR aplikací pro Quest v Unreal Engine Tagy: Vývoj aplikací
| Publikováno dne

VR headset Quest 3 výrobce Meta přišel s vylepšeným PassThrough využitelným v rámci aplikací využívajících prvků rozšířené reality. Jak s rozšířenou realitou pracovat při vývoji aplikací pro VR Headsety řady Quest 2 a vyšší?

Jelikož vyvíjíme pro Quest 3, automaticky se předpokládá, že máme Meta developerský účet a v počítači nainstalovanou aplikaci Oculus Desktop s přidaným VR headsetem Quest generace 2 a vyšší.

Uvnitř aplikace Oculus dále zavítáme do záložky Beta a povolíme “Developer runtime features”. Jelikož pracujeme s Rozšířenou Realitou, v rámci “Developer runtime features” dále povolíme funkci “Pass-through přes Oculus Link”.

Meta XR Plugin pro Unreal Engine

Unreal Engine nativně obsahuje obecnou OpenXR integraci kompatibilní s celou řadou VR brýlí na trhu. Funkce specifické konkrétnímu VR headsetu lze do Unreal Engine přidat prostřednictvím individuálních pluginů. Ty v případě VR headsetů meta nalezneme na webu Oculusu (původní vývojář brýlí, který byl později koupen společností Meta).

Meta XR plugin lze v různých verzích (dle používané verze Unreal Engine) stáhnout z webové stránky https://developer.oculus.com/downloads/package/unreal-engine-5-integration. Po stažení se plugin vkládá do složky Engine/Plugins/Marketplace konkrétní verze instalačky Unreal Engine v počítači. Jestliže složka Marketplace v adresáři Plugins neexistuje, vytvoříme ji.

Plugin Meta XR je následně možné povolit v libovolném projektu prostřednictvím nabídky Edit → Plugins. Plugin se nachází v sekci “Virtual Reality”. Po přidání je možné nalézt možnosti nastavení Meta XR uvnitř sekce Plugins nabídky Edit → Project Settings.

Nastavení Meta XR Passthrough pro rozšířenou realitu

Rozšířená realita pracuje s reálným prostřednictvím, které je pomocí kamer umístěných na VR headsetu Quest snímáno a ihned rozšiřováno o virtuální prvek. Procesu přetransformování reálného pohledu na displej prostřednictvím kamery se říká Passthrough, česky průchodnost. Aby fungovalo správně, je nutné v Unreal engine nastavit v rámci Edit → Project Settings několik parametrů:

  • Enable alpha channel support in post processing (sekce Rendering/Postprocessing) je nutné nastavit na možnost allow through tonemapper
  • V rámci možností Meta XR (sekce Plugns) nastavit následující:
    • Do Supported Meta Quest devices přidat VR headsety, na které je aplikace cílena
    • Povolit funkce související s Passthrough, specificky:
      • Povolit Passthrough Enabled
      • Povolit Anchor Support
      • Povolit Anchor Sharing
      • Povolit Scene Support
      • Povolit Support Experimental Features (sekce Experimental)
    • Povolit případné další vyžadované funkce pro daný AR projekt
  • Zbylé nastavení lze provádět dle best practicies pro Virtuální realitu.

VR Pawn s komponentou “Oculus XRPassthrough Layer”

VR Pawn je Blueprint Actor reprezentující hráče. V případě Rozšířené reality lze vycházet ze základního actoru VR Pawn pro Virtuální Realitu. Ten je v Unreal Engine dostupný v rámci projektů či obsahu pro Virtuální realitu.

Pro použití v AR aplikacích rozšíříme jeho komponentu Camera přidáním komponenty Oculus XRPassthrough Layer, která je součástí Meta Pluginu. Jmenovitě, otevřeme VRPawn, klikneme na komponentu Camera a poté skrze tlačítko + okna Components přidáme komponentu “Oculus XRPassthrough Layer”.

V okně Detail dané komponenty následně zaškrtneme možnosti Support Depth, No Alpha Channel a dále nastavíme Stereo Layer Shape na možnost Underlay.

Nastavení scény pro Rozšířenou realitu

V rámci nastavení projektu může být nutné mít pro správné fungování Passthrough nastavenou kvalitu Effects na hodnotě Epic.

Jak vypadá scéna pro rozšířenou realitu?

Při rozšířené realitě se pracuje s něčím na způsob Green Screen. Namísto zelené stěny však máme v Unreal Engine stěnu černou, a to ne záměrně - naopak, černý symbolizuje prázdný prostor. V běžných aplikacích používáme například actor SkySphere symbolizující oblohu. Odstraníme-li jej, namísto oblohy v Unreal Engine nic není - měli bychom skrze ni tedy vidět Passthrough obraz z kamer, jinými slovy, skutečné okolí.

V AR aplikaci jsou tedy umístěny pouze rozšiřující prvky skutečného prostoru a jinak černo.