MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY

Porovnání fyzikálních simulací v oblasti počítačové grafiky

BAKALÁŘSKÁ PRÁCE

Libor Materna

Brno, jaro 2014

Prohlášení

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.

Libor Materna

Vedoucí práce: Mgr. Jiří Chmelík, Ph.D.

ii

Poděkování

Na tomto místě bych velmi rád poděkoval svému vedoucímu bakalářské práce Mgr. Jiřímu Chmelíkovi, Ph.D. za jeho odborné vedení práce a cenné rady. Také bych rád poděkoval rodině a přátelům za jejich podporu.

iii

Shrnutí

Cílem této bakalářské práce je popsat druhy fyzikálních simulací, které jsou využívány v oblasti počítačové grafiky. V této práci porovnávám i některé tyto simulace v současných 3D modelovacích programech, konkrétně v Blender, Cinema 4D a Maya. Také demonstruji fyzikální prostředí používané v dnešním herním průmyslu, které používá fyziku v reálném čase.

iv

Klíčová slova:

Cinema 4D, Maya, Blender, engine, mechanika, simulace, fyzika, 3D grafika

v

Obsah

1 Úvod ...... 1 1.1 Cíl práce ...... 1 2 Fyzikální mechanika v reálném světě ...... 3 2.1 Kinematika ...... 3 2.2 Dynamika ...... 3 2.2.1 Newtonovy pohybové zákony ...... 3 2.2.2 Hybnost ...... 4 2.2.3 Mechanická práce a energie ...... 4 2.3 Gravitace ...... 5 2.4 Mechanika tuhého tělesa ...... 5 2.5 Mechanika pružných (měkkých) těles ...... 5 2.6 Mechanika tekutin ...... 5 3 Výpočet simulace fyziky v počítačové grafice ...... 7 3.1 Simulace pružných objektů ...... 7 3.1.1 Výpočet trajektorie ...... 8 3.2 Simulace tkaniny ...... 8 3.2.1 Implicitní integrace ...... 9 3.2.2 Výpočet síly ...... 9 3.3 Výpočet komplexních vlasů ...... 10 3.3.1 Dynamika jednotlivého vlasového vlákna ...... 10 3.3.2 Řídký model pro interakci několika vlasů ...... 11 3.4 Simulace tekutiny ...... 11 3.4.1 Metody simulace ...... 12 3.4.2 Metoda nastavení úrovně částic ...... 12 3.4.3 Rychlost a hybnost hladiny kapaliny ...... 12 3.5 Simulace sypkých materiálů ...... 13 3.5.1 Modelování sypkých materiálů ...... 13 3.6 Simulace kouře ...... 14 3.6.1 Vykreslení kouře...... 15

vi

3.7 Simulace ohně ...... 16 3.7.1 Implementace ohně ...... 16 3.7.2 Jednoduchý model ohně ...... 17 4 Fyzikální simulace v současných 3D modelovacích programech ...... 19 4.1 Fyzikální moduly používané v Cinema 4D R15 ...... 19 4.2 Fyzikální moduly používané v Maya 2014 ...... 20 4.3 Fyzika v Blender v2.69 ...... 21 4.4 Porovnání fyzikální simulace na příkladech ...... 21 4.4.1 Příklad s tuhými a kolizními tělesy ...... 22 4.4.2 Příklad se simulací tkaniny ...... 25 4.4.3 Příklad se simulací trávy...... 28 4.5 Shrnutí výsledků u všech příkladů ...... 29 5 Fyzikální engine ve virtuálním herním světě ...... 31 5.1 Důležité vlastnosti fyzikálních enginů ...... 31 5.1.1 Detekce kolizí ...... 31 5.1.2 Částicový systém ...... 31 5.1.3 Ragdoll fyzika ...... 32 5.2 Nejznámější fyzikální enginy ...... 32 5.2.1 CryEngine ...... 32 5.2.2 PhysX ...... 32 5.2.3 ...... 33 5.2.4 ...... 33 5.2.5 Engine ...... 33 5.2.6 Bullet ...... 34 5.2.7 ...... 34 5.3 Demonstrace CryEnginu a ...... 34 6 Závěr ...... 37 Literatura ...... 38 Přílohy ...... 42

vii

1 Úvod

Fyzika, jejíž jméno je odvozeno z řeckého slova „fysis“ (příroda), byla původně vědou o přírodě, tedy souhrnem všech přírodních věd, které se z ní průběhem staletého vývoje postupně oddělovaly. Jevy, kterými se zabývá fyzika, se nazývají fyzikální jevy. Lze je rozdělit do několika základních oblastí podle toho, do které oblasti fyzikální jev patří. Rozděluje se na tyto hlavní obory: mechanika, molekulová fyzika, termodynamika, elektřina, magnetismus, optika a atomová fyzika [1]. V mé bakalářské práci se zabývám mechanickou částí.

Simulace některých těchto fyzikálních jevů se stala užitečným prostředkem při modelování v počítačové grafice. Například pomocí Newtonových pohybových a gravitačních zákonů dokážeme simulovat dynamiku tuhých a měkkých těles (včetně detekce kolize), dynamiku tekutin nebo reálnou kinematiku. Nejčastěji je simulace využívána nejen ve vědních oborech (astronomie, geologie, meteorologie a dalších), ale i ve filmovém a herním průmyslu. Konkrétně v počítačových hrách probíhá výpočet fyzikální simulace v reálném čase, kde je složitost výpočtu poměrně důležitá vlastnost, která ovlivňuje plynulost hry a zároveň určuje míru reálného zobrazení.

1.1 Cíl práce

Ve své bakalářské práci se zabývám simulací fyzikálních mechanických jevů v nejrůznějších 3D modelovacích programech a herních aplikací. Ve druhé kapitole vysvětluji, jaké důležité vlastnosti souvisí v terminologii mechaniky. Ve třetí kapitole popisuji, jakými způsoby a vzorci se v počítačové grafice vypočítávají pružné objekty, tkaniny, vlasy, tekutiny, sypké materiály, kouř a oheň.

Ve čtvrté kapitole porovnávám některé fyzikální simulace na již existujících modelovacích programech, které tuto možnost podporují. Pro porovnávání jsem si vybral tři známé a používané modelovací programy – Maxon Cinema 4D1 R15, Autodesk Maya2 2014 a Blender3 v2.69. První dva zmiňované programy jsou pro studenty, po registraci a doložení potvrzení o studiu, volně dostupné ke stažení. Blender je bez nutnosti registrace zdarma pro každého. Pro jejich vzájemné porovnání postupně v každém programu vytvářím sadu jednoduchých animací, které testují reálnost fyzikálních jevů. Jejich postup tvorby mimo jiné i popisuji. Tyto příklady sestavuji v rámci jejich realizace v každém jednotlivém programu.

______

1. http://www.maxon.net/ 2. http://www.autodesk.com/products/autodesk-maya/overview 3. http://www.blender.org/

1

První příklad testuje simulaci tuhých těles a jejich vzájemnou kolizi, konkrétně dopad koule na sadu na sebe postavených kostiček. Druhý příklad demonstruje simulaci tkaniny a jejich odlišné chování při rozdílném počtu segmentů. Třetí a zároveň závěrečný příklad představuje rozdílnou tvorbu realisticky se chovající trávy. U experimentu poukazuji i na časovou náročnost výpočtu při přehrávání animace přímo v programu a celkové možnosti nastavení v dané situaci.

Abych znázornil simulaci fyziky i v dnešních počítačových hrách, v poslední kapitole své bakalářské práce se zaměřuji na fyzikální enginy1. Pro grafickou prezentaci simulace jsem si zvolil dva herní enginy2 – CryEngine 2 a Unity, které jsou pro profesionální a amatérské vývojáře známé a velice oblíbené.

______

1. Fyzikální engine je počítačový software, který poskytuje přibližnou simulaci určitých fyzikálních systémů pro použití ve video hrách. 2. Herní engine je nejzákladnější jádro hry, které navenek nabízí API (rozhraní pro programování aplikací) pro komunikaci s ním.

2

2 Fyzikální mechanika v reálném světě

Velká obecnost poznatků a vysoký stupeň abstrakce, které jsou pro fyziku typické, dávají možnost formulovat obecně platné zákony. Je možné nezávisle na specifických zvláštnostech jednotlivých fyzikálních oborů stanovit obecně platnou zásadu, s níž musí být v souladu fyzikální představy a zákony. Právě klasická mechanika předpokládá při formulaci svých zákonů jistý základ společný všem mechanickým pohybům [2]. Obecně se mechanika zabývá tím nejjednodušším a nejstarším studovaným fyzikálním jevem – pohybem těles v prostoru a čase s možnou změnou velikostí a tvaru těles.

Mechaniku je možno rozdělit do různorodých kritérií. Podle vztahu ke vzniku pohybu lze mechaniku rozdělit na kinematiku a dynamiku, podle působení sil na tělesa různého skupenství dělíme na mechaniku tuhých těles a hydromechaniku [1]. Mechanika se také uplatňuje u gravitace.

2.1 Kinematika

Kinematika popisuje pohyb tělesa bez ohledu na příčiny tohoto pohybu. Důležitým kinematickým pojmem je hmotný bod, kterým se může nahradit každé těleso, jehož rozměry lze vzhledem k uvažovaným vzdálenostem zanedbat. Kinematika je určena za pomocí tří veličin: dráhy, rychlosti a zrychlení.

Dráha je určena délkou trajektorie, kterou hmotný bod urazí při pohybu za určitou dobu. Rychlost hmotného bodu je určena podílem dráhy a doby pohybu hmotného bodu, tedy . Jednotkou rychlosti je , popřípadě . Pro rovnoměrný pohyb musí platit, že rychlost bude konstantní a . U nerovnoměrného pohybu hmotného bodu musí platit , kde je průměrná rychlost. Zrychlení hmotného bodu se určí podílem změny rychlosti a doby , za kterou k této změně došlo, tedy

. Pro rovnoměrně zrychlený a rovnoměrně zpomalený pohyb hmotného bodu platí,

že je konstantní, a , kde je počáteční rychlost.

Zvláštním případem rovnoměrného zrychleného pohybu je volný pád tělesa. Zrychlení volného pádu se nazývá tíhové zrychlení , kde pro rychlost a dráhu volného pádu platí

a . V neposlední řadě se kinematika zabývá i pohybem hmotného bodu po kružnici.

2.2 Dynamika

Dynamika se zabývá příčinami pohybu tělesa. Popisuje tedy pohybové zákony, hybnost, mechanickou práci a její energii.

2.2.1 Newtonovy pohybové zákony

Nejdůležitějším pojmem dynamiky je síla. Síla je vektorová fyzikální veličina, která se projevuje při vzájemném působení těles. Jednotkou síly je newton ( ). Základem dynamiky jsou tři pohybové zákony, které před více než 300 lety formuloval anglický fyzik a matematik Isaac Newton.

3

První Newtonův pohybový zákon – zákon setrvačnosti říká, že každé těleso setrvává v relativním klidu nebo v rovnoměrném přímočarém pohybu do té doby, dokud není přinuceno silovým působením jiných těles tento stav změnit.

Druhý Newtonův pohybový zákon – zákon síly pojednává o tom, že zrychlení , které poskytuje síla tělesu o hmotnosti , je přímo úměrné velikosti této síly a nepřímo

úměrné hmotnosti tělesa, tedy .

Třetí Newtonův pohybový zákon – zákon akce a reakce zdůrazňuje, že síly, kterými na sebe vzájemně působí dvě tělesa, jsou stejně velké, navzájem opačného směru, současně vznikají a zanikají a každá z nich působí na jiné tělesa.

S těmito zákony souvisí také různé tíhové síly (síla působící na těleso při svém povrchu), třecí síly (síla vznikající při pohybu tělesa po povrchu jiného tělesa), odporové síly (síla odporu vznikající při válení tělesa po pevném bodě), dostředivé síly (akce při vzájemném působení těles) a odstředivé síly (reakce při vzájemném působení těles).

2.2.2 Hybnost

Hybnost tělesa charakterizuje pohybový stav tělesa. Je určena součinem hmotnosti a rychlosti tělesa, tedy . Jednotkou hybnosti je kilogram krát metr za sekundu ( ). Součin síly a doby t, po kterou síla na těleso působí, představuje veličinu zvanou impulz síly. Označuje se jako , kde , tedy impulz síly vyjadřuje časový účinek síly. Jsou-li dvě tělesa uvedena z klidu do pohybu jen vzájemným silovým působením, zůstává součet jejich hybnosti nulový, tj. stejný jako před uvedením do pohybu, tedy . 2.2.3 Mechanická práce a energie

Mechanickou práci koná těleso, které působí na jiné těleso, přičemž ho přemisťuje po určité trajektorii. Má-li síla působící na těleso stálou velikost a rovněž směr jako přímá trajektorie, pak mechanická práce je vyjádřena vzorcem , kde je dráha, po které se těleso přemisťuje. Jednotkou mechanické práce je joule ( ). Pochopitelně síla práci nekoná, působí-li kolmo ve směru přemístěného tělesa. Fyzikální veličina, která vyjadřuje, jak rychle se určitá práce koná, je výkon. Výkon se určuje podílem vykonané práce a doby , za kterou byla vykonána, tedy . Jednotkou výkonu je watt ( ).

Energie je skalární fyzikální veličina, která bývá charakterizována jako schopnost hmoty konat práci.

Existují tři druhy mechanické energie. Tělesa zvednutá nad povrch Země mají potenciální tíhovou energii, tělesa pružně deformovatelná mají potenciální energii pružnosti a tělesa, která se pohybují, mají kinematickou energii. Těleso o hmotnosti ve výšce má vzhledem k povrchu Země potenciální tíhovou energii . Těleso o hmotnosti pohybující se rychlostí má kinematickou energii . Mírou změny mechanické energie je vykonaná mechanická práce. Mechanická energie se měří ve stejných jednotkách jako práce.

4

2.3 Gravitace

Všechna tělesa kolem nás jsou přitahována k Zemi. Příčinou tohoto jevu je gravitace, kterou působí Země na každé těleso ve svém okolí. Vzájemnou přitažlivost těles opět studoval Isaac Newton, který ze svých poznatků a pozorování sestavil Newtonův gravitační zákon, podle něhož se dva hmotné body navzájem přitahují stejně velkými gravitačními silami velikosti , kde je gravitační konstanta, jsou hmotnosti bodů a je jejich vzdálenost. Gravitační síla je mimo jiné závislá na gravitačním zrychlení . Velikost gravitačního zrychlení při povrchu Země je

, kde je hmotnost Země a je její poloměr. Nicméně teoretická střední hodnota gravitačního zrychlení na povrchu Země je předem daná hodnotou

. Při povrchu Země působí na těleso kromě gravitační síly setrvačná odstředivá síla , způsobená rotací Země. Výsledkem obou sil je tíhová síla , tedy . Tíhová síla uděluje tělesu tíhové zrychlení , jehož velikost se mírně mění se zeměpisnou šířkou místa na povrchu Země.

2.4 Mechanika tuhého tělesa

Tuhé těleso je ideální těleso, jehož tvar a objem se působením libovolně velkých sil nemění. Tuhé těleso může konat dva druhy pohybu – posuvný (translace) a otáčivý pohyb (rotace). Má-li se tuhé těleso uvést do otáčivého pohybu, musí na něj působit síla. Otáčivý účinek síly na tuhé těleso vyjadřuje fyzikální veličina zvaná moment síly vzhledem k ose otáčení, vyjádřena , kde je rameno síly a je velikost působící síly. Síly jako vektory se mohou skládat i rozkládat. Při skládání sil se nahrazují dvě nebo více sil jedinou silou o stejném pohybovém účinku. Při rozkládání síly se naopak nahrazuje jedna síla dvěma nebo více silami, opět o stejném pohybovém účinku.

2.5 Mechanika pružných (měkkých) těles

Pružná tělesa jsou taková, které mění svůj tvar, začnou-li na ně působit jiná tělesa. Taková tělesa se mohou i nemusí deformovat. Deformace tělesa dosáhne konečného stavu, když síly mezi částicemi jsou schopny odolávat vnějšímu působení. Podle Hookeova zákona platí, že při pružné deformaci je normálové napětí přímo úměrné relativnímu prodloužení. Napětí v deformaci se nazývá tenzorové napětí, které působí kolmo na normálové plošce [2].

2.6 Mechanika tekutin

Základní vlastnost kapalin je tekutost, která je způsobena vzájemnou pohyblivostí jejich částic. Při studiu tekutin se definovala ideální kapalina, kterou lze považovat za kapalinu dokonale tekutou, tzn. bez vnitřního tření, zcela nestlačitelnou. Stav tekutiny v klidu charakterizuje veličina tlak jako , kde je velikost tlakové síly a obsah plochy, na kterou síla kolmo působí. Jednotkou tlaku je pascal ( ). Podle Pascalova zákona je tlak vyvolaný vnější silou ve všech místech tekutiny stejný. Tlak vyvolaný tíhou kapalin se nazývá hydrostatický tlak. Důsledkem hydrostatického tlaku je vztlaková síla.

5

Podle Archimedova zákona velikost vztlakové síly, kterou je těleso ponořené do kapaliny nadlehčováno, se rovná tíze kapaliny stejného objemu, jako je objem ponořeného tělesa. Je-li vztlaková síla menší než tíhová síla působící na těleso, pak těleso klesá v kapalině ke dnu. Je-li větší, pak těleso stoupá v kapalině vzhůru. Jsou-li obě síly stejně velké, těleso se v kapalině vznáší. Proudění tekutiny se znázorňuje pomocí čar, kterým se říká proudnice. Pro ustálené proudění ideální kapaliny platí rovnice spojitosti toku. Při obtékání tělesa reálnou tekutinou vznikají v důsledku vnitřního tření odporové síly působení proti pohybu tělesa vzhledem k tekutině. Velikost odporové síly závisí na rozměrech a tvaru tělesa, na hustotě tekutiny a na rychlosti tělesa vzhledem k tekutině. Nejmenší odporová síla vzniká u těles proudnicového tvaru. Volný povrch kapaliny má obdobné vlastnosti jako tenká pružná blána. Na povrchu kapaliny působí povrchová síla o velikosti , kde je povrchové napětí. Kapalina, která smáčí (nesmáčí) stěny nádoby, vytváří u stěny dutý (vypuklý) povrch.

6

3 Výpočet simulace fyziky v počítačové grafice

Simulace fyziky je v počítačové grafice poměrně náročný problém. Mnoho z těchto problémů spočívá právě ve vykreslování složitých struktur, ať už pevných či nepevných objektů. Avšak použitím vhodných hybridních reprezentací a výpočtů lze dosáhnout efektivních a časově méně náročných výsledků pro řešení problémů dynamiky. Myšlenka použití počítačů pro poskytnutí interaktivní simulace dynamiky (hlavně nepevných) objektů započala již v roce 1963 se Sketchpadem (interaktivní geometrický software), na které nepřímo v roce 1979 navázalo vizuální programovací prostředí ThingLab [3]. Dnes se setkáváme se simulací fyziky ve většině 3D modelovacích programech a počítačových hrách.

Vzhledem k tomu, že se počítačová fyzika používá na širokou třídu problémů, existuje mnoho matematických výpočtů pro řešení daného problému, například výpočet přes diferenciální rovnice, numerické integrace (s využitím Monte Carlo3), parciální diferenciální rovnice nebo přes matice [4]. Všechny tyto metody (a některé další) jsou použity pro výpočet běžných fyzikálních vlastností modelovaných systémů. V této kapitole uvádím základní a používané výpočty pro simulaci pružných objektů, tkanin, komplexních vlasů, tekutin, sypkých materiálů, kouře a ohně.

3.1 Simulace pružných objektů

Simulace pružnosti je účinným způsobem pro automatické vytvoření věrohodné deformace objektu a jeho pohybu. Tyto simulace mohou být snadno provedeny technikou konečných prvků pro linearizovanou dynamiku pružnosti, které umožňující simulaci v reálném čase a jsou vhodné pro interaktivní videohry a rychlé modelování pro filmovou produkci [5]. Pro dosažení pružnosti se nejdříve vypočítá pohyb objektu pomocí fyzikálně založené Müllerově flexibilní animační technice. Objekty se automaticky rozloží do sady čtyřstěnných elementů. Následující diferenciální rovnice je řešena pomocí Eulerovy metody:

̈ ̇ ( ) , (1) kde , jsou matice hmotnosti, je matice tlumení vyjadřující vnější sílu, je poloha každého vrcholu, ̇ a ̈ jsou první a druhou derivací v závislosti na čase. a jsou matice tuhosti a původní pozice každého vrcholu na pružném objektu. V průběhu výpočtu pohybu se zaznamenávají pozice a rychlosti jednotlivých vrcholů po celou dobu změny tvaru objektu, kde tvar je v daném objektu upravován v závislosti daného času . Chceme-li omezit různé negativní efekty, jako jsou impulsivní síly v důsledku velkých posunů, definuje se interpolační funkce ( ) mezi jednotlivými deformovanými tvary. Časově proměnlivá matice tuhosti ( ) a původní pozice ( ) se pak vypočte z ( ). Při přepočítání pružného tělesa se ( ) a ( ) nahrazují do rovnice (1), respektive

̈ ̇ ( )( ( )) , (2) Tímto je získána konečná rovnice pro výpočet základní pružnosti objektu.

7

3.1.1 Výpočet trajektorie

Důležitou součástí pružnosti je chování objektu při pohybu či pádu. Tuto trajektorii lze považovat za jakýsi typ omezení. Existují především dva typy omezení – omezení z pozice nebo rotace. Pro každý bod elementu v pružném objektu, tedy pozice a rychlosti před a po změně trajektorie je ( ), ( ) nastaveno na ( ), ( ). Rozdíly v jejich posunutí jsou zastoupeny takto: ( ) ( ) ( ), ( ) ( ) ( ). Korekce těchto rozdílů se dosadí do řešení rovnice (2), tj. pro pozici a rychlosti v čase se vytváří rovnice

̃ ( ) ̃ ( ). (3)

Tato kompenzace generuje různé upravené tvary objektu. Dále se určí omezení pro rotaci pouze celého objektu, neboť kontrolovat omezení pro každý element objektu je poměrně obtížné. Předpokládejme, že každý čtyřstěnný element má svoji vlastní rotační matici. Definujeme globální matici rotace s barycentrickým bodem jako

( ) ( ∑ ( )) ∑ , (4)

kde označuje hmotnost čtyřstěnu, ( ) je ortonormalizace matice . Nechť ( ) je matice rotace po změně trajektorie, pak korekční matice pro rotaci ( ) je reprezentována rovnicí

( ) ( ) ( ) . (5)

Napodobením tvaru rovnice (3) je kompenzace trajektorie pro omezenou rotaci dána vztahem

̃ ( ) ( )( ( )), (6)

̃ ( ) ( )( ( )), kde je těžiště a jeho rychlost. Tímto jsme získali kontrolu nad deformací [6].

3.2 Simulace tkaniny

Simulace tkaniny, založené na fyzice, je formulována jako časově proměnná parciální diferenciální rovnice, která je po diskretizaci numericky řešena jako obyčejná diferenciální rovnice

̈ ( ). (1)

V této rovnici vektor a diagonální matice reprezentuje geometrický stav a rozložení hmoty tkaniny, skalární funkce vyjadřuje vnitřní energii tkaniny a popisuje další působící síly na tkaninu. Nejkritičtější síly jsou vnitřní látkové síly (jako jsou například elastické síly), které razantně působí na celkové chování tkaniny. Nicméně za normálních podmínek se látka výrazně neroztáhne kvůli své vlastní váze. To vyžaduje roztažnou sílu s vysokým koeficientem tuhosti. Zatímco smykové a ohybové koeficienty síly tuhosti závisí na simulovaném materiálu, koeficient roztažnosti je podstatně stejně velký pro všechny simulace tohoto typu. Kombinací všech sil do jedné vektorové síly , je

8

zrychlení ̈ i-té částice jednoduše vyjádřeno ̈ , kde je hmotnost i-té částice. Hmotnost diagonální matice je definována diagonálou ( ), která se jednoduše napíše jako

̈ ( ̇). (2)

3.2.1 Implicitní integrace

Vzhledem k pozici ( ) a rychlosti ̇( ) v čase je důležité stanovit novou pozici ( ) a rychlost ̇( ) v čase . Pro výpočet nového stavu se nejprve transformuje rovnice (2) do prvního řadu diferenciální rovnice, kde se definuje rychlost jako ̇. Následný zápis bude ve formě

( ) ( ) ( ). (3) ̇ ( )

Pro zjednodušenou notaci se dále definuje ( ) ( ) ( ) ( ) ( ) ( ) a síla ( ). Velikost kroku musí být dostatečně malá, aby byla zajištěna stabilita při použití této metody. Implicitní zpětná Eulerova metoda je aproximována do tvaru

( ) ( ). (4) ( ) 3.2.2 Výpočet síly

Chování tkaniny je popsáno v podmínkách skalárního potenciálu energetické funkce ( ).

Síla vyplývající z této energie je potom . Vyjádření energie jako jednu monolitickou funkci zahrnující všechny aspekty chování je z evidentního hlediska nepraktické. Lepším přístupem je rozložit do součtu rozptýlených energetických funkcí. Tedy ( ) ∑ ( ), kde každý závisí na co nejméně možných prvků . Energetická funkce je nežádoucím výchozím bodem, protože racionální tlumící funkce nemůže být odvozena z energetické funkce. Namísto toho se definuje vnitřní chování vypracováním vektorové podmínky ( ), poté se definuje související energetická funkce jako ( ) ( ) ( ), kde je konstanta tuhosti. Za předpokladu, že závisí pouze jen na několika částicích, vede k rozptýlenému vektoru síly . Každý element je vektor v . Pro každou částici závislou na , je výsledná rovnice tvaru

( ) ( ). (5)

Tento vzorec je zaklad pro výpočet, neboť definuje derivační matici . Nenulové položky jsou pro všechny dvojice a , které jsou na závislé. Element je maticí o rozměrech 3 x 3. Z rovnice (5) tedy vyplývá

( ) ( ) ( ) ( ( )). (6)

Z tohoto vzorce se snadno vypočítávají a vyvodí vnitřní síly působící na tkaniny, lze tak nasimulovat sílu v tahu a ohybu, smykovou a tlumící sílu, popřípadě časově nejnáročnější

9

detekci kolize mezi tkaninami či mezi tkaninou a jiným objektem. Tečná síla může být také aplikována, protože dokáže přiměřeně nasimulovat dynamické tření [7].

3.3 Simulace komplexních vlasů

Vlasy představují silné anizotropní dynamické vlastnosti, které vyžadují různé dynamické modelování pro jednotlivá vlákna a interakce mezi nimi. Zatímco jeden vlas může být modelován jako otevřený řetězec vyjádřený v zobecněných souřadnicích, modelování interakce mezi několika vlasy je už složitější problém. Obtíže vyplývají z počtu vlasových pramenů, jejich geometrické složitosti a souvisejících složitých fyzikálních interakcí, jako jsou kolize, stínování a statické výboje.

Dynamika dlouhých vlasů zahrnuje tři aspekty. Za prvé, individuální část vlasů se může deformovat a interagovat s vlasovou pokožkou, textilií a jinými předměty. Za druhé, počáteční účes se může i nemusí měnit již po následném pohybu hlavy a aplikování vnějších silových polí, nicméně po radikálním pohnutí musí vždy změnit tvar. Za třetí, musí existovat dynamická kolize mezi různými vlákny. Skutečný člověk může mít až přes stotisíc vlasů, proto se každý vlas může modelovat jako desítka vlasových segmentů. Vlasy se tak obvykle tvoří do shluků a vrstev.

3.3.1 Dynamika jednotlivého vlasového vlákna

Existuje několik technik vyvinutých pro modelování dynamiky jednotlivých částí vlasů, které modelují jedno vlákno jako částice spojené pevnou pružinou [8]. Každá částice má 3 stupně volnosti – přeložení a dvě úhlové rotace. Tato metoda je jednoduchá a snadná na implementaci a individuální vlas má velmi velkou pevnost v tahu. Tato vlastnost vede ke kinematické rovnici, která ale má tendenci způsobovat numerickou nestabilitu, pokud se používají velmi malé časové kroky. Při výpočtu se také musí předpokládat, že kroucení vlasového vlákna podél jeho osy není povoleno. Pokud má otočný spoj osu rotace spolu s bodem na ose vlákna, matice transformace odpovídající rotací kolem o úhel může být exponenciálně mapována na ̂ kde

̂ ̂ [ ] ̂ ( ),

a . Předpokládejme, že každý vlasový segment má otočných spojů v řetězci a každé vlákno má počáteční nulový otočný úhel ( ). Pak aktualizovaná transformace vlákna po několika rotacích nabývá tvaru

̂ ̂ ̂

( ) ( ) (1)

Dalším důležitým prvkem dynamiky vlasu je jeho úhlová rychlost, zrychlení a kolize, které jsou vyřešeny použitím různých kloubových metod nebo Lagrangeovými rovnicemi [9]. Aby bylo možné nasimulovat nepružnou kolizi mezi vlasy a lidským tělem, nesmí být mezi nimi být žádná odpudivá síla. Jakmile se vlas přiblíží dostatečně blízko k hlavě nebo trupu, jednoduše se zastaví nastavením stejné rychlosti jako je rychlost lidského těla, avšak po lidském těle se volně pohybuje nebo posouvá dále pomocí třecích sil.

10

3.3.2 Řídký model pro interakci několika vlasů

Je evidentní, že vlasové vlákna mají tendenci se spojit spolu s dalšími vlasy v jejich okolí, díky kosmetickému a statickému náboji nebo prolínáním kudrnatých vlasů. Z toho vyplývá, že pohyb každého vlákna je z největší části závislý na pohybu jiných vláken. Pro efektivní modelování toho jevu se vlasy v blízkém okolí „slepí“ a reprezentují se jako jeden pružný deformovatelný svazek vlasů. Klasické modely pro poddajná tělesa jsou popsány v metodě konečných prvků [10], nicméně tento souřadnicový systém není pro tento případ dostatečně vhodný, neboť počítá s deformací jako celku. Proto je důležité zavést lokání souřadný systém pro každý vlasový segment a najít pro něj sérii nejbližších bodů na nedalekých vláknech a označit je jako referenční body. Jakmile mají vlákna relativní pohyb, lokální souřadnice změní referenční body a vnější sily začnou působit na tyto vlákna, které budou obnovovat jejich vzájemnou polohu.

Výhodou použití lokálních souřadnic je eliminace nepotřebného ohybu. Pokud jeden segmentový vlas má referenčních bodů, potom počáteční lokální souřadnice těchto referenčních bodů je reprezentována jako , , přičemž jejich nové lokální souřadnice jsou reprezentovány jako , . Nahromaděné síly v tomto segmentu, jako je například i pružinová síla vlákna, se získávají v důsledku statických vazeb a mohou být formulovány jako

∑ [ | | ] , (2) | | | |

kde je pružinová tuhost pro i-tý referenční bod segmentu a je univerzální tlumící konstanta. Jelikož je klidová délka v tomto případě rovna nule, | | je vynásobeno přímo s . je naopak derivát času . Vlasy také vykazují silné anizotropní dynamické vlastnosti. V závislosti na pronikajících vlasech se odpuzující pružinová síla může lišit. Měřítko odpuzující pružinové síly se nastavuje v následujícím vzorci

( | |) , (3) kde je zmenšená původní pružinová síla, je normalizovaný tečný vektor vlasů, je interpolovaná orientace vlasů a je měřítko. Pokud jsou a jsou dokonale vyrovnány, zmenšená síla nabývá nulové hodnoty. Naopak pokud jsou kolmé, pružinová síla nabývá své maximální hodnoty [11].

3.4 Simulace tekutiny

V počítačové grafice je fotorealistická vizualizace nutná k docílení reálného pohledu chování a iluzi vody. V některých ohledech je voda snadno tvarující materiál, protože na rozdíl od jiných běžných materiálů jsou její optické vlastnosti v dnešní době snadno matematicky popsány. Nicméně u vody vznikají situace, kdy jsou objekty osvětleny prostřednictvím refrakčních ploch, které se obtížně řeší. Nicméně nejpoužívanější vykreslovací algoritmy ignorují tento druh osvětlení, nebo se alespoň snaží o jeho jednoduché přiblížení. Pro grafické modelování vodního jevu se v prvotních fázích používaly parametrické reprezentace [12] a Fourierovy syntetické metody [13], které se pokoušely o ztvárnění reálného chování vln včetně změny chovaní v závislosti na hloubce vody. Za účelem získání vodního modelu se vědci obrátili k použití 2D

11

aproximace na kompletní 3D Navier-Stokesovu rovnici, která má za následek simulaci komplexních vodních efektů s realistickou animací kapalin.

3.4.1 Metody simulace

V roce 2001 se objem kapaliny převážně definoval jako simulace pomocí izokontní implicitní funkce . Hladina vody byla definována hodnotou , kde reprezentuje vodu a reprezentuje vzduch. Při použití této implicitní funkce pro znázornění objemu kapaliny se získá hladká a časově souvislá hladina, která se dynamicky tvoří v prostoru a čase v závislosti na základě rychlosti kapaliny ⃗ . K tomu odpovídá rovnice

⃗ (1)

kde je parciální derivace v závislosti na čase a ( ) je operátor gradientu

[14]. Vylepšená verze této metody vytváří objem kapaliny pomocí částic, které lépe udržují objem kapaliny. Zahrnutí částic poskytuje lepší živost vody a podobá se skutečné kapalině se šplouchajícími efekty, kde malé kapičky vody mají velmi vysokou míru zakřivení.

3.4.2 Metoda nastavení částic

Celkem se používají dva druhy náhodně umístěných částic v „zahuštěné“ povrchové oblasti – pozitivní částice v oblastech a záporné částice v oblastech. Počet částic umístěných v každé buňce je nastavitelný parametr, který může být použit k řízení množství řešení. Většinou se používá 64 částic na jednu buňku. Každá částice má poloměr , který omezuje minimální (obvykle 0.1‘) a maximální (obvykle 0.5‘) hodnotu velikosti základních výpočetních buněk použitých při simulaci. Poloměr částice se mění dynamicky v průběhu simulace na základě změny jejich umístění. Poloměr je nastaven podle

( )

( ) { ( ) ( ) ,

( ) (2) kde je znaménko částice („+“ pro pozitivní částice a „-“ pro záporné částice) a je pozice částic. Tato úprava poloměru udržuje hranici sférické částice a umožnuje zvýšenou schopnost obnovy hladiny kapaliny.

3.4.3 Rychlost a hybnost hladiny kapaliny

I když Navier-Stokesovy rovnice mohou být použity k nalezení rychlosti v rámci objemu kapaliny, mezní podmínky jsou potřeba pro rychlost na straně vzduchu v blízkosti volné hladiny. Tyto okrajové rychlostní podmínky se používají při aktualizaci Navier-Stokesovy rovnice, pro pohyb hladiny a pro pohyb částic umístěných v blízkosti hladiny. Rychlost na volném povrchu vody může být stanovena na základě běžného výpočtu výkonu o zachování hmotnosti (objemu), ⃗ , kde ⃗ ( ) je rychlost kapaliny. Uvedená rovnice umožňuje určit rychlost ve všech výpočetních buňkách, které nabývají hodnotu .

12

Hybnost je pak určena z Navier-Stokesovy rovnice

⃗ ⃗ ⃗ ( ⃗ ) , (3)

kde je kinematická viskozita kapaliny, je hustota kapaliny, je tlak a je externě aplikované gravitační pole. Pro lepší výpočet konvekční části této rovnice, ⃗ ⃗ , se používá semi-Lagrangeova metoda „stabilních tekutin“ [15]. Pro modelování rozvlněné vody (jako důsledek působení odporu vzduchu na hladinu vody) se používá konvexní kombinace extrapolace rychlosti s předem stanovenou rychlostí větru

⃗ ( ) ⃗ ⃗ , (4) kde ⃗ extrapolovaná rychlost, ⃗ je požadovaná rychlost vzduchu a je směšovací konstanta. Tato rovnice může být použita v celé ploše nebo jen lokálně podle potřeby ve vybraných částech výpočetní oblasti [16].

3.5 Simulace sypkých materiálů

Sypké materiály, jako je například písek, obilí, štěrk, sůl či mouka, jsou rozsáhlé shluky samostatných makroskopických částic, které sice jsou mezi sebou v stálém trvalém styku, ale nikdy mezi sebou neprotínají [17]. Stejně jako pevné látky, tak i sypké materiály mají určitou hmotnost, ale na rozdíl od pevné látky nepodporují napětí v tahu [18]. Pravděpodobně nejlepší způsob modelování soustavy zrn je skrze numerické metody, kde se flexibilita numerického modelování vztahuje na nastavení různých konfigurací, jako je velikost zrn, distribuce velikosti či fyzikální vlastnosti zrn. Ovšem numerické simulace toku zrnitých materiálů skýtají mnoho problémů.

Vzhledem k tomu, že každé zrno je modelováno jako samostatný subjekt, použitá technika pro identifikaci styku mezi objekty je důležitá. Zde se používá několik druhů výpočtových kontaktních nebo materiálových algoritmů, jako například částicová metoda FLIP, která kombinuje Eulerův a Lagrangeův popis materiálů. Tyto popisy vyjadřují spojitý pohyb v určitém čase. Každé zrno je pak definováno kolekcí hmotných bodů, které nesou dostatečné informace k řešení častých problémů. A proto je možné si zvolit, zda bude nebo nebude pokračovat Lagrangeovým výpočtem [19].

3.5.1 Modelování sypkých materiálů

Standartní postup pro definování chování spojitých sypkých (nebo „třecích“) materiálů je ( ) plastická poddajnost. Předpokládejme, že tenzorové napětí má střední napětí

| | a von Mises je ekvivalentní smykové napětí ̅ (kde | | je Frobeniusova √ norma). Mohr-Coulombův zákon říká, že sypký materiál bude poddajný, dokud bude platit rovnice

√ ̅ , (1) kde je úhel tření. Obecně Mohr-Coulombův zákon neignoruje dilatační část a porovnává ji se smykovou částí napětí. Související pravidlo toku určuje, do jaké míry se sypký materiál rozšíří, tj. čím větší má objem, tím více se na povrchu roznese.

13

Při zjednodušeném modelu se většinou zanedbávají pružné účinky, proto tam, kde sypký materiál právě teče, je třecí napětí vyjádřeno jednoduše:

, (2) √ | |

( ) kde je rychlost deformace. To znamená, že třecí napětí je bod na povrchu, který se bezprostředně brání klouzání. Nakonec se stanoví i způsob poddajnosti (pokud by měl být například písek tuhý), bez sledování elastického napětí a deformace:

, (3)

kde je časový krok a je délka jedné buňky. Výpočet rovnice (2) pojednává pouze o jednoduchém tření, nicméně je důležitý i výpočet třecích okrajových podmínek mezi sypkými materiály a jinými objekty (nejčastěji jakýkoliv pevně daný povrch, na kterém leží písek). Pro výpočet se používá třecí statický vzorec:

| | ( ) , (4) | | kde je Coulombův koeficient smykového tření mezi dvěma objekty (jedná se o zásadní doplněk k řešitelnosti tekutiny). V neposlední řadě je důležitým prvkem i soudržnost (koheze), kde se v tomto případě využívá Mohr-Coulombova definice:

√ ̅ , (5) kde c > 0 je kohezní koeficient. Tento výpočet je vhodný pro zeminy nebo jiné lehce lepkavé materiály, které mohou podporovat určité napětí. Dalším způsob reprezentace sypkých materiálů může být jako v simulaci vodní kapaliny, s drobnými změnami v chování materiálu a se změněným mezním třením [20].

3.6 Simulace kouře

Přírodních jevy, jako je kouř či mraky, jsou náročným problémem v počítačové grafice, neboť pohyb plynů je velmi složitá záležitost, protože mraky nemají pevně definovanou plochu a hranici. Mimoto mraky obsahují různé stupně průsvitnosti a jejich beztvará struktura se může měnit s časem. Přesto mají vizuální modely kouře mnoho uplatnění v různých průmyslových aplikacích, u speciálních efektů v komerčních filmech nebo v interaktivních počítačových hrách. Samozřejmě modelování kouře a plynů je důležité i v dalších technologických oblastech.

Prvotní modely se zaměřovaly na konkrétní jev a animaci kouřové hustoty, bez modelování jeho rychlosti [21]. Později se náhodná rychlost, založená na Kolmogorově spektru, použila pro modelování pohybu komplexní charakteristiky kouře [22]. Více přirozený způsob modelování pohybu kouře je přímo přes rovnici dynamiky tekutin. Další alternativou je výpočet založený na celulárních automatech [23].

14

Rovnice modelující rychlost kouře, označené jako u = (u,v,w), jsou dány Eulerovými rovnicemi [24]:

(1)

( ) , (2)

kde označuje tlak plynu a představuje vnější síly. Tyto dvě rovnice lze vyřešit ve dvou krocích. Nejprve se spočítá průběžná rychlost vyřešením druhé rovnice v časovém kroku bez tlakové podmínky:

( ) (3)

Tento krok je ekvivalentní s výpočtem tlaku z následující Poissonovy rovnice s čistě Neumannovými okrajovými podmínkami:

(4)

Potřeba jsou i rovnice pro vývoj teploty a hustoty kouře za předpokladu, že tyto dvě skalární veličiny jsou jednoduše přenášeny společně s rychlostí kouře:

( ) (6)

( ) (7)

Jak hustota, tak i teplota má vliv na rychlost proudění kouře. Těžký kouř má tendenci kvůli gravitaci klesat dolů, zatímco horké plyny mají tendenci stoupat vlivem vztlaku nahoru. Pro takový případ se nadefinují vnější síly, které jsou přímo úměrné hustotě a teplotě.

( ) , (8) kde z = (0,0,1) jsou body kolmé ve svislém směru, je okolní teplota vzduchu a a jsou dvě pozitivní konstanty. Pokud je a , vnější síla je rovna 0 [25]. 3.6.1 Vykreslení kouře

Realistické zobrazení kouře s vysokým albedem (mírou odrazivosti) vyžaduje plnou simulaci vícenásobného rozptylu světla uvnitř kouře. Za tímto účelem se mohou používat fotonové mapovací algoritmy [26]. Jedná se o dvouprůchodový algoritmus, ve kterém se první průchod skládá z vybudování objemu fotonových map z emisních fotonů, kde se ukládají pouze fotony odpovídající nepřímému osvětlení. Další průchod umožňuje efektivní výpočet dýmu, který je zakryt jiným kouřem. Všeobecně je algoritmus v následující matematické formě:

( ) ( ⃗⃗ ) ( ⃗⃗ ) ( ⃗⃗ ), (9)

15

kde ( ) ∫ je optická hloubka, je zlomek záření, které je rozptýlené ve směru ⃗⃗ , je velikost n-tého kroku, a je náhodně vybrané umístění v n-tém segmentu. Faktor ( ) lze považovat za hmotnost n-tého segmentu, a proto se používá pro nastavení požadované přesnosti výpočtu. je pak dán vzorcem

( ⃗⃗ ) ( ) ( ⃗⃗ ) ( ⃗⃗ ⃗⃗ ) , (10) ∫ kde je rozptýlené záření a je fázová funkce popisující lokální distribuci rozptýleného světla. Rozmanitý rozptyl je vypočítán pomocí odhadu objemového záření z fotonů . Vícenásobný rozptyl je vyjádřen vzorcem

( ⃗⃗⃗ ) ( ⃗⃗⃗ ⃗⃗⃗ ) ( ⃗⃗ ) ∑ . (11)

Zde znamená sílu p-tého fotonu a je nejmenší sféra odklopující fotony [27].

3.7 Simulace ohně

Požární simulace jsou poměrně zajímavé virtuální efekty, které například pomáhají k výcviku hasičů nebo k určení správného umístění únikových vchodů v budovách při vzniku požáru. Proces spalování lze rozdělit do dvou poměrně odlišných typů jevů: detonace a deflagrace. Deflagrace jsou nízko rychlostní události, jako například oheň a plameny. Detonace jsou vysokorychlostní události, jako jsou například výbuchy, kde důležitou roli hrají i nárazové vlny a jiné tlakové účinky. Vzhledem k nízké rychlosti události, lze deflagraci lze modelovat pomocí rovnice pro nestlačitelné proudění (na rozdíl od těch stlačitelných). Jelikož jsou viskózní efekty malé, používají se nestlačitelné Eulerovy rovnice, které mohou být efektivně řešeny pomocí semi-Lagrangeova postupu.

3.7.1 Implementace ohně

Při implementaci se může používat jednotná diskretizace voxelů v prostoru 3 se stejnoměrnou roztečí h. Implicitní povrch, teplota, hustota a tlak jsou definovány ve voxelových středech a jsou označeny jako a , kde . Implicitní plocha se pohybuje s rychlostí , kde je rychlost plynného paliva a je termín znázorňující přeměnu paliva na plynné produkty. Lokální normálová jednotka, je definována ve středu každého voxelu. Pohyb implicitní plochy je | | definován pomocí

(1) a vyřešen u každého bodu mřížky použitím

( ). (2)

Teplotní profil má velký vliv na vizuální vnímání plamenů. Toho lze dosáhnout pomocí reakčních souřadnic proměnné upravené rovnicí

( ) (3)

16

kde je kladná konstanta, obvykle s hodnotou 1. Hodnoty v oblasti úbytku teploty se jednoduše vyřeší rovnicí:

( ) ( ) (4)

V těchto teplotních úbytcích může animátor přejít z křivky hustoty na fyzicky korektní rovnici

( ) , (5) která může být opět vyřešena pomocí semi-Lagrangeovy metody. Oheň je také popsán jeho rozptylem, absorpcí a emisními vlastnostmi. Konkrétně máme koeficient rozptylu ( ), absorpční koeficient ( ) a extinkční koeficient ( ). Sférické rozložení rozptýleného světla se v daném místě určí Henyey-Greensteinovou fázovou funkcí

( ⃗⃗ ⃗⃗ ) (6) ( ⃗⃗⃗ ⃗⃗⃗ )

V tomto případě [ ] je anizotropní rozptyl jevu, kde je přední rozptyl a je zadní rozptyl. Emitní záření je obvykle v počítačové grafice ignorováno, ale pro fyzikální simulaci ohně je nezbytnou součástí. Výpočet vyzařovaného spektra záření se provádí pomocí Planckovy rovnice:

( ) (7) ( )

kde T je teplota, a . Reprodukování barvy ohně je také rozhodující pro realistické ztvárnění ohně. Pro výpočet chromatické adaptace se používá von Kriesův model v podobě lineární transformace, který předpokládá, že oko vnímá barvu spektra v době maximální teploty ohně [28].

3.7.2 Jednoduchý model ohně

Plameny jsou ve skutečnosti tvořeny následkem spalování paliv a oxidačních látek. V počítačové grafice se o kompletní fyzikální model netřeba pro tuto reakci zajímat, ale některé mechanismy jsou nezbytné pro dobrou vizuální prezentaci. Pro danou hustotu paliva a jeho teplotu je v daném bodě rychlost produkce hustoty plamene dána Arrheniovým vzorcem (za předpokladu konstantních koncentrací oxidačních činidel)

( ) . (8)

je aktivační teplota, která je v přímém vztahu s energií uvolňovanou při reakci

, kde R je univerzální plynová konstanta. Výraz je „frekvence“ v závislosti na povaze hořlavin, charakterizující rychlost reakce. Většinou se také z plamenů vytváří kouřové částice, které se zejména více produkují při ochlazení ohně.

17

V dnešní době ale stále neexistuje žádný jednoznačný analytický model tohoto jevu, proto se pro modelování k vytvoření hustoty kouře používá rovnice podobná rovnici při výrobě hořícího paliva:

( ) , (9)

kde je teplota, pod kterou se začnou kouřové částice tvořit a je další konstanta, závislá na použitém materiálu. Teplota paliva je postupně aktualizována pomocí Crank-Nicholsonova konečného schématu [29].

18

4 Fyzikální simulace v současných 3D modelovacích programech

Pro porovnání fyzikální simulace v současných 3D modelovacích programech, včetně různých jednoduchých příkladů, jsem si zvolil tyto tři používané programy – Cinema 4D, Maya a Blender.

Cinema 4D je komerční multiplatformní program pro tvorbu 3D modelování a animace, který vytvořila německá společnost MAXON Computer. První verze byla vydána v roce 1993 pro počítače Amiga. V mé bakalářské práci používám nejaktuálnější verzi R15, která byla vydána v září 2013. Oproti programům Maya a Blender poskytuje i kompletní českou lokalizaci [30].

Maya je profesionální komerční program pro tvorbu 3D grafiky. V únoru 1998 byla vydána první verze od kanadské společnosti Alias Systems. V roce 2005 byl program zakoupen americkou společností Autodesk, který tuto značku vlastní dodnes. Aktuální verze je 2014, která byla vydána v září 2013 [31].

Blender je volně dostupný open-source1 software pro modelování a vykreslování 3D počítačové grafiky a animace. Původní komerční verze se objevila na trhu již v roce 1995 od společnosti NaN, nicméně po zkrachování této společnosti v roce 2002 je program volně dostupný pro každého a je stále aktivně vyvíjen pod dohledem neziskové organizace Blender Foundation. I když od verze 2.60 přidává podporu české lokalizace, do dnešního dne je stále ve fázi vývoje a program českou lokalizaci neobsahuje. Aktuální verze je 2.70, která byla vydána na konci března 2014. Avšak v době psaní bakalářské práce používám verzi 2.69 vydanou v říjnu 2013 [32].

4.1 Fyzikální moduly používané v Cinema 4D R15

Samotné jádro programu, které slouží k modelování, texturování, nasvícení a renderování, nedokáže vytvořit vše, co by uživatel potřeboval pro práci s 3D grafikou. Proto byly pro Cinemu 4D vytvářeny oficiální moduly, neboli speciální přídavné programy, které přidávají další možnosti tvorby, včetně simulace fyziky. Ale od verze R12 se Cinema 4D rozdělila do čtyř produktových verzí – Prime, Broadcast, Visualize a Studio, které rozlišují počet obsahujících modulů uvnitř programu. Verze Studio obsahuje všechny vydané oficiální moduly. Nevýhodu oproti programům Maya a Blender je, že do dnešní doby neobsahuje modul pro komplexní fyzikální simulaci kapaliny. Tuto ztrátu částečně nahrazují externí komerční a bezplatné pluginy2, například Fizz, který tento problém částečně nahrazuje a umožňuje vytvářet proud vody nebo dopad kapek deště do louže. Mezi oficiální moduly, které podporují nebo nějakým způsobem souvisí se simulací fyziky, patří:

______

1. Open- software je počítačový software s otevřeným zdrojovým kódem, který je legálně dostupný veřejnosti. 2. Plugin je software, který nepracuje samostatně, ale jako doplňkový modul jiné aplikace a rozšiřuje tak její funkčnost.

19

Advanced render – modul pro pokročilé nastavení renderingu. Kromě toho, že tento modul umožňuje dosažení mnohem realističtějšího vzhledu výsledného obrázku, jako je dynamičtější rozsah expozice, globální osvětlení, zastínění okolím a kaustiku, umožnuje také simulaci kouře, oblaků a ohně. Modul Advanced render se poprvé objevil ve verzi R8.

Dynamics – modul pro simulaci dynamiky měkkých a tuhých těles s podporou fyzikálních zákonů. Umožnuje také tvorbu dynamických pružin a dalších speciálních objektů, jako jsou například motory, písty či kloubové spoje. Modul Dynamics se poprvé objevil ve verzi R12, kde v podstatě nahradil postarší MoDynamics modul.

Hair – modul pro tvorbu vlasů, chlupů, srsti, trávy a peří. S podporou dynamiky modul umožňuje tvorbu animace, kde se vlasy a peří dokáží samy realisticky pohybovat v souladu s nastavenými parametry tuhosti, včetně kolize. Modul Hair se poprvé objevil ve verzi R9.5.

MOCCA – modul pro animaci postav a simulaci oděvů. Umožnuje také objektům přidávat různé druhy deformace, včetně elastického natažení nebo přelomení. Modul MOCCA se poprvé objevil ve verzi R8.

MoGraph – speciální modul pro modelování a animování pohyblivých objektů. Modul dokáže snadno vygenerovat dle zadaných parametrů přes tisíc stejných objektů se stejnými fyzikálními vlastnostmi. Modul MoGraph se poprvé objevil ve verzi R9.6, jeho druhá vylepšená verze (MoGraph 2) se vyskytuje v programu od verze R11.5.

Thinking Particles – modul pro pokročilou tvorbu částicových systémů. Umožnuje jednotlivým částicím mezi sebou interagovat a reagovat na okolní prostředí. Generátorem částic může být libovolný objekt, další objekty se mohou použít jako odražeče nebo pohlcovače částic. Modul Thinking Particles se poprvé objevil ve verzi R8.

4.2 Fyzikální moduly používané v Maya 2014

Podobně jako Cinema 4D, i Maya obsahuje několik modulů, které rozšiřují základní jádro programu. Maya je dostupná ve dvou základních produktových verzích – Unlimited a PLE (Personal Learning Edition), z nichž Unlimited obsahuje opět všechny vydané oficiální moduly, tedy i ty pro simulaci fyziky. Moduly podporující práci s fyzikou jsou následující:

Fluid Effects – modul pro simulaci realistické tekutiny na bázi zjednodušené a nestačitelné Navier-Stokesovy rovnice. Je efektivní pro tvorbu kouře, ohně, mraků, výbuchů a silných kapalin, jako je voda, láva nebo bláto. Modul Fluid Effect se poprvé objevil ve verzi 4.5.

Fur – modul kožešinové simulace, určená pro velkoplošné pokrytí objektu krátkými vlákny. Může být například použit i pro tvorbu trávy nebo koberce, kde jednotlivá vlákna dynamicky reagují na působení okolních sil. Na rozdíl od modulu nHair, modul Fur neřeší žádné vzájemné kolize mezi jednotlivými vlákny. nHair – modul pro simulaci vlasů, zejména pro dlouhé vlasy. Vlasy dynamicky reagují na působení dynamických sil (vítr, voda…), včetně vzájemné kolize. Často se používá k simulaci výpočetně složitých lidských vlasových stylů, jako jsou například copánky. Simulace využívá jako základ dynamické NURBS křivky, které se pak používají jako tahy štětcem v programovém nástroji Paint Effects.

20

nCloth – modul pro dynamickou simulaci tkanin s velkou škálou možnosti nastavení. Od verze 8.5 plně nahradil starší modul Classic Cloth. Ve srovnání se svým předchůdcem, nCloth je rychlejší, flexibilnější a v rámci simulace i robustnější. nParticle – modul pro simulaci kapalin, mraků, kouře, spreje a prachu. Používá se zejména pro simulaci viskózních tekutin, s podporou vzájemné kolize částic. Modul nParticle byl přidán do programu poprvé ve verzi 2009. nDynamics – modul pro simulaci tuhých a měkkých těles, včetně kolize a reakce objektů na vnější působení sil. Modul flexibilně spolupracuje s nHair, nCloth a nParticle.

4.3 Fyzika v Blender v2.69

V Blenderu neexistují jednotlivé moduly či komponenty, jako je tomu u Cinema 4D či Maya. V podstatě obsahuje simulaci fyziky již v základu samotného programu. Obsahuje částicový systém, kde chování částic je plně konfigurované s nepřeberným množstvím nastavení, díky kterému je možné nasimulovat oheň, kouř, déšť či mlhu. Naopak statické částice je možné použít pro simulaci vlasů, srsti nebo trávy. Dále podporuje fluidní dynamiku pro simulaci reálné kapaliny, včetně volby gravitace, viskozity apod. Také umožňuje práci s pružnými objekty s podporou detekce kolize a silového pole. V neposlední řadě Blender umožňuje vytvářet látkové objekty s ručním nastavením parametrů nebo přímým výběrem typu látky (například bavlna nebo kůže) s podporou detekce kolizí a dalšími vlastnostmi podobně jako u pružných objektů [33]. Blender také obsahuje herní engine pro jednoduchou tvorbu interaktivních 3D aplikací, který má od verze 2.40 v sobě integrovaný fyzikální engine Bullet, s jehož podporou lze simulovat dynamiku pevných těles.

4.4 Porovnání fyzikální simulace na příkladech

Pro porovnání fyzikálních simulací jsem vytvořil sadu stejných příkladů pro jednotlivé programy. První příklad demonstruje simulaci tuhých těles včetně jejich kolize, druhý zkoumá simulaci tkaniny a poslední třetí ukazuje rozdílnou možnost tvorby fyzikální trávy. Příklady jsem testoval na notebooku s 64 bitovým operačním systémem Windows 7, procesorem Intel Core i3 (2.13 GHz), grafickou kartou ATI Mobility Radeon HD 5470 (512 MB) a 4 GB pamětí. Pro zaznamenávání fps1 při výpočtu přehrávané scény přímo v programu jsem použil volně dostupný program Fraps. Maximální naměřená hodnota v programech je 25 fps. Pro lepší přehlednost jsem za délkové jednotky zvolil centimetry. Všechny výsledné animace lze nalézt v přílohách bakalářské práce.

______

1. Fps je označení pro snímkovou frekvenci, tedy jednotka udávající počet snímků za sekundu.

21

4.4.1 Příklad s tuhými a kolizními tělesy

Na úvod jsem vytvořil jednoduchý příklad, kde na sadu sestavených krychlí dopadne koule, která tuto sadu vychýlí z její původní polohy. Každá krychlička má rozměr 50 cm a sestavil jsem z nich velkou krychli s délkou strany 5 krychliček, které jsou od sebe bočně vzdálené 5 cm. Abych docílil lepšího efektu odhození krychlí, odstranil jsem prostřední sloupeček krychlí. Celkem tedy scénu tvoří 120 krychlí. Koule, která na ně dopadá, má průměr 200 cm a padá z výšky 800 cm od podlahy. Podlaha má rozměry 800 x 800 cm. Ještě u tohoto příkladu provádím druhý pokus, kde jsem při stejné základně výškově zvýšil počet krychliček na čtyřnásobek (480 krychliček) a kouli zvětšil na průměr 400 cm. Podlahu jsem zvětšil na rozměr 1800 x 1800 cm.

Cinema 4D: U každého vymodelovaného objektu se může jednoduše (v záložce Vlastnosti -> Vlastnosti simulace) zvolit různé simulační vlastnosti. Při tvorbě podlahy se objekt nastaví na Kolizní objekt (viz Obr. 1), jakožto nehybný nedynamický objekt. Naopak u koule a krychlí se nastaví na Tuhé těleso (viz Obr. 1). Jak kolizní, tak i tuhá tělesa mají několik možností nastavení, u kterých se může i nemusí měnit ještě různá míra sebekolize, tvar kolizního objektu, rozpětí kolize, šum kolize, odrazivost, tření, hmotnost, těžiště, lineární/úhlové tlumení, síla, nadnášení, vlečení či úvodní rychlost. V tomto případě není nutné nikterak měnit tyto hodnoty, v rámci porovnání s ostatními Obr. 1: Vlastnosti modelovacími programy ponechávám původní nastavené hodnoty. simulace Krychličky je možno snadno a efektivně nakopírovat pomocí modulu MoGraph.

Po vymodelování scény a spuštění animace není výpočet prvního pokusu pro program vůbec časově složitý, scéna přehrávaná v programu neklesla pod 21 fps a animace byla plynulá. Ovšem při druhém pokusu, kde se zvýšil počet kostiček na čtyřnásobek, kleslo fps v nejkritičtější scéně až na hodnotu 9. Cinema 4D nabízí také možnost zrychlit výpočet dynamické scény přes vyrovnávací paměť (Cache). Využití vyrovnávací paměti u všech dynamických objektů (doba trvání procesu cca 5 sekund) neměl u prvního pokusu prakticky žádný vliv, ale u druhého pokusu animace neklesla pod 18 fps a tak tato scéna byla daleko plynulejší, než bez použití vyrovnávací paměti.

22

Obr. 2: Porovnání scény u 1. pokusu (vlevo) a u 2. pokusu (vpravo) u 60. snímku vyrenderované animace (Cinema 4D)

Maya: Pro práci s tuhými / měkkými tělesy se musí program přepnout do rozhraní Dynamics (viz Obr. 3). Nyní se na horní liště objeví nabídka Soft/Rigid Bodies (viz Obr. 4). Oproti Cinema 4D, Maya nerozlišuje objekty jako tuhé a kolizní, ale jako dynamické aktivní tuhé objekty (Active Rigid Bodies, viz Obr. 4) a nedynamické pasivní tuhé objekty (Passive Rigid Bodies, viz Obr. 4). U koule a krychliček se tedy zvolí možnost Create Active Rigid Bodies a u podlahy Create Passive Rigid Bodies. Tuhá tělesa mají opět velkou řadu nastavení vlastnosti – relativní hmotnost (Mass), statické a dynamické tření (Static/Dynamic friction), odrazivost/skákavost (Bounciness), Obr. 3: Volba útlum/brzdivost (Damping), nastavení středu těžiště (Center of rozhraní Mass), počáteční rychlost/rotace (Initial Velocity/Spin), rotační impulz (Spin Impulse) či poloha impulzu (Impulse Position) [34].

Je důležité, aby byly při přiřazení dynamiky tuhého tělesa označeny všechny cílené objekty, pokud by se nastavovaly jednotlivě, nevznikla by mezi objekty korektní kolizní dynamická vazba (Dynamic Relationships), a vzájemně by se ignorovaly. Aby koule Obr. 4: Částečná nabídka a poté i krychličky padaly na zem, musí se ještě vytvořit pro tuhá a měkká tělesa gravitační pole.

23

Proto se při výběru všech aktivně tuhých objektů u nabídky Fields zvolí Gravity (viz Obr. 5). Gravitační hodnota je implicitně nastavena na 9.81, dle libosti uživatele se může změnit. Animace scény přímo v programu měla časově složitý výpočet. Oproti Cinema 4D, kde u prvního pokusu bylo minimum 21 fps, v Maya se pohybovala na konstantní 1 fps. Druhý pokus měl ještě hroší dopad, i při vypnutých stínech a světel se čas zobrazení dalšího snímku pohyboval okolo 120 sekund a s každým dalším snímkem nabíral větší časovou prodlevu. V Mayi také existuje možnost Obr. 5: Částečná nabídka využít vyrovnávací paměť, v nabídce Solvers (viz Fields Obr. 4) se nastaví ukládání výpočtu u označených objektů.

U prvního pokusu se při prvním spuštění animace ukládal snímek po snímku (proces trval přibližně 2 minuty), což mělo za důsledek, že při dalším spuštění se animace přehrávala konstantních 25 fps. Avšak u druhého pokusu se celá animace ukládala dlouhých 16 hodin. Díky tomu se ale opakované spuštění animace přehraje konstantních 10 fps, což také urychlilo i finální render animace.

Obr. 6: Porovnaní scény u 1. pokusu (vlevo) a u 2. pokusu (vpravo) u 25. snímku vyrenderované animace (Maya)

Blender: Pro práci s fyzikou se provádí v nabídce Properties -> Physics. U tuhých těles (Rigid Bodies, viz Obr. 7) se podobně jako v Mayi nastavují objekty na Active (u dynamicky pohyblivých objektů – krychličky a koule) a Passive (u nedynamicky nehybných objektů - podlaha). Podobně jako v Cinema 4D, i zde se nastavuje kolizní tvarový typ objektu. Obr. 7: Nabídka Physics

24

Konkrétně konvexní obal (Convex Hull), kužel (Cone), válec (Cylinder), tobolka (Capsule), koule (Sphere), krabicový tvar (Box) nebo více tvarový síťový (Mesh) objekt. I zde se u tuhých těles nachází nastavení hmotnosti (Mass), tření (Friction) a odrazivost (Bounciness). Po vytvoření scény a spuštění animace u prvního pokusu fps neklesl pod hodnotu 25, u druhého pokusu fps sice kleslo až na hodnotu 6, nicméně po přehrání celé scény si program pamatuje vypočtené snímky a při opakovaném přehrávání si scéna udržuje konstantních 25 fps, tedy není nutné žádné nastavování vyrovnávací paměti.

Obr. 8: Porovnání scény u 1. pokusu (vlevo) a u 2. pokusu (vpravo) u 160. snímku vyrenderované animace (Blender)

4.4.2 Příklad se simulací tkaniny

V dalším příkladu představuji chování tkaniny při dopadu na jiný kolizní objekt. Jedna čtvercová látka o rozměrech 300 x 300 cm dopadne z výšky 120 cm na čtvercový stůl o výšce 80 cm a šířce 200 x 200 cm. Druhá kruhová látka o průměru 200 cm dopadne z výšky 150 cm na kuželovitý objekt s ostrou špičkou o výšce 120 cm a dolním poloměru 48 cm. Nakonec v pozadí dopadne na podlahu ještě poslední čtvercová látka o rozměrech 400 x 400 cm v přímém kolmém směru osy Z. Podlahu opět ponechávám o rozměrech 800 x 800 cm. Pro začátek nastavuji u čtvercových látek počet 20 segmentů v ose X a Y, u kruhového na 4, po obvodě 36. U druhého pokusu jsem navýšil počet segmentů u všech tkanin na dvojnásobek.

Cinema 4D: Podobně jako u prvního příkladu, i zde se nastaví podlaha, stůl a kužel na Kolizní objekt, ovšem jelikož na tyto objekty budou působit látky, musí se zvolit Kolizní objekt oděvu (viz Obr. 1). Při volbě Kolizní objekt pro tuhá a měkká tělesa by látka jen propadla a nezachytila se o ostatní objekty. Všechny tkaniny ve scéně se nastaví na Oděv (viz Obr. 1). Oděvy mají další škálu vlastnosti nastavení, jako ztuhlost, ohýbání, gumovitost, odrazivost, tření, hustotu, párání, gravitaci či různé síly při působení větru. Důležité je také látky převést na polygony, pokud nejsou na ně rozloženy, jinak by na ně neplatila žádná fyzika. V důsledku toho se ale znemožní změnit počet segmentu a pro druhý pokus se musí vytvořit nová tkanina.

25

Výpočet chování tkaniny je pro program opravdu složité, i při menším počtu segmentů animace klesla na 3 fps. Zvýšený počet segmentů u tkanin udržovalo scénu po celou dobu na 1 fps. I pro tkaniny je možné aplikovat vyrovnávací paměť (pro každý látkový objekt zvlášť). U prvního pokusu proces trval okolo 20 sekund pro každou tkaninu, avšak animace opět běžela plynulých 25 fps. U druhého pokusu proces trval 2 minuty u každé tkaniny a animace se přehrála v poměrně plynulých 21 fps.

Obr. 9: Porovnání scény u 1. pokusu (vlevo) a u 2. pokusu (vpravo) u 50. snímku vyrenderované animace (Cinema 4D)

Maya: Pro simulaci tkanin se v programu musí přepnout do nabídkové sady nDynamics (viz Obr. 3). Všechny tkaniny ve scéně se nastavují v nabídce nMesh pomocí Create nCloth (viz Obr. 10). Aby tyto tkaniny kolidovaly s ostatními objekty, podlaha se stolečkem a jehlanem se nastaví na Create Passive collider (viz Obr. 10). U tkanin lze nastavit sebekolizi (Self Collide), tloušťku (Thickness), odrazivost (Bounce), tření Obr. 10: Částečná nabídka (Friction), lepkavost (Stickiness), rozpínavost nMesh (Stretch), ohyb (Bend), střih (Shear), obnovení (Restitution), tuhost (Rigidity), deformační odpor (Deform Resistance), odpor prostředí (Drag), hmotnost (Mass), tlumení (Damp), vnější silové pole (Force field) či generátor větru (Wind generation). Oproti Cinema 4D se nemusí látková plocha převádět na polygony a tudíž fyzika se ihned aplikuje po přiřazení, nicméně i tak opět zmizí možnost měnit počet segmentů. I když měla Maya problémy s tuhými tělesy, tkaniny naopak zvládala lépe než Cinema 4D. U prvního pokusu jsem zaznamenal minimální fps na hodnotě 7 a u druhého pokusu zaznamenal 3 fps. Použití Solvers pro tkaninu nemá tentokrát vliv, musí se použít nastavení vyrovnávací paměti z nCache nabídky (viz Obr. 10). Po přehrání se celá scéna opět uloží a po opakovaném spuštění se přehrává konstantních 25 fps jak u prvního, tak i u druhé pokusu.

26

Obr. 11: Porovnání scény u 1. pokusu (vlevo) a u 2. pokusu (vpravo) u 80. snímku vyrenderované scény (Maya)

Blender: Při simulaci tkaniny jsem rozdělil nejdříve rovinný objekt v editačním módu (Edit mode) na segmenty (Subdivided), abych dodržel počet segmentů ze zadání. Poté se tomuto objektu přiřadí vlastnost Cloth (viz Obr. 7). Zde se navíc může nastavit i druh materiálu látky – bavlnu (Cotton), džínovinu (Denim), kůži (Leather), hadr (Rubber) nebo hedvábí (Silk). Mezi dalším nastavením se zde nachází tlumení (Damping), hmotnost (Mass), ohyb (Bending), připnutí (Pinning), ztuhlost (Stiffness), odrazivost (Repel), tření (Friction), látková kolize (Cloth Collision), vzájemná kolize (Self Collision), působení vnějších sil (gravitace, vítr, turbulence…) a navíc různé nastavení celkové kvality tkaniny. Oproti Cinemě a Mayi se musí látkovým objektům přiřadit vyrovnávací paměť (Cloth Cache), jinak by fyzika nefungovala. V tomto případě je důležité u tkanin nastavit stínování na Smooth, jinak by látka vypadala nepřirozeně. U objektů, které zachycují tkaniny, se nastavuje Collison (viz Obr. 7).

U prvního pokusu se animace pohybovala kolem 25 fps, ale ukládání do vyrovnávací paměti trvalo 2 minuty. U druhého pokusu se zvýšeným počtem segmentů a vyšší kvalitou nastavení tkaniny se opět fps neměnil a zůstal na konstantních 25 fps, ovšem ukládání do vyrovnávací paměti trvalo přes 3 hodiny.

Obr. 12: Porovnání scény u 1. pokusu (vlevo) a u 2. pokusu (vpravo) u 140. snímku vyrenderované animace (Blender)

27

4.4.3 Příklad se simulací trávy

V posledním příkladu předvádím simulaci vláken, tedy chování objektů při působení na trávu. Tráva je „zasazena“ na čtvercové plošce o rozměrech 300 x 300 cm a výšce 20 cm, která je nakloněna o 10°. Na tuto travnatou plošku dopadnou z menší výšky tři objekty – koule, jehlan a válec. Koule je o průměru 40 cm, jehlan o rozměrech 40 x 40 x 40 cm a válec o průměru 20 cm a délce 60 cm, vše tuhá tělesa. V následujících podkapitolách provádím různé možnosti tvorby této trávy, pokud možno v odlišných způsobech.

Cinema 4D: Tráva se v podstatě tvoří jako vlasy, u kterých se později pouze přidá zelená barva, nastaví se reálně vypadající materiál a vypne se gravitace (jinak by se tráva chovala nepřirozeně a konečky trávy by padaly dolů). Pro vytvoření vlasů se musí nejdříve označit celá plocha polygonů, kam chceme přidat vlasy a poté přes nabídku Simulace -> Objekty vlasů -> Přidat vlasy. Po přidání vlasů se vlasy jednoduše vygenerují po celé zvolené ploše. U vlasů je možné změnit jejich délku, celkový počet, pružnost, růst, deformovanost, ztuhlost, tlumení, schopnost dodržení výchozí polohy, gravitace a v neposlední řadě i detailní nastavení působení různorodých sil. U příkladu jsem Obr. 13: Nabídka Hair Vlastnosti zvolil počet 20000 vláken s délkou 40 cm. U dopadajících objektů na trávu je nutné nastavit jak Tuhé těleso (viz Obr. 1), tak i Kolize s vlasy v nabídce Hair Vlastnosti (viz Obr. 13), jinak by tráva na tyto objekty vůbec nereagovala. Plocha obsahující trávu je klasicky nastavena na Kolizní objekt (viz Obr. 1). Větší počet trávy a výška nemá žádný zásadní vliv na časovou složitost na výpočet scény. U příkladu jsem zaznamenal pokles až na 4 fps. Po aplikaci vyrovnávací paměti se scéna opět plynule přehraje s 25 fps.

Maya: Tráva založená na fyzice se může vymodelovat mnohem jednodušším způsobem. Program obsahuje programovou funkci Paint Effect, která obsahuje i jednoduchou kresbu 3D trávy. Program se přepne na rozhraní Rendering (viz Obr. 3) a po označení plochy se zvolí nabídka Paint Effect, kde se zvolí možnost Make Paintable (viz Obr. 14) a poté Get Brush (viz Obr. 14). Z nabízených šablon se vybere libovolná s travinami, pak už se jenom štětcem maluje po dané plošce. Tento způsob je nejen efektivní, ale i rychlejší oproti Cinemě či Obr. 14: Částečná nabídka Paint Blenderu. Aby byla tráva deformovatelná a Effect reagovala na ostatní objekty, ještě se v nabídce Paint Effect zvolí Make Collide (viz Obr. 14). Musí však být předtím označena tráva a všechny padající objekty na ni. Fps se v této scéně pohybuje s konstantní hodnotou 2. Podobně jako u tkanin, i zde Solvers neurychlil fps.

28

Blender: Tvorba trávy je možná přes částicový systém (Particles, viz Obr. 15), ve kterém se zvolí možnost typu Hair (plocha, ve kterém se tvoří travina, musí být opět rozdělena na segmenty). Zde nechybí nastavení počtu vláken, vlasová dynamika (tuhost, hmotnost, ohebnost, tření, kolize, tlumivost apod.), velikost (normála, tečna, emitor,…), fyzika, vnější síly, gravitace a spoustu dalšího. Podobně jako u Cinema 4D, i zde se musí gravitace u trávy vypnout, neboť by došlo ke spádu konečků stébel. Počet vláken jsem nastavil Obr. 15: Částečná nabídka Participles na hodnotu 12000 a délku jednoho stébla na 40 cm. Aby objekty padající na plošku reagovaly na trávu, musí se jim přidat vlastnost silového pole (Forced Field, viz Obr. 7), u které se nastavuje jeho tvar (Shape), pevnost (Strength), průtok (Flow), klesání (Falloff) a síla (Power). Změna každé hodnoty má zásadní vliv na chování trávy v její blízkosti.

Stejně jako u tkaniny, i zde je lepší provést výpočet vyrovnávací paměti (Cache), který zabral cca 15 minut. Ale i poté se animace zasekává a způsobuje pokles až na 12 fps.

Obr. 16: Ukázka vytvořené fyzikální simulace trávy. Zleva: Cinema 4D, Maya a Blender

4.5 Shrnutí výsledků u všech příkladů

Demonstrace prvního příkladu ukázala, že každý program přistupuje k tuhým a kolizním tělesům zcela jinak. V Cinema 4D a Blenderu se jednoduše libovolný objekt nastaví na tuhé nebo kolizní (pasivně tuhé) těleso, v Mayi se musí explicitně tuhým předmětům nastavovat ještě gravitace a kontrolovat kolizní vazba mezi aktivně a pasivně tuhými tělesy. Z animací vyplývá, že Cinema 4D má implicitně nastaveno nízkou hodnotu tření a odrazivosti, kostky se ihned odmrštily při kontaktu s koulí. Maya má naopak implicitně nastavenou vysokou hodnotu tření a odrazivosti, neboť kostičky se po kontaktu s koulí zhroutily až s výrazným časovým zpožděním, koule se od kostiček několikrát odrazila. Navíc u druhého pokusu se kostičky v Mayi nepřirozeně zhroutily samy před kontaktem s koulí. U více početných dynamických objektů vzniká tento problém, pokud jsou objekty

29

položeny přesně na sebe a zároveň jsou spodní objekty zatěžovány několika dynamickými objekty (u Cinama 4D a Blenderu tento problémový jev nevzniká). Ohledně Blenderu, ten má implicitně nastavené ještě větší tření, krychličky v prvním pokusu po daný časový úsek vůbec nespadly. Odrazivost má nastavenou na nižší hodnotu, protože koule se ani jednou neodrazila. Rychlost výpočtu scény v programu je u Cinema 4D a Blender na vysoké úrovni, Maya má naopak nízkou úroveň.

Druhý příklad ukazuje, že zvýšený počet segmentů u látkových objektů má zásadní vliv na vzhled, chování a rychlost výpočtu simulace tkaniny. Například u Blenderu se menší počet segmentů projevil u kruhové látky, která kuželovou špičkou ze začátku propadla. V Mayi naopak vyšší počet segmentů způsobil vyšší skluz látky, tkaniny padající na stůl a na podlahu po chvilce nepřirozeně sklouzly dolů. Všechny tři programy mají velkou řadu nastavení tkanin, u Blenderu je také možné si zvolit i druh materiálu. Časový výpočet je poměrně v Cinema 4D, Mayi a Blenderu na stejné úrovni.

Třetí příklad představoval různé druhy tvorby fyzikální trávy. V Cinema 4D se tvoří přes vlasy s nutným dodatečným nastavováním. V Mayi pomohla programová funkce Paint Effect, která výrazně usnadňuje tuto tvorbu, ale výsledek nevypadat přirozeně. V Blenderu se tvoří přes částicový systém s přidaným silovým polem u padajících objektů. Časová složitost je u všech programů velká, avšak díky vyrovnávací paměti u Cinema 4D a Blenderu se výrazně zlepší.

30

5 Fyzikální engine ve virtuálním herním světě

Fyzikální engine je počítačový software, který poskytuje přibližnou simulaci určitých fyzikálních systémů, jako je dynamika tuhého tělesa (včetně detekce kolize a reakce na kolizi), dynamika měkkých těles a dynamika tekutin. Používá v oblasti počítačové grafiky, videoher a filmů. Jejich hlavní užití je v herních enginech, kde v takovém případě simulace probíhají v reálném čase. Fyzikální engine založený na výpočtu fyziky v reálném čase využívá zjednodušených výpočtů se sníženou přesností, protože ve většině počítačových her je rychlost a plynulost hry důležitější než přesnost simulace.

5.1 Důležité vlastnosti fyzikálních enginů

5.1.1 Detekce kolizí

Detekce kolize je stav, kdy se dva objekty v prostoru snaží pronikat do sebe. Jedná se o důležitý a nepostradatelný koncept, neboť objekty v počítačových hrách interagují jak s hráčem, tak i s okolním prostředím. Detekci kolize lze rozdělit do několika základních způsobů podle jejich provedení, které se především liší jak kvalitou, tak i časovou složitostí výpočtu. Jednou z těchto základních metod může být Bounding sphere nebo Bounding box [35]:

Bounding sphere – v této metodě se měří vzdálenost středů dvou objektů, a pokud je naměřená hodnota menší než pevně daná hranice (poloměr koule), je zaznamenána kolize. Složitější objekty se mohou rozdělit na množinu sekcí tak, aby zakryly celý povrch objektu. V takovém případě se vzdálenost měří od středu každé sekce.

Bounding Box – většinou používaná metoda. Testovaný objekt je jakoby uzavřen do kvádru, který je většinou natočený podle obalovaného tělesa. Detekce kolize spočívá v promítnutí kvádrů na jedné z os x, y nebo z.

Obr. 17: Srovnání způsobů ohraničení v Bounding sphere (vlevo) a Bounding box (vpravo)

5.1.2 Částicový systém

Společným aspektem počítačových her, které modelují určitý typ konfliktu, je výbuch. Rané počítačové hry používaly v této situaci pokaždé jednoduché účelné opakování stejné exploze. Avšak v reálném světě se exploze může lišit v závislosti na terénu, nadmořské

31

výšce exploze a typu zasažených pevných těles. Pro reálnější zobrazení je tento jev modelován právě pomocí částicového systému. Částice mají svoji životnost, v rámci níž vzniknou, jistým způsobem se chovají, stárnou a umírají. Částice je tedy možné použít i pro simulaci sněhu, vody nebo kouře [36]. Typicky je pozice a pohyb částicového systému v 3D prostoru dána emitorem. Emitor se chová jako zdroj částic a jeho umístění v 3D prostoru určuje, kde jsou generovány a odkud budou postupovat. Každý z parametrů částic (tj. rychlost, barva, atd.) se inicializuje podle parametrů emitoru [37].

5.1.3 Ragdoll fyzika

Ragdoll fyzika je procedurální animace a simulační metoda k zobrazení pohybu postavy, která se zhroutí na zem (většinou je tím reprezentována smrt postavy v počítačové hře). Rané počítačové hry používaly ručně vytvořené animace pro sekvenci smrti postav. Výhodou tak bylo nízké využití procesoru, protože data potřebná k animaci „umírající“ postavy byly vybrány z určitého počtu předem vypracovaných snímků. Jak se výkon počítačů zvyšoval, mohla se tato animace provést jako fyzikální simulace v reálném čase. Ragdoll fyzika tedy zahrnuje tělo postavy řadou pevných kostí spojených reálně se pohybujícími klouby. Modelované kloubové systémy mohou realizovat účinky kostry, svalů, šlach a dalších fyziologických komponentů [38]. Ragdoll fyziku lze implementovat například pomocí Featherstonova algoritmu [39].

5.2 Nejznámější fyzikální enginy

5.2.1 CryEngine

CryEngine je herní a zároveň i fyzikální engine vytvořený německým herním vývojářským studiem Crytek. Z hlediska fyzikálních simulací engine obsahuje částicový systém, deformační fyziku měkkých a tuhých těles, provazovou fyziku, dynamiku vozidel, inverzní kinematiku, simulaci tkanin a částečnou dynamiku kapalin a pružných těles. V průběhu vývoje a vylepšování vznikly celkem čtyři plnohodnotné verze enginu:

CryEngine 1 – první verze enginu se vyvíjela již od roku 2001 a byla poprvé použita ve hře Far Cry v roce 2004.

CryEngine 2 – druhá verze se objevila ve hře Crysis v roce 2007.

CryEngine 3 – třetí verze se objevila v březnu 2011 ve hře Crysis 2. Od téhož roku je také jeho SDK (Software Development Kit – vývojářský software pro tvorbu v daném enginu) volně dostupný pro nekomerční vývoj her.

CryEngine (4. generace) – aktuální verze, označována jako 4. generace. Engine byl použit v roce 2013 ve hře Ryse: Son of Rome. Jelikož hra vyšla pouze na konzoli nové generace Xbox One, není engine dosud dostupný pro počítačové platformy. Tato verze nemá téměř nic společného s předchozími verzemi CryEnginu, proto je označována za novou generaci enginu [40].

5.2.2 PhysX

PhysX je fyzikální engine vyvinutý společností Ageia v roce 2004. Ageia byla v únoru 2008 odkoupena společností Nvidia, která posléze začala přidávat hardwarovou akceleraci

32

PhysX na svých grafických kartách GeForce. Tato hardwarová architektura se nazývá CUDA (Compute Unified Device Architecture), která provádí na grafickém procesoru vypočet fyziky [41]. Engine podporuje dynamiku tuhých a měkkých těles, Ragdoll fyziku, dynamiku vozidel, simulaci objemové kapaliny a simulaci tkaniny. Hry s volitelnou podporou hardwarové akcelerace PhysX často obsahují další fyzikální efekty, jako trhání tkaniny, dynamický kouř nebo simulace částicových nečistot. PhysX se používá v několika herních enginech – 3, Unity, , 6, Instinct Engine, , , , HeroEngine a BigWorld. Existuje také ve formě externího pluginu pro programy společnosti Autodesk – 3ds Max, Maya a Softimage [42].

5.2.3 Havok

Havok je fyzikální engine vyvinutý irskou společností se stejnojmenným názvem Havok. První verze byla zveřejněna v roce 2000, od září 2007 Havok vlastní americká společnost Intel. Podobně jako PhysX, i Havok se vyskytuje ve formě pluginů pro modelovací programy 3ds Max, Maya a Softimage. Software se skládá z několika jednotlivých fyzikálních modulů [43]:

Havok Physics – modul umožňující kolizi a dynamiku tuhých těles v reálném čase. Pomocí dynamické simulace také podporuje i ragdoll fyziku.

Havok Animation Studio – modul pro podporu reálného chování a animace postav, včetně inverzní kinematiky.

Havok Cloth – modul přidaný od roku 2008, zabývá se efektivní simulací oděvů a jiných deformovatelných předmětů, jako jsou vlasy, vlajky a listy.

Havok Destruction – modul též přidaný až v roce 2008, nabízí nástroj pro tvorbu zničitelného a deformovatelného prostředí tuhých těles.

Mezi další moduly patří Havok AI (chování umělé inteligence), Havok Script (pro vývoj konzolových her) a Havok Vision Engine (vývojová nástrojová sada). Havok se používá zejména v modifikované podobě v herním enginu Source. Engine navíc poskytuje snadnou aplikaci i do ostatních herních enginů.

5.2.4 Euphoria

Euphoria je animační a fyzikální engine navržený britskou softwarovou firmou NaturalMotion, který se hlavně soustředí na fyziku 3D postavy – její pohyb, dynamiku svalů a simulaci nervového systému. Namísto použití předdefinovaných animací, jsou akce a reakce postav syntetizovány v reálném čase a jsou pokaždé jiné i při přehrávání stejné scény. Nahrazuje také ragdoll fyziku mnohem komplexnější metodou fyzikální animace [44]. Euphoria se používá v herním enginu RAGE (Rockstar Advanced ) a je kompatibilní i s ostatními komerčními fyzikálními enginy. Engine byl poprvé použit v roce 2008 ve hře Grand Theft Auto IV.

33

5.2.5 Frostbite Engine

Frostibite Engine je herní engine s vlastním integrovaným fyzikálním enginem, vyvinutý společností EA Digital Illusions CE (DICE). V současně době již existuje třetí generace enginu [45]:

Frostbite 1.0 – První verze debutovala v roce 2008 ve hře Battlefield: Bad Company. Engine kromě propracované fyziky obsahuje i modul Destruction 1.0, který umožňuje hráči zdemolovat některé objekty (hlavně zdi), což bylo ve své době ve hrách nevídaným prvkem. O rok později se objevila vylepšená verze 1.5 ve hře Battlefield 1943, kde se vylepšila destrukce objektů v podobě Destruction 2.0, která umožňuje hráči ničit nejen zdi, ale i celé budovy.

Frostbite 2 – Další vylepšená verze debutovala v roce 2011 ve hře Battlefield 3. Engine využívá plné podpory DirectX 11 a 64 bitových procesorů, kde tato potenciálnost byla využita v Destruction 3.0, která vytváří ještě jemnější fyziku destrukce než jeho předchůdce pomocí technologie Geometrics Enlighten.

Frostbite 3 – Dosud nejnovější verze, která byla použita v říjnu 2013 ve hře Battlefield 4. Engine je opět vybavený vylepšeným Destruction 4.0, který zvyšuje možnost destrukce více objektům.

5.2.6 Bullet

Bullet je open-source fyzikální engine vytvořený bývalým zaměstnancem Sony Erwinem Counmansem. Bullet umožnuje simulaci pevných a měkkých těles s diskrétní a kontinuální detekcí kolizí, simulaci tkaniny a lana a simulací deformace různých předmětů. Engine je již obsažený v modelovacích programech Blender a Cinema 4D (v pluginu MoGraph 2). Také existuje ve formě externího pluginu do modelovacích programů společnosti Autodesk – Maya a 3ds Max. Engine se používá nejen v komerčních hrách, ale byl také použit ve speciálních efektech v několika hollywoodských filmech, pro usnadnění simulace tuhých těles [46].

5.2.7 Box2D

Box2D je open-source 2-dimenzionální fyzikální engine, používaný u čistě 2D her. První verze byla dostupná pro veřejnost v roce 2007. Engine byl napsaný v programovacím jazyce C++, do dnešního dne byl portován i do jiných programovacích jazyků a prostředích, jako je Java, Adobe Flash, C#, Lua nebo JavaScript. Engine dokáže provádět simulaci tuhých těles složených z libovolných konvexních mnohoúhelníků a vztahuje se i na gravitaci a tření. Detekci kolizí řeší přes několik rozdílných algoritmů podle způsobu dodržení stability těles. Engine je požíván v několika počítačových a mobilních hrách, například v hráči oblíbené sérii Angry Birds [47].

5.3 Demostrace CryEnginu a Unity

Pro grafickou demonstraci fyziky ve hrách jsem zvolil editory dvou herních enginů. Prvním je CryEngine 2 Sandbox Editor, který slouží k vytváření herního levelu, skriptu, terénu, animace nebo umisťování objektů a textur. Editor je dostupný společně s počítačovou hrou Crysis. I když k dnešnímu dni existuje volně ke stažení pro nekomerční

34

použití Sandbox editor pro CryEngine 3, zvolil jsem CryEngine 2 hlavně kvůli menším hardwarovým požadavkům a také kvůli již vytvořeným objektům importovaných ze samotné hry. Práce v editoru není složitá, ale pro ukázku jsem zvolil a poupravil vytvořenou herní mapu používanou ve hře Crysis.

První ukázka se zaměřuje na demonstraci jednoduché fyziky tuhých těles (sudů) a jejich následný pád, způsobující deformaci přilehlé chatrče. Druhá ukázka představuje detonaci výbušnin uvnitř budovy. Třetí prezentuje ničivý přírodní jev – tornádo a jeho působení na malé vesničce.

Obr. 18: Pád sudů v CryEngine 2

Obr. 19: Výbuch chatky v CryEngine 2

Obr. 20: Průběh tornáda v CryEngine 2

Jako druhý herní engine jsem zvolil Unity SDK verze 4.3.4, který obsahuje vestavěný fyzikální engine PhysX pro fyzikální simulaci 3D her a fyzikální engine Box2D při tvorbě 2D her. CryEngine Editor se zejména nejlépe hodí pro modifikaci již existujících her tohoto enginu, kdežto Unity je ideální hlavně na komplexní tvorbu nových her. Také umožňuje importovat modely a animace z téměř libovolné 3D aplikace, jako například z Maya, 3ds Max, Modo, Cinema 4D nebo Blender [48]. Pro ukázku simulace fyziky jsem vytvořil jednoduchou vlastní herní mapu, kde jsem opět vyskládal válcové objekty, na které dopadne z větší výšky mohutná koule.

35

Tvorba a rozhraní v Unity je velice podobné profesionálním 3D modelovacím programům. I zde se vymodelovaným válcům a kouli přiřazuje vlastnost tuhého tělesa, u kterého lze ještě nastavit hmotnost (Mass), odpor prostředí (Drag) a zapnutí / vypnutí gravitace. Samozřejmostí je i nastavení kolizního tvaru pro každý dynamický objekt, který dále nabízí i typ materiálu daného objektu – skákací (Bouncy), led (Ice), kov (Metal), guma (Rubber) a dřevo (Wood). Jako druhý pokus jsem zvolil simulaci kolize tkaniny. I zde se nachází dostačený počet možných úprav tkaniny, podobný v 3D modelovacích programech – tuhost v ohybu (Bending Stiffness), roztažnost (Stretching Stiffness), tlumení (Damping), tloušťka (Thickness), gravitace (Gravity), sebekolize (Self Collision), tření (Friction), hustota (Density), tlak (Pressure), kolizní odezva (Collision Response) a pevnost (Tear Factor).

Obr. 21: Pád válců v Unity

Obr. 22: Simulace tkaniny v Unity

Jak je možno vidět na obrázcích 18 až 22, i přes jednoduchý výpočet simulací, herní enginy nabízejí efektivní prezentaci simulace fyziky, které se mohou rovnat i s profesionálními 3D modelovacími programy. V případě Unity i jejich tvorba je podobná.

36

6 Závěr

Hlavním cílem této práce bylo prostudovat oblast simulací fyzikálních jevů, popsat, jaké druhy se běžně využívají v oblasti počítačové grafiky a porovnat některé tyto simulace v 3D modelovacích programech.

Každý modelovací program má své výhody i nevýhody. Cinema 4D je uživatelsky jednoduchá, pracuje se s ním intuitivně a pokusy ukázaly dobré výsledky, avšak do dnešního dne neexistuje oficiální modul pro komplexní simulaci kapaliny. Maya nezaostává mezi ostatními 3D modelovacími programy, ale tvorba bývá v některých případech složitější a v jednom pokusu při simulaci většího počtu tuhých těles měla problémy s časovou složitostí výpočtu. Navíc dosáhla i nepříznivých výsledků. Blender naopak nabízí komplexní tvorbu simulace fyziky, včetně široké škály nastavení.

Dalším cílem bylo prezentovat simulaci fyziky i v herním průmyslu. Postupně jsem popisoval různé, v současnosti používané fyzikální enginy a pro demonstraci jsem zvolil dva herní enginy – CryEngine 2 a Unity. Práce s těmito enginy byla opět jednoduchá, výsledky byly příznivé a dokazovaly, že i při zjednodušeném výpočtu simulace lze dosáhnout reálných a účinných efektů, které hráčům zpříjemňují zážitek z hraní video her.

37

Literatura

[1] OLDŘICH LEPIL, Milan Bednařík. Fyzika pro střední školy I. 4., přeprac. vyd. Praha: Prometheus, 2000. ISBN 978-807-1961-840.

[2] HORÁK, Zdeněk. Fyzika: Příručka pro vysoké školy. Svazek 2: příručka pro vysoké školy technického směru. Praha: SNTL, 1976, 1129 s.

[3] PENTLAND ALEX, John Williams. Good vibrations: modal dynamics for graphics and animation. New York, NY, USA: ACM, 1989.

[4] STEEB, W. Problems: with C and Java simulations. Hackensack, NJ: World Scientific, c2004, ix, 420 p. ISBN 98-125-6125-0.

[5] CAPELL, Steve, Matthew BURKHART, Brian CURLESS, Tom DUCHAMP a Zoran POPOVIĆ. Physically based rigging for deformable characters [online]. [cit. 20. 2. 2014]. Dostupné z: http://grail.cs.washington.edu/pub/papers/Capell-2005-PBR.pdf

[6] KONDO, Ryo, Takashi KANAI a Ken-ichi ANJYO. Directable animation of elastic objects [online]. [cit. 20. 2. 2014]. Dostupné z: http://graphics.c.u- tokyo.ac.jp/hp/archives/resources/SCA05-fin-prt.pdf

[7] BARAFF, David a Andrew WITKIN. Large steps in cloth simulation [online]. [cit. 22. 2. 2014]. Dostupné z: http://www.cs.cmu.edu/~baraff/papers/sig98.pdf

[8] DALDEGAN, Agnes, Nadia Magnenat THALMANN, Tsuneya KURIHARA a Daniel THALMANN. An Integrated System for Modeling, Animating and Rendering Hair [online]. [cit. 22. 2. 2014]. Dostupné z: http://www.researchgate.net/profile/Nadia_Thalmann/publication/37442357_An_integrate d_system_for_modeling_animating_and_rendering_hair/file/3deec52413ef5a9245.pdf

[9] FEATHERSTONE, R. Robot dynamics algorithms. Boston: Kluwer Academic Publishers, 1987, 211 s. ISBN 08-983-8230-0.

[10] TERZOPOULOS, Demetri, John PLATT, Alan BARR, Kurt FLEISCHER, Dimitri METAXAS a Ioannis A. KAKADIARIS. Elastically deformable models [online]. [cit. 24. 2. 2014]. Dostupné z: http://research.microsoft.com/en-us/um/people/jplatt/siggraph87- elastic.pdf

[11] CHANG, Johnny T., Jingyi JIN a Yizhou YU. A practical model for hair mutual interactions [online]. [cit. 24. 2. 2014]. Dostupné z: http://www.cs.illinois.edu/~yyz/publication/ha.pdf

38

[12] ZHANG, J., J. YANG, J. WEN, I. PRISLIN a K. HONG. Deterministic wave model for short-crested ocean waves: Part I. Theory and numerical scheme [online]. [cit. 24. 2. 2014]. Dostupné z: http://www.ewp.rpi.edu/hartford/~ernesto/S2013/ET/MaterialsforStudents/Ott/Wave%20E nergy%20Sources- Ott/Thermodynamics%20of%20waves/Deterministic%20wave%20model%20for%20short -crested%20ocean%20waves.pdfv

[13] THON, Sébastien a Djamchid GHAZANFARPOUR. Ocean waves synthesis and animation using real world information [online]. [cit. 24. 2. 2014]. Dostupné z: http://pluton.up.univ-mrs.fr/thon/recherche/articles/papers/cag2002.pdf

[14] FOSTER, Nick a Ronald FEDKIW. Practical animation of liquids [online]. [cit. 26. 2. 2014]. Dostupné z: http://physbam.stanford.edu/~fedkiw/papers/stanford2001-02.pdf

[15] STAM JOS. Stable Fluids [online]. [cit. 26. 2. 2014]. Dostupné z: http://www.autodeskresearch.com/pdf/ns.pdf

[16] ENRIGHT, Douglas, Stephen MARSCHNER a Ronald FEDKIW. Animation and rendering of complex water surfaces [online]. [cit. 28. 2. 2014]. Dostupné z: http://physbam.stanford.edu/~fedkiw/papers/stanford2002-03.pdf

[17] JAEGER, Heinrich, Sidney NAGEL a Robert BEHRINGER. Granular solids, liquids, and gases [online]. [cit. 28. 2. 2014]. Dostupné z: http://jfi.uchicago.edu/~jaeger/group/JaegerGroupPapers/granular/Granular_RMP.pdf

[18] LIU, C. -h., S. R. NAGEL, D. A. SCHECTER, S. N. COPPERSMITH, S. MAJUMDAR, O. NARAYAN a T. A. WITTEN. Force Fluctuations in Bead Packs [online]. [cit. 2. 3. 2014]. Dostupné z: http://wagner.ucsc.edu/Papers/forcechains.pdf

[19] BARDENHAGEN, S.G., J.U. BRACKBILL a D. SULSKY. The material-point method for granular materials [online]. [cit. 2. 3. 2014]. Dostupné z: http://www.math.unm.edu/~sulsky/papers/CMAME.pdf

[20] ZHU, Yongning, Robert BRIDSON a D. SULSKY. Animating sand as a fluid [online]. [cit. 4. 3. 2014]. Dostupné z: http://www.cs.ubc.ca/~rbridson/docs/zhu- siggraph05-sandfluid.pdf

[21] GARDNER, Geoffrey Y. Visual simulation of clouds [online]. [cit. 4. 3. 2014]. Dostupné z: https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf

[22] STAM, Jos a Eugene FIUME. Turbulent wind fields for gaseous phenomena [online]. [cit. 6. 3. 2014]. Dostupné z: http://www.ann.jussieu.fr/~frey/papers/applications/Stam%20J.,%20Turbulent%20wind% 20fields%20for%20gaseous%20phenomena.pdf

[23] DOBASHI, Yoshinori, Kazufumi KANEDA, Hideo YAMASHITA, Tsuyoshi OKITA a Tomoyuki NISHITA. A simple, efficient method for realistic animation of clouds [online]. [cit. 6. 3. 2014]. Dostupné z: http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1&type=pdf&doi=10.1.1.205.3540

39

[24] KUNDU, Pijush K, Ira M COHEN a Howard H HU. Fluid mechanics: McGraw-Hill Book Co. 2nd ed. San Diego: Academic Press, c2002, xxiv, 730 p. ISBN 01-217-8251-4.

[25] EDITORS, Peter Hjort Lauritzen. Numerical techniques for global atmospheric models. Berlin: Springer, 2011. ISBN 978-364-2116-407.

[26] JENSEN, Henrik Wann a Per H. CHRISTENSEN. Efficient simulation of light transport in scences with participating media using photon maps [online]. [cit. 8. 3. 2014]. Dostupné z: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.118.6575&rep=rep1&type=pdf

[27] FEDKIW, Ronald, Jos STAM a Henrik Wann JENSEN. Visual simulation of smoke [online]. [cit. 8. 3. 2014]. Dostupné z: http://graphics.ucsd.edu/~henrik/papers/smoke/smoke.pdf

[28] HUANG, Zhanpeng, Guanghong GONG a Liang HAN. Physically-based modeling, simulation and rendering of fire for computer animation [online]. [cit. 10. 3. 2014]. Dostupné z: http://graphics.ucsd.edu/~henrik/papers/fire/fire.pdf

[29] STAM, Jos a Eugene FIUME. Depicting fire and other gaseous phenomena using diffusion processes [online]. [cit. 10. 3. 2014]. Dostupné z: http://www.autodeskresearch.com/pdf/sig95.pdf

[30] Cinema 4D. Wikipedie [online]. Aktualizace 21. 2. 2014 [cit. 17. 3. 2014]. Dostupné z: http://en.wikipedia.org/wiki/Cinema_4D

[31] Autodesk Maya. Wikipedie [online]. Aktualizace 24. 2. 2014 [cit. 18. 3. 2014]. Dostupné z: http://en.wikipedia.org/wiki/Maya_software

[32] Blender Release Notes [online]. 2014 [cit. 14. 4. 2014]. Dostupné z: http://wiki.blender.org/index.php/Dev:Ref/Release_Notes

[33] POKORNÝ, Pavel. Blender: naučte se 3D grafiku. 2., aktualiz. a rozš. vyd. Praha: BEN - technická literatura, 2009, 286 s. ISBN 978-80-7300-244-2.

[34] DERAKHSHANI, Dariush. Maya: průvodce 3D grafikou. 1. vyd. Překlad Ivo Blachowitz. Praha: Grada, 2006, 428 s. ISBN 80-247-1253-9.

[35] BOURG DAVID, M. Physis for game developers. Vyd. 1. Boston: O'Reilly, 2002, 326 s. ISBN 05-960-0006-5.

[36] KERLOW, Isaac Victor. Mistrovství 3D animace: ovládněte techniky profesionálních filmových tvůrců. Vyd. 1. Brno: Computer Press, 2011, 496 s. ISBN 978-80-251-2717-9.

[37] Building an Advanced Particle System. Gamasutra: the art & business of making games [online]. 23. 6. 2000 [cit. 16. 4. 2014]. Dostupné z: http://www.gamasutra.com/view/feature/3157/building_an_advanced_particle_.php

[38] Ragdoll Physics On The DS. Gamasutra: the art & business of making games [online]. 29. 1. 2009 [cit. 16. 4. 2014]. Dostupné z: http://www.gamasutra.com/view/feature/3916/ragdoll_physics_on_the_ds.php

40

[39] JAKOBSEN, Thomas. Advanced Character Physics [online]. 10. 4. 2008 [cit. 18. 4. 2014]. Dostupné z: http://web.archive.org/web/20080410171619/http://www.teknikus.dk/tj/gdc2001.htm

[40] CryEngine. Crytek Official Page [online]. 2014 [cit. 18. 4. 2014]. Dostupné z: http://www.crytek.com/cryengine

[41] CUDA: Parallel Computing Platform. NVIDIA: World Leader in Visual Computing Technologies [online]. 2014 [cit. 18. 4. 2014]. Dostupné z: http://www.nvidia.com/object/cuda_home_new.html

[42] 3ds Max 2012 and Maya 2012 adds PhysX support. Beyond3D [online]. 2011 [cit. 18. 4. 2014]. Dostupné z: http://www.beyond3d.com/content/news/765

[43] Product Overview. Havok Physics [online]. 2014 [cit. 18. 4. 2014]. Dostupné z: http://www.havok.com/products

[44] Naturalmotion [online]. 2014 [cit. 18. 4. 2014]. Dostupné z: http://www.naturalmotion.com/

[45] Frostbite Engine. Wikipedie [online]. Aktualizace 10. 4. 2014 [cit. 20. 4. 2014]. Dostupné z: http://en.wikipedia.org/wiki/Frostbite_%28game_engine%29

[46] Bullet: Physics Library [online]. 2014 [cit. 20. 4. 2014]. Dostupné z: http://code.google.com/p/bullet/

[47] Box2D: A 2D Physics Engine for Games [online]. 2014 [cit. 20. 4. 2014]. Dostupné z: http://box2d.org/

[48] Importing Models from 3D app. Unity: Game engine, tools and multiplatforms [online]. 2014 [cit. 20. 4. 2014]. Dostupné z: http://docs.unity3d.com/Documentation/Manual/HOWTO-importObject.html

41

Přílohy

Přiložené DVD obsahuje následující položky:

 Tuto bakalářskou práci ve formátu pdf.  Adresář source, který obsahuje zdrojové soubory všech příkladů.  Adresář video, který obsahuje vyrenderované animace všech příkladů.  Adresář picture obsahující všechny obrázky použité v textu v původní velikosti.

42