Prohlášení o autorství

Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.

Vedoucí práce: Mgr. Jiří Chmelík, Ph.D. Poděkování

Chtěl bych tímto způsobem poděkovat Mgr. Jiřímu Chmelíkovi, Ph.D. za to, že v dobách hledání, strádání a nejistoty nejen, že odhodlaně přijal pozici garanta této práce, ale hlavně plně projevil svou benevolenci a shovívavost týkající se mého přístupu v průběhu celého procesu. Dále bych chtěl poděkovat MgA. Heleně Lukášové v pozici konzultanta za její nadšení a optimismus, ale i za hlas, který mne neustále motivoval k tomu, abych všechny tyto a veškeré následující řádky doopravdy sepsal. První kapitolu bych jen těžko koncipoval nebýt serveru www.root.cz a jeho seriálu Historie vývoje počítačových her, který výtečně zdokumentoval nejdůležitější milníky herního průmyslu a nesmírně mi pomohl nastínit a představit vývoj vlasů u her vytvořených během sedmdesátých a osmdesátých let. Bc. Rudolfu Burdovi patří zvláštní dík za poskytnutí své scény při převodu do herního enginu Unreal Engine 4 a následné kontrole možného poklesu výkonu během vykreslování v reálném čase. V neposlední řadě bych chtěl poděkovat svým rodičům, svým relativně silným nervům a vlastně i všem svatým za to, že jsem se vůbec narodil, zvládl vyrůst po téměř všech stránkách s důstojností sobě vlastní a dokázal se relativně ve zdraví dožít tohoto vzácného okamžiku. Shrnutí

Tato práce analyzuje historii a moderní principy tvorby a následného vykreslování vousů, vlasů a účesů v počítačových hrách a přináší nový postup využívající bodových a polygonových modifikátorů. Text práce popisuje návrh a dokumentuje implementaci mé metody, jejíž výsledek je kvalitativně i kvantitativně srovnán vůči hlavním postavám deseti známých a komerčně či cenově úspěšných her posledních let.

Klíčová slova

model, modelování, vlasy, vousy, displacement, shader, Blender, 3D, digitální hry Obsah

1 Úvod...... 5 2 Historie technik vykreslování vlasů...... 6 2.1 Pixelové zobrazení/pixelizace...... 6 2.2 Kresebné zobrazení...... 8 2.3 3D hry druhého tisíciletí...... 9 2.4 Texturové zobrazení...... 10 2.5 Polygonové zpracování a rozšíření texturového zobrazení...... 12 2.6 Alpha blend/test/to coverage...... 13 2.7 NVIDIA HairWorks a přiblížení hair strands...... 14 2.8 DirectX 12 a Tress FX 3.0/NVIDIA HairWorks...... 15 3 Návrh a implementace vlastní metody...... 16 3.1 Vlas v reálném světě...... 16 3.2 Tvorba pramenů vlasů pomocí modifikátorů programu Blender...... 17 3.3 Výpočetní metoda HerrHair...... 21 3.3.1 Kód pro vousy...... 21 3.3.2 Komplementární kódy pro vlasy...... 23 3.4 Pokožka...... 27 3.5 Složení materiálu...... 28 3.5.1 Hard shader...... 28 3.5.2 Soft shader...... 30 3.5.3 Kombinace...... 31 4 Převod do reálného času...... 33 4.1 Unreal Engine 4...... 33 4.2 Tvorba textur a export objektů...... 34 4.3 Import a stavba materiálů...... 35 4.4 Srovnání a test FPS...... 37 5 Kvalitativní a kvantitativní srovnání...... 39 5.1 Základní přehled...... 39 5.2 Výběr deseti nejlepších her...... 40 5.2.1 Deus Ex: Human Revolution...... 41 5.2.2 ...... 42 5.2.3 GTA V...... 43 5.2.4 Ryse: Son of Rome...... 44 5.2.5 Herní série Metal Gear...... 45 5.2.6 : Inquisition...... 47 5.2.7 The Order: 1886...... 48 5.2.8 Final Fantasy XV...... 49 5.2.9 Star Citizen...... 50 5.3 Anketa...... 51 6 Závěr ...... 52 6.1 Na začátku cesty...... 52 1 Úvod

Vlasy, potažmo chlupy a srst, byly z hlediska evolučního dříve jedním z nejpodstatnějších termoregulačních faktorů udržujících tělesnou teplotu jedince v mezích životnosti. Postupem času svou prvotní funkci ztratily, nicméně se staly důležitou součástí estetického či psychologického vnímání osob. Jak v podrobně zaznamenané historii, tak i dnes dokáží určit společenské postavení, náboženské či politické přesvědčení, psychickou vyrovnanost i labilitu. Každým dnem vizuálně reflektují a dotvářejí naši osobnost. I v mnohých počítačových hrách máme často možnost upravit vzhled a charakter ovladatelných postav. Standartem moderních titulů jsou velmi bohaté možnosti úprav – formování tvaru postavy a jednotlivých částí obličeje, výběr barvy očí, tvar a pozice jizev a tetování či nastavení barvy a kvality pokožky. Nicméně v oblasti vizualizace a výběru vlasů a účesů jsme stále velmi limitováni. Před samotným zpracováním studie a související bakalářské práce jsem osobně mezi svými přáteli z herní komunity provedl neoficiální průzkum, abych zjistil, co je podle nich z vizuálního hlediska při tvorbě postav nejslabším článkem. Nejčastější odpovědi se týkaly především zpracování vlasů a s tím spojených herních účesů. Jedním z hlavních nedostatků je dle dotázaných hráčů omezená volnost při výběru účesů. Během provádění průzkumu jsem si uvědomil, že nevhodné či zastaralé zpracování vlasů v počítačových hrách může být jedním ze skrytých problémů, který není dostatečně adresován, důsledkem čehož nedochází k potřebnému a žádoucímu pokroku grafického zpracování počítačových her. Z výsledků také vyplynulo, že hráči by byli pro větší volnost, případně jistou formu nezávislosti při tvorbě účesů pro své postavy i za cenu větší časové i výpočetní náročnosti. Proto jsem se v této práci rozhodl danou problematikou zabývat. Kapitola 2 zrekapituluje historii vlasů v počítačových hrách včetně metod, které se v daných desetiletích používaly; následně přejdeme k technikám moderním, přičemž nastíníme jejich možné výhody, nevýhody a jejich budoucí potenciální využití. Ve třetí kapitole představím svůj vlastní postup tvorby vlasů, kde vysvětlím teorii, na jejichž základech je vybudován a čím se od moderních technologií liší. Protože byl tento postup vytvořen pomocí modifikátorů a deformátorů modelovacího prostředí Blender, součástí kapitoly je dokumentace změn programem užívaného oficiálního open source kódu, která vysvětluje přínos k úpravě výstupu. Výsledný model bude následně převeden do volně dostupného herního enginu Unreal Engine 4 pro ověření použitelnosti v reálném čase, což je popsáno ve čtvrté kapitole. Pátá kapitola předkládá výsledky ankety sloužící k porovnání vizualice vlasů pomocí popsané metody vůči zpracování vlasů v deseti úspěšných nebo po grafické stránce inovativních či zapamatováníhodných moderních hrách v závislosti na dosaženém vzhledu i polygonální náročnosti. Závěr zhodnotí úspěšnost zpracování na základě zmíněné ankety, potvrdí či vyvrátí tezi ohledně využitelnosti metody v reálném čase a nastíní nutné budoucí úpravy ve vytvořeném prototypu.

5 2 Historie technik vykreslování vlasů

2.1 Pixelové zobrazení/pixelizace

Přestože vznik počítačových her lze datovat k přelomu čtyřicátých a padesátých let (ať se jedná o rok 1948, kdy Thomas T. Goldsmith Jr. a Estle Ray Mann vytvořili první hru využívající katodových trubic [1], nebo o rok 1952, kdy Alexander S. Douglas pomocí počítače EDSAC [2] vytvořil hratelné piškvorky OXO [3] ovladatelné ciferníkem známým z bakelitových telefonů), vlasy se u ovladatelných postav objevují až v první polovině osmdesátých let u produktů pro herní konzoli Atari 2600 [4]. Ta jako první využívala mikroprocesory, konkrétně modifikovaný osmibitový MOS 6502 [5], díky jehož revolučně nízké ceně (25 dolarů za kus místo až 300 dolarů za kus v případě mikroprocesoru Motorola MC6800 [6]) mohla být distribuována za relativně nízké a přijatelné ceny. Jako jeden z důležitých milníků herní historie je považován rok 1982, kdy na světlo světa přichází hra Pitfall! [7] společnosti Activision. Je to jedna z prvních her, kde je hráč viděn z boku, přičemž se pohybuje jak horizontálně, tak vertikálně, a jako taková nastavuje styl zobrazení a možnosti pohybu pro mnoho her následujících dekád, jelikož de facto utváří žánr plošinovek. Díky upravenému vykreslovacímu enginu bylo možné zobrazovat více barev v reálném čase, což umožnilo vykreslit nejen komplexnější pozadí, ale i vícebarevného hráče. Ten měl kromě zelených kalhot, modrého trika a růžové kůže také hnědé vlasy. Protože se jedná o jednu z prvních her užívajících vícebarevného hráče (ne-li první) a protože je těžko dohledatelné, že by existovala starší, leč zapomenutá hra podobného ražení, je Pitfall! považován za první hru, ve které se objevuje postava s rozpoznatelnými vlasy. Poté, co společnost Atari světu předvedla skutečný potenciál herních konzolí, začalo se jejich vývojem intenzivněji zabývat více firem. Zatímco některé z nich postrádaly komerční úspěch (např. Magnavox Odyssey2 [8]) a jiné se vydaly svým na danou dobu specifickým a revolučním směrem (osmibitová konzole Vectrex [9] se zabudovaným vektorovým displejem), konzolím osmdesátých let dominovaly krom Atari firmy a Sega. Obě firmy v roce 1983 uvedly na trh vlastní konzoli (shodou okolností s rozdílem hodin), konkrétně Sega Game 1000 (SG-1000) [10] a Nintendo Entertainment System (NES) [11]. NES byla komerčně úspěšnější a dodnes je považována za nejúspěšnější osmibitovou herní konzoli v historii. Díky tomu pro ni byl vytvořen nespočet her, z nichž se mnohé pro herní komunitu staly nepřekonatelnými legendami. Jednou z takových legend je i herní série Donkey Kong [12]. Přestože (případně právě proto, že) první hra vznikla v roce 1981 jako klasická arkáda, svůj největší úspěch zažila po přeportování na NES. Název může být poněkud zavádějící - na rozdíl od jiných her pojmenovaných po hlavních hrdinech nese tato jméno hlavního antagonisty. Hratelnou postavou je zde Jumpman, malý kníratý muž v červených montérkách a kšiltovce, relativně záhy znám jako Mario. Dodnes se vedou spory o tom, zda je Jumpman skutečně Mario či spíše jeho nepojmenovaný příbuzný (nejpravděpodobněji otec), faktem však zůstává, že roku 1983 získává Mario vlastní hru (Mario Bros.) a roku 1985 svou ikonickou vizáž v pokračování Super Mario Bros. [13]. Nejen, že se prostřednictvím této hry Mario stal vlajkovou lodí společnosti Nintendo, díky mnohem vyššímu rozlišení postavy také posunul laťku vykreslování rozeznatelných účesů a vousů. Nicméně forma vykreslení vlasů se od úspěchu hry Pitfall! v průběhu osmdesátých let již nezměnila. Protože samotné účesy jsou tvořeny shluky několika barevných pixelů, lze tuto metodu nazvat vykreslováním pixelovým, případně pixelizací. Jedná se o nejstarší metodu kresby herních vlasů, která vznikla v dobách, kdy detaily, vyhlazování obrazu, vrstvy průhlednosti či odlesky nebyly v reálném čase technicky proveditelné.

6 Obrázek 2.1: Hlavní hrdina hry Pitfall! [14].

Obrázek 2.2: Donkey Kong a první Mario [15].

7 Obrázek 2.3: Mario ve hře Super Mario Bros 2 [15].

2.2 Kresebné zobrazení

Díky stále se zdokonalujícím technologiím mohly hry využívat většího rozlišení a lepšího vykreslování, což může být asi nejlépe doložitelné oficiálním maskotem konkurenční společnosti Sega, superrychlým ježkem Sonicem. Ten se na herních obrazovkách poprvé objevil 23. června 1991 v 16-bitové verzi a 25. října téhož roku v 8-bitové verzi hry Sonic the Hedgehog [16]. Sonic má na rozdíl od Maria vyhlazenější hrany, jasně nadefinovaný tvar štětin a viditelné stínování srsti. Přestože jde také o hru v dvourozměrném prostředí, po grafické stránce je mnohem sofistikovanější a zdařile vytváří iluzi třetího rozměru.

Obrázek 2.4: Ukázka ze hry Sonic the Hedgehog [17].

8 S příchodem stolních počítačů a CD-ROMů schopných zálohovat data v řádech megabajtů přichází další grafická revoluce v podobě kreslených 2D her (zejména adventur), které svůj největší úspěch zažily převážně ve druhé polovině devadesátých let. Jedním z nejznámějších představitelů je třetí díl jedné z nejúspěšnějších herních sérií Monkey Island – The Curse of Monkey Island [18] vydaný roku 1997. Ten využil moderních technologií a dodal hře oproti předchozím dílům zcela nový vizuál, který po mnoha stránkách připomínal moderní komiksy a kreslené televizní seriály (tzv. Cartoons). Nejen tato hra, ale i její grafické pojetí se staly duchovními otci mnoha her následujících let, ne-li desetiletí, z těch českých například série Polda [19] či Horké léto [20]. Jedná se o hry založené na dvourozměrném zobrazení prostoru, kde je na rozdíl od her trojrozměrných pozadí vůči poloze hráče statické. Scény lze přirovnat k interaktivním obrazům, postavy jsou ve většině případů zpracovány obdobným vizuálem, jejich animace je řešena posloupností snímků zobrazujících potřebný pohyb. Vlasy jsou tvořeny formou kresby a oproti pixelovému vykreslování je touto metodou dosaženo velmi detailního zobrazení, které díky několikanásobně obsáhlejší barevné paletě umožňuje definovat stíny, odstíny i přechody na úrovni jednotlivých pramínků.

Obrázek 2.5: Ukázka ze hry The Curse of Monkey Island [21].

2.3 3D hry druhého tisíciletí

U trojrozměrných her samozřejmě také docházelo k pokrokům, ale zcela logicky se hledělo spíše na výkon než na vizuální zpracování. Zatímco u dvourozměrných her byla většina scény statická či jasně definovaná (přemisťování pixelových sloupců o určitý parametr u posuvných her), takže k výpočtům ohledně překreslování docházelo převážně u postav během jejich pohybu, třetí herní rozměr přidával výpočetní komplexitu také ve změně pohledu postav a vnímání bezprostřed- ního prostoru v závislosti na ovládání hráče. Perspektivní vykreslování není triviální záležitostí, o to časově náročnější bylo v dobách, kdy grafické karty a procesory nebyly tak rychlé a sofistikované jako dnes. Z toho důvodu docházelo k nutným kompromisům na úkor vykreslení a proto všechny trojrozměrné hry vypadaly oproti dvourozměrným protějškům téže doby relativně zastarale. Dokázaly to však výborně kompenzovat svou hratelností, která, ač místy hektická, byla v mnoha případech téměř návyková. Klasickým příkladem jsou legendy FPS her Wolfenstein 3D (1992), Doom (1993) a Duke Nukem 3D (1996) či RPG série Might and Magic. Obrázek 2.6 názorně zobrazuje pro tehdejší hry klasické vykreslování trojrozměrných prostředí v kombinaci s dvou-

