Chapter 2 #4

Open
oleg.petruny wants to merge 16 commits from ch2 into master
3 changed files with 36 additions and 13 deletions
Showing only changes of commit 2c9db35fcc - Show all commits

49
ch2.tex
View File

@ -190,7 +190,7 @@ V Unreal Engine verze 5 navíc přidali bohatý na funkcionality editor 3D model
\paragraph{Použití cizích assetů} Rychlejší a občas jednodušší je získání assetů třetí strany. K tomu existují různé volně dostupné webové platformy. Jednou z takových platforem je FAB, který navíc má přímou integraci s UE 5. Objektivně FAB nemá dostatečně velký výběr assetů, jelikož nemá ani dostatečnou popularitu vývojářů a tvůrců. Přičinou jsou hlavně větší platformní marže z prodeje a sice jednoduchý, ale přesto nevýhodné licencování produktů pro kupující stranu.
Z finančních důvodu, v této praci byli využite pouze produkty dostupné zdarma. Neznamená to, že vše skončí pouhým stahnutím souborů a vložením do editoru. Často (v této práci všech 100%) assety nevypovídají žádnou známku optimalizace nebo profesionální tvorby. Modely tak mají některé normaly plošek invertované, středové body jsou nesmyslně mimo, textury a UV mapy je potřeba kompletně předělat. Nejhorší jsou primitivní objekty, které mají bezdůvodně velké množství vrcholů. V praxi se nachází i náhodné vrcholy, bezúčelně rozházené v prostoru modelu.
\paragraph{Vlastní tvorba} Vlastnoručně jsou tvořeny modely ze staré verze hry a během vývoje této práce se pouze upravovali nebo tvořili textury. Standardem v oboru jsou obecně Maya nebo 3D Max pro všeúčelové zpracování a úpravy, ZBrush pro sculpting a Substance Painter pro texturování objektu. V tomto projektu byl použit výhradně Blender a software pro editaci obrazkových formátů, které jsou k dispozici na internetu zdarma. Výsledný model lze často bez problémů rovnou využít v enginu.
\paragraph{Vlastní tvorba} Vlastnoručně jsou tvořeny modely ze staré verze hry a během vývoje této práce se pouze upravovali nebo tvořili textury. Standardem v oboru jsou obecně Maya nebo 3ds Max pro všeúčelové zpracování a úpravy, ZBrush pro sculpting a Substance Painter pro texturování objektu. V tomto projektu byl použit výhradně Blender a software pro editaci obrazkových formátů, které jsou k dispozici na internetu zdarma. Výsledný model lze často bez problémů rovnou využít v enginu.
\paragraph{Modeling a Sculpting} Nejprv se vytvaří tvar modelu. Toho se docíli pomoci modelování polygonů nebo sculptingu. Obě metody jsou velmi odlišné a stejně tak mají odlišný výstup.
@ -198,40 +198,63 @@ Sculpting se provádí předevšim přes grafický tablet, kde pomoci různých
Modeling na druhou stranu je obecnější zpracování vrcholů, hran a ploch. Tady se manuálně přidavají resp. odebírají a posouvají vrcholy. Navíc toto prostředí obsahuje funkce umožňující různé druhy chytrého instancování, množinových operací mezi objekty a zjednodušených simulací vrcholů a tedy i objektů. V takovém prostředí se tvoří především komplexní resp. hybrydní nebo tvrdé povrchy jako například nábytek, architektura nebo scény se sculpting modely.
Specifickou scuplting instancí v enginu je Landscape, de-facto siť vrcholů předem určené hustoty, kterou můžeme v editoru sculptovat a napodobovat křivý resp. různě vysoký teren. Manuální sculpting je pomalý a přináší slabé až nevyhovující výsledky. Proto místo sculptingu se používá výškova neboli height mapa, což je textura odstinů šedí, kde káždý pixel kóduje výšku v 3D prostoru. Potom stačí naskénovat nějaký povrch (například reálný teren) a během par minut získat skvělé výsledky. Stejné height mapy lze použivat i jako štětce v běžném sculptingu, pro specifické detalizace povrchů, a samotné height mapy lze získat na nějakých online platformach dokonce zdarma.
\paragraph{Animace} Animace se tvoři v dalším kroku modelingu. Pokud jsme předtím vytvořili model pomoci sculptingu, potřebujeme ho imortovat do modeling prostředí. Začíná se tvorbou umělé kostry z tzv. kostí a kloubů.
Klouby slouží pouze k specifikaci hierarchie mezi kosti, tak že nějaká kost propaguje vlastní modifikaci na všechny následující. Navíc specifikují střed rotačního bodu.
Kostí jsou samostatné absraktní označení pro nosič prostorových transformací, pro který můžeme přiřadit množinu vrcholů. Potom v logice nějáké animace stačí pouze posouvat určité kostí a nějaký předrendrovácí engine bude souvislé modifikovat přiřazené vrcholy. Navíc kostí často modifikují vrcholy podle předem úrčené váhy pro každý vrchol, čímz lze škálovat a skládat posuny různých kostí na úrčitých vrcholech. Jen je potřeba brát v úvahu, že skeleton animace neboli modifikace provedené předrendrovacím enginem jsou spouštěné na CPU, jelikož jsou řízeny nějakou logikou herního světa (moderní procesory s instrukčními sady AVX a více jádry v takových úlohach dokažou předvádět poměrně skvělé resp. přebytečně dostačující výkony).
Kostí jsou samostatné absraktní označení pro nosič prostorových transformací, pro který můžeme přiřadit množinu vrcholů. Potom v logice nějáké animace stačí pouze posouvat určité kostí a nějaký předrendrovácí engine bude souvislé modifikovat přiřazené vrcholy. Navíc kostí často modifikují vrcholy podle předem úrčené váhy pro každý vrchol, čímz lze škálovat a skládat posuny různých kostí na úrčitých vrcholech. Jen je potřeba brát v úvahu, že skeleton animace neboli modifikace provedené předrendrovacím enginem jsou spouštěné na CPU, jelikož jsou řízeny nějakou logikou herního světa. Moderní procesory s instrukčními sady AVX a více jádry v takových úlohach dokažou předvádět poměrně skvělé až nadbytečné výkony.
V Unreal Engine 5 přidaly rozhraní pro tvorbu skeleton animací přímo v editoru. Předtím bylo možné pouze hotové animace naimportovat. Uvnitř editoru je přiliš mnoho způsobů jak režirovat animace (myšleno přehrávání, slepení přechodů, modifikace, skládání atd.) a lze se v tom jednoduše ztratit. V základu je předpokládáná tvorba state-machine, který bude přehrávat a cyklit jednotlivé animace v závislosti na větvení grafu a podmínkach hran.
Táto práce obsahuje pouze jednoduché animace postav, které byli přenesené ze staré verze. Animace hráče navíc disponuje immersivním otačením trupu a animace nohou jsou přitahovány k podlaze pomoci inverse kinematic metody.
Tráva vidítelná na úrovních 1 a 2 je animováná pomoci offsetů vrcholů, zmíněna v předchozí kapitole. V reálnem čase pod hráčem se generují částíce s barevným gradientem kódující offset v prostoru. Takové častíce jsou vidítelné pouze pro speciální render target menší velikosti -- sníma se pouze blízké okolí hráče. Materiál trávy následný render target interpretuje jako texturu, kterou interpoluje spolu s texturou jednoduchého proceduralního shaderu větru dostupného v enginu. Výsledkem je výkonná procedurální animace reakce na vítr a chůzi hráče v okolí objektu obsahující velké množství instancí resp. vrcholů.
\paragraph{Texturování} Za účelem texturování nejdřív potřebujeme objektu úrčit jedinečnou UV mapu, která bude mapovat plochy 3D modelu na normalizovaný prostor 2D obrázku. Často tvůrci mají na začatku problem pochopit o co se vlastně jedná a jak model rozložit. K tomu může napomoct myšlenka s rozlepováním resp. slepováním hran papírové figurky. Celý koncept UV mappingu je totožný se zpětným procesem tvorby například papírove krychlé, kde nějak rozbalenou krychli skládáme z jednoho uceleného kousku materiálu.
Když máme hotové mapování, můžeme volně přirazovat textury, které mohou úrčovat barvu vrcholů, modifikovat jejích normalový vektor, lesk, matnost, průhlednost a případně další. Přibližně do roku 2014, kdy vznikl Substance painter a dnes i jeho alternativy, jediný způsob texturování objektu bylo manuální ,,kreslení'' navrch vytvořené mapy. Dnes existují uživatelsky přijemné softwary, kde stačí kreslit rovnou komplexní materiály na povrch 3D modelu a aplikace sama obstará data všech textur.
V tomto projektu většína objektů nepoužívá diffusní textury a vybarvování modelů je tvořené pomocí vybarvování určítých skupin jeho ploch. Přesto jsou často využiváné normal mapy nebo masky průhlednosti. Bohůžel se můsely zahodit mapy pro tesselaci povrchů používáné v staré verzi projektu, jelikož s příchodem UE 5 tvůrci odebrali celou podporu tesselace kvůli technologii Nanite.
\paragrah{Exportování}
\paragraph{Exportování a Importování}
Workflow nebo pipeline exportu jsou standardizováné v profesionálních softwarech jako 3ds Max. Blender má pouze základní možnosti exportu, které je potřeba nejdřív přizpusobit spicifickému hernímu enginu. Potřebný minimum je zajištění správné interpretace dopředního a vrchního vektorů celého modelu. Taky se vyplatí:
\begin{itemize}
\item nastavit šablonu pro všechny budoucí projekty, tak aby modelovací program a herní editor sdíleli měřítko jednotek,
\item vyzkoušet jak se chová exportovaná hierarchie modelů v jednou souboru,
\item před exportem ověřit že všechny plošky modelu mají správně natočený normalový vektor (očekává se směr směrující na venek z objektu).
\end{itemize}
Unreal engine se jeví standardem herního oboru a proto verze 5 implementuje systém importovacích pipelines. Jedná se o mocný nástroj, který citelně zrychluje a sjednocuje postupy importování různých assetů nebo dokonce stejných assetů podle specifických filtrů (adresař assetu, typ, obsah, podřetězce názvu atd.). Subjektivně největší výhodou je předání zodpovědnosti specifického importu pouze osobam v týmu s odpovídajícími znalostmi. V praxi týmový senior založí pipelines pro často využíváné importy, tak aby odpovídali vnitřním firemním politikam a proto nováček v týmu resp. celý tým nemá žádné starosti při importu assetů.
\paragrah{Další techniky}
%landscape
%instancovani
\paragraph{Optimalizace} Ikdyž objekty jsou statické, stále vyžadují optimalizace. Takový lze najít i v tomto projektu:
\begin{itemize}
\item Instancování -- jíž zmínene v predchozí kapitole -- se využívá k tvorbě prostorů hustých na specifické modely. V UE se jedná o editovácí prostředek sousedicí vedle Landscape. Umožnuje pokročilé nastavení různých množín instancí a jejích parametry náhodného umístění.
\item Optimální topologie objektu pro minimalizaci vrcholů potřebných k vykreslování. Převážná většina modelů -- patří sem i získáné od třetích stran -- mají růčně přepracovanou topologii. Jedná se nejen o jednoduchou redukci nepotřebných vrcholů, ale taky použití techniky ,,lítající'' neboli floating geometrie. Tato metoda spočívá v protínání plošek, místo skutečného propojení vrcholů někde uprostřed, protože takové propojení by vyžadovalo podrozdělení jedne z ploch a tedy zbytečného zvětšení vrcholů (viz. \Cref{fig:FloatingGeometry}). Taktéž objekty mají redukovanou k-DOP kolizní topologii, pro urychlení výpočtů fyzických simulací.
\item Modely náročné na vykreslování nebo použité v instancování používájí LOD technologii (viz. \Cref{fig:LodShowcase}). Nanite v práci nebyl využit.
\end{itemize}
Optimalizace textur je zprovozněná pouze hlídáním rozumných rozlišení. Jinak některé textury určitě je možné seskupit do jedné textury a vybírat potřebnou instanci podle UV mapy, což zrychlí přístup k datům.
\paragraph{Optimalizace}
%mesh sit
%kolize
%lod/nanite
%animace
%textury co nejmensi velikosti a poctu
Jiná grafická optimalizace není nijak řešená. Modely použité v instancování občas mohou vyvolat snižení výkonu, což by bylo potřeba už řešit nahrazením plnohodnotných modelů na kolekce průhledných textur.
\begin{figure}
\centering
\includegraphics[width=1\linewidth]{img/FloatingGeometry.pdf}
\caption{Floating geometrie využitá v modelu okna. Vlevo je výsledný vzhled, uprostřed floating topologie (48 vrcholů a 52 trojúhelniků) a napravo naivní běžná topologie (64 vrcholů a 152 trojúhelniků).}
\label{fig:FloatingGeometry}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=1\linewidth]{img/LodShowcase.pdf}
\caption{Ukázka LOD instancí kytky.}
\label{fig:LodShowcase}
\end{figure}
\subsection{Dynamické a procedurální objekty}
%animace baked a matinee / sequencer
%trava
%voda
%modifikace site
%optimalizace

BIN
img/FloatingGeometry.pdf Normal file

Binary file not shown.

BIN
img/LodShowcase.pdf Normal file

Binary file not shown.