Jak na aplikace fungující současně na PC i PC VR?
Aplikace pro počítač a aplikace pro virtuální realitu? Jde o 2 rozlišné technologie? Pokud je na pozadí počítač, na němž aplikace běží, pak nikoli. To, v čem se aplikace liší, je pouze použití ovladačů.
U PC aplikace máme na vstupu myš a klávesnici. Na výstupu poté monitor(y). U PC VR aplikace jsou pak na vstupu ruce / ruční ovladače a částečně VR brýle, které jsou současně i výstupem nahrazujícím monitor.
Z podstaty věci, o běh aplikace se v tomto případě stará počítač - ať už umístěný lokálně v místnosti, nebo vzdáleně v serverovně.
Jaká je výhoda VR a jaká PC VR? A jak je skloubit?
Vezměme si příklad prezentace developerského projektu ve virtuální realitě. Využití virtuální reality při prodeji developerských prodejů může dávat smysl, jelikož umožňuje detailní představení i tisíce kilometrů vzdálených nemovitostí. Ve srovnání s tradičně používanými 2D vizualizacemi, při PC VR se snažíme docílit obdobné vizuální kvality, avšak při pocitu, že uživatel se v nemovitosti skutečně nachází.
Ovšem, PC VR má jeden zásadní nedostatek, a tím je rozšířenost VR brýlí. I kdybychom nahradili potřebu fyzického počítače streamováním (a tím zaručili, že každý uživatel při dostatečném připojení ve svém VR headsetu uvidí naši aplikaci v maximální možné kvalitě a plynulosti), stále jsme podmíněni tím, že potenciální zákazník musí VR headset vlastnit.
Oproti tomu, při PC aplikaci, aplikaci je možné si projít na jakémkoli výkonnějším počítači. V případě streamování pak na jakémkoliv počítači, případně s integrací dotekového ovládání i mobilním telefonu.
Skloubíme-li oba světy, získáme aplikaci, prostřednictvím níž prodejci mohou nabídnout komukoli projití si nabízených nemovitostí v klidu a z domova, a následně zákazníky pozvat i na prohlídku ve virtuální realitě.
Při tom všem, na pozadí je stále jedna aplikace.
Jak vytvořit aplikaci pro PC i PC VR současně?
Ve VrealMaticu vyvíjíme PC a VR aplikace v Unreal Engine. Tato volba má logické opodstatnění - jednak jde o jeden z nejlepších enginů na trhu, ale druhak i umožňuje dynamický přepočet shaderů, jež se starají o vizuální kvalitu obrazu.
Na základě požadavků a potřeb jednotlivých projektů je pak možné se dynamicky rozhodovat o tom, jaké konkrétní nastavení renderingu se pro konkrétní určení aplikace bude volit, případně obě aplikace mohou mít nastavení společné. V takovém případě jde opravdu jen o jednu aplikaci, na jejímž začátku si pouze uživatel zvolí, zda má běžet na PC obrazovce nebo připojených VR brýlích.
V případě rozdílného nastavení jde poté o 2 aplikace, přičemž technicky jde o jednu aplikaci, přičemž vykompilovanou do 2 rozdílných balíčků s odlišným nastavením renderingu.
Jedna aplikace pro PC a PC VR
Pracujeme-li se stejným nastavením renderingu a dalších nastavení aplikace, rozdílnost mezi PC a PC VR verzí je pouze v použitých ovladačích.
Typ ovladače poté můžeme vyloučit do samostatného sublevelu a mít následnou strukturu levelů aplikace:
- Sublevel Aplikace (3D prostředí, chování apod.)
- Sublevel s ovladači pro používání aplikace na PC
- Sublevel s ovladači pro používání aplikace na PC VR
- Skloubením Sublevelu Aplikace a PC ovladačů pak získáme level pro PC
- Skloubením Sublevelu Aplikace a PC VR ovladačů pak získáme level pro PC VR
Na základě počáteční obrazovky vyžadující výběr módu (PC / PC VR) pot= spustíme buď level pro PC nebo PC VR.
Uděláme li aktualizaci v sublevelu aplikace, tato změna se automaticky projeví jak v levelu pro PC, tak levelu pro PC VR, jelikož oba levely pouze level Aplikace rozšiřují o specifické funkce koncového zařízení.
Oddělené aplikace pro PC a PC VR
V tomto režimu si můžeme počáteční obrazovku ušetřit. Definici, zda se má aplikace spouštět ve VR režimu, či nikoliv, zadáváme v rámci nastavení packagingu (vykompilování výsledné aplikace). Na co však opomenout nemůžeme, to je přiřazená správného levelu (PC / PC VR) pro packaging na základě cílového zařízení.
Zda před packagingem provedeme změny v nastavení renderingu a přepočet shaderů, případně jiné změny, je čistě jen na nás a potřebách funkcí grafického výstupu.