9 rozměrnými předrenderovanými postavami na pozicích, kde v závislosti na jejich či hráčově akci byla přehrána předem určená animace. Díky tomu se z hlediska vykreslování vlasů používaly stejné postupy jako u dvourozměrných her (pixelový, potažmo kresebný).

Obrázek 2.6: Ukázka ze hry Duke Nukem 3D [22].

2.4 Texturové zobrazení

Teprve kolem roku 2000 se začínají objevovat první skutečně trojrozměrné postavy. Ty sice tvůrcům přidělávaly další problémy ve formě animací při pohybu a otáčení, nicméně z hlediska výpočetního díky stálému rapidnímu pokroku nedocházelo k nepříjemným a nepřiměřeným prodlevám. Bylo to zapříčiněno také tím, že kromě konstantního vývoje u stolních počítačů došlo také k revolučnímu skoku u herních konzolí, který reprezentovala především Sony PlayStation 2, která stejného roku nahradila PlayStation 1 z roku 1994 a zaplnila tak šestiletou mezeru v oblasti konzolových výpočetních technologií. Nejstaršími a nejklasičtějšími herními příklady dané doby jsou například revoluční Metal Gear Solid (1998) či Deus Ex (2000). Obzvlášť Metal Gear Solid je znám tím, že vyšel už před rokem 2000 ještě na PlayStation 1, čímž předběhl dobu vzestupu 3D postav po vydaní PlayStation 2. Nutno podotknout, že za sérií MGS stojí , známý především svým revolučním a nekonvenčním přístupem, díky kterému dokázal již v minulosti vytvářet nové herní trendy, a využíváním výpočetně levných metod dosahujících bezchybného technického i vizuálního zpracování, o kterém více v části Série her Metal Gear. Herní postavy dané doby se vyznačují svým nízkým polygonovým (low-poly) zpracováním. Během následujících tří let se začínají objevovat první polygonově bohaté (high-poly) postavy (například Vietcong z roku 2003), přičemž u většiny kvalitních her s nízkou polygonovou kvalitou lze téměř vždy jednoznačně určit, že byly vyrobeny přibližně v letech 2000 - 2003 s tolerancí maximálně dvou let. Důvod, proč je tato informace v práci zmíněna, je ten, že právě low-poly kvalita postav nastavila trend pro tvorbu vlasů minimálně na dalších deset let (základní koncept je užíván dodnes). Hlava i vlasy jsou součástí jednoho sošného modelu (v prvních fázích bylo celé tělo uceleným modelem, ale postupem času se herní vývoj postav dopracoval do podoby oddělené hlavy a těla pro různě detailní formy vykreslování a také pro snazší animaci hlavy v závislosti na pohybu myši/ovladače), na který byla aplikována textura obličeje a účesu (v praxi to znamená, že textura vlasů byla součástí textury hlavy). Tento postup lze sledovat prakticky celé desetiletí nezávisle na komplexitě provedení postav u komerčně úspěšných i kritiky oceněných herních titulů, z nej-

10 známějších viz Mafia (2002), výše zmíněný Vietcong (2003), Far Cry (2004), God of War (2005), Call of Duty 4: Modern Warfare (2007), Fallout 3 (2008), Borderlands (2009) nebo Assassin's Creed: Brotherhood (2010). Všechny tyto hry byly ve své době známy tím, že jako AAA produkty (označení pro špičkové tituly) posunuly hranice herního vizuálu na zcela novou a doposud nepřekonanou úroveň, přesto tvorba vlasů v tomhle ohledu zůstala téměř nepozměněna. Protože se to z užitého tvůrčího procesu nabízí, označme tuto metodu z pozice vykreslování jako texturové zobrazení.

Obrázek 2.7: Ukázka ze hry Mafia [23].

Obrázek 2.8: Ukázka ze hry Assassin's Creed: Brotherhood [24].

11 2.5 Polygonové zpracování a rozšíření texturového zobrazení

Ke zlomu začíná docházet kolem roku 2009, kdy se z hlediska tvorby herních účesů největší senzací stala hra 2 a její velmi detailní zpracování hlavní postavy Nathana Drakea. Přestože se o podobnou metodu možná pokusili mnozí i předtím, byla to právě hra Uncharted 2, která na sebe dokázala strhnout pozornost díky nové technologii tvorby vlasů, kdy jsou na model hlavy a jeho případný základní účes napojovány jednotlivé polygonální útvary (buď samotný , nebo polygonový pruh) podpořeny alpha mapou (černobílá či šedotónní textura určující průhlednost) a texturou pramenů vlasů. Tím lze za určitou polygonální cenu získat komplexnější účesy, hlavně různé typy rozcuchů a krátkých ježatých vlasů. Platí zde pravidlo, že čím detailnější textury a čím komplexnější model (skládající se tímto způsobem jen na vlasech z desítek až stovek objektů), tím realističtěji daný účes vypadá. Nazvěme tento způsob polygonovým zpracováním. Jeho výhodou je úspěšné napodobení realismu vlasů (zvlášť za užití detailní textury a případných odlesků), nevýhodou je, že tento účes je vytvořen přesně pro danou postavu a jako takový je téměř statický (mnoho her na polygonech simuluje lehké záchvěvy vlasů tvořené animací hrany/bodů polygonu – pohyb s objektem – nicméně tato metoda může být výpočetně náročná, viz Tomb Raider z roku 2013). RPG žánr se vydal jinou cestou. Protože se jedná o hry, kde jedním z hlavních prvků je přenechání tvorby a utváření charakteru herní postavy na hráči samotném, musí být vytvořeny až desítky účesů, ze kterých si hráč může vybrat. Jsou to většinou samostatné modely následně překrývající povrch holohlavé postavy využívající texturového zobrazení. Tento postup má samozřejmě nespornou výhodu ve vysoké variabilitě, kterou hráč při tvorbě postavy získává, nicméně každý rub má i svůj líc a ten se zde projevuje ve formě kvality jednotlivých modelů. Krom několika her (například Dragon Age: Inquisition), kde je barva vlasů brána jako externí položka, kterou si hráč může namíchat dle vlastních představ, jsou pro každou přednastavenou barvu vlasů vytvořeny vlastní textury. Pokud bychom tedy měli třicet účesů, pro každý z nich dvacet barev, získali bychom šest set textur jen na pokrytí vlasů. Dnešní metody jsou pochopitelně sofistikovanější (ideálně jako u výše popsaného DA:I), ale například v dobách prvních dvou Mass Effectů (2007 a 2010) tohle byla relativně reálná praktika. U her tohoto typu se z hlediska vývoje upřednostňuje především příběh (jeho komplexita), tvorba a vyváženost vlastností/schopností herní postavy a vytvoření originálního, co možná nejzajímavějšího a nejotevřenějšího herního světa, takže je poměrně pochopitelné, že tvorbě kvalitních modelů a textur pro vlasy se příliš času nevěnuje. A i když jsou model i textura kvalitní, stále může nastat situace, ve které se vkus tvůrců neshoduje s vkusem hráčů a ona variabilita, ač velmi vítaná, v takovém případě zvýrazní omezenost volby ve hře. Netřeba dodávat, že takový účes, i kdyby byl zkombinován s metodou polygonových pruhů, je z hlediska pohybu i růstu převážně statický.

Obrázek 2.9: , hlavní postava hry Uncharted 2 [25].

12 2.6 Alpha blend/test/to coverage

Metody popsané v předešlé kapitole fungují díky možnosti průhlednosti (transparency) textur skrze využití alpha map/kanálů (textura průhlednosti je tvořena pouze bílou a černou barvou, případně jejich šedotonní kombinací). Existuje více způsobů, jak alpha mapu zpracovat, v moderní počítačové grafice se používají především tyto tři: alpha blend, alpha test a alpha to coverage. Alpha blend je jemnou, hodnoty interpolující metodou průhlednosti, která často využívá celého šedotonního spektra jako hodnot pro nastavení různých úrovní průhlednosti či průsvitnosti. Alpha blend, stejně jako ostatní zmíněné metody alpha mappingu, považuje bílou za zcela neprůhlednou a černou za zcela průhlednou, přičemž vypočítává šedotonní hodnotu každého pixelu. Čím je pixel tmavší, tím je průhlednější. Tato metoda má jisté klady v tom, že výsledek vypadá při správném užití přirozeně a v případě potřeby lze vytvořit zcela jemné hrany. Problém však může nastat u mnoha překrývajících se objektů využívajících alpha blend (typickým příkladem mohu být listy, tráva, případně vlasy a srst), kdy je každý pixel, který ve výsledném obrazu tyto objekty vykresluje, v závislosti na jednotlivých průhlednostech stále přepočítáván a překleslován, což často snižuje počet vykreslených snímků za vteřinu (framerate), který přímo ovlivňuje plynulost her. Alpha test šedotonního spektra nevyužívá a proto jsou ovlivněné pixely buď zcela viditelné, nebo zcela průhledné. V případě užití šedotonní textury využívá hraniční hodnoty (světově známé pod názvem threshold), kdy všechny pixely, jejichž šedotonní hodnota je vyšší, než hraniční hodnota, jsou zcela viditelné, všechny ostatní pixely jsou průhledné. Díky užití absolutních stavů nemůže dojít k opakovanému překleslování jako u alpha blendu, výsledkem čehož je každý pixel zpracován pouze jednou, zároveň však nedochází k vyhlazení hran, což může působit velmi rušivě. Alpha to coverage funguje prakticky stejně jako alpha test. Využívá však mnohonásobného vyhlazení (MSAA), které dokáže zjemnit hrany podobným způsobem jako při užití alpha blend. Této metody lze však využít pouze u modernějších grafických karet (NVIDIA sedmé třídy, AMD/Intel ekvivalenty či novější), protože pro vykreslení je potřeba minimálně čtyřnásobné vyhlazení (4x MSAA).

Obrázek 2.10: Srovnání alpha test (vlevo), alpha blend (uprostřed) a alpha to coverage (vpravo) [26].

13 2.7 NVIDIA HairWorks a přiblížení hair strands

S příchodem DirectX 11 a trojúhelníkové teselace [27] začala firma NVIDIA vytvářet vlastní systém Hairworks. Ten podporuje pokročilou simulaci a vykreslování vlasů včetně různých úrovní detailu. Sama společnost tvrdí, že se tvorbou systému zabývala zhruba osm let [28]. Výsledkem je celkem realistické, leč graficky náročné vykreslování až desítek tisíc vlasů/pramenů vlasů (hair strands). Hair strands jsou ve své podstatě renderovatelné křivky (často Beziérovy [29]), u kterých lze snadno nastavit jejich tvar a aplikovat na ně fyzikální zákony. Křivky se v počítačové grafice užívají poměrně dlouho, nicméně právě NVIDIA přišla na to, jak snadno a výpočetně levně je vykreslit přímo ve hře. Hair strands se aplikují skrze samotný objekt – přidá se mu vlastnost tzv. emitteru (zdroje). Ten může buď vyzařovat částice (světla, kouře, atd.), nebo být zdrojem pro křivky reprezentující vlasy (odkazuji se přímo na funkci emitteru v Blenderu [30]). Při nastavování směru či délky nepracujeme se všemi vlasy, nýbrž pouze s reprezentativními řídícími prvky (parents). Docílíme tak snazší úpravy všech požadovaných křivek, které se při vykreslení transformují na řídící vlasy. Mnohdy je ovšem takové pokrytí příliš řídké, proto se využívá vykreslení instancí (children). Tvar instancí nelze přímo upravovat, jsou to kopie řídících objektů. Od skutečného duplikátu objektu se ovšem instance liší také tím, že přebírají všechny vlastnosti hlavního objektu, přičemž procesor je s touto informací obeznámen, nemusí tak zpracovávat stejné informace pro dva různé objekty. Stačí pouze zpracovat informace o pozici, rotaci a měřítku instance a na jejich základě vykreslit již zpracovaný objekt. Tím se šetří bodová/polygonová zátěž (příklad: schodiště tvořené stem oddělených schodů, každý tvořen osmi body a šesti polygony – skrze kopie či separátní objekty zpracovává procesor osm set bodů a šet set polygonů včetně jednotlivých pozic, skrze hlavní objekt a devadesát devět instancí pouze osm bodů, šest polygonů a devadesát devět pozic kopií), což umožňuje plynulejší hratelnost. Hairworks takto fungujících hair strands dokáže plně využít a krom úpravy barvy a směru růstu simuluje i poryvy větru či vykreslování stínů jak vůči jednotlivým vlasům/chlupům, tak vůči tělu a okolí. Nevýhodou je už výše zmíněná náročnost. U alpha blendu jsme narazili na pojem framerate. Pro připomenutí se jedná o počet vykreslených snímků za vteřinu a moderní hry se snaží dosáhnout hodnoty 60 fps (frames per second – snímky za vteřinu). Následující video [31] zobrazuje porovnání vykreslování se zapnutým i vypnutým systémem Hairworks ve hře Witcher 3. Když je systém HairWorks vypnutý, lze s výkonnou grafickou kartou snadno dosáhnout 60 fps, po jeho zapnutí dochází k poklesu až o 20 fps, čehož si můžeme názorně všimnout na nepřirozeně trhaném pohybu hlavní postavy. Podobným způsobem a s relativně stejnými výsledky jak do vizualizace, tak do výkonu pracovaly i původní verze konkurenčního TressFX od AMD.

. Obrázek 2.11: NVIDIA HairWorks a aplikace hair strands [32].

14 2.8 DirectX 12 a TressFX 3.0

V červenci roku 2015 Microsoft Windows uvedl společně s Windows 10 na trh zcela nové API ovladače DirectX 12. Ty podle všeho umožňují vykreslovat komplexnější scény v relativně nízkých časech (podle oficiálních zdrojů dokáže ve stejném čase vykreslit až dvanáckrát více polygonů než DirectX 11 [33]). Pro herní komunitu to znamená především detailnější a realističtější hry, což se týká i konceptu tvorby a vykreslení vlasů. 26. ledna 2016 vydala společnost AMD softwarovou knihovnu pro pokročilé vykreslování vlasů a srsti s názvem TressFX 3.0. Dřívější verze TressFX byla využita především u nových her série Tomb Raider, kde na skutečně výkonných herních konzolích a počítačích dokázala nasimulovat pohyb vlasů. TressFX 3.0 tuto simulaci posouvá o krok dál, ovšem v době psaní této bakalářské práce je známa jediná hra využívající tuto knihovnu, a to Deus Ex: Mankind Divided společnosti ze srpna roku 2016. Zde se používá základního modelu vlasů v kombinaci s prameny vlasů (hair strands), což účesům dodává realističtější nádech. Protože je ovšem tato metoda v kombinaci se skutečným potenciálem ovladačů DirectX 12 teprve v pomyslných plenách, nelze ji dostatečně zdokumentovat a není jisté, zda tak, jak je vytvořena a jak bude dnes již zavedenými herními studii používána, zvládne nasimulovat také dynamický růst vlasů a tvorbu jakéhokoli účesu.

Obrázek 2.12: Ukázka využití TressFX 3.0 při tvorbě hry Deus Ex: Mankind Divided [34].

15 3 Návrh a implementace vlastní metody

Druhá kapitola znázornila, jak rychle technika tvorby postav a vlasů ve skutečnosti postupuje. Jak nám však nastínil aktuální vývoj nejmodernějších metod, stále je co zlepšovat. Zavedené postupy mohou být vizuálně přívětivé, osobně však nejsem zcela přesvědčen, že nejlepším způsobem simulace trojrozměrné dynamiky vlasů je uspořádání na sobě nezávislých dvourozměrných objektů či graficky náročné fyzikální vykreslování hair strands. Tyto metody navíc doposud nepodporují růst vlasů, z hlediska realismu v tomhle ohledu všechny zaostávají. Proto jsem začal hledat nový postup, který by reflektoval reálný svět a z hlediska zobrazení a výpočetní složitosti by byl zlatou střední cestou mezi moderními metodami. K jeho pochopení je třeba práci rozdělit na dílčí úseky. U každého nejprve přiblížím základní myšlenku či užitou teorii a následně popíši grafické postupy, kterými požadovaný výsledek získat.

3.1 Vlas v reálném světě

Pokud se podíváme na tělo z čistě biologického hlediska, zjistíme, že vlas je pevně přichycen ve škáře (dermis) pod pokožkou (epidermis) a dle zavedených definic lze jeho stavbu rozdělit na dvě základní části: vlasový stvol (scapus pili) a vlasový kořen (radix pili), přičemž růst probíhá od cibulky (bulbus, nejhlubší část kořene) pod pokožkou ke stvolu nad pokožkou. Je jedno, jak je vlas dlouhý, zakřivený či na povrchu polámaný - na hlavě nám drží právě díky svému kořenu. Podle absence či presence vlasového kořene můžeme dokonce de facto určit dva druhy plešatosti, totiž přirozený a uměle vytvořený. Důležité však je, že při uměle vytvořeném stavu plešatosti (nejčastěji vyholením vlasů) onen vlasový kořen pod pokožkou stále existuje a vlas má ve skutečnosti nenulovou délku (od cibulky po pokožku). Proto pokud budou výpočty metody pracovat s nulovou délkou, je tím myšlena pozice imaginární vlasové cibulky pod pokožkou, nikoli průnik vlasu s modelem hlavy. Zohlednění přibližné pozice zakořenění a skutečného způsobu růstu vlasu kombinované s následným provedením lze považovat za základní kámen této technologie a zároveň za největší odlišení od dosavadních široce užívaných metod. Nejprve je třeba vysvětlit užitý princip pro samotný růst vlasů. Předně základní parametry vlasů jako takových: v knize 'Přehledy věd přírodních. Dílu I. část 1. Tělověda-zoologie-botanika' [35] se dočteme, že průměrný jedinec má v daný moment mezi osmdesáti až sto čtyřiceti tisíci vlasy, přičemž průměrná tloušťka by měla být do sta mikrometrů a hustota až tři sta vlasů na centimetr čtvereční. To znamená, že v bodě průniku vlasů s povrchem skrze póry lze mluvit o velmi hustém a relativně konstantním pokrytí pokožky. S přibývající délkou si lze zcela snadno povšimnout, že vlasy rostoucí blízko u sebe nerostou nezávisle na sobě, nýbrž se stmelují do pramene. Takové pramínky vlasů se na hlavě vyskytují v řádech tisíců a mohou, ale nemusí jeden druhý vzájemně překrývat. Tím můžeme ztratit původní vizuální hustotu, nicméně ta je stále dostatečná. Nesmíme však zapomínat, že i v prameni vlasů roste každý vlas individuálně a proto může v určitém bodě růst jiným směrem. Nejlépe je to vidět u konečků, kdy se pramen vlasů jeví roztřepeně a opět ztrácí na vizuální hustotě. Celkově tedy můžeme naivně odvodit určitý typ nelineární rovnice úbytku vizuální hustoty v závislosti na délce vlasů. Z grafického hlediska tedy bude potřeba vypočítat a nadefinovat systém růstu, který požadovaný objekt modifikuje na dynamické vlasové prameny, a následně vytvořit materiál, který bude při vykreslení věrně reprezentovat vlasy včetně vizuálního úbytku hustoty.

16 3.2 Tvorba pramenů vlasů

Abychom mohli při tvorbě vlasů vycházet z cibulek pod pokožkou, je nutné během modelování charakteru vytvořit dvě kopie hlavy (obrázek 3.1). První je klasickým modelem pro užití textur/shaderů a tvorbu animace, kterou užívají všechny metody. Důležitým prvkem oproti ostatním systémům (krom systémů užívajících hair strands) je hlava druhá, která ovšem na rozdíl od systémů užívajících hair strands nebude plnit funkci emitteru. Po odstranění segmentů, které reprezentují vlasy či srstí nepokryté úseky hlavy, zbylý objekt dostatečně přesně reprezentuje oblast výskytu vlasových cibulek. Danou dále popsanou metodou budou vlasy vytvořeny přímo z této oblasti, na rozdíl od emitteru tak model při tvorbě využije nejen všech svých polygonů, ale také všech bodů, které budou hrubou reprezentaci pramenů vlasů. Po vizuálním zjemnění a doladění vhodným shaderem bude mít výsledný výstup vzhledové a trojrozměrné vlastnosti podobné systémům užívajícím hair strands, protože se však jedná o ucelený model, zpracování vykreslení jednotlivých objektů bude oproti hair strands časově snazší a v případě vhodného užití textury bude časová složitost prakticky nepodstatná. Nutno však podotknout, že oproti hair strands metoda momentálně nepodporuje realistickou animaci jednotlivých pramenů, která může výpočet ovlivnit.

Obrázek 3.1: Ukázka modelu hlavy pro růst vlasů a modelu pokožky (nahoře). Ukázka vzájemné polohy obou modelů (dole). Snímky obrazovky z programu Blender.

17 U růstu vlasů jsem se opět nechal inspirovat přírodou a uvědomil si, že vlasy jsou od cibulek skrze pokožku doslova protlačeny na povrch, přičemž tento proces je z logiky růstu neustálý. Nová metoda tedy podobným způsobem vytvoří ze skrytého modelu jednotlivé prameny, které budou protínat model hlavy, tedy v závislosti na čase snadno modifikovat tvar a velikost modelu. To je možné díky principu a funkci grafického modifikátoru, potažmo způsobu využití textur k získání reálné plasticity, známého pod termem Displacement [36]. Jedná se o proces aplikace šedotónní textury na zpracovávaný objekt a změnu jeho tvaru v závislosti na odstínu. Jako střední hodnota se využije světlost padesátiprocentní šedé (RGB 127,127,127). Čím světlejší textura na určitém místě je, tím více se body či polygony posunou ve směru normálového vektoru. Stejně tak čím tmavší je textura oproti barvě reprezentující střední hodnotu, tím více se objekt prohloubí. Program Blender obsahuje interní Displacement modifikátor, u kterého lze nastavit jak sílu určující maximální vzdálenost upravených bodů od původního objektu, tak směr růstu (buď klasicky dle normálového vektoru, nebo dle jedné ze tří základních os) či umístění střední hodnoty.

Obrázek 3.2: Rozhraní modifikátoru Displacement.

Aby mohl být Displacement adekvátně využit, musel jsem vytvořit texturu. Její výsledná podoba, zachycená na obrázku 3.3 vlevo dole, je důsledkem následující úvahy: existuje-li model, kde má postava krátké vlasy či vousy, je možné z daného kusu modelu vytvořit displacement mapu, na které ony budou v závislosti na detailu modelu kvalitně zaznamenané. Jediným problémem jest přítomnost dané části pokožky, na které se vlasy či vousy nachází. Lze však snížit jas a upravit kontrast dané textury tak, aby plocha reprezentující pokožku byla relativně rovnoměrná a absolutně černá, a u modifikátoru v Blenderu nastavit střední hodnotu na nulovou, což ve výsledku zaručí, že vše, co je černé (RGB 0, 0, 0), zůstane na svém místě, vše světlejší bude při klasickém nastavení růst vektorovým směrem, tedy od modelu oblasti výskytu vlasových cibulek na povrch. Protože však u textury ani v takovém případě nelze absolutně zaručit, že negativně neovlivní hrany upravovaného objektu, musela být oblast reprezentující výskyt cibulek (na obrázku 3.1 znázorněna čtyřbarevným modelem) prostřednictvím klasických transformačních modifikátorů (užit je konkrétně pohyb a změna velikosti) vnořena pod povrch základní hlavy tak, aby v rámci měřítka reprezentovala plochu pod pokožkou v řádech jednotek centimetrů (skutečná hloubka pod pokožkou, ve které se vlasový kořen nachází, není známa, uvedený údaj je tedy odhadem). Tím je eliminován potenciální problém odklopení oblasti od modelu hlavy, který by kazil celkový dojem. Obrázek 3.3 zachycuje postup a průběžné výsledky tvorby potřebné textury. Prvně byl vytvořen detailní model postavy včetně vousů a vlasů (původně v programu Blender, detailnější reprezentace na obrázku byla dotvořena v programu Zbrush). Následně byl dosazen objekt výskytu, na který byl skrze modelovou projekci načten tvar vousů a vlasů. Po exportování displacement mapy upraveného objektu byla textura modifikována za pomoci programu Adobe Photoshop. Pro zachování většiny dat jsem nechal textuře původní jas, který jsem snížil až v Blenderu.

18 Obrázek 3.3: Kompozice postupu tvorby textury: původní displacement textura (vlevo nahoře), upravená textura (vlevo dole), zobrazení nastavení textury v Blenderu (vpravo), na pozadí model, z něhož byla textura vytvořena.

Všimněme si upravené textury vlevo dole. Ačkoli se může zdát, že jde o jednolitou šedou plochu, ve skutečnosti se jedná o velmi jemnou texturu (reliéf původní textury je při detailním ohledání stále viditelný), kde všechny podstatné informace byly nahuštěny do úzkého šedotonního spektra. Důvodem je lepší operabilita při nastavení parametrů a souběžně s tím kvalitnější vyhlazení a zjemnění světlých vrcholů. Následující příklad se pokusí problematiku přiblížit: Existuje displacement mapa se dvěma světlými body reprezentujícími jednotlivé vlasy (jeden z nich má všechny hodnoty nastaveny na 230, druhý na 240). Při aplikační síle 1.0 je za adekvátně užitého měřítka rozdíl v nárůstu jeden milimetr. Tato odchylka je při nízké aplikační síle zanedbatelná, protože je však metoda koncipována tak, aby pracovala i s aplikační silou 50.0, rozdíl může dosáhnout pěti centimetrů, což není žádoucí. Proto je celá displacement mapa regulována na úzké šedotónní pásmo – pro snadný názorný výpočet uvažme převod všech 256 odstínů do pásma složeného z osmi hodnot. Každých 32 odstínů staré škály je nahrazeno jedním odstínem nové škály, proto se všechny hodnoty v rozmezí 223-255 transformují do stejného odstínu. Rozdíl v nárůstu mezi těmito dvěma body bude při aplikaci nové škály nulový jak při aplikační síle 1.0, tak při síle 50.0. Zároveň je v závislosti na jednotce síly nárůst několikanásobně menší, lze tedy využít vyšších hodnot a díky upravené škále získat také jemnější interpolovaný růst. Zbývá ještě nadefinovat optickou přirozenost směru růstu, tedy přidat iluzi gravitace a dané polygony vhodným způsobem prohnout. Směr růstu je momentálně vyřešen kombinací více modifikátorů typu Displacement s vhodně zvolenými směrovými vektory (krom klasického normálového, řešícího délku vlasu, se jedná o kombinace růstu po ose X,Y, Z). Problém, který skýtá sám Blender, se nachází ve formě alternativně naprogramovaných deformačních funkcí, mezi které patří modifikátor Bend [37]. Zatímco například v 3DS Max lze nastavit centrální bod ohybu a volně

19 s ním pohybovat a Cinema 4D dokáže vytvořit deformační kvádr, kde k deformaci po vhodném nastavení dochází pouze v jeho prostorách, Bend v Blenderu těmito postupy nedisponuje. Jedinými nastavitelnými parametry jsou úhel, nastavení objektového intervalu (zda k deformaci dojde na celém objektu či jen v jeho části – důležitou zmínkou je, že tato změna dle mého není funkční, protože zcela nepředvídatelně mění pozici objektu) a zdrojový bod či objekt, dle kterého je modifikovaný objekt ohýbán. Problém nastává ve změně pozice zdroje – ten totiž nefunguje tak snadno a intuitivně jako u ostatních programů a zároveň jsou určeny pouze některé blíže nespecifikované osy, podle kterých se v závislosti na pozici bude požadovaný objekt měnit. Pokud jej chceme změnit dle jiných os, musíme skrze rotace a další úpravy změnit osy zdrojového bodu či objektu. Proto není modifikátor Bend zakomponován do finálního programu, přestože používám hned několik bodů, které lze využít k ohybu jednotlivých objektů.

Obrázek 3.4: Kompozice postupu užití modifikátorů Displacement a Bend. Objekt bez užití modifikátorů (nahoře), použití modifikátoru Displacement se směrem růstu po normále (veprostřed), objekt po přidání Displacement po ose Y a následně Bend (dole).

Aktuální verze prototypu plně podporuje rovné a vlnité, ne však kudrnaté vlasy. Ty sice lze skrze metodu vytvořit, nicméně výsledky nejsou dostatečně uspokojivé. Kudrnaté vlasy typu afro jsou svou stavbou tlusté chomáče podobné uměle vytvořeným dredům, jednotlivým pramenům tedy stačí dodat dostatečný objem (skrze drůhý displacement s růstem po normále). Kudrnaté vlasy tvořené prstýnky jsou však momentálně nedosažitelné, protože pro jednotlivé prameny je krom klasického růstu nutno nadefinovat také růst po spirále, což je komplexní problém. Ukázka momentálně dosažitelného výsledku kudrnatých vlasů typu afro uložena v grafické příloze.

20 3.3 Výpočetní metoda HerrHair

V této části detailněji popíši implementaci výše nastíněné metody pro generování vlasů. Rozhodl jsem se nepsat celý program od základu, nýbrž využít již zavedeného a přímo užívaného modifikátoru Displacement, jehož open source kód lze nalézt pod odkazem [38] či v elektronické příloze. Ačkoli je prostředí a systém programu Blender programován v jazyce Python, vlastní modifikátor byl zkonstruován v jazyce C. Protože popisovaná metoda pracuje hlavně se směry a silou modifikátorů, je třeba upravit část kódu obsahující switch závislý na směru (direction) na konci funkce displaceModifier_do, který k pozici bodů připočítává hodnotu delta, která je odvozena ze síly aplikovaného modifikátoru (strength). Oblast růstu, na kterou je upravený kód aplikován, jsem rozdělil na několik separátních modelů a jejich osy jsem nastavil tak, abych užíval převážně směru růstu podle normály, podle osy Y a podle osy Z. podle normály:

case MOD_DISP_DIR_NOR: vertexCos[i][0] += delta * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += delta * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += delta * (mvert[i].no[2] / 32767.0f); break; podle osy Y:

case MOD_DISP_DIR_Y: vertexCos[i][1] += delta ; break; podle osy Z:

case MOD_DISP_DIR_Y: vertexCos[i][2] += delta ; break;

Při sepisování kódu jsem narazil na malý, leč lehce rušivý problém. Nastavení názvu směru (direction) je řízeno skrze hlavní program, ke kterému je obtížné získat přístup. Proto by pro změnu názvů jednotlivých případů bylo nutné vytvářet interní ekvivalenty směrů (případně jistou obdobu Override – pro určitý moment přepíše část nadřazeného kódu), což z hlediska tvorby a vyladění prototypu (k oběma úkonům dochází každý den souběžně se sepisováním těchto stran) nemá prvořadou ani druhořadou prioritu. Proto se růst vousů v mém programu momentálně skrývá pod názvem RGB to XYZ, růst vlasů užívaný převážně na bocích pod X, růst vlasů vepředu nad čelem pod Y, růst na temeni pod Z a univerzální vychýlení vlasů do boku pod názvem Normal.

3.3.1 Kód pro vousy Přestože jsou všechny kódy v jisté míře samy sobě velmi podobné, univerzální kód pro vousy je rozdílný hlavně v maximálním růstu po vektorovém směru (zatímco u vlasů dosahuje maxima v hodnotě 2.5f, u vousů je to až 5.0f). Důvodem je docílení většího roztřepení původního objektu a zisk širších pramenů. Podíváme-li se na vizuální charakteristiku vousů a vlasů, zjistíme, že vousy jsou na pohled hrubší než vlasy. Stejně tak je tomu při doteku. Zatímco vlasy jsou přirozeně jemné až hedvábné, vousy jsou na dotek jako štětiny. Této vizuální hrubosti je docíleno právě šířkou pramenů, což bude později více než dostatečně viditelné při popisu užitého materiálu. Samotný kód je rozdělen na pět případů růstu podle nastavené hodnoty delta.

21 delta<=0.0f: Aby se zabránilo negativnímu růstu směrem do lebky, nastavil jsem případ, kdy všechny užité negativní hodnoty budou ekvivalentní hodnotě nulové – žádný růst, existuje pouze vlasová cibulka.

vertexCos[i][0] += 0.0f; vertexCos[i][1] += 0.0f; vertexCos[i][2] += 0.0f;

0.0f

vertexCos[i][0] += delta * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += delta * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += delta * (mvert[i].no[2] / 32767.0f);

2.5f

vertexCos[i][0] += delta * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += delta * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += delta * (mvert[i].no[2] / 32767.0f); vertexCos[i][1] += ((delta – 2.5f) / 2.44f) * (-3.44f); vertexCos[i][2] += ((delta – 2.5f) / 2.44f);

5.0f

vertexCos[i][0] += 5.0f * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += 5.0f * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += 5.0f * (mvert[i].no[2] / 32767.0f); vertexCos[i][1] += ((delta – 2.5f) / 2.44f) * (-3.44f); vertexCos[i][2] += ((delta – 2.5f) / 2.44f);

20.0f

vertexCos[i][0] += 5.0f * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += 5.0f * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += 5.0f * (mvert[i].no[2] / 32767.0f); vertexCos[i][1] += ((20.0f – 2.5f) / 2.44f) * (-3.44f); vertexCos[i][2] += ((20.0f – 2.5f) / 2.44f);

22 Díky kvalitě a hrubosti vousů stačí užít pouze jeden růstový systém. Ten nám zaručí téměř konzistentní tvar vousů nezávisle na poryvech větru či jiných fyzikálních jevech. Postavou požado- vané detailní směrové úpravy lze vyřešit skrze užití modifikátoru Bend, případně vyčkat na vydání nezávislého leč úzce spjatého pluginu zabývajícího se danou problematikou.

3.3.2 Komplementární kódy pro vlasy Jak již bylo výše nastíněno, vlasy jsou vůči vousům hladší a jemnější a fyzikální jevy na ně působí poněkud silněji. Proto je jejich maximální normálová hodnota (ovlivňující vizuální jemnost) pouze 2.5f a pro variabilitu základního směru růstu vlasů byly vytvořeny hned tři navzájem se doplňující kódy. Hlavním důvodem je využití na různých částech hlavy, stejně tak u různých typů účesů (vlasy na boku mohou být buď rozčepýřené, nebo uhlazené), kde je uživatelsky přívětivější změnit parametr směru růstu místo vylaďování ohybu. Následné nastavení síly jevů může být o to snazší, protože na každý typ směru růstu je možné aplikovat jinak působící parametry. Tyto kódy jsou koncipovány stejně jako okomentovaný kód pro vousy, proto je zbytečné podrobně je popisovat. Místo toho předložím srovnání jednotlivých kódů mezi sebou. Podotkl bych pouze jednu věc: zatímco na stranách a vzadu označuje parametr vertexCos[i][1] růst ovlivněný gravitací a vertexCos[i][2] růst směrem od hlavy, u vlasů na temeni hlavy je tomu naopak. delta<=0.0f: Všechny tři kódy jsou v této fázi shodné.

vertexCos[i][0] += 0.0f; vertexCos[i][1] += 0.0f; vertexCos[i][2] += 0.0f;

0.0f

vertexCos[i][0] += delta * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += delta * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += delta * (mvert[i].no[2] / 32767.0f);

2.5f

vertexCos[i][0] += 2.5f * (mvert[i].no[0] / 32767.0f); vertexCos[i][1] += 2.5f * (mvert[i].no[1] / 32767.0f); vertexCos[i][2] += 2.5f * (mvert[i].no[2] / 32767.0f);

Pro tuto i další fáze již budu psát pouze rozdíly ve směrovém růstu odlišené písmeny, pod kterými se ve výběru nachází.

X: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); Y: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); vertexCos[i][2] += ((delta – 2.5f) / 5.0f); Z: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); vertexCos[i][2] += ((delta – 2.5f) / 3.44f);

23 25.0f

X: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); vertexCos[i][2] += ((delta – 25.0f) / 1.1f); Y: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); vertexCos[i][2] += 4.5f – ((delta – 25.0f) / 2.9f); Z: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); vertexCos[i][2] += 6.54f – ((delta – 25.0f) / 2.0f);

38.0f

X: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); vertexCos[i][2] += ((delta – 2.5f) / 3.0f); Y: vertexCos[i][1] += (delta – 2.5f) * (-1.0f); Z: vertexCos[i][1] += (delta – 2.5f) * (-1.0f);

52.5f

X: vertexCos[i][1] += (52.5f – 2.5f) * (-1.0f); vertexCos[i][2] += ((52.5f – 2.5f) / 3.0f); Y: vertexCos[i][1] += (52.5f – 2.5f) * (-1.0f); Z: vertexCos[i][1] += (52.5f – 2.5f) * (-1.0f);

Skrze popsání jednotlivých případů a zběžný rozbor průběhu funkce lze odvodit, že první typ růstu (X) nejprve roste podél hlavy a se zvětšující se délkou se začíná odklánět. Proto je dle mého názoru vhodné využít jej na stranách hlavy při růstu kolem uší a pro ofinu načesanou vzhůru. Druhý a třetí typ se liší rychlostí růstu od hlavy u krátké a střední délky vlasů, proto jsou vhodné zejména k užití na temeni hlavy, případně pro ofinu načesanou směrem dolů. Zbývá ještě krátce popsat poslední kód pro hrubou změnu směru růstu vlasů. Záporné hodnoty při pohledu zepředu načesávají vlasy doleva, kladné doprava. delta<-20.0f: vertexCos[i][0] += -20.0f;

-20.0f<=delta<=20.0f: vertexCos[i][0] += delta;

20.0f

24 Obrázek 3.5 na této a další straně dokumentuje dosavadní výsledek získaný modifikacemi kódu včetně několika nastavení délky vousů a vlasů.

25 Obrázk 3.5: Ukázka několika typů účesů a vousů včetně náhledu základního modelu a jeho polygonové mříže.

26 3.4 Pokožka

Na předešlých snímcích lze vidět jen nepatrný zlomek variability, kterou tento systém nabízí, přičemž daných výsledků bylo dosaženo pouze nastavením různé délky vlasů. Zobrazuje také náznak vlasového materiálu, kterého pro vykreslování hodlám využít. Abych však měl jistotu, že výsledek bude korelovat i s natexturovanou hlavou, vytvořil jsem nejprve dvě možnosti zobrazení pokožky. První, jednodušší, využívá podkožního rozptylu světla (Subsurface scattering [39]) pro dosažení přirozenějších odlesků, což je výhodné převážně u tvorby mokré či zpocené pokožky. Tyto informace je možné uložit do využitelných textur, takže podobný výsledek lze získat v reálném čase. Druhá rozšiřuje první o jemnou průsvitnost, čímž získává realističtější nádech, zároveň ovšem také způsobuje delší dobu vykreslování. Proto se jedná o materiál/z materiálu utvořenou texturu pro využití na silnějších počítačových sestavách či moderních konzolích. Protože jsou obě pokožky na vytvoření poněkud komplexnější a zároveň nejsou součástí práce, popis jejich tvorby a jednotlivých funkcí je z práce vynechán.

Obrázek 3.6: Srovnání možností zobrazení pokožky (první možnost nahoře, druhá dole).

27 3.5 Složení materiálu

Obě pokožky jsou si velmi podobné, proto budu k následujícím ukázkám skladby vlasového materiálu užívat první, jednodušší typ. Využiji jej i během páté kapitoly, ve které je systém kvalitativně i kvantitativně srovnán s ostatními moderními hrami. Samotný materiál vlasů se skládá ze dvou shaderů, přičemž každý z nich výslednému obrazu přidává jiné vlastnosti. První shader (Hard) ostře ohraničuje jednotlivé prameny vlasů, čímž je ve výsledku vizuálně odděluje od zbytku účesu a udržuje tím informaci, kudy rostou. Druhý shader (Soft) nastavuje průsvitnost vlasů a zvýrazňuje barvy, ze kterých se účes skládá. Shadery jsou tvořeny skrze systém Cycles, renderer programu Blender.

3.5.1 Hard shader První shader je součtem výsledků dvou pomocných shaderů.

Obrázek 3.7: Schéma prvního pomocného shaderu.

První pomocný shader (na obrázku 3.7) využívá normálového a tangent vektoru (jejich popis a rozdíl mezi nimi v angličtině zde [40]). Horní větev (červeně) zobrazuje součet absolutní průhlednosti a průsvitnosti v závislosti na normále. Přestože se dle názvu jedná o součet, ve skutečnosti dochází k jemné kombinaci – v místě průsvitnosti je připočítána barva průhlednosti (bílá), která se díky průsvitnosti mírně odráží a výsledná kombinace je lehce světlejší a zářivější než využití samotné průsvitnosti. Dolní větev (modře) využívá tangenty polygonu k nastavení ohraničení jednotlivých vlasů (tangenta je převedena na barevné spektrum z černé do průhledné). Obě větve jsou kombinovány skrze uzel Mix [41] (zeleně). Ten slouží ke smíchání dvou různých shaderů v závislosti na faktoru. Faktor je přednastaven na číselnou hodnotu od nuly do jedné (takže Fac 0.5 míchá shadery jedna ku jedné, Fac 0.4 dvě ku třem atd.), nicméně jeho výhodou je možnost využití externího vstupu. V našem případě jako faktor užijeme podruhé tangentu. To nám zaručí, že

28 průhledná místa vytvořená barevným spektrem nahradíme průsvitností z horní větve. V posledním kroku v poměru jedna ku čtyřem přidáme základní barvu vlasů, čímž naše průsvitnost získá správný barevný nádech.

Obrázek 3.8: Schéma druhého pomocného shaderu.

Funkcí druhého pomocného shaderu (na obrázku 2.13) je do výsledku přidat trochu více barvy. Základ získáme skrze barevné spekrum v levé části obrázku, jehož výstup je závislý na informaci o průniku objektů (červeně). Podle toho, kolik objektů daným úsekem vlasu proniká, předává barevné spektrum informaci do faktoru uzlu ovlivňujícího míchání barev, čímž můžeme ovlivnit barvu kořenů a konečků. Vstupy do uzlu jsou předešlý pomocný shader (modře), jehož vstupem je první barva výsledného shaderu, a třetí barva výsledného shaderu. V pravé části obrázku je schéma Mix uzlů, kterými přidáváme odlesky skrze druhou (zeleně), čtvrtou (žlutě) a pátou (fialově) barvu výsledného shaderu.

Obrázek 3.9: Schéma Hard shaderu.

29 Obrázek 3.9 zobrazuje konečnou fázi tvorby Hard shaderu. Pomocné shadery kombinujeme hned dvěma způsoby – skrze součet, který budeme upravovat, a skrze uzel Mix s faktorem 0.84 (upřednostnění barvy), který je užit jako výstup pro částicový objem (ten zaručuje, že při odrazu bílého světla daný paprsek získá zabarvení shodné s vlasovým materiálem a zvýrazní tak barevné odlesky). Tento proces je zobrazen v horní části obrázku (červeně). Spodní větev (modře) využívá neupravené textury vousů a vlasů (podobu takové textury lze vidět na obrázku 3.3 o úpravě textury v podkapitole 3.2 Tvorba pramenů vlasů) a skrze dvě barevná spektra (od černé po průhlednou) z ní vytváří faktor Mix uzlu (zeleně) ovlivňujícího míchání součtu pomocných shaderů s dodatečnou průhledností a s tím související mírné zjemnění vlasových konečků. Výstup shaderu Hard vypadá následovně:

Obrázek 3.10: Aplikace Hard shaderu na model vousů a vlasů.

3.5.2 Soft shader Druhý shader (na obrázku 3.11) je koncipován podobně jako předešlý, využívá totiž stejné pomocné shadery poněkud jiným způsobem. Všimněme si dvou Add [42] uzlů veprostřed obrázku (červeně). Tyto sčítací uzly, se kterými jsme se lehce obeznámili v předešlé podkapitole, lze využít v rámci jediného shaderu. Proto krom výše umístěného součtu, který jsme využili k získání výsledného výstupu v předešlém případě, přidáme ještě součet dvou shaderů obsahujících barvu. Mohli bychom očekávat, že po sečtení dojde ke zdvojnásobení RGB hodnot a výsledek bude světlejší. Ve skutečnosti se však sčítá odstín a sytost, takže místo zesvětlení získáme přesycení barev. Tyto dva součty kombinujeme přes Mix uzel, jehož faktorem je průnik s dopadajícím paprskem světla. V závislosti na odražení paprsku určujeme, zda bude daná oblast udržovat více informací o hraně či barvě vlasu. Protože se dopadající paprsek vždy do jisté míry odrazí, máme zaručeno, že výsledek bude skutečně kombinací součtů, nikoli upřednostnění jednoho součtu před druhým. Tento výsledný mix posíláme do dříve zmíněného uzlu s průhledností (modře), jehož faktorem je původní textura vlasů. Před samotným výstupem přidáme skrze Mix uzel s faktorem 0.14 podružný Hard shader (zeleně) s barvami blízkými základním barvám soft shaderu, které decentně obarví hrany vlasů na pro ně přirozenější odstín. Výstup shaderu Soft znázorněn na obrázku 3.12.

30 Obrázek 3.11: Schéma Soft shaderu.

Obrázek 3.12: Aplikace Soft shaderu na model vousů a vlasů.

3.5.3 Kombinace Jak bylo zmíněno na začátku podkapitoly 3.5 Složení materiálu, konečný shader užitý pro vykreslení vlasů je kombinací obou výše popsaných shaderů Hard a Soft. Kombinuji je přes Mix uzel, jehož faktorem je blíže nespecifikovaná číselná hodnota. Její nastavení záleží čistě na uživateli pro dosažení ideálního výsledku. Teorie za tímto krokem je následující – každý jedinec má jinou kvalitu vlasů. Jedni mohou mít vlasy husté, druzí vlasy prořídlé. Stejné je to s hrubostí či jemností. Zatímco hustotu či prořídlost vlasů je možné korelovat počtem instancí růstové oblasti, kvalitu

31 vlasů lze upravit pouze přes jejich materiál. Protože jsou potřebné shadery pro hrubé (Hard) i jemné (Soft) vlasy a vousy hotové, jejich propojením skrze Mix uzel lze získat všechny možnosti mezi nimi a určit tak jemnost/hrubost vlasů dané postavy, přičemž oba shadery jsou hraničními hodnotami.

Obrázek 3.13: Schéma propojení Soft a Hard shaderu skrze Mix uzel (Fac 0.766).

Obrázek 3.14: Ukázka výstupu výsledného shaderu aplikovaného na vlasy a vousy v kombinaci s jednoduchým typem pokožky.

Uvedené shadery jsou testovány na jednom výstupu účesu, který bude následně převáděn do herního enginu Unreal Engine 4 kvůli testu funkcionality v reálném čase. Ukázky dalších nastavení a střihů účesů uloženy v grafické příloze.

32 4 Převod do reálného času

Třetí kapitola představila navrhovanou metodu a shadery, díky kterým lze nadefinovat délku, směr růstu a jemnost vlasů. Přiložené obrázky zobrazily dosažitelnou kvalitu výstupu, ten je nicméně vykreslen v renderovacím, nikoli herním enginu. Rozdíl mezi těmito dvěma typy je ve zpracování k modelům přidružených materiálů a shaderů a interakci světel ve vytvořené scéně. Renderovací engine (např. Cycles v Blenderu) využívá světel podporujících ray tracing, metodu globálního osvětlení, která rekurzivně sleduje dráhu světelného paprsku. Díky implementované podpoře komplexních odrazů, lomů vlnění a rozptylu světla dosahuje tento typ enginu vysoce kvalitních a realistických výsledků, nicméně za vyšší výpočetní cenu (v případě užitého modelu se tato pohybuje v řádech minut). Při každé iteraci vykreslování jsou navíc všechny vlastnosti přepočítávány i v případě, že je jako materiál užita již uložená textura. Herní engine naopak pracuje s již předvypočítanými informacemi, mezi které patří ploché osvětlení, materiály složené z uložených textur či elementární shadery. Engine před prvním spuštěním všechny podněty zkompiluje a pokud není scéna nijak radikálně pozměněna (např. přidáním světel či nových herních objektů), každé další spuštění vykreslení bude založeno na této kompilaci. Díky tomu je výpočetní cena minimální (pohybuje se v řádech milisekund), vlastnosti světel i materiálů jsou však silně omezeny. Je implicitně známo, že pokud lze scénu v konečném čase vykreslit v enginu renderovacím, je možné vytvořit engine herní, ve kterém bude vykreslena v čase reálném. Jedním z cílů této práce je však dokázat, že vlasy vytvořené touto metodou je skutečně možné v reálném čase vykreslit a že případný pokles FPS bude nižší, než při užití hair strands. Proto následující kapitola dokumentuje převod textur a modelu z renderovacího do volně dostupného herního enginu a následné testování poklesu FPS v závislosti na užité metodě koncepce materiálů.

4.1 Unreal Engine 4

Pro reprezentaci v reálném čase jsem zvolil herní engine Unreal Engine 4 [43] společnosti Epic Games. Ten, obdobně jako Blender Cycles, využívá uzlové interpretace relací mezi vstupy, interními funkcemi a parametry k přehlednému nastavení výsledného materiálu. Oproti Cycles ovšem v rámci projektu trpí několika nedostatky, které je třeba zmínit. Předně se jedná o absenci či nevhodnou implementaci převodu shaderů, jejímž důsledkem je nemožnost přímo aplikovat předem vytvořené vlasové shadery. Uzlová interpretace navíc není definována jako jeden ucelený výstup, nýbrž jako soustava jednotlivých kanálů (pro barvu, odlesk, průhlednost atd.), které v závislosti na vybraném typu materiálu jsou přímo společností Epic Games zablokovány. Z toho vyplývá, že materiály je nutné v enginu zrekonstruovat, přičemž některé vlastnosti původních materiálů mohou být ztraceny. Nejpodstatnější ze ztracených vlastností je nastavení různých úrovní průhlednosti. Zatímco engine Cycles řeší průhlednost na základě vzdálenosti bodu od své původní pozice skrze barevná spektra, UE4 žádnou formu spektra nepodporuje a průhlednost lze u materiálu nastavit pouze na konkrétní hodnotu. Proto musel být do výsledné scény přidán pomocný objekt, který zakrývá holou hlavu a eliminuje průhlednost u kořenů. V neposlední řadě nastává problém u podpory vlasy generujícího programu. V momentě sepisování stále není jasné, zda se jedná o chybu enginu či o nedostatek z mé strany, nicméně aktuálně není možné načíst a zprovoznit modifikovaný kód ani žádnou jeho abstrakci. Tento problém je prozatím vyřešen převedením objektu vlasů na objekt statický, čímž si ponechává své tvarové vlastnosti, možnost implementace růstu vlasů v herním enginu však není funkční.

33 4.2 Tvorba textur a export objektů

Materiál je v UE4 tvořen nezávislými kanály starajícími se o barvu, svítivost, průhlednost, hrubost, odlesk, lom a jiné vlastnosti, kterých materiál může nabývat. Do těchto kanálů lze odeslat libovolný vstup, který může být interpretován. Může se jednat o konstantu, proměnnou, logickou operaci, jednolitou plochu či komplexní texturu. Proto je možné zrekonstruovat Cycles materiál hned dvěma způsoby – buď jako kombinaci vhodných textur (každá přidružena jednomu či více kanálům), nebo rekonstrukcí funkce shaderu s počátečními vstupy shodnými v obou enginech. Skrytou možností je kombinace výše zmíněných způsobů. Pro způsob využívající kombinace textur je nutné z vyrobeného shaderu dané textury vytvořit. Od iterace 2.70 má Blender Cycles pro tyto případy integrovanou funkci Bake [44], která dokáže na základě vlastností materiálu, nasvětlení scény a interakce s jinými objekty vypočítat výsledek vykreslení a uložit jej k externímu využití. Díky širokým možnostem nastavení lze buď vytvořit texturu, která v sobě skrývá všechny potřebné informace, nebo texturu zabývající se pouze určitým aspektem, který výsledný materiál ovlivňuje.

Obrázek 4.1: Rozhraní funkce Bake.

Pro texturovou metodu vykreslení vlasů postačí exportovat výstupy Diffuse obsahující barvu a Ambient Occlusion započítávající tlumení světla zastíněním. Ostatní případné kanály je možné ošetřit konstantami, které oproti texturám urychlují výpočet. Textury je nutné uložit ve formátu PNG. Jednotlivé objekty musí být přes hlavní lištu File/export uloženy do formátu FBX, protože jiné formáty UE4 nepodporuje.

34 Obrázek 4.2: Znázornění umístění funkce Bake (červeně) a exportu do FBX (modře).

4.3 Import a stavba materiálů

Rozhraní UE4 obsahuje Content browser nacházející se pod náhledem scény. Ten v sobě nezávisle na jejich funkci hierarchicky uchovává veškeré scénou užívané soubory. Prostřednictvím tlačítka import je pro zamýšlený test nutné vložit všechny exportované objekty a textury. Skrze pravé tlačítko myši lze do Content browseru přidat nový materiál. Postupně vytvořím dva materiály, jeden složený z textur a druhý rekonstruující původní shader.

Obrázek 4.3: Schéma materiálu založeného na texturách.

35 Materiál využívající importovaných textur (na obrázku 4.3) využívá pouze několika základních kanálů. Textura, která je výstupem kanálu Diffuse, je vysíláná do kanálů Base Color, který spravuje barvu materiálu, a Emissive Color, která určuje barvu, kterou materiál vyzařuje. Čím světlejší a sytější barva je do kanálu vysílána, tím je záření silnější. V kombinaci s průhledností (Opacity) spravovanou konstantou však tento kanál nevyzařuje světlo, nýbrž podporuje zobrazení základní barvy vlasů. Druhá textura, jež je výstupem kanálu Ambient Occlusion, je připojena pouze do kanálu Ambient Occlusion a plní tak svou původní funkci. Materiál má způsob prolínání pozadí nastavený na využití předpočítané průhlednosti (Alpha Composite), způsob stínování přizpůsobený pro klasické nasvětlení a je oboustranný.

Obrázek 4.4: Schéma rekonstrukce původního shaderu.

Rekonstrukce původního shaderu (na obrázku 4.4) je z hlediska počtu vstupů mnohonásobně komplexnější. Vlevo nahoře se nachází nastavení součtu průhlednosti a průsvitnosti smíchané se základní barvou v závislosti na tangentě obdobné jako u prvního pomocného shaderu (podkapitola 3.5.1, obrázek 3.7). Dále jsou přes uzly Lerp (alternativa k Mix uzlům v Cycles) přidávány další barevné odstíny, což bylo původně funkcí druhého pomocného shaderu (obrázek 3.8). Nakonec je přes uzel multiply připojena původní barva s vyšším jasem, která musí kvůli průhlednosti zvýrazňovat základní smíchanou barvu, uzel je napojen na funkci opravy/posunu odstínu pro případné doladění a výsledná barva je výstupem kanálu Base Color. Kanál Opacity je spravován konstantou a v případě pohledu na zdroj světla skrze vlasy je do kanálu Backlit připojen nejtmavší odstín. Stejně jako v předchozím případě je způsob prolínání Alpha composite, způsob stínování je však nastavený pro materiál vlasů a materiál je pouze jednostranný.

36 4.4 Srovnání a test FPS

Obrázek 4.5 zobrazuje rozdíl mezi oběma užitými materiály. Vlasy na hlavě vlevo jsou vykresleny skrze textury, vlasy vpravo jsou generovány shaderem. Již na první pohled je patrné, že bližší původnímu výstupu je texturové zpracování. Shader vytvořený v UE4 nedisponuje stejnými vlastnostmi jako ten, který byl vytvořen v Blender Cycles. Je otázkou, zda je momentální nastavení materiálů nejlepší možnou interpretací, nicméně s odchylkou v realizaci se muselo počítat už při popisu UE4 v podkapitole 4.1.

Obrázek 4.5: Srovnání texturového (vlevo) a shaderového (vpravo) materiálu.

Pokud by cílem práce bylo co nejpřesněji interpretovat výstup dosažený v Cycles, použil bych po vzoru herních studií specifický herní engine řešící konkrétní problém. Takové enginy jsou velmi sofistikované, jejich výpočetní časy bývají nedostižné. Můj cíl je však dokázat, že mou metodou vytvořené vlasy lze vykreslit v reálném čase. Proto jsem upřednostnil volně dostupný, leč hojně užívaný engine, který na co nejrychlejší vykreslení snímku není specializován. Pokud bude možné vykreslit na základním enginu v reálném čase celý model s dostatečnou kvalitou, je velmi pravděpodobné, že jej bude možné vykreslit s očekávanou kvalitou na enginu specializovaném. Pro bezchybný běh se počítačové hry snaží udržet nad úrovní 60 FPS. Z obrázku 4.5 je patrné, že scéna, která je v době pořízení spuštěná, pracuje na frekvenci mezi 115 -120 FPS. To jako důkaz o běhu v reálném čase stačí, mne ovšem zajímá, která metoda je výpočetně úspornější. Do UE4 proto načtu středně komplexní scénu (za možnost jejího využití znovu děkuji Bc. Rudolfu Burdovi), u které bude naměřena základní hodnota FPS. Do scény bude následně načten model včetně materiálů a pro zachování objektivního měření bude ze stejného pohledu změřen interval FPS pro oba materiály. Z výsledku měření bude vypočten průměrný pokles, který bude následně srovnán s poklesem způsobeným systémem HairWorks zdokumentovaném v kapitole 2.7.

Specifika testovaného počítače: šestijádrový procesor Intel(R) Core(TM) i7-6800K (3.4GHz, TB 3,8GHz), 32GB operační paměti DDR4 2400 Mhz, pevný disk Samsung SSD 750 EVO – 500GB, grafická karta MSI GTX 970 Gaming 4G, operační systém Microsoft Windows 10 Pro 64-bit.

37 Měření Prázdná scéna Texturový mat. Shader 1 120.00 119.20 117.97 2 119.99 110.05 114.49 3 114.00 116.83 118.70 4 120.00 109.92 118.43 5 120.00 118.07 111.20 6 116.06 118.70 111.97 7 119.99 117.84 115.42 8 118.23 119.23 119.54 9 119.48 117.35 114.55 10 120.01 113.37 113.80 Průměr 118.776 116.056 115.607 Medián 119.99 117.595 114.985 Maximum 120.01 119.23 119.54 Minimum 114.00 109.92 111.20

Z naměřených hodnot vyplývá, že původní scéna s ojedinělými odchylkami bez problémů funguje v rozmezí 118-120 FPS. Model s vlasy obsahujícími materiál složený z předrenderovaných textur sníží výkon vykreslení na přibližný interval 110-119 FPS. Pokles vypočítaný pomocí průměru je přibližně 2.72 FPS, pokles vypočítaný prostřednictvím mediánu pak 2.395 FPS. Při použití zrekonstruovaného shaderu je výpočetní výkon zhruba 111-119 FPS. Pokles dle průměru je 3.169 FPS, pokles dle mediánu je 5.005 FPS. Výpočty tedy ukazují, že vykreslení vlasů je z hlediska výkonu stabilní a dostatečně nenáročné na to, aby mohlo být užito v počítačových hrách. Dále je dokázáno, že texturová interpretace dosahuje oproti shaderu lepších výsledků (průměrný pokles 2-3 FPS proti 3-5 FPS), nicméně v obou případech je pokles zanedbatelný. Samotná metoda pak oproti HairWorks šetří zhruba 10-18 FPS využitelných k výpočtu složitější scény. Metoda HairWorks původně testována na osmijádrovém procesoru AMD Vishera FX-8350 (4GHz, TB 4.2GHz), 16GB operační paměti DDR3 1866 Mhz, grafické kartě AMD Radeon HD 7970 3GB a operačním systému Microsoft Windows 7 64-bit.

Obrázek 4.6: Ukázka vzorku měření.

38 5 Kvalitativní a kvantitativní srovnání

V páté kapitole svůj model podrobím dvěma testům – kvalitativnímu a kvantitativnímu. Ještě před několika lety byly hlavním měřítkem kvality postavy detail modelu i textur. S tím souviselo i měřítko kvantitativní – z kolika polygonů se postava skládá. Z obecného hlediska se bralo v potaz, že čím více polygonů, tím lépe pro tvar i detail modelu. O této myšlence je možné říci, že je zároveň pravdivá i nepravdivá. Lze zcela jednoznačně a bez nutných ukázek rozhodnout, že model koule tvořený deseti polygony ji bude připomínat méně než model tvořený tisíci polygony. Na druhou stranu obdelník tvořený jedním polygonem bude mít stejný tvar a detail jako obdelník ze sta polygonů. Záleží tedy na individuální komplexitě daného modelu a na tvůrci, aby rozhodl, jakou polygonální zátěž je v daném případě vhodné použít. Dříve se muselo hledět na limity grafických karet a herních enginů, které tvůrce omezovaly v kreativitě v závislosti na polygonové zátěži. Proto bylo zvykem původní modely polygonálně redukovat a řada detailů byla tvořena pouze normálovými a displacement mapami. Jednou za čas přišla hra, která v dobách dvaceti tisíc polygonů na hlavní postavu slibovala dvakrát tolik (zmíněný Uncharted 2 – postava Nathana Drakea 37 000 polygonů, vlasy 4 000 polygonů), což vyvolávalo diskuze o jejích silných grafických kvalitách. V dnešní době (zvláště s již zmíněným příchodem DirectX 12) jsou díky novým postupům a technologiím tyto limity mnohem vyšší a ne zcela jasně vymezené. Proto je dnes možné a běžné vidět v moderních hrách postavy tvořené stotisícem polygonů. Jiné firmy mají k tvorbě jiný přístup a zdokonalují kvalitu textur, nasvětlení a materiálů, aby jejich postavy mohly být tvořeny co nejméně polygony, které lze využít pro detailnější prostředí či vykreslení více postav (příkladem může být Metal Gear Solid V). Postupná eliminace těchto limit má i jistou nevýhodu, která v daném momentě částečně koliduje s náplní této kapitoly. Protože herní designéři nadále nemají tak intenzivní potřebu lákat potenciální hráče na polygonální komplexitu svých her, jsou tyto informace hůře dohledatelné, což omezuje výběr her pro kvantitativní test. Proto se v této kapitole objeví i hry starší, ne však příliš staré, a neobjeví se některé hry moderní, které jsem chtěl pro srovnání využít.

5.1 Základní přehled

Nejprve předkládám souhrn grafů a informací o několika moderních hrách, které nastíní moderní měřítka polygonální komplexity pro nastavení parametrů kvantitativního srovnání.

Obrázek 5.1: Polygonové srovnávací grafy pro hlavní postavy [45]

39 Následující informace lze ověřit zde [46]:

The Order 1886 (únor 2015) – přibližně 100 000 polygonů Second Son (březen 2014) – přibližně 120 000 polygonů Final Fantasy XV (listopad 2016) - přibližně 100 000 + 20 000 polygonů

Další informace ověřitelné zde [47]:

Metal Gear Solid V: Ground Zeroes (březen 2014) – přibližně 18 000 polygonů Deus Ex: Human Revolution (srpen 2011) – přibližně 26 000 polygonů Uncharted 2 (říjen 2009) – přibližně 37 000 + 4 000 polygonů

Předložená data uvádějí, že počet polygonů tvořících hlavní postavu může být silně variabilní, zhruba od dvaceti do sto dvaceti tisíc. Daný počet polygonů může být závislý na době, kdy byla hra vytvořena (například z roku 2007 versus Ryse z roku 2013), zároveň se však nejedná o jistou formu zákonitosti (Uncharted 2 versus MGS V: GZ). Pokud je užito správných metod, může hlavní postava (či objekt – lodě ze hry Star Citizen z pohledu třetí osoby lze z hlediska formy interakce a vykreslování považovat ze ekvivalent herních postav) dosahovat neskutečných hodnot (zmíněné lodě využívají při vykreslování metody occlusion culling [48], která nevykresluje objekty, které jsou hráčovu pohledu skryty). Model postavy i se všemi vlasy se v závislosti na detailu polygonově pohybuje od sto devadesáti čtyř do dvě stě třiceti tisíc. Tento způsob je momentálně díky své polygonové náročnosti lehce neefektivní, nebyly však doposud užity žádné metody redukce vykreslovaných polygonů (například occlusion culling), optimalizace modelu (neoptimalizovaný Ryse 150 000 polygonů, optimalizovaný 85 000 polygonů) a znovu zmiňovaný DirectX 12, který tyto hodnoty činí poměrně zanedbatelnými. Je však třeba připustit, že majoritní podíl na celkové polygonové zátěži modelu mají právě vlasy, které čitají až sto osmdesát tisíc polygonů. Z toho důvodu lze říci, že z kvanti- tativního hlediska je tento systém tvorby vlasů bez optimalizace pravděpodobně nejnáročnější (nebereme-li v potaz složitost hair strands) a v tomhle ohledu nemůže získat velmi kladné hodnocení. Pro kvalitativní srovnání je třeba srovnat model se specifickými hrami.

5.2 Výběr deseti nejlepších her

Do výběru deseti nejlepších se dostaly moderní hry, které v době vydání svým vizuálem oslnily herní svět či dokázaly nastavit nebo udržet laťku pro vývoj následujících let. Vybranými kandidáty jsou:

Deus Ex: Human Revolution (srpen 2011) Metal Gear Rising: Revengeance (únor 2013) The Last of Us (červen 2013) GTA V (září 2013) Ryse: Son of Rome (listopad 2013) Metal Gear Solid V: Ground Zeroes (březen 2014) Dragon Age: Inquisition (listopad 2014) The Order: 1886 (únor 2015) Final Fantasy XV (listopad 2016) Star Citizen (stále ve vývoji)

40 5.2.1 Deus Ex: Human Revolution

Protože tyto hry bude lepší procházet převážně chronologicky, začneme rozborem nejstarší hry na seznamu Deus Ex: Human Revolution [49] z roku 2011. Toto netradiční kyberpunkové RPG, volně navazující na a doplňující příběh původního Deus Ex z roku 2000, je výsledkem spolupráce herních studií Eidos Montreal, Nixxes Software a Feral Interactive společně s vydavatelem Square Enix. Získalo velmi vysoká hodnocení u světově známých a uznávaných herních serverů ( 90/100, 9/10, 8.5/10, IGN 9/10) a bylo mimo jiné nominováno na cenu Spike VGX [50] za nejlepší RPG a na BAFTA Games Award [51] za nejlepší strategii a akční hru. Častým tématem byla i grafická stránka hry, která svým barevným laděním, temnou a ponurou atmosférou či hustotou interaktivních objektů dodávala noirově laděnému příběhu patřičnou hloubku. Modely postav byly zvláštní tím, že jejich pokožka nereagovala na světlo a byla pouze otexturovaná, nicméně samotná textura zvýrazňovala hrany a rysy a výběrem barev dodávala iluzi nasvětlení. Řekl bych však, že hlavním problémem grafického zpracování ústřední postavy byly právě vlasy. Ty byly součástí modelu hlavy, takže byly statické a postrádaly objem. To by ničemu nevadilo, horší byla úroveň kvality a detailu vlasové textury, která umělecký zážitek ze hry lehce snižovala.

Obrázek 5.2: Srovnání modelu s hlavním představitelem hry Deus Ex: Human Revolution (originál na [52])

Ústřední postava Adama Jensena (na obrázku 5.2) byla tvořena 25 953 polygony[47], což je zhruba devítinová zátěž našeho modelu. Je samozřejmě potřeba brát v potaz i pětiletý rozdíl mezi oběma modely a přístupnými technologiemi, nicméně už i při zběžném srovnání lze na našem modelu vyčíst jemnost vlasů a plasticitu vousů včetně reakce na světelné podněty. Podobných výsledků mohla hra dosáhnout již v době svého vydání skrze lepší otexturování a detailnější model (pokud by na vlasy hlavní postavy byl vymezen obdobný polygonový rozpočet jako u o dva roky staršího Uncharted 2, výsledek by i bez polygonových pruhů díky dodání třetího rozměru u vlasů vypadal realističtěji a celková polygonová zátěž by nepřesáhla hranici třiceti tisíc).

41 5.2.2 The Last of Us

Druhým kandidátem je hra The Last of Us [53] studia , tvůrců herní série Uncharted. Bez nadsázky lze říci, že se jedná o jednu z nejlepších her nejen roku 2013, ale také celé herní historie. K podložení těchto slov stačí výčet ocenění - BAFTA Games Award za nejlepší hru, akční adventuru, příběh, herecký výkon; Spike VGX za nejlepší hru pro Play Station, nejlepší mužský výkon, studio roku; Kerrang! Award [54] za nejlepší videohru. Její kvalita se odráží i ve velmi vysokých hodnoceních – Metacritic 95/100, Eurogamer 10/10, Game Informer 9.5/10, IGN 10/10. Chvály se dočkala také vizuální stránka hry, a to jak po grafické, tak po umělecké stránce. Ve své době byla označována jako nejlepší a nejrealističtější pro hru vytvořenou na konzoli PlayStation 3 [55, 56]. Zvláště hlavní postavy byly zpracovány velmi detailně.

Obrázek 5.3: Srovnání modelu s hlavní představitelkou hry The Last of Us (originál na [57])

Hlavní hrdinka Ellie (obrázek 5.4) je tvořena 31 537 polygony [57]. Vlasy jsou tvořeny polygonovými pásy s texturou užívající průhlednosti (varianta metod Alpha blend/test/to coverage). Ze srovnávacího výstupu je patrné, že tvůrci užili velmi detailní vlasové textury, díky které může výstup působit lehce kresebně, ale dokonale koreluje s užitým stylem grafického zpracování. Oproti našemu modelu je díky textuře dosaženo silnějšího ohraničení pramenů vlasů a přestože nejsou reálné, z uměleckého hlediska jsou odlesky výraznější a dodávají účesu zcela nový rozměr.

42 5.2.3 GTA V

Třetí srovnávanou hrou je momentálně nejaktuálnější díl série Grand Theft Auto, akční adventura GTA V [58] od tvůrčí a vydavatelské firmy a jejích přidružených studií (Rockstar North, Rockstar San Diego, Rockstar Toronto, Rockstar Leeds, Rockstar London, Rockstar New England). Stejně jako obě předchozí, i tato hra získala velmi pozitivní ohlasy (Metacritic 97/100, Eurogamer 9/10, Game Informer 9.75/10, IGN 10/10) a řadu ocenění – BAFTA Games Award za nejlepší britskou hru, design, multiplayer; Spike VGX za nejočekávanější hru, hru roku, soundtrack. Graficky je GTA V velmi zdařilým počinem, který využívá prvků realismu s lehce komixovým nádechem znatelným zejména na texturách zvýrazněných záhybů oblečení (podobné směsi využíva GTA V i v příběhu, který hráči připomíná každodenní život okořeněný přehnanými, absurdními situacemi).

Obrázek 5.4: Srovnání modelu s hlavní postavou hry (originál na [59])

Problémem, který můžeme brát také jako stylistycký podpis her od společnosti Rockstar, je forma výsledného zobrazení postav i prostředí evokující jistou úroveň umělosti, která se projevuje také na výsledném vzhledu vlasů. Na přiloženém obrázku vlevo dole za naším modelem můžeme vidět, že vlasy jsou samostatným objektem, který lze v závislosti na hráčových rozhodnutích změnit. Proto je záhadou nevyužitý potenciál při tvorbě vlasů viditelný nejen v relativně nízké, leč stále dostačující polygonové kvalitě objektu, ale zejména v nízké a prameny nespecifikující textuře. Místy modely vyvolávají dojem, že k zobrazení vlasů bylo užito pouze nereflektujícího jedno- barevného materiálu, což může korelovat s domnělou komixovou vizualizací. Hlavní postava Michaela De Santy (na obrázku 5.4) je tvořena 30 914 polygony [59].

43 5.2.4 Ryse: Son of Rome

Ryse: Son of Rome [60] vytvořená společností Crytek byla v době svého vývoje považována za jednu z her s největším polygonovým rozpočtem na hlavní postavu (před optimalizací byla tvořena zhruba sto padesáti tisíci polygony). I po následné redukci na přibližně osmdesát pět tisíc polygonů se jednalo o nadstandartní polygonový rozpočet, jež měl za úkol ukázat sílu konzole ONE a svým detailním zpracováním měl zaujmout i počítačové hráče. Přestože nevyhrála žádná ocenění a získala spíše průměrná hodnocení (Metacritic 60/100, Eurogamer 5/10, Game Informer 6/10, IGN 6.8/10), svým grafickým závazkům jako jedna z vlajkových lodí pro hra Ryse: Son of Rome dostála.

Obrázek 5.5: Srovnání modelu s hlavní postavou hry Ryse: Son of Rome (originál na [61])

Díky nedostatečně specifikovaným informacím nelze říci, z kolika polygonů se hlavní postava Maria Tita (na obrázku 5.5) skládá. Oficiálně se mluví o přibližně osmdesáti pěti tisících polygonech. Problém nastává ve výkladu termínu polygon při tvorbě počítačových her. Ve valné většině případů jsou polygony myšleny čtyřúhelníky, někdy se však i přes rozdílné označení mluví o trojúhelnících. Díky oficiálnímu materiálu [62] ke hře je možné, že se při zmínce o polygonech jedná o trojúhelníky místo čtyřúhelníků. V takovém případě by hlavní postava byla tvořena přibližně čtyřiceti dvěma tisíci polygony. Nezávisle na kvantitativním srovnání si lze povšimnout detailního zpracování vlasů, které je tvořeno polygony či polygonovými pruhy s průhledností skrze texturu (obdobně jako u hry The Last of Us). Všimněme si na okamžik jemnosti jednotlivých pramenů na boku hlavy. Kaskádovitým způsobem pokládání polygonů lze úspěšně docílít realistického vzhledu překrývajících se vlasů.

44 5.2.5 Herní série Metal Gear

Metal Gear Rising: Revengeance [63] a Metal Gear Solid V: Ground Zeroes [64] s naším modelem porovnáme dohromady. Obě hry byly vytvořeny studiem Kojima Productions a vydány společností Konami jako součást série Metal Gear tvůrce Hidea Kojimy. Tato série je známá především komplexitou a nelineárním vyprávěním svého příběhu či poněkud netradičním přístupem k hratelnosti během velkých soubojů (v případě prvního dílu Metal Gear Solid se například jednalo o přepojení ovladače do jiného konzolového portu). Srovnáním obou her během jedné podkapitoly můžeme zároveň nahlédnout na více metod grafického zpracování vytvořených stejným studiem.

Obrázek 5.6: Model hlavní postavy hry Metal Gear Rising: Revengeance a srovnání s modelem (originál na [65])

45 Metal Gear Rising: Revengeance (Metacritic 80/100, Eurogamer 9/10, Game Informer 7.75/10, IGN 8.5/10) je hra zaměřená na bojový aspekt celé série, jedná se o lineární akční hack and slash hru. Díky omezenému hernímu prostředí má postava Raidena (na obrázku 5.6) oproti ostatním dílům poměrně bohatý polygonální rozpočet – 68 016 trojúhelníků, tedy přibližně třicet čtyři tisíc polygonů (zdroj pro ověření k nalezení na hypertextovém odkazu u přiloženého obrázku), které využívá k detailnímu zpracování a zobrazení základního modelu. Dle skladby a výsledného zobrazení lze usoudit, že vlasy jsou kombinací klasického modelu s polygonovými pruhy.

Obrázek 5.7: Srovnání modelu s hlavní postavou hry Metal Gear Solid V: Ground Zeroes (originál na [66])

Metal Gear Solid V: Ground Zeroes (Metacritic 75/100, Eurogamer 9/10, Game Informer 7.0/10, IGN 8.0/10) je naopak hra s otevřeným herním prostředím zabývající se především taktickou a špionážní stránkou série, ústřední postava Snake/Big Boss (obrázek 5.7) je tedy polygonálně levnější, na všeobecné poměry dokonce střídmá – pouhých 18 210 polygonů [59]. Pro zobrazení detailu užívá model kombinaci světla a klasických/modifikačních textur. I zde dokážeme rozeznat polygonové pruhy s průhledností skrze texturu.

V obou případech lze říci, že přes svou nízkou či průměrnou kvantitativní hodnotu tyto hry dosahují vysoké grafické kvality. Důvodem je cit pro detail ve fázi aplikace textur a vhodných metod post-processingu [67] (především různé úrovně rozmazání). Tímto způsobem dokáže studio Kojima productions skrýt nedostatky svých nízkopolygonálních modelů (vhodnými normálovými a displacement texturami lze zjemnit hrany modelu, dalšího zjemnění je dosaženo rozmazáním). Místy tyto nedostatky (zvláště hranatost a zubatost vlasů hrdiny obrázku 5.7) lze detekovat, nicméně na první pohled patrné nejsou.

46 5.2.6 Dragon Age: Inquisition

Sedmou hrou na našem seznamu je Dragon Age: Inquisition [68] (Metacritic 85/100, Eurogamer 8/10, Games Informer 9.5/10, IGN 8.8/10) od herního studia Bioware. Tito vývojáři mají za sebou několik úspěšných hermích sérií se zaměřením na tvorbu a vývoj vlastní postavy (RPG), mezi nejznámější krom Dragon Age patří mimo jiné Baldur's Gate, Neverwinter Nights či Mass Effect. Jejich znalosti a zkušenosti proto hře Dragon Age: Inquisition přinesly několik ocenění (The Game Award [69] za nejlepší RPG a hru roku, GLAAD Media Award [70] – zvláštní uznání). Dvě desetiletí v popředí herního designu se projevily i na pohádkově laděném vizuálu a velmi pokročilé tvorbě herní postavy (jak graficky, tak variabilitou).

Obrázek 5.8: Srovnání modelu s tvorbou postavy ve hře Dragon Age: Inquisition (originál na [71])

Celkový dojem na jinak skvěle vytvořeném modelu bohužel kazí právě vlasy. Z obrázku lze vyčíst, že se jedná o polygonální pruhy aplikované na model hlavy s texturou vlasů. Rozdíl mezi texturou na hlavě a pruzích je barevně zřetelný, překrytí hlavy polygonovými pruhy je poměrně odbyté. Zalomení vlasů viditelné na účesu vlevo nahoře je nepřirozené, společně s pravou části ukazuje nedokonalosti v podobě hranatosti a zubatosti způsobené nedostatečným detailem objektů. Slabá kvalita vlasové textury tyto nedokonalosti o to více zvýrazňuje.

47 5.2.7 The Order: 1886

Titulem The Order: 1886 [72] se dostáváme ke hrám dosahujícím či přesahujícím hranice sta tisíc polygonů. Můžeme tedy očekávat velký posun v grafickém zpracování. A The Order: 1886 studií Ready at Dawn a SCE je pro to dobrým odrazovým můstkem. Přes smíšená a průměrná hodnocení (Metacritic 63/100, Eurogamer bez hodnocení, Game Informer 7.75/10, IGN 6.5/10) se většina herních kritiků shodla, že silnou stránkou hry je její atmosféra silně podpořena velmi kvalitním grafickým zpracováním.

Obrázek 5.9: Srovnání modelu s hlavní postavou hry The Order: 1886 (originál na [73])

Z přiloženého obrázku 5.9 to v rámci velikosti a rozlišení není patrné, ale podíváme-li se na originál, uvidíme hlavně na vlasech kolem ucha a vzadu na hlavě, že jsou opět vytvořeny skrze kombinaci modelu hlavy a polygonových pruhů. Při tvorbě vlasových textur dle mého názoru došlo buď k použití nízkého rozlišení, nebo špatné metodě nastavení průhlednosti (pravděpodobně Alpha test), protože jednotlivé vlasy jsou velmi zubaté. Protože jsme se díky roku vydání a překročení sta tisíc polygonů přiblížili kvalitám našeho modelu, podívejme se na něj zblízka. Na rozdíl od hlavního protagonisty hry The Order:1886 nemá naše postava zubaté konečky. Díky užití shaderu místo textury nemůže dojít k nízkému rozlišení na jednotlivých pramenech (v případě užití textury na našem modelu by ona nesla pouze informaci o barvě a celkové viditelnosti/průhlednosti). Jak jsme si ukázali v podkapitole 3.5.3 Kombinace, můžeme nastavit jemnost či tvrdost vlasů, čímž dokážeme případnou zubatost zjemnit či vizuálně zcela eliminovat.

48 5.2.8 Final Fantasy XV

Nejnovějším vydaným titulem našeho Top Ten seznamu je dosud poslední díl herní série Final Fantasy. Final Fantasy XV [74] vývojářů Square Enix, XPEC Entertainment, HexaDrive, Umbra a Streamline Studios byl vydán 29. listopadu roku 2016 a v době sepisování této práce není na trhu ani šest měsíců. Tato akční RPG adventura žádná ocenění dosud nezískala, ale stihla sesbírat velmi kladná hodnocení (Metacritic 82/100, Game Informer 8.5/10, IGN 8.2/10). Dá se říci, že po grafické stránce patří série Final Fantasy mezi to nejlepší, co může východní herní průmysl světu nabídnout.

Obrázek 5.10: Srovnání modelu s jednou z hlavních postav hry Final Fantasy XV (originál na [75])

Moderní asijská grafická kultura (komix, animovaný film, hra) se u postav vyznačuje jemnými rysy a extravagantními účesy. Proto nemůžeme očekávat realistický výstup, ale můžeme se podívat na realistickou formu texturového a materiálového zpracování. Videorecenze [76] demoverze hry ukazuje v čase 4:49 průsvitnost vlasového materiálu proti světelným paprskům, což je oproti dosavadním hrám na našem seznamu příjemná změna, je tomu tak ovšem pouze u hlavního hrdiny. Jedním z důvodů, proč je Final Fantasy XV svým fyzikálním zobrazením omezena pouze na hratelnou postavu, je více způsobů tvorby vlasů. Vlasy hrdiny jsou tvořeny metodou Hair strands (kvůli nedostatku dosavadních informací nelze určit, zda se jedná o Tress FX, NVIDIA Hairworks či interní systém), ostatní postavy užívají převážně polygonové pruhy s texturou (vizme hrdinu veprostřed obrázku 5.10). Ty světlo fyzikálně nepropouští a užitá textura převážně v přední části účesu vyvolává dojem umělosti, což v kontrastu s účesem tvořeným hair strands působí nelichotivě, zvlášť při vymezení dvaceti tisíc polygonů na účes. Jedním z důvodů této volby může být již zmíněná grafická náročnost hair strands.

49 5.2.9 Star Citizen

Posledním příspěvkem pro srovnání je stále vyvíjený vesmírný simulátor Star Citizen [77] od vývojářského studia Cloud Imperium Games. Jeho zajímavostí je, že je zcela financován fanoušky hry a celkový rozpočet ke konci roku 2016 přesahuje 140 milionů amerických dolarů. Díky tomu mohou tvůrci užívat unikátních metod modelování (u postav se jedná o detailní skeny hlav, u kterých dle slov tvůrců lze měnit jednotlivé prvky – oči, uši, nos – nezávisle na pleti [78]). Tvůrce videa zároveň poznamenává, že vývojáři momentálně nemají vyřešenu metodu realistického zobrazení vlasů. Z následujícího obrázku se lze přesvědčit, že vlasy u postav jsou momentálně výsledkem skenování postavy a přidání textury.

Obrázek 5.11: Srovnání modelu s jednou z hlavních postav hry Star Citizen (originál na [79])

Vlasy i vousy mají díky skenu poměrně realistický vzhled, ale postrádají plasticitu. Nutno znovu podotknout, že se jedná o hru ve vývoji a zobrazení vlasů není dosud vyřešeno. Dovedu si však představit, že hra využívající realistických skenů a lodí o celkové kvantitativní hodnotě několika milionů polygonů využije metody, kterou dosáhne nejlepších výsledků. Pokud navíc upřednostňuje hráčovu svobodu, mohla by užít variabilního systému účesů, který by mohl fungovat podobným způsobem jako ten, který jsem v této práci popsal.

50 5.3 Anketa

V rámci kvalitativního srovnání byla vytvořena anketa, kterou vyplnilo 35 respondentů. Jednalo se o muže (23) a ženy (12) převážně ve věku 20 – 30 let (33 z 35 dotazovaných) s různou zkušeností ohledně hraní počítačových her (5 častých hráčů, 13 občasných hráčů, 12 příležitostných hráčů a 5 lidí, kteří hry nehrají). Těm bylo prvně předloženo několik otázek ohledně spokojenosti a požadavků na grafické zpracování a volnost při tvorbě herních postav. Na otázku „Jste spokojeni s výběrem a zpracováním účesů v počítačových hrách/hrách s možností tvorby vlastní postavy?“ odpovědělo 11 respondentů kladně, 8 záporně, 5 v závislosti na hře, 7 lidí problematiku neřeší a 4 dotazovaní se zdrželi odpovědi. U otázky „Chtěli byste mít ve hře možnost tvorby vlastních účesů?“ se 14 dotazovaných vyjádřilo kladně, 4 záporně, 4 respondenti nejsou rozhodnuti, 10 z nich je to jedno a 3 lidé neodpověděli. Poslední otázka „Chtěli byste ve hrách podporu růstu vlasů?“ získala 18 kladných hlasů, 2 záporné hlasy, 5 nerozhodných hlasů, 8 respondentům je to jedno a neodpověděli 2 lidé. Následně všichni dotazovaní odpovídali na deset otázek týkajících se srovnání z hlediska zpracování vlasů. Zohledněn byl především detail, komplexita, realistické zobrazení a celkový dojem. Hry byly v této sérii otázek srovnávány s výstupem programu Blender.

Srovnávaná hra Hlasů pro hru Hlasů pro metodu Deus Ex: Human Revolution 18 17 The Last of Us 22 13 GTA V 9 26 Ryse: Son of Rome 27 8 Metal Gear Solid V: Ground Zeroes 12 23 Dragon Age: Inquisition 11 24 The Order: 1886 16 19 Final Fantasy XV 10 25 Star Citizen 22 13 Metal Gear Rising: Revengeance 19 16

Posledních deset otázek bylo koncipováno stejně jako předešlá série, hry byly ovšem srovnány s texturovým výstupem zpracovaném v Unreal Engine 4. Cílem bylo zjistit, zda i ve své základní a specifickými materiály neupravené formě může testovaná metoda konkurovat metodám běžně užívaným v počítačových hrách

Srovnávaná hra Hlasů pro hru Hlasů pro metodu Deus Ex: Human Revolution 23 12 The Last of Us 24 11 GTA V 9 26 Ryse: Son of Rome 25 10 Metal Gear Solid V: Ground Zeroes 14 21 Dragon Age: Inquisition 15 20 The Order: 1886 21 14 Final Fantasy XV 16 19 Star Citizen 23 12 Metal Gear Rising: Revengeance 20 15

Anketa je dostupná na stránce https://surveynuts.com/surveys/admin?id=137473 (login [email protected], heslo a73eabbecf) nebo v elektronické příloze ve formátech ODF a XLS.

51 6 Závěr

Tato práce především zastává funkci dokumentace prototypu HerrHair, systému pro dynamickou a variabilní tvorbu účesů. Zobrazuje proces jeho tvorby a výhody vůči zavedeným principům v herním průmyslu. Srovnává jej s aktuálně datovanými AAA tituly, které byly v době svého vydání oficiálně oceněny či považovány za vrchol grafického zpracování. Budoucím vývojářům může posloužit jako základní kámen či bod, od kterého se mohou odrazit. Testem poklesu snímků za vteřinu bylo prokázáno, že metoda je v reálném čase plně využitelná. Výsledky ankety, které se zúčastnilo 35 respondentů, dokazují využitelnost vytvořené metody v herním průmyslu. Základní a specifickými materiály neupravený výstup v jejich hodnocení zvítězil nad čtyřmi srovnávanými hrami, po užití realistických shaderů úspěšně předčil pět z deseti her. Dle dotazovaných je tedy metoda konkurenceschopná mezi komerčně úspěšnými tituly. Anketa také dokumentuje požadavky podpory růstu vlasů a tvorby vlastních účesů, které je metoda díky své interní stavbě schopna splnit.

6.1 Na začátku cesty...

V době vydání práce byl daný systém ve vývoji pouze několik měsíců, aktuální iterace se formou tvorby či grafického výstupu může lišit. I přes zdařilé a kvalitní výsledky je systém prakticky na začátku svého vývoje a cílový produkt by měl splňovat následující body:

• správná forma optimalizace modelu vlasů (polygonální redukce) • úprava kódu do na Blenderu nezávislé verze • připojení pluginu na přesné a uživatelsky přívětivé ovládání směru růstu vlasů • vyladění shaderu po všech fyzikálních stránkách • možnost nastavení typu vlasů dle LOIS nebo FIA klasifikace [79] • plná podpora tvorby a růstu kudrnatých vlasů • realistické fyzikální simulace aplikované na jednotlivé prameny

I bez splnění těchto podmínek však lze prototyp úspěšně použít pro vývoj her či tvorbu videí. Již v této iteraci dokáže v mnoha ohledech předstihnout mnohé zavedené a užívané postupy, po jeho finalizaci se s trochou štěstí snad stane jedním z milníků ve vývoji dynamiky a variability tvorby herních účesů. Na závěr předkládám poslední náhled aktuální verze v plné velikosti.

52 53 Literatura

[1] DU MONT ALLEN B LAB INC, 1948. Cathode-ray tube amusement device. Inventors: Thomas T. GOLDSMITH Jr. a Estle Ray MANN. United States of America. US 2455992 A. 14. 12.

[2] WILKES, M. V. a RENWICK, W., 1950. The EDSAC (Electronic delay storage automatic calculator). Mathematics of Computation [online]. 4(30), 61-65 [cit. 6. 1. 2017]. ISSN 1088-6842. Dostupné z: doi:10.1090/s0025-5718-1950-0037589-7

[3] OXO, 2016 [online]. Wikipedia. Poslední změna 29. 12. 2016 15:17 [cit. 6. 1. 2017]. Dostupné z: https://en.wikipedia.org/wiki/OXO

[4] Atari 2600 History, 2017 [online]. AtariAge. [cit. 6. 1. 2017]. Dostupné z: www.atariage.com/2600/

[5] The MOS 6502 and the Best Layout Guy in the World, 2011 [online]. swtch.com. [cit. 6. 1. 2017]. Dostupné z: https://research.swtch.com/6502

[6] Motorola 6800 microprocessor family, 2016 [online]. CPU-World. Poslední změna 13. 12. 2016 [cit. 6. 1. 2017]. Dostupné z: www.cpu-world.com/CPUs/6800/

[7] Pitfall!, 2017 [online]. AtariAge. [cit. 6. 1. 2017]. Dostupné z: www.atariage.com/software_page.html?SoftwareLabelID=360

[8] Magnavox Odyssey2 \ Philips Videopac, 2016 [online]. Console Library. [cit. 6. 1. 2017]. Dostupné z: www.videogameconsolelibrary.com/pg70-odyssey2.htm

[9] GCE Vectrex, 2016 [online]. Video Game Console Library. [cit. 6. 1. 2017]. Dostupné z: www.videogameconsolelibrary.com/pg80-vectrex.htm

[10] SG-1000, 2016 [online]. Sega Retro. Poslední změna 8. 12. 2016 12:48 [cit. 6. 1. 2017]. Dostupné z: www.segaretro.org/SG-1000

[11] Nintendo Entertainment System, 2016 [online]. Giant Bomb. Poslední změna 3. 6. 2016 13:57 [cit. 6. 1. 2017]. Dostupné z: www.giantbomb.com/nintendo-entertainment- system/3045-21/

[12] Donkey Kong, 2011 [online]. RetroGames.cz. [cit. 6. 1. 2017]. Dostupné z www.retrogames.cz/recenze_001.php

[13] Super Mario Bros., 2011 [online]. RetroGames.cz. [cit. 6. 1. 2017]. Dostupné z: www.retrogames.cz/recenze_005.php

[14] TIŠNOVSKÝ, Pavel, 2011. Historie vývoje počítačových her (8.část – nejznámější hry vytvořené pro herní konzoli Atari 2600). In: Root.cz [online]. 29. 12. [cit. 6. 1. 2017]. Dostupné z: https://www.root.cz/clanky/historie-vyvoje-pocitacovych-her-8-cast- nejznamejsi-hry-vytvorene-pro-herni-konzoli-atari-2600/?ic=serial-box&icc=text-title [15] TIŠNOVSKÝ, Pavel, 2012. Historie vývoje počítačových her (24.část – hry pro konzoli NES). In: Root.cz [online]. 26. 4. [cit. 6. 1. 2017]. Dostupné z: https://www.root.cz/clanky/historie-vyvoje-pocitacovych-her-24-cast-hry-pro- konzoli-nes/?ic=serial-box&icc=text-title

[16] Sonic the Hedgehog, 2017 [online]. GameSpot. [cit. 6. 1. 2017]. Dostupné z: www..com/genesis/454495-sonic-the-hedgehog/index.html

[17] TIŠNOVSKÝ, Pavel, 2012. Historie vývoje počítačových her (22.část – hry pro konzoli Sega Master System). In: Root.cz [online]. 12. 4. [cit. 6. 1. 2017]. Dostupné z: https://www.root.cz/clanky/historie-vyvoje-pocitacovych-her-22-cast-hry-pro- konzoli-sega-master-system/?ic=serial-box&icc=text-title

[18] Recenze hry: The Curse of Monkey Island, 2008 [online]. Game2k. [cit. 6. 1. 2017]. Dostupné z: www.game2k.cz/the-curse-of-monkey-island/recenze-pocitacove-hry.html? id=the_curse_of_monkey_island_pc

[19] Polda – Oficiální web, 2016 [online]. Zima Software Games Development. [cit. 6. 1. 2017]. Dostupné z: www.polda5.cz

[20] Horké léto, 2016 [online]. Česká Databáze Her. [cit. 6. 1. 2017]. Dostupné z: www.cdh.cz/pc/Horke-leto-13978/

[21] SMITH, Graham, 2016. Have You Played... The Curse Of Monkey Island? In: Rock Paper Shotgun [online]. 5. 11. [cit. 6. 1. 2017]. Dostupné z: https://www.rockpapershotgun.com/2016/11/05/have-you-played-the-curse-of- monkey-island/

[22] Duke Nukem 3D, 2016 [online]. 3D Realms. [cit. 6. 1. 2017]. Dostupné z: https://3drealms.com/catalog/duke-nukem-3d_27/

[23] Salieri Crime Family, 2016 [online]. Mafia Wiki. [cit. 6. 1. 2017]. Dostupné z: http://mafiagame.wikia.com/wiki/Salieri_Crime_Family

[24] Teodora Contanto, 2016 [online]. Assassin's Creed Wiki. [cit. 6. 1. 2017]. Dostupné z: http://it.assassinscreed.wikia.com/wiki/Teodora_Contanto

[25] Real-time game characters, 2017 [online]. Pinterest. [cit. 6. 1. 2017]. Dostupné z: https://cz.pinterest.com/anderliza/real-time-game-characters/

[26] Transparency map, 2015 [online]. Polycount. Poslední změna 10. 4. 2015 8:31 [cit. 6. 1. 2017]. Dostupné z: http://wiki.polycount.com/wiki/Transparency_map

[27] Tessellation Stages, 2017 [online]. Microsoft. [cit. 6. 1. 2017]. Dostupné z: https://msdn.microsoft.com/en-us/library/ff476340(v=VS.85).aspx

[28] NVIDIA HairWorks, 2017 [online]. NVIDIA Corporation. [cit. 6. 1. 2017]. Dostupné z: https://developer.nvidia.com/hairworks

[29] WEISSTEIN, Eric W., 2017. Bézier Curve. In: MathWorld [online]. [cit. 6. 1. 2017] Dostupné z: http://mathworld.wolfram.com/BezierCurve.html [30] Particles – Introduction, 2017 [online]. Blender Foundation. [cit. 6. 1. 2017]. Dostupné z: https://www.blender.org/manual/physics/particles/introduction.html

[31] On vs Off! Nvidia HairWorks The Witcher 3 Wild Hunt Gameplay at Maximum Graphical Settings PC 1080p, 2015 [online]. YouTube. [cit. 6. 1. 2017]. Dostupné z: https://www.youtube.com/watch?v=tB2RcvWRh40&feature=youtu.be

[32] Using NVIDIA HairWorks, 2016 [online]. NVIDIA Corporation. [cit. 6. 1. 2017]. Dostupné z: http://docs.nvidia.com/gameworks/content/artisttools/hairworks/ Using_HairWorks.html

[33] CROSSLEY, Rob, 2015. DirectX 12 Can Render “up to 12 Times More Polygons“ Than DX11. In: GameSpot [online]. 1. 5. [cit. 6. 1. 2017]. Dostupné z: http://www.gamespot.com/articles/directx-12-can-render-up-to-12-times-more- polygons/1100-6427026/

[34] PAPADOPOULOS, John, 2015. Dawn Engine – First Screenshots Revealed Showcasing AMD's TressFX 3.0. In: Dark Side Of Gaming [online]. 17. 5. [cit. 6. 1. 2017]. Dostupné z: http://www.dsogaming.com/screenshot-news/dawn-engine-first-screenshots- revealed-showcasing-amds-tressfx-3-0/

[35] KRANICH, Jan, 1925. Přehledy věd přírodních. Dílu I, část 1. Tělověda-zoologie-botanika [online]. Olomouc: Nakladatelství R. Prombergra. [cit. 6. 1. 2017]. Dostupné z: http://kramerius4.nkp.cz/search/i.jsp?pid=uuid:bc7b36c0-8c0a-11e3-8031- 001018b5eb5c

[36] RUSSELL, Eddie, 2015. Elliminate Texture Confusion: Bump, Normal and Displacement Maps. In: Digital-Tutors [online]. [cit. 6. 1. 2017]. Dostupné z: blog.digitaltutors.com/bump-normal-and-displacement-maps/

[37] 3ds max Bend Modifier, 2006 [online]. YouTube. [cit. 6. 1. 2017]. Dostupné z: https://www.youtube.com/watch?v=RxSvh7Mwtyw

[38] DUNBAR, Daniel, ROOSENDAAL, Ton, BATT, Ben, LOMMEL, Brecht van a BARTON, Campbell, 2005. MOD_displace.c. In: Blender Foundation [online]. [cit. 6. 1. 2017]. Dostupné z: https://developer.blender.org/diffusion/B/browse/master/source/blender/ modifiers/intern/MOD_displace.c;7dc328e8a1cea0f1ea0b8848a38ce7521401ca8b$196

[39] MASTERS, Mark, 2014. Understanding Subsurface Scattering – Capturing the Appearance of Translucent Materials. In: Digital-Tutors [online]. [cit. 6. 1. 2017]. Dostupné z: blog.digitaltutors.com/understanding-subsurface-scattering-capturing- appearance-translucent-materials/

[40] What are normal, tangent and binormal vectors and how are they used?, 2014 [online]. Game Development. [cit. 6. 1. 2017] Dostupné z: http://gamedev.stackexchange.com/questions/51399/what-are-normal-tangent- and-binormal-vectors-and-how-are-they-used

[41] Mix Node, 2017 [online]. Blender Foundation. [cit. 6. 1. 2017]. Dostupné z: https://www.blender.org/manual/render/cycles/nodes/types/shaders/mix.html [42] Add Node, 2017 [online]. Blender Foundation. [cit. 6. 1. 2017]. Dostupné z: https://www.blender.org/manual/render/cycles/nodes/types/shaders/add.html

[43] Unreal Engine, 2017 [online]. Epic Games. [cit. 13. 5. 2017]. Dostupné z: https://www.unrealengine.com/what-is-unreal-engine-4

[44] Render Baking, 2017 [online]. Blender Foundation. [cit. 13. 5. 2017]. Dostupné z: https://docs.blender.org/manual/es/dev/render/blender_render/bake.html

[45] PIRZADA, Usman, 2013. Ryse Polygon Count Comparison with Other AAA Titles – Star Citizen, Crysis 3 and More. In: wccftech [online]. 28. 9. [cit. 6. 1. 2017]. Dostupné z: http://wccftech.com/ryse-polygon-count-comparision-aaa-titles-crysis-star- citizen/

[46] Polycounts in next gen games thread!, 2014 [online]. Polycount. [cit. 6. 1. 2017]. Dostupné z: http://polycount.com/discussion/141061/polycounts-in-next-gen-games-thread

[47] Metal Gear Solid V Graphics Discussion Thread, 2014 [online]. Metal Gear Solid Forums. Poslední změna 22. 11. 2015 [cit. 6. 1. 2017] Dostupné z: http://mgsforums.com/topic/7695350/60/

[48] ZHANG, Hansong, 1998. Effective Occlusion Culling for the Interactive Display of Arbitrary Models. Disertační práce. UNC-Chapel Hill. Department of Computer Science.

[49] KALIŠ, Karel, 2011. Deus Ex: Human Revolution – nářez jako zastrara (recenze). In: Doupě.cz [online]. 26. 8. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/deus-ex-human-revolution--narez-jako-zastara-recenze

[50] , 2017 [online]. Wikipedia. Poslední změna 4. 1. 2017 22:39 [cit. 7. 1. 2017]. Dostupné z: https://en.wikipedia.org/wiki/Spike_Video_Game_Awards

[51] British Academy Games Awards, 2016 [online]. Wikipedia. Poslední změna 3. 8. 2016 10:38 [cit. 7. 1. 2017]. Dostupné z:https://en.wikipedia.org/wiki/British_Academy_Games_Awards

[52] Deus-ex-human-revolution-adam-jensen.jpg, 2016 [online]. Fandom. [cit. 7. 1. 2017]. Dostupné z: http://massfanon.wikia.com/wiki/File:Deus-ex-human-revolution-adam- jensen.jpg

[53] MALIAROV, Michal, 2013. The Last of Us – když hra potká film (recenze). In: Doupě.cz [online]. 7. 6. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/the-last-of-us—kdyz-hra-potka-film-recenze

[54] Kerrang! Awards, 2016 [online]. Wikipedia. Poslední změna 1. 11. 2016 16:41 [cit. 7. 1. 2017]. Dostupné z: https://en.wikipedia.org/wiki/Kerrang!_Awards

[55] HELGESON, Matt, 2013. The Last of Us. In: Game Informer [online]. 5. 6. [cit. 7. 1. 2017]. Dostupné z: www.gameinformer.com/games/the_last_of_us/b/ps3/archive/2013/06/05/the- last-of-us-review-naughty-dogs-grim-masterpiece.aspx

[56] MORIARTY, Colin, 2013. The Last of Us review. In: IGN [online]. 5. 6. [cit. 7. 1. 2017]. Dostupné z: www..com/articles/2013/06/05/the-last-of-us-review [57] “Yes, but how many polygons?“ An artist blog entry with interesting numbers, 2007 [online]. Beyond3D. Poslední změna 24. 12. 2016 [cit. 7. 1. 2017]. Dostupné z: https://forum.beyond3d.com/threads/yes-but-how-many-polygons-an-artist- blog-entry-with-interesting-numbers.39321/page-84

[58] MALIAROV, Michal, 2013. Grand Theft Auto V: sandbox šitý na míru (recenze). In: Doupě.cz [online]. 17. 9. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/grand-theft-auto-v-sandbox-sity-na-miru-recenze

[59] “Yes, but how many polygons?“ An artist blog entry with interesting numbers, 2007 [online]. Beyond3D. Poslední změna 24. 12. 2016 [cit. 7. 1. 2017]. Dostupné z: https://forum.beyond3d.com/threads/yes-but-how-many-polygons-an-artist- blog-entry-with-interesting-numbers.39321/page-83

[60] MALIAROV, Michal, 2013. Akční rubačka Ryse se bude hrát sama, ovladač nepotřebujete. In: Doupě.cz [online]. 14. 6. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/akcni-rubacka-ryse-se-bude-hrat-sama-ovladac- nepotrebujete

[61] FAILES, Ian, 2014. The tech of Crytek's Ryse: Son of Rome. In: fxguide.com [online]. 20. 3. [cit. 7. 1. 2017]. Dostupné z: https://www.fxguide.com/featured/the-tech-of-cryteks-ryse- son-of-rome/

[62] IMTIAZ, Khurram, 2013. Ryse downgrade officially confirmed by Crytek CEO. In: GearNuke [online]. 27. 9. [cit. 7. 1. 2017]. Dostupné z: gearnuke.com/ryse-downgrade-officially-confirmed-crytek-ceo/

[63] BAUM, Petr, 2013. Metal Gear Rising: Revengeance – poctivá japonská řezničina (recenze). In Doupě.cz [online]. 29. 3. [cit 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/metal-gear-rising-revengeance--poctiva-japonska- reznicina-recenze

[64] MALIAROV, Michal, 2014. Metal Gear Solid V: Ground Zeroes – demo za všechny prachy (recenze). In: Doupě.cz [online]. 29. 3. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/metal-gear-solid-v-ground-zeroes--demo-za-vsechny- prachy-recenze

[65] negotiated study 1 – beginning the project, 2013 [online]. WordPress.com. Poslední změna 23. 10. 2013 [cit. 7. 1. 2017]. Dostupné z: https://tullimation.wordpress.com/2013/10/23/negotiated-study-1-beginning- the-project/

[66] BROWN, Peter, 2014. Kept you waiting, huh? In: GameSpot [online]. 18. 3. [cit. 7. 1. 2017]. Dostupné z: http://www.gamespot.com/reviews/metal-gear-solid-5-ground-zeroes- review/1900-6415701/

[67] Video post-processing, 2016 [online]. Wikipedia. Poslední změna 9. 9. 2016 21:38 [cit. 7. 1. 2017]. Dostupné z: https://en.wikipedia.org/wiki/Video_post-processing

[68] MALIAROV, Michal, 2014. Dragon Age: Inquisition – veď je nebo zemři (recenze). In: Doupě.cz [online]. 30. 11. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/dragon-age-inquisition--ved-je-nebo-zemri-recenze [69] , 2016 [online]. Wikipedia. Poslední změna 29. 12. 2016 5:56 [cit. 7. 1. 2017]. Dostupné z: https://en.wikipedia.org/wiki/The_Game_Awards

[70] GLAAD Media Award, 2017 [online]. Wikipedia. Poslední změna 1. 1. 2017 21:42 [cit. 7. 1. 2017]. Dostupné z: https://en.wikipedia.org/wiki/GLAAD_Media_Award

[71] KULASINGHAM, Gajan, 2014. Dragon Age: Inquisition – Gameplay Feature: Character Creation. In: GameSpot [online]. 30. 9. [cit. 7. 1. 2017]. Dostupné z: http://www.gamespot.com/videos/dragon-age-inquisition-gameplay-feature- character-/2300-6421589/

[72] MALIAROV, Michal, 2015. The Order: 1886 – filmový film (recenze). In: Doupě.cz [online]. 19. 2. [cit. 7. 1. 2017]. Dostupné z: doupe.zive.cz/clanek/the-order-1886--filmovy-film-recenze

[73] Squadron 42 vs The Order 1886, 2016 [online]. GameSpot. Poslední změna 27. 7. 2016 [cit. 7. 1. 2017]. Dostupné z: http://www.gamespot.com/forums/system-wars-314159282/squadron-42-vs- the-order-1886-33297593/

[74] BROWN, Peter, 2016. Heavy is the head that wears the crown. In: GameSpot [online]. 28. 11. [cit. 7. 1. 2017]. Dostupné z: www.gamespot.com/reviews/final-fantasy-15-review/1900-6416579/

[75] BROWN, Peter, 2015. Final Fantasy 15 Release Date Confirmed for 2016. In: GameSpot [online]. Poslední změna 6. 8. 2015 [cit. 7. 1. 2017]. Dostupné z: http://www.gamespot.com/articles/final-fantasy-15-release-date-confirmed-for- 2016/1100-6429527/

[76] Outside Xbox, 2016. Let's Play Final Fantasy 15 – WHAT IS GOING ON (Xbox One Gameplay) [online]. Youtube. [cit. 7. 1. 2017]. Dostupné z: https://www.youtube.com/watch?v=5HB9ZLGsmJY

[77] Star Citizen, 2017 [online]. GameSpot. [cit. 7. 1. 2017]. Dostupné z: www.gamespot.cz/star-citizen/

[78] Tactical Advance, 2016. Star Citizen » Character Creation [online]. Youtube. [cit. 7. 1. 2017]. Dostupné z: https://www.youtube.com/watch?v=AYOt2Ps7KMM

[79] The Only Hair Typing System Article You'll Ever Need, 2011 [online]. Curl Centric. [cit. 7. 1. 2017]. Dostupné z: www.curlcentric.com/hair-typing-system/ Přílohy

Elektronické přílohy:

• Displace.txt – původní kód modifikátoru Displacement • HerrHair.txt – upravený kód modifikátoru Displacement, implementační část práce • Hair.blend – soubor programu Blender obsahující shader vlasů a vousů • Skin.blend – soubor programu Blender obsahující shader jednoduché pokožky • Textures.zip – archiv užitých textur, součástí textový soubor se stručným popisem • References.zip – archiv vybraných autorských obrázků k náhledu v plné velikosti • Výsledky ankety.ods/.xls – tabulkový záznam ankety z podkapitoly 5.3 • Měření FPS.zip – grafické záznamy jednotlivých měření poklesu FPS z podkapitoly 4.4 Grafické přílohy: