Jak na efektivní vývoj VR aplikací? Můj přístup k problematice
Lidský čas je drahý a nenahraditelný. Proto by mělo být v zájmu každého jej využívat efektivně - zejména tu jeho pracovní část. Neefektivita při práci se nevyplácí hned z několika důvodů...
- Pouze prodlužuje a oddaluje to, co je stejně nezbytné udělat
- Prodražuje vývoj - vyšší náklady pro zadavatele / nižší odměna pro vykonavatele
- Ubírá z volného času / času pro seberozvoj
Efektivity je dosahováno zejména automatizací repetitivních částí a maximálním využíváním dostupných zdrojů. Jinými slovy, nejde o to pracovat tvrdě, ale chytře. V tomto článku Vám přiblížím můj přístup k vývoji aplikací pro virtuální realitu.
"Šablonová" vs "prémiová" VR aplikace
Rozdíl mezi šablonovým a prémiovým produktem se nejlépe vysvětluje na příkladu webu. Nakonec, webů každý viděl mnohem více než VR / AR aplikací a spousta čtenářů má jistě s poptáváním webu i osobní zkušenost.
Web lze tvořit třemi základními způsoby:
- S využitím šablony a hotového backendového systému (např. Wordpress) [→ Cizi grafika i kód]
- Vývoj kompletního webu na míru [→ vlastní grafika i kód]
- Použitím hybridního přístupu [→ vlastní grafika na otevřeném backendovém řešení / šablonová grafika na vlastním backendovém řešení / modifikace cizí šablony / otevřeného backendovém řešení]
Za první variantu zaplatíte pár tisícovek a výsledkem bude vzhledově opravdu krásný a animacemi nabitý web. Na druhé proinvestujete klidně i stovky tisíc a vizuální kvality webu z první varianty i přes to stěží dosáhnete. Jak je to možné? Poměrně jednoduše - i když šablona z prvního případu stála třeba jen pár stovek, její autor jí může prodávat tisíce - a od toho se odvíjí i časová investice, kterou do její tvorby může investovat. Tomu grafik tvořící design pro jeden konkrétní web jen stěží může konkurovat.
Obdobně je tomu u backendové (serverové) části. Wordpress a další redakční systémy nabízí velmi rozsáhlý okruh obecných i doplňkových specificky zaměřených funkcí. Bez řádku kódu, během pár minut, za cenu pár hodin webového vývojáře, je možné spustit plně funkční web.
Teoreticky zní používání šablon a hotových řešení skvěle, no, skutečnost je o něco složitější. Již z podstaty věci, většina obecných řešení je velmi funkčně rozkročená, z čehož vychází nadměrná robustnost a často velmi špatný výkon. Nemluvě o potřebě všelijakého ohýbání pro to, aby dané řešení / šablona zvládala přesně to, co od ní klient očekává. V praxi je téměř vždy nezbytné koupené řešení následně výkonostně optimalizovat. Bohužel, dodatečým optimalizacím se často nevyhnete ani u řešení tvořených na míru. Najít kvalitní kodéry je zkrátka těžké.
Ve výsledku kvalita a volba vhodného řešení je odvislá od konkrétního webu. Nicméně bez ohledu na zvolenou cestu, vždy je zásadní to, aby vývojář dokonale rozumněl nástrojům, které používá, a dokázal si své postupy obhájit. Nejhorší jsou tací, kteří namísto používání vhodných řešení ohýbají stále dokola jedno konkrétní, které je jediným, co znají. Takto sestrojené weby jsou téměř stejně tragické, jako weby mnohých kreativních agentur, jež se stávají díky použité kreativitě v ovládacích prvcích jen nepoužitelnými landing stránkami.
Nejefektivnějším způsobem vývoje je tzv. component-based software engineering - kdy při vývoji webu mícháte nezávislé obecné komponenty (vlastní či open-source 3tí strany) s unikátními komponentami psanými přímo pro vyvíjený web. Přeci jen, většina částí a funkcionalit se na každém webu opakuje, a stačí je tedy napsat pořádně a chytře jen jednou a dále už jen replikovat všude tam, kde je potřeba.
VR / AR Vývoj - vlastní XR Framework a kód, prostředí dle situace
Právě takovéto komponenty jsou dostupné i v herním enginu Unity, který pro vývoj používám. Například cross-device XR ovladače (XR je zkratka AR / VR) jsou velmi dobře vymyšlené a umožňují skutečně vysokou svobou práce. Na druhou stranu, vysoká roztříštěnost do mnoha komponent různých vlastností zvedá potřebný čas pro implementaci a pravděpodobnost vzniku chyb. Obojí eliminuji vlastnoručně sepsaným XR Frameworkem, který zahrnuje výkonostně optimalizované propojení a konfiguraci základních XR komponent a zároveň dohlíží na případné chyby a eliminaci motion sickness. Díky tomu jsem schopen velmi rychle nastavit jakoukoliv funkcionalitu a zároveň přesně vím, co se děje na pozadí. Obdobné nástroje je vhodné mít pro jakoukoli často repetitivní funkcionalitu nebo prvek.
Něco jiného platí u 3D modelů utvářejících prostředí. Kdykoli je to možné, snažím se jít cestou fotogrammetrie nebo cizích modelů. Pro klienta je tento postup příznivější v poměru kvalita / výkon / rychlost dodání aplikace a já jsem zároveň schopen si velmi rychle ověřit kvalitu a výkonovou složku daných modelů (polygony, použité shadery atd). 2D a 3D grafika zapojuji jen v momentech, kdy není nikde na trhu vhodný model a fotogrammetrie nedává smysl, případně má klient specifické požadavky.
Kde brát 3D modely do her a VR / AR aplikací?
3D modely lze získat 3 základními způsoby,
- Vlastní modelací v 3D grafickém editoru
- Pomocí 3D scanu (fotogrammetrie) s následnými úpravami
- Zakoupením hotových modelů
Při volbě konkrétního způsobu je vhodné používat selský rozum - často se setkávám s lidmi, co poptávají 3D scan tělesa, které lze velmi snadno vymodelovat (běžně stačí 2D náčrt s rotací kolem osy), nebo naopak modelující dlouhé dny něco, co si mohou za pár dolarů koupit již vymodelované. Nikdy není na škodu mít obecný přehled o typu modelů dostupných v různých obchodech. Seznam obchodů / webů s hotovými 3D modely ke stažení najdete v následujícím seznamu.
- Enginu relevantní, za určitých podmínek zaměnitelné:
- CGTrader.com
- GrabCad library
- Turbosquid.com
- Skechfab.com
- Free3D.com
- Polantis.com
- 3dsky.org
A spousta dalších webů zaměřujících se na BIM modely...
Kde brát materiály?
Kde brát textury?
Ve výsledku je často nejjednodušší Gogolení konkrétního assetu, jenž hledáte. Velmi užitečný je při hledání textur i Pinterest (sociální síť). Textury lze rovněž najít na freepik a jemu podobných webech.
Obdobným způsobem lze vygooglit weby na animace (Mixamo.com/), particle efekty, zvuky, skyboxy i další nezbytné komponenty pro vývoj špičkových XR aplikací. Cena většiny je mnohem níže, než kolik by vás stála jejich tvorba.