Globální osvětlení v real-time 3D grafice. Bc. Jaroslav Meloun

Rozměr: px
Začít zobrazení ze stránky:

Download "Globální osvětlení v real-time 3D grafice. Bc. Jaroslav Meloun"

Transkript

1 České vysoké učení technické v Praze Fakulta elektrotechnická Diplomová práce Globální osvětlení v real-time 3D grafice Bc. Jaroslav Meloun Vedoucí práce: Ing. Daniel Sýkora, Ph.D. Studijní program: Elektrotechnika a informatika strukturovaný magisterský Obor: Informatika a výpočetní technika květen 2008

2 iv

3 Poděkování Děkuji Štěpánu Hrbkovi za pomoc při seznamování s Lightsprintem, Jaroslavu Křivánkovi za konzultace, Danielu Sýkorovi za připomínky k textu práce a kolegům Ondřeji Bendovi a Jiřímu Brožkovi za testování aplikace. v

4 vi

5 Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne vii

6 viii

7 Abstract The thesis deals with analysis of a global illumination usage in interactive applications. Global illumination computations are based on physically correct light transfer principles, two major computation methods are raytracing and radiosity. Due to heavy computations, global illumination methods are usually approximated in interactive applications using specific techniques. Properties of human perception are usually taken in account during the process. Radiosity-based methods seem to have better perspective for interactive application use, mainly due to real-time performance on a state-of-the-art hardware. The result of this thesis is a simple computer game featuring global illumination that is computed using the radiosity method. Abstrakt Cílem této diplomové práce je analyzovat možnosti globálního osvětlení v rámci interaktivních aplikací. Výpočet globálního osvětlení je založen na principech fyzikálně korektního šíření světla, dva hlavní způsoby jeho výpočtu jsou raytracing a radiozitní metoda. Globální osvětlovací metody jsou výpočetně náročné, v interaktivních aplikacích je proto globální osvětlení různými technikami aproximováno. Při aproximaci jsou často brány v potaz vlastnosti lidského perceptuálního systému. Pro využití v interaktivních aplikacích se aktuálně jako perspektivnější ukazuje radiozitní metoda, vzhledem k možnosti provádět její výpočet v reálném čase i na běžně dostupném hardware. Výstupem této práce je jednoduchá počítačová hra, která pro výpočet globálního osvětlení využívá právě radiozitní metodu. ix

8 x

9 Obsah Seznam obrázků xiii 1 Úvod Aplikace počítačové grafiky Význam osvětlení Struktura textu Osvětlovací metody Zobrazovací rovnice Notace světelných cest Lokální osvětlení Globální osvětlení Přímé osvětlení Nepřímé osvětlení Efekty globálního osvětlení Výpočet globálního osvětlení Popis výpočtu Charakteristiky metod Raytracing Radiozita Teoretické aproximace Raytracing In Egoshooters Globální osvětlení v praxi Percepce Praktické aproximace Ambientní osvětlení Světelné mapy Ambient Occlusion Další způsoby Srovnání osvětlovacích metod Návrh hry Cíle a forma Provedení Scénář Aspekty globálního osvětlení Volba RTGI metody Nové herní koncepty Implementace hry Použité knihovny Struktura GameApplication GameScript GameEvent GameObject GameControls xi

10 6.2.6 GameGUI GameAudio OgreLightsprint Skriptovací jazyk Syntaxe Interpretace Globální osvětlení v OGRE Osvětlovací proces Zobrazení přímého osvětlení Detekce přímého osvětlení Zobrazení globálního osvětlení Zobrazovací řetězec v OGRE Návrh techniky Privátní nepřímé osvětlení Optimalizace výkonu Přenositelnost Testování Srovnání Závěr 47 9 Literatura 49 A Barevná příloha 51 B Seznam použitých zkratek 55 C Specifikace jazyka GameScript 57 D Příručka 59 E Obsah přiloženého CD 61 xii

11 Seznam obrázků 1.1 Srovnání počítačové grafiky ve filmu a v počítačových hrách Členy zobrazovací rovnice Typy odrazů Lokální osvětlení Složky globálního osvětlení Efekty globálního osvětlení Princip sledování paprsku Radiozitní metoda Raytracing in Egoshooters Oasen Srovnání ambientního a globálního osvětlení Radiosity Normal Mapping Ambient Occlusion Ambient Occlusion Srovnání osvětlovacích metod Obrázky ze hry Schéma propojení hry s externími knihovnami Objektový model herní aplikace Ukázka několika herních objektů Srovnání stínovacích metod Schéma detekce přímého osvětlení Schéma kompozitoru pro globální osvětlení Schéma zobrazovací techniky pro globální osvětlení xiii

12 xiv

13 KAPITOLA 1. ÚVOD 1 1 Úvod Jedním z cílů počítačové grafiky je realistické modelování a zobrazování scén. Významnou roli při tom hraje způsob, jakým je řešeno osvětlení a stínování objektů. Tato diplomová práce se zaměřuje na metody výpočtu realistického osvětlení a možnosti jeho použití v real-time 3D aplikacích (především počítačových hrách). Cílem práce bylo vytvoření jednoduché hry, která uživateli praktickou formou prezentuje běžně používané osvětlovací metody a především poukáže na výhody globálního osvětlení. Obrázek 1.1: Srovnání počítačové grafiky ve filmu a v počítačových hrách film Final Fantasy: Advent Children (2006, Sony Pictures Home Entertainment), hra Half-Life 2: Episode Two (2007, Valve Corporation), hra Crysis (2007, Crytek) 1.1 Aplikace počítačové grafiky Počítačová grafika je poměrně široký pojem zahrnující velké množství specializací. Přesto je nejčastěji spojován pouze s jednou z nich, a tou je realistické zobrazování 3D scén, resp. syntéza obrazu. Počítačová grafika nachází uplatnění v široké škále oborů od zábavního průmyslu až po praktické aplikace. Každá z aplikačních oblastí klade jiné požadavky, a tomu odpovídá i specifický vývoj metod používaných v dané oblasti. V zábavním průmyslu se poměrně výrazně vyčleňují dvě větve, které počítačovou grafiku využívají. Jedná se o filmový průmysl a počítačové hry. V některých případech mohou obě oblasti splývat, přesto je mezi nimi stále jasně patrná odlišnost v jejich přístupu k využití grafiky. Film Ve filmové tvorbě je počítačová grafika využívána nejen pro dotváření trikových záběrů, ale čím dál častěji jako nástroj pro kompletní vytváření scén i celých filmů. Stejně jako filmové triky samotné, tak i počítačová grafika prošla a stále prochází vývojem. Díky výkonnějšímu hardwaru a nově nalézaným zobrazovacím a výpočetní metodám je neustále zlepšována vizuální kvalita i realističnost. Počítačové hry Herní průmysl klade na využití počítačové grafiky poměrně specifické požadavky. Počítačová hra je výrazně interaktivní médium. Průběh hry je plně ovládán hráčem a hra musí okamžitě reagovat na veškeré jeho příkazy. Zobrazovaný obsah proto nelze předem připravit, ale je nutné jej vytvářet a zobrazovat v reálném čase. Protože výkon grafické karty má jen omezenou kapacitu, je třeba upřednostňovat vysokou rychlost zobrazení na úkor kvality. Důsledkem je celkem patrný vizuální rozdíl mezi grafikou počítačových her a filmů (viz obr. 1.1).

14 2 KAPITOLA 1. ÚVOD Díky neustálému zvyšování výkonu grafických karet se ke slovu dostávají i náročnější výpočetní metody, které umožňují realističtější zobrazení. Právě možnosti jejich použití jsou jedním z témat této práce. Praktické aplikace Pěkným příkladem praktického využití počítačové grafiky jsou architektonické vizualizační nástroje. Díky nim je možné s velkou dávkou realističnosti zobrazovat návrhy staveb a následně jimi virtuálně procházet. Velkou výhodou je možnost simulace vnitřního osvětlení budov, které jasně prokáže výhody i nevýhody navrhovaného osvětlovacího řešení. 1.2 Význam osvětlení Stejně jako při orientaci v reálném světě, tak i v procesu počítačového zobrazování modelu scény hraje osvětlení velmi významnou roli. Osvětlení napomáhá lidskému vnímání snadněji pochopit hloubku scény, a tím odhadnout její prostorové rozložení. Existuje velké množství metod, které výpočet a zobrazení osvětlení umožňují. Vzájemně se ovšem v mnoha ohledech odlišují, a právě charakteristikami těchto zobrazovacích metod se zabývá následující kapitola. 1.3 Struktura textu První část práce (kapitoly 1 až 4) je věnována rešerši metod používaných pro výpočet realistického osvětlení a jejich real-time modifikacím. Je zde podán teoretický úvod do problematiky, shrnutí aktuálně používaných metod, srovnání jejich charakteristik a návrh nejperspektivnějšího řešení pro danou úlohu. U metod je uváděn jejich základní princip i modifikace používané v praxi, z nichž některé jsou použity ve výsledné hře. Další část (kapitoly 5 až 8) je věnována implementaci samotné 3D hry. Kromě popisu jejího návrhu jsou zde rozvedeny vizuální i konceptuální možnosti, které interaktivní realistické osvětlení nabízí. V závěru je výsledná aplikace srovnána s podobnými implementacemi.

15 KAPITOLA 2. OSVĚTLOVACÍ METODY 3 2 Osvětlovací metody Pro výpočet osvětlení existuje celá škála metod, každá z nich se snaží realistické osvětlení aproximovat jiným způsobem. Metody při tom dosahují různé přesnosti a od toho se následně odvíjejí i jejich časové nároky. Účelem této kapitoly je základní seznámení s nejpoužívanějšími technikami, které řeší problém výpočtu osvětlení, a především vysvětlení přístupu označovaného jako globální osvětlení. Osvětlovací metody se obecně liší v mnoha parametrech, mezi ty nejvýznamnější patří kvalita zobrazení, rychlost výpočtu nebo jejich škálovatelnost. V závislosti na použité metodě se může přesnost a tím i výsledné zobrazení scény vizuálně velmi lišit (viz. obr 4.5). Osvětlovací metody lze charakterizovat i pomocí jejich omezujících faktorů. Mezi ty obvykle patří velikost zobrazované scény, počet světelných zdrojů, pohyblivost objektů ve scéně nebo charakter zobrazovaného osvětlení (charakteristiky zmíněny v [9]). Osvětlovací metodu je proto nutné volit s přihlédnutím k těmto faktorům. 2.1 Zobrazovací rovnice Jako nástroj pro zjednodušený popis osvětlovacích metod použijeme zobrazovací rovnici podle Kajiya [5]. Toto sjednocení nám následně usnadní i vzájemné srovnání jejich přístupu. Díky němu budeme moci snadno nahlédnout, které metody jsou fyzikálně věrnější a které jsou naopak založeny spíše na aproximaci. Zobrazovací rovnice popisuje přenos světelné energie mezi plochami, resp. hodnotu osvětlení v konkrétním bodě v závislosti na okolních podmínkách. Podle Kajiya [5] je tato hodnota definována vztahem kde [ ] I(x, x ) = g(x, x )v(x, x ) e(x, x ) + ρ(x, x, x )I(x, x )dx, (2.1) S I(x, x ) je intenzita osvětlení v bodě x přicházející z x g(x, x ) je geometrický člen v(x, x ) je člen vyjadřující viditelnost e(x, x ) vyjadřuje vlastní záření emitované z x do x ρ(x, x, x ) je člen určující míru odrazu Rovnice 2.1 vyjadřuje intenzitu osvětlení, které do bodu x přichází z bodu x (viz obr. 2.1). Integrace je prováděna přes součet povrchů všech ploch ve scéně. Rovnice je tedy vzájemně řešena pro všechny body scény (míněno body na povrchu objektů), resp. k osvětlení každého jednotlivého bodu přispívají všechny ostatní. Kajiya [5] vysvětluje, že rovnice vzhledem ke své obecnosti zjednodušuje osvětlovací model a tím zanedbává některé optické jevy. Výsledná intenzita je totiž pouze průměrem za jednotku času a nezohledňuje tudíž časově proměnlivou fázi. Tím pádem jsou zanedbány veškeré difrakční jevy (lom světla). Rovnice zároveň předpokládá, že mezi body x a x existuje homogenní prostředí, které žádným způsobem neovlivňuje intenzitu šířeného světla. Tím pádem nelze simulovat tzv. opticky aktivní prostředí s proměnlivou hustotou. Geometrický člen g(x, x ) vyjadřuje vztah geometrie scény a dráhy mezi body x a x. Pro jeho hodnotu platí g(x, x ) = cosθcosθ r(x, x ) 2, (2.2)

16 4 KAPITOLA 2. OSVĚTLOVACÍ METODY Obrázek 2.1: Členy zobrazovací rovnice. kde θ, resp. θ je úhel k normále v bodě x, resp. x (viz obr. 2.1) a r(x, x ) je vzdálenost bodů x a x. Přenos světla mezi body x a x je tedy ovlivněn vzdáleností bodů, ale i vzájemnou orientací ploch, na kterých jsou body umístěny. Člen v(x, x ) určuje viditelnost mezi body x a x. Neexistuje-li mezi body x a x přímá viditelnost, nabývá v(x, x ) hodnoty 0, v opačném případě je jeho hodnotou 1. Řešení viditelnosti mezi objekty ve scéně je výpočetně náročnou operací, některé metody jej proto aproximují, popř. zcela vypouštějí. Emisivní člen e(x, x ) určuje intenzitu vlastního záření, které je z bodu x emitováno směrem k bodu x. Jde o člen vyjadřující vlastní záření vydávané některými plochami. Odrazivý člen ρ(x, x, x ) určuje intenzitu světla, které bylo vysláno z bodu x do bodu x odrazem přes plochu v bodě x. Míra přenosu při tom závisí především na úhlech, pod kterými světlo přichází a odráží se. Obdobnou úlohu řeší často používaná funkce definující materiálové vlastnosti, označovaná jako dvousměrová odrazová distribuční funkce BRDF [13, 3] (angl. Bidirectional reflectance distribution function). Zobrazovací rovnice 2.1 má rekurentní podobu. Ta se ovšem v praxi zjednodušuje pomocí aproximativních řešení. Abychom mohli lépe vyjadřovat vztahy složené z několikanásobných odrazů, převedeme nyní zobrazovací rovnici na jedno z aproximativních řešení. Kajiya [5] popisuje postup, při kterém je základní zobrazovací rovnice 2.1 převedena do tvaru I = gve + gvmi, (2.3) kde M je lineární operátor daný původním integrálem v základní rovnici 2.1. Po provedení úprav kde 1 je jednotková matice, je využit vztah a výsledek převeden na Neumannovu řadu (1 gvm)i = gve I = (1 gvm) 1 gve, (1 T ) 1 = T n n=0 I = gve + gvmgve + (gvm) 2 gve + (gvm) 3 gve (2.4) Pro zajištění konvergence přitom musí být dodržena podmínka M < 1. Pomocí vztahu 2.4 lze vyjádřit zobrazovací rovnici některých aproximativních metod.

17 KAPITOLA 2. OSVĚTLOVACÍ METODY 5 Výše uvedenou zobrazovací rovnici v integrálním 2.1 a operátorovém 2.4 tvaru budeme používat jako základní model, na který budeme převádět osvětlovací řešení popisovaných metod. Nebudeme přitom řešit konkrétní jednotky fyzikálních veličin, ale zaměříme se spíše na složení rovnic a způsob implementace jednotlivých členů. 2.2 Notace světelných cest Některé zobrazovací metody berou v potaz pouze určité typy světelných odrazů. Pro popis dráhy, po které je světlo v takovém případě přenášeno, je používána tzv. notace světelných cest [4, 17]. Jedná se o zjednodušenou formu regulárních výrazů, která podle [17] definuje následující symboly: L světelný zdroj D difuzně odrazivá plocha S zrcadlově odrazivá plocha G lesklá plocha E oko pozorovatele, kamera Zároveň jsou definovány následující modifikátory: (k)? žádný nebo jeden odraz typu k (k)+ jeden nebo více odrazů typu k (k)* žádný nebo více odrazů typu k (k l) odraz typu k nebo l Např. cestu paprsku vyslaného ze světelného zdroje, který se od difuzně odrazivé plochy odrazil do kamery, pak popíšeme výrazem LDE. Podle jejich charakteru rozlišujeme několik druhů odrazu světla (viz obr. 2.2): difuzní odraz příchozí paprsek je rozptýlen rovnoměrně do všech směrů, stínování je tedy nezávislé na úhlu pohledu. Výsledkem je měkce stínovaný objekt. lesklý odraz příchozí paprsek je odražen do určitého rozmezí, stínování je závislé na úhlu pohledu. Výsledkem jsou lesklé oblasti v místech odrazu. zrcadlový odraz příchozí paprsek je odražen do jediného směru (platí zákon odrazu). Výsledkem je objekt, v jehož povrchu se přesně odráží okolní scéna. Jak potvrzují Stokes et al. [15], jednotlivé typy odrazů světla mají pro lidské vnímání různou důležitost (viz kapitola 4.1), některé metody se proto zaměřují pouze na vybrané typy odrazů. Pro jejich vzájemné srovnání proto budeme používat notaci světelných cest. 2.3 Lokální osvětlení Skupina osvětlovacích metod označovaná jako lokální osvětlení pojímá osvětlovací model zjednodušeným způsobem. Lokální osvětlení [17] bere při osvětlování každého objektu v úvahu pouze jeho lokální vlastnosti pozici v prostoru a seznam světel ve scéně. Každý objekt je v tomto případě osvětlován zvlášť, jako by byl ve scéně osamocen. Vliv všech ostatních objektů na jeho

18 6 KAPITOLA 2. OSVĚTLOVACÍ METODY Obrázek 2.2: Typy odrazů. Zleva: difuzní odraz, lesklý odraz, zrcadlový odraz osvětlení je potlačen. Nemůže tedy dojít k vzájemnému zastínění objektů ani odrazům světla mezi jejich povrchy. V důsledku zjednodušení odpadá nutnost provádět test viditelnosti mezi osvětlovaným objektem (resp. bodem na jeho povrchu) a světelným zdrojem. Základní zobrazovací rovnice 2.1 je tedy upravena do tvaru kde [ ] I(x, x ) = g(x, x )v(x, x ) e(x, x ) + ρ(x, x, x )e x dx, (2.5) L L je sjednocení ploch všech světelných zdrojů e x je intenzita vlastního vyzařování daného zdroje Vzhledem k absenci potenciálních zdrojů odraženého světla je původní integrál přes všechny plochy scény nahrazen integrací přes plochy světelných zdrojů. Integrální člen je přitom kromě odrazivého členu tvořen pouze intenzitou světelného zdroje, jejíž hodnota je ovšem přesně definována. Jsou-li místo plošných zdrojů světla použity pouze bodové zdroje, stává se z rekurentní rovnice (neznámá I(x, x ) na obou stranách) jednoduchá rovnice s konečným řešením. Rovněž v operátorovém tvaru bychom zobrazovací rovnici 2.4 pro lokální osvětlení mohli upravit do tvaru I = gve + gvmge. (2.6) Z části, na kterou je aplikován operátor M, byl přitom vypuštěn člen viditelnosti v. Výraz můžeme dále upravit na běžně používanou aproximaci I = gve + gvmge 0, (2.7) kde e 0 je intenzita vyzařování bodových zdrojů. Stejně jako v integrálním tvaru, i zde je rovnice zjednodušena z původně nekonečného počtu členů jsou použity pouze první dva. Ty určují vnitřní vyzařování plochy a příspěvky z bodových zdrojů. Kajiya [5] upozorňuje, že operátor M je aplikován pouze na ge 0 namísto původního gve. Příčinou je vypuštění testu viditelnosti v

19 KAPITOLA 2. OSVĚTLOVACÍ METODY 7 mezi plochou a zdroji světla, jak bylo zmíněno výše. Rovněž geometrický člen g je v některých případech zanedbán, viditelným důsledkem je pak nulový útlum světel se vzdáleností. Příjemným důsledkem zjednodušení je rychlý výpočet v lineárním čase. Rychlost je bohužel jedním z mála pozitiv této metody. Vzhledem k oddělenému stínování všech objektů (resp. ploch) nedochází k jejich vzájemnému zastiňování, a tím pádem k zobrazení vržených stínů [1]. Jako vržené označujeme stíny, které vznikají umístěním plochy mezi světelný zdroj a jinou plochu. Lokální osvětlení vytváří pouze tzv. vlastní stíny. Vlastní stíny vznikají na plochách, které jsou v důsledku své orientace odvráceny od světelného zdroje a intenzita dopadajícího světla je tím snížena. Na obr. 2.3 vpravo je ukázka lokálního osvětlení a vzniklé chyby krychle sice obsahují vlastní stíny (viz jejich stěny odvrácené od světla), ale ani jedna z nich nevrhá stín. Obrázek 2.3: Lokální osvětlení schéma zleva: osvětlení objektu A, osvětlení objektu B, výsledné osvětlení scény. Osvětlené hrany jsou vyznačeny tenkou čarou, zastíněné hrany silnou čarou. Scéna s lokálním osvětlením (vpravo). Pomocí notace světelných cest (viz kapitola 2.2) můžeme lokální osvětlovací model zapsat výrazem L(D G S)?E. (2.8) Lokální osvětlení tedy uvažuje nejvýše jeden odraz světla mezi světelným zdrojem a pozorovatelem. I přes uvedené nevýhody lokální osvětlení postačuje pro základní zobrazení objektů a je proto použito jako základní stínovací technika na většině GPU. 2.4 Globální osvětlení Globální osvětlení [13] je osvětlovací přístup, který odstraňuje nedostatky lokálního osvětlení. Při zobrazování jednotlivých objektů je zde brána v potaz geometrie celé scény. Díky tomu lze simulovat odražené světlo a další fyzikální jevy, získané výsledky se proto velmi blíží realistickému osvětlení. Globální osvětlení je tvořeno součtem dvou základních složek přímého a nepřímého osvětlení [13] (viz obr. 2.4). Uvedené složky se liší počtem světelných odrazů. Pro názornost budeme dále šíření světla popisovat ve formě světelných paprsků. Zjednodušeně řečeno tedy počet odrazů určuje, kolikrát se světelný paprsek odrazil, než dopadl ze světelného zdroje do konkrétního bodu Přímé osvětlení Přímé osvětlení je tvořeno paprsky světla, které na povrch objektů dopadly přímo ze světelného zdroje. Mezi zdrojem světla a místem dopadu paprsku tedy existuje přímá viditelnost nedošlo k odrazu, lomu ani pohlcení paprsku (viz obr. 2.4).

20 8 KAPITOLA 2. OSVĚTLOVACÍ METODY Obrázek 2.4: Složky globálního osvětlení vlevo: pouze přímé osvětlení, vpravo: přímé i nepřímé osvětlení. Základem přímé složky globálního osvětlení je lokální osvětlení. V důsledku globálního přístupu ke geometrii scény je ovšem řešena viditelnost světelných zdrojů. Operátorový tvar zobrazovací rovnice 2.4 tedy lze vyjádřit ve tvaru I = gve + gmgve 0. (2.9) Oproti vztahu 2.6 přibyl člen viditelnosti v. Při sčítání příspěvků světelných zdrojů je tedy brána v potaz jejich viditelnost a tím dochází ke vzniku vržených stínů. Přidáním dalšího testu viditelnosti do zobrazovací rovnice přirozeně roste výpočetní náročnost celé operace. Existují ovšem metody, které umožňují zobrazení vržených stínů v lineárním čase. Ty nejčastěji používané jsou založeny na tzv. stínových tělesech nebo stínových mapách, oba uvedené přístupy jsou podrobně popsány v [1]. Oblasti stíněné před všemi zdroji světla mají při použití přímého osvětlení nulovou intenzitu ozáření a ve výsledku se jeví jako absolutně černé. V reálném světě se však absolutně černé stíny prakticky nevyskytují. Dochází totiž k odrazům světla mezi objekty a alespoň malá část odraženého světla vždy dopadne i do úplně zastíněných oblastí. Pomocí notace světelných cest můžeme přímé osvětlení zapsat stejným výrazem jako pro lokální osvětlení 2.8. Notace totiž při popisu nezohledňuje testy viditelnosti, které tvoří v tomto případě jediný rozdíl Nepřímé osvětlení Nepřímé osvětlení [13] je tvořeno veškerými světelnými příspěvky, které nepovažujeme za přímé osvětlení (viz obr. 2.4). Jedná se tedy o odražené a lomené světelné paprsky, které tvoří doplněk k přímému osvětlení. Operátorový tvar zobrazovací rovnice přímého osvětlení 2.9 je tvořen prvními dvěma členy původního tvaru zobrazovací rovnice 2.4. Nepřímé osvětlení tvoří doplněk k přímému osvětlení, což platí i pro jeho operátorové vyjádření: I = (gvm) 2 gve + (gvm) 3 gve (2.10) Narozdíl od vztahu 2.9 již není použit zjednodušený člen e 0. Nepřímé osvětlení je totiž distribuováno mezi všemi plochami scény, a ne pouze ze světelných zdrojů. Integrační krok je tedy nutno provádět přes všechny plochy ve scéně. Právě to je hlavní příčina výpočetní náročnosti nepřímého osvětlení. Pomocí notace světelných cest můžeme nepřímé osvětlení zapsat výrazem L(D G S) + (D G S) + E. (2.11)

21 KAPITOLA 2. OSVĚTLOVACÍ METODY 9 Světelná cesta nepřímého osvětlení je tvořena alespoň dvěma odrazy, proto i člen (D G S) musí být ve výsledném výrazu zahrnut alespoň dvakrát. Některé metody využívají iterativního charakteru postupné konvergence, která umožňuje ukončení v případě dosažení postačující kvality výsledku. Důsledkem je částečné urychlení. 2.5 Efekty globálního osvětlení Hlavním přínosem globálního osvětlení (oproti lokálnímu osvětlení) je realističtější zobrazení. Díky přítomnosti nepřímého osvětlení lze zobrazovat některé optické jevy, kterých by při použití pouze přímého osvětlením nebylo možno dosáhnout. Podle [7] jsou efekty globálního osvětlení důsledkem dvou jevů: změna barvy světla v závislosti na spektrální odrazivosti materiálů změna intenzity světla v závislosti na geometrii a materiálových vlastnostech Mezi nejlépe pozorovatelné efekty globálního osvětlení přitom patří tzv. color-bleeding (vytvářený prvním uvedeným jevem) a kaustiky (vznikají na základě druhého jevu). Další podstatnou charakteristikou globálního přístupu je jemné gradientní osvětlení způsobené rozptylem odraženého světla. Obrázek 2.5: Efekty globálního osvětlení: color-bleeding (vlevo), kaustika (vpravo) Color-bleeding Color-bleeding (neboli vypůjčení barev) patří mezi nejlépe pozorovatelné efekty globálního osvětlení. Při odrazu světelného paprsku od povrchu barevného objektu dochází ke změně barvy odraženého světla. Blízké plochy díky tomu získávají vzájemně podobné zabarvení (viz červeně zbarvená levá část draka na obr. 2.5, resp. v barevné příloze A). Barva povrchu je v podstatě určena rozsahem vlnových délek světla, které povrch odráží a které naopak absorbuje. Např. po dopadu bílého světla na červený povrch dojde k odražení pouze červené složky, ostatní jsou absorbovány. Kaustiky Jako kaustiky jsou označovány světelné obrazce vzniklé soustředěním světelných paprsků. V místě soustředění paprsků pak dochází k intenzivnějšímu ozáření povrchu než v okolních oblastech. Nejznámějším příkladem je soustředění světelných paprsků pomocí zvětšovacího skla. Kaustiky lze pozorovat i na dně pod rozvlněnou vodní hladinou, na kterou dopadá sluneční světlo, či při průchodu světla skleněnými objekty (viz obr. 2.5).

22 10 KAPITOLA 2. OSVĚTLOVACÍ METODY Příčinou vzniku kaustik je odraz nebo lom paprsku. K tomu dochází nejčastěji při přechodu světelných paprsků mezi dvěma prostředími s různou hustotou. Při přechodu přes rozhraní je směr paprsků změněn a může tak dojít k jejich soustředění nebo rozptylu, což ovlivní výslednou intenzitu v místě dopadu a důsledkem je vznik nejrůznějších obrazců. Zobrazení kaustik nelze jednoduchým způsobem napodobit a je proto nutné simulovat dráhu paprsků, kterými jsou kaustiky tvořeny. Jak bude ukázáno v následujících kapitolách, jedná se o výpočetně velmi náročnou operaci.

23 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ 11 3 Výpočet globálního osvětlení Jak bylo naznačeno v předchozích částech, výpočet globálního osvětlení je poměrně netriviální operace. V následující kapitole budou nejprve ukázány rozdíly mezi výpočetními metodami a následně budou představeny dvě nejvýznamnější skupiny, které jsou pro výpočet globálního osvětlení používány raytracing a radiozita. 3.1 Popis výpočtu Vstupními hodnotami jakékoliv metody pro výpočet globálního osvětlení jsou geometrický model scény, informace o světelných zdrojích a popis materiálových vlastností objektů. Požadovaným výstupem je pak intenzita nepřímého osvětlení v každém bodě povrchu scény. Přímé osvětlení může být získáno některou jednodušší metodou a globální osvětlení pak vznikne jejich kombinací. 3.2 Charakteristiky metod Výpočetní metody můžeme rozdělit podle mnoha charakteristik, stejné rozdělení lze použít i pro speciální případ výpočtu, kterým je globální osvětlení. Seznámíme se především s těmi nejvýznamnějšími charakteristikami a přihlédneme přitom k parametrům, které jsou pro osvětlovací metody specifické. Míra interaktivity Jedním z nejdůležitějších kritérií při volbě výpočetní metody je předpokládaný účel jejího použití, resp. požadavky na interaktivitu. Metody, které jsou schopné dodávat výsledky v reálném čase, tzn. poskytují uživateli dostatečně rychlou zpětnou vazbu, označujeme jako real-time (též on-line) metody. Tyto metody jsou využívány všude, kde dochází k nějaké interakci s uživatelem. Může se jednat o počítačové hry, ale i lékařská diagnostická zařízení nebo navigační přístroje. Naopak metody, jejichž výpočetní náročnost neumožňuje dostatečně rychlou zpětnou vazbu, jsou označovány jako non-real-time (též off-line) metody. Zde se jedná především o fotorealistické zobrazovací aplikace, tedy aplikace, u kterých není nutná přímá interakce uživatele. Pohledová závislost Většina grafických aplikací rozlišuje dvě fáze výpočetní a zobrazovací. Během výpočetní fáze dochází ke zpracování vstupních dat a vypočtení nových hodnot. Ty jsou zobrazeny během zobrazovací fáze. Je důležité si uvědomit, že výpočetní fáze je obvykle prováděna pouze při změně vstupních hodnot nebo parametrů výpočtu v takovém případě je výsledky nutné přepočítat a opět zobrazit. Oproti tomu zobrazovací fáze probíhá u interaktivních aplikací prakticky neustále. Vypočtené výsledky jsou během ní vykreslovány na výstupní zařízení, i pokud nedošlo k jejich změně. Metody, jejichž vstupním parametrem je i pozice kamery, označujeme jako pohledově závislé. Při jakémkoliv pohybu kamery nebo změně úhlu pohledu je totiž nutné znovu přepočítat celou zobrazovanou scénu. Naopak metody, u nichž pozice kamery výpočet nijak neovlivňuje, označujeme jako pohledově nezávislé. Kamera se může volně pohybovat a k přepočtu scény dochází pouze při změně její geometrie nebo dalších parametrů.

24 12 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ Dynamika scény Nejen pozice kamery, ale i změna geometrie scény může mít vliv na výpočetní fázi, resp. potřebu přepočítat a aktualizovat vypočtené hodnoty. Umožňuje-li metoda pohyb objektů bez nutnosti nákladného přepočtu osvětlení, označujeme ji jako dynamickou. Naopak je-li nutné při pohybu objektu provést výpočetní fázi, jedná se o statickou metodu. Výše uvedená podmínka dynamičnosti metod je ovšem jen velmi obtížně splnitelná. Při pohybu každého objektu totiž dochází ke změně osvětlení, např. zastíněním jiného objektu. Některé metody proto objekty ve scéně rozdělují do dvou skupin na statické a dynamické. Statické objekty nemění svou pozici (jsou nepohyblivé), ale jsou brány v potaz při výpočtu globálního, resp. nepřímého osvětlení. Světlo se tedy od jejich povrchu odráží a dále se šíří ve scéně. Dynamické objekty mohou měnit svou pozici ve scéně (jsou pohyblivé), ale při výpočtu nepřímého osvětlení jsou ignorovány. Zachycují sice přímé osvětlení a vytvářejí vržené stíny, ale při šíření odraženého světla jsou brány jako neviditelné. Jejich nepřímé osvětlení je proto řešeno výpočtem nepřímého osvětlení, které k dynamickému objektu přichází ze všech směrů a to je pak na objekt promítnuto pomocí tzv. environment mapy (mapa okolního prostředí). Environment mapy jsou velmi často využívány ve skupině technik označovaných jako IBR [13] (Image Based Rendering). Škálovatelnost Důležitým parametrem všech výpočetních metod obecně je jejich škálovatelnost. Označuje se tak závislost jejich časové náročnosti na objemu zpracovávaných dat, resp. charakter této závislosti. V případě zobrazovacích a osvětlovacích metod je objem vstupních dat určen především velikostí, resp. složitostí zobrazované scény. Některé metody jsou velmi rychlé při výpočtu v malých scénách, ale jejich výpočetní náročnost u komplexnějších scén rapidně narůstá. Říkáme o nich, že jsou špatně škálovatelné. Naopak některé metody nejsou rychlé na malých scénách, ale i u náročnějších scén roste jejich výpočetní doba zhruba lineárně. Ty jsou označovány jako dobře škálovatelné. 3.3 Raytracing Raytracing (sledování paprsku) je označení velmi obsáhlé skupiny zobrazovacích metod (viz [13]). Tyto metody vycházejí z fyzikálního principu šíření světla a výpočet globálního osvětlení s jejich pomocí je proto logickým důsledkem. Stejně jako většina metod založených na simulaci fyzikálních principů, i raytracing podává velmi kvalitní výsledky zobrazení, cenou je ovšem vysoká časová náročnost. Princip výpočtu Základní princip je popsán na obr Předpokládáme, že světlo se šíří ze všech světelných zdrojů formou paprsků. Ty procházejí scénou, odrážejí se a některé z nich dopadnou na stínítko (resp. sítnici v oku pozorovatele), kde se vytváří obraz. Metoda sledování paprsku tedy postupuje zpět od stínítka, kam paprsek dopadl, a zpětně sleduje dráhu, kterou paprsek urazil. Během ní je upravována jeho výsledná intenzita. Směřuje-li např. paprsek ze stínítka přímo do zdroje světla, bude intenzita osvětlení výchozího bodu na stínítku rovná intenzitě zdroje. Naopak dopadne-li paprsek do zastíněné oblasti, bude jeho intenzita velmi nízká. Zobrazovací rovnice 2.4 v operátorovém tvaru upravená pro základní formu raytracingu pak bude mít následující podobu:

25 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ 13 Obrázek 3.1: Princip sledování paprsku schéma vlevo: skrze pixely tvořící obraz na stínítku jsou vysílány paprsky směrem do scény. Jejich výsledná intenzita je pak dána vlastnostmi materiálů a pozicí objektů, od kterých se paprsek odrazil. Obrázek vpravo: scéna zobrazená pomocí klasického raytracingu - nepřímé osvětlení je získáno malým počtem čistě zrcadlových odrazů. I = gve + gvm 0 gve 0 + (gvm 0 ) 2 gve 0 + (gvm 0 ) 3 gve 0 (3.1) Podle Kajiya [5] je zde původní operátor M nahrazen operátorem M 0, který je tvořen třemi složkami dvěma funkcemi a cosinovým členem. Funkce ovlivňují odraz a lom paprsků, cosinový člen představuje difuzní složku. Ze složení výše uvedeného vztahu 3.1 je vidět, že obsahuje členy rovnice pro přímé 2.9 i nepřímé 2.10 osvětlení. Základní zobrazovací rovnice raytracingu má tedy charakter globálního osvětlení (viz kapitola 2.4). Vztah 3.1 představuje nekonečnou řadu, počet odrazů sledovaných paprsků tedy není nijak omezen. V praxi je však rovnice aproximována a z původní řady je použito pouze několik prvních členů. Praktické aplikace ukazují, že postačujících výsledků lze dosáhnout i v případě jednotek odrazů [17]. Aproximace rovnice 3.1 určená pro praktické použití pak bude mít zhruba následující podobu: I = gve + gvm 0 gve 0 + (gvm 0 ) 2 gve 0 (3.2) Výše uvedená rovnice je tvořena třemi členy. První člen gve představuje emisivní složku, tedy světlo vyzařované samotnou plochou. Druhý člen gvm 0 gve 0 představuje přímé osvětlení, tedy ty paprsky světla, který byly po vyslání ze světelného zdroje odraženy přímo na stínítko jedná se tedy o odraz prvního řádu. Třetí člen (gvm 0 ) 2 gve 0 představuje nepřímé osvětlení tedy odraz druhého řádu. Pro zlepšení kvality jsou obvykle přidány i odrazy vyšších řádů, nám však pro ukázku postačí uvedené znění. Rovnice 3.2 rovněž obsahuje člen e 0 představující intenzitu bodových zdrojů. Světelné zdroje jsou v rámci aproximace redukovány pouze na bodové, jejichž příspěvek lze zjistit v konstantním čase. V obecném případě, resp. při použití plošných zdrojů světla by bylo nutné integrovat příspěvek přes celou jejich plochu. Jedná se tedy o další zjednodušení, které však přináší značné urychlení. Každý člen rovnice 3.2 obsahuje člen v určující viditelnost. Právě testování viditelnosti, resp. nalezení nejbližšího objektu kolidujícího s paprskem, je výpočetně nejnáročnější částí celého procesu. Častým řešením je proto organizace objektů do hierarchické struktury [17], popř. úprava metody, kterou jsou paprsky distribuovány [13]. Podle [17] můžeme světelné cesty použité při sledování paprsku zapsat ve tvaru L(D G)?S E, (3.3) kde figuruje libovolný počet zrcadlových odrazů S a lokální osvětlovací model reprezentovaný členem (D G).

26 14 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ Obraz je vytvářen na stínítku ze skupiny bodů (tzv. pixelů). Z každého bodu je přitom vysílán nejméně jeden paprsek. V praxi se však ukazuje, že pro realistické zobrazování scén to rozhodně nestačí a pro věrné zobrazení je vhodnější vysílat z každého pixelu desítky až stovky paprsků. Při jejich vysílání je rovněž výhodné nezaměřit se pouze na náhodné směry, ale přihlédnout k vhodné distribuční funkci [13]. Výše uvedený postup popisuje pouze základní princip sledování paprsků a jejich šíření skrze scénu. Existuje však množství variant, které raytracing aplikují v odlišné podobě [13]. Odlišnost může spočívat např. v počtu vysílaných paprsků, jejich směru, výpočtu odrazů, součtu jejich příspěvků apod. Charakteristiky V předešlé části 3.2 bylo definováno několik charakteristik, podle kterých lze výpočetní metody rozlišovat a porovnávat. Zkusíme se nyní zaměřit na využití raytracingu pro výpočet globálního osvětlení. Přihlédneme při tom k možnosti výpočtu v reálném čase. První charakteristikou byla míra interaktivity. Raytracing je ze své podstaty výpočetně náročnou metodou a na první pohled by se tedy jeho použití v interaktivních aplikacích mohlo zdát nemožné. Přesto však existují metody, pomocí kterých lze dosáhnout výrazného urychlení, které dosahuje až k mezím umožňujícím interaktivitu. Cenou je ovšem ve většině případů omezení ve formě speciálního typu scén, specializovaného hardware nebo nižší kvality. Několik interaktivních aplikací je popsáno v následující části. Další charakteristikou je pohledová nezávislost. Klasický raytracing je především zobrazovací metoda, syntéza obrazu tedy tvoří jádro celého výpočtu. Při každém pohybu kamery, resp. změně úhlu pohledu je nutno vyslat do scény novou skupinu paprsků a tím pádem zopakovat celý výpočetní cyklus. Je-li tedy raytracing využit pro zobrazování, jedná se o pohledově závislou metodu. Raytracing obecně nerozlišuje statické a dynamické objekty. Osvětlení je korektně počítáno pro všechny objekty, můžeme tedy všechny považovat za statické. Z toho ovšem vyplývá, že se nejedná a dynamickou metodu při pohybu některého objektu je nutné provést opětovný výpočet osvětlení v celé scéně. Existují sice metody, které řeší výpočty změn na lokální úrovni, ty jsou však určeny pouze pro speciální případy. Varianty Metoda popsaná rovnicí 3.1 je označována jako tzv. klasický raytracing. Její přístup je však v mnoha směrech zjednodušený a nedosahuje vždy zcela fyzikálně korektních výsledků. Kajiya [5] uvádí, že operátor M 0 v rovnici 3.1 sice obsahuje i členy definující lom a difuzní odraz, praktická implementace těchto složek je však poměrně obtížná. Klasický raytracing je proto obvykle vypouští a definuje pouze čistě zrcadlový odraz. Možné příchozí osvětlení vzniklé difuzním odrazem světla od jiné plochy je v tomto případě zcela ignorováno. Proto byly vyvinuty dokonalejší metody, které klasický princip sledování paprsku vylepšují [13]. Velmi obecně si představíme několik z nich. Path Tracing [13] z každého pixelu je vysláno velké množství sledovaných paprsků, jejichž intenzita je ve výsledku zkombinována. Paprsky se neodráží pouze zrcadlově, ale náhodně díky tomu jsou zajištěny i difuzní a další světelné příspěvky. Velké množství paprsků vyžaduje velký výpočetní výkon. Light Tracing [13] obdoba Path Tracingu, paprsky ovšem nejsou sledovány směrem ze stínítka, ale opačně, tedy od světelných zdrojů. Bi-directional Path Tracing [13] kombinace obou předchozích metod paprsky jsou sledovány ze stínítka i od světelných zdrojů, hledá se jejich propojení.

27 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ 15 Photon Mapping [9] ze světelných zdrojů jsou do scény nastříleny reprezentace fotonů (řádově miliony). Pomocí některé z variant raytracingu je pak scéna zobrazena, intenzita sledovaných paprsků je přitom ovlivněna nejbližšími fotony. Využití Pomocí pokročilých metod využívajících raytracing lze dosáhnout fotorealistického zobrazení scén. Většina případů vyžadujících vysokou vizuální kvalitu a nulovou míru interakce (např. filmová grafika, vizualizace) je proto řešena metodami založenými na raytracingu. Raytracing je výpočetně náročný především kvůli velkému množství paprsků, jejichž kolizi s objekty scény je třeba řešit. Jedná se ovšem o klasickou výpočetní úlohu, kterou lze částečně převést z CPU na GPU a využít tak urychlení díky paralelní funkci jednotek GPU. Na tomto principu jsou založeny některé z metod, které interaktivní raytracing řeší. Těm je věnována část Radiozita Radiozita [7, 17] je označení radiometrické veličiny, která určuje množství světla vyzářené určitou plochou za jednotku času vztažené na jednotku plochy. Proto bývá také označována jako intenzita vyzařování. Metody, které pro výpočet osvětlení využívají radiozitu, jsou označovány jako radiozitní. Tato skupina metod [13] je založena na principu konečných prvků. Scéna je v tomto případě rozdělena na plošné elementy, jejichž radiozita je považována za konstantní. Metody poté řeší distribuci světelné energie mezi těmito elementy. Narozdíl od raytracingu, který pracuje s elementárními paprsky (resp. na úrovni bodů), klasická radiozitní metoda řeší přenos světelné energie na úrovni ploch. Výsledné osvětlení tedy nedosahuje přesnosti raytracingu, ale pro nepříliš komplexní scény nabízí výrazně rychlejší výpočet. Radiozitní metody obecně pracují pouze s difuzními (všesměrovými) odrazy světla. Zápis pomocí světelných cest bude mít tedy podobu LD E (3.4) Radiozitní metody tedy obvykle neřeší zrcadlové odrazy ani lom světla způsobující kaustiky. Náhradou těchto nedostatků může být kombinace s jinou zobrazovací metodou, která tyto typy odrazů podporuje. Princip výpočtu Narozdíl od raytracingu nejsou radiozitní metody zobrazovací, ale pouze výpočetní. Pro samotné zobrazení scény je tedy nutné využít některou ze zobrazovacích technik ať už klasické polygonové zobrazování [17] na GPU nebo některou z variant raytracingu. Radiozitní metody jsou založeny na následujících předpokladech: scéna je složena z ploch s difuzní odrazivostí, některé z nich plní funkci zdroje světla a vyzařují tedy energii. Vstupem je tedy informace o velikosti a rozmístění ploch a počáteční energie každé z nich (nenulová pouze u zdrojů). Výpočet pak spočívá v postupné konvergenci k rovnovážnému stavu a nalezení energie vyzařované každou plochou. Až na triviální případy není přímo rovnovážného stavu dosaženo, ve většině případů se tedy jedná o aproximativní řešení. Radiozitní metody pracují pouze s difuzními typy odrazů, základní zobrazovací rovnice 2.1 je tedy upravena do následující podoby: [ ] I(x, x ) = g(x, x )v(x, x ) e(x, x ) + ρ 0 I(x, x )dx. (3.5) S

28 16 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ Obrázek 3.2: Radiozitní metoda podle metody progressive radiosity je počáteční energie distribuována ze světelných zdrojů (vlevo) a v dalších krocích pak předávána mezi všemi plochami (uprostřed). Obrázek vpravo: scéna zobrazená pomocí radiozitní metody. Původní odrazivý člen ρ(x, x, x ) je zde podle Kajiya [5] nahrazen konstantou ρ 0, protože v případě čistě difuzního odrazu není jeho míra nijak ovlivněna úhlem odrazu ani dopadu. Radiozitní rovnice [13] je obvykle uváděna v podobě: N B i = B ei + ρ i F ij B j, (3.6) kde B i je výsledná radiozita plochy i, B ei je radiozita emitovaná plochou i, ρ i definuje odrazivé vlastnosti plochy i a F ij je tzv. form faktor. Platí: F ij = 1 A i S i j S j v(x, y)g(x, y)da x da y, (3.7) kde A i je obsah plochy i, v(x, y) je člen určující viditelnost ploch a g(x, y) je geometrický člen [13] definující vzájemnou orientaci a vzdálenost ploch x a y. Form faktor F ij dvou ploch určuje, jak velká část energie vyzářené první plochou je přijata druhou plochou a naopak. Velikost tohoto poměru přitom závisí na velikosti ploch, jejich viditelnosti, vzdálenosti a vzájemném úhlu natočení. Operátorový tvar základní zobrazovací rovnice 2.4 platí i pro vyjádření radiozitní metody. Operátor M je zde však diskretizovaný, resp. tvořený maticí form faktorů. Radiozitní rovnice 3.6 je rekurentní, teoreticky ji lze řešit jako soustavu lineárních rovnic pro všechny plochy scény. Časová náročnost řešení této soustavy by však byla enormní, v praxi je proto výpočet většinou nějakým způsobem aproximován. Jedním z praktických řešení radiozitních úloh je tzv. progressive radiosity [13] (označovaná též jako radiosity shooting). Distribuce světelné energie je zde simulována v krocích (viz obr. 3.2). Na počátku každého kroku má každá plocha definovanou energii. Každá plocha pak veškerou svou energii vyzáří do prostoru mezi ostatní plochy. Tímto způsobem zároveň od ostatních ploch určitou dávku energie přijme. Velikost této dávky je dána jak viditelností, tak velikosti ploch a jejich vzájemnou orientací. Podle přijaté energie je upravena energie všech ploch a krok se opakuje. Po určitém počtu kroků dojde k dosažení rovnovážného stavu, který odpovídá výslednému osvětlení scény. Charakteristiky Pomocí dříve definovaných charakteristik se nyní pokusíme popsat radiozitní výpočetní metody. Jak vyplývá z principu šíření světelné energie, každá plocha ovlivňuje všechny ostatní a naopak. Důsledkem je vysoká časová složitost, resp. výpočetní náročnost. Na menších scénách sice může výpočet klasické radiozity probíhat dostatečně rychle, u komplexnějších scén však doba potřebná pro výpočet roste. Klasická radiozitní metoda tedy není příliš vhodná pro interaktivní aplikace,

29 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ 17 přesto ale dosahuje lepších výsledků než globální osvětlení získané pomocí raytracingu. Existují ovšem metody, které výpočet radiozity výrazně urychlují a s jejichž pomocí lze dosáhnout velmi rychlého výpočtu. Na jedné z těchto metod je založen i výsledek této práce, jejich bližšímu popisu se věnuje následující část. Radiozitní metody nejsou zobrazovací, ale pouze výpočetní metody. Při pohybu kamery, resp. změně úhlu pohledu nedochází ke změně světelných podmínek a dříve spočtené osvětlení proto není nutné žádným způsobem upravovat. Zobrazení scény je od samotného výpočtu osvětlení zcela odděleno. O radiozitních metodách tedy platí, že jsou pohledově nezávislé. Při pohybu některého z objektu scény dochází ke změně vztahů mezi plochami. Např. plochy, mezi kterými byla původně přímá viditelnost, se mohou vzájemně odvrátit a naopak. Tím pádem dochází ke změně distribuce světelné energie a je třeba spočítat nové osvětlovací řešení. Klasická radiozitní metoda tedy není dynamická. Existuje ovšem řešení formou zjednodušení. Objekty jsou rozděleny na statické a dynamické (viz kapitola 3.2) a distribuce energie je řešena pouze mezi plochami statických objektů. Za ústupek snížení věrnosti vypočteného osvětlení lze tedy umožnit pohyb dynamických objektů a zajistit jejich stínování pomocí odhadu osvětlení v jejich umístění. Jak již bylo naznačeno, klasická radiozitní metoda silně závisí na složitosti scény a není tedy příliš dobře škálovatelná. Existují však metody, které nárůst výpočetní doby se složitostí scény zmírňují. Přesto však platí, že pro dosažení interaktivity u velmi komplexních scén radiozitní metody stále nestačí. Varianty Radiozitní metoda má několik variant, resp. aproximativních metod. Ty se obvykle liší zjišťováním relací mezi plochami, způsobem iterativního výpočtu řešení a podmínkou pro ukončení výpočtu. Dvě základní varianty si zde uvedeme. Klasická radiozita popsána výše, vztahy ploch jsou vyjádřeny pomocí form faktorů (rovnice 3.7), řešením je soustava lineárních rovnic. Progressive radiosity výpočet probíhá v krocích (viz obr. 3.2), během každého kroku je vypočtena další úroveň odrazu. Iterativní přístup umožňuje ukončení výpočtu po dosažení dostatečné úrovně vizuální kvality. Využití Radiozitní metody pracují s osvětlením na úrovni ploch. Detailnost osvětlení je tedy závislá na podrobnosti scény. Ve většině případů proto nedosahuje kvality získané pomocí jiných osvětlovacích metod, např. raytracingu. Výhodou je však rychlost a nezávislost na zobrazovací metodě. Díky iterativnímu způsobu výpočtu lze navíc snadno ovlivnit rychlost výpočtu a tím i jeho kvalitu. V praxi se ukazuje, že použitelných výsledků radiozitního osvětlení lze dosáhnout už po 4 až 6 iteracích. Klasické radiozitní metody slouží k výpočtu difuzní složky nepřímého osvětlení. Další efekty globálního osvětlení je tedy nutno simulovat jinými metodami, nicméně difuzní složka se ukazuje jako nejpodstatnější (blíže viz [15] a kapitola 4.1). Díky tzv. rozšířeným form faktorům (angl. extended form factors) lze však klasické difuzní odrazy rozšířit i o lesklé odrazy a lom světla. Detailnost takto vzniklých zrcadlových odrazů a lomů je však stále závislá na podrobnosti scény a je orientována ne na pixely, ale pouze na celé plochy. Osvětlení spočtené pomocí radiozitních metod lze zobrazit několika způsoby. Jedním z nich je využití některé z raytracingových metod. Při sledování paprsků je pak u každé plochy, na kterou paprsek dopadne, brána v potaz míra jejího nepřímého osvětlení spočtená pomocí radiozity. Tyto příspěvky pak tvoří výslednou intenzitu paprsku. Pro interaktivní aplikace je ovšem mnohem

30 18 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ vhodnější zobrazení pomocí klasického vykreslování polygonů. V takovém případě je radiozitní osvětlení definováno pro každý vrchol polygonu a při jeho vykreslování je jeho hodnota aplikována. 3.5 Teoretické aproximace Metody pro výpočet globálního osvětlení jsou obecně velmi časově náročné. Zavedením různých zjednodušení, ať už po stránce kvality nebo parametrů zobrazované scény, lze ovšem dosáhnout významného urychlení výpočtu. Následuje přehled několika metod, které globální osvětlení určitým způsobem aproximují a umožňují tak jeho výpočet v reálném čase. Instant Radiosity ze zdroje přímého osvětlení jsou do scény vyslány paprsky a v místě jejich dopadu je umístěn bodový zdroj světla. Ten představuje zdroj nepřímého osvětlení. Zavedením těchto virtuálních zdrojů světla jsou simulovány difuzní odrazy. Umístěním nového virtuálního zdroje při každém odrazu paprsku lze simulovat odrazy vyšších řádů. Původní metoda [6] byla vylepšena v [8] zavedením pohybu zdroje světla a aktualizací příslušných virtuálních bodových zdrojů. Real-time implementace popsaná v [8] obsahuje komplexní statickou scénu s dynamickými objekty, jedním pohyblivým zdrojem světla a dosahuje interaktivní rychlosti zobrazení. Radiosity shooting form faktory jsou nahrazeny vzorkováním hemisféry. Z plochy je vysláno několik paprsků a míra přenosu světelné energie je pak dána podílem paprsků, které byly zachyceny jinými plochami. Rovněž distribuce energie je zde řešena pomocí tzv. střílení radiozity [13] z přímo osvětlených ploch je energie postupně distribuována mezi další a další plochy. Real-time řešení střílení radiozity je implementováno v systému Lightsprint 1. Přímé osvětlení je počítáno na GPU pomocí stínových map, nepřímé osvětlení je počítáno na CPU, pro středně komplexní scény dosahuje interaktivních rychlostí. Detaily nepřímého osvětlení závisí na podrobnosti scény. Photon Mapping metoda založená na raytracingu, probíhá ve dvou krocích. Prvním je photon scatter do scény jsou ze světelných zdrojů vystříleny fotony a uloženy do tzv. fotonové mapy. Druhým krokem je final gather nepřímé osvětlení každého bodu je zjištěno vzorkováním hemisféry v daném bodě. Intenzita každého vzorkovacího paprsku je přitom určena příspěvky nejbližších fotonů ve fotonové mapě v místě, kam paprsek dopadl. [9] popisuje real-time implementaci na GPU. Distribuce fotonů a vytvoření fotonových map je nejprve provedeno na CPU, final gather pak probíhá na GPU. Využitím několika optimalizací dosahuje implementace [9] rychlosti zobrazení vyšší než 35 FPS, ve scéně je přitom rozmístěno 10k fotonů. Nevýhodou je omezený pohyb dynamických objektů fotonové mapy jsou průběžně aktualizovány a při rychlém pohybu objektů hrozí zanechávání světelných stop. 3.6 Raytracing In Egoshooters Jak bylo uvedeno výše, dva nejčastější způsoby výpočtu globálního osvětlení jsou radiozita a raytracing. Tato diplomová práce je zaměřena spíše na první uvedený způsob, který se zdá být pro aktuální stav hardwaru perspektivnější. Existují ovšem i interaktivní aplikace využívající druhý způsob globální osvětlení pomocí raytracingu. Jednou ze zajímavých implementací je projekt Raytracing in Egoshooters [14]. Jedná se o soubor několika grafických aplikací a her založených na knihovně OpenRT 2. Tato knihovna tvoří

31 KAPITOLA 3. VÝPOČET GLOBÁLNÍHO OSVĚTLENÍ 19 Obrázek 3.3: Raytracing in Egoshooters. Obrázek 3.4: Oasen. abstraktní vrstvu pro aplikace využívající raytracing, díky které lze výpočet zobrazované scény provádět na jednom či více paralelních CPU, popř. specializovaném hardwaru. Právě grafická jednotka specializovaná na raytracing je prvkem, který by mohl významným způsobem ovlivnit směr vývoje grafických karet. Jednou ze součástí projektu Raytracing in Egoshooters je zobrazovací systém hry Quake 3: Arena Demo společnosti id Software3 upravený pro rozhraní OpenRT. Výsledkem je zobrazení hry v reálném čase, včetně všech efektů, které raytracing nabízí fyzikálně korektní odrazy a lomy světla, kaustiky, color-bleeding (viz obr. 3.3). Další součástí projektu je originální hra Oasen (viz obr. 3.4). Narozdíl od předchozí implementace se snaží plně využít potenciál raytracingu. Současný grafický hardware je omezen počtem a mírou detailů, které lze zobrazit. Pro zobrazení vzdálených objektů jsou proto používány zjednodušovací techniky (např. LOD Level Of Detail). V případě raytracingu ovšem obdobná omezení kladena nejsou. Díky jeho pohledové závislosti je zpracovávána pouze ta část scény, která je skutečně viditelná. Všechny zobrazené objekty proto mohou byt zobrazeny bez jakéhokoliv zjednodušování. Hra je tvořena rozlehlou scénou, která obsahuje detailní model několika ostrovů a jejich okolí. Uvedené implementace dosahují výborné vizuální kvality, která je pro raytracing typická. Nevýhodou je však výpočetní výkon potřebný pro zajištění plynulého chodu aplikace. Dle [14] byly aplikace testovány na clusteru několika PC, tvořících virtuální CPU o výkonu 30 GHz. Výsledkem byl obraz o rozměrech 640x480 pixelů s rychlostí 5-20 FPS. 3

32 20 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI 4 Globální osvětlení v praxi V předchozí kapitole byly představeny nejpoužívanější metody pro výpočet globálního osvětlení. Uvedené metody sice podávají velmi kvalitní výsledky, časová náročnost jejich výpočtu ovšem zamezuje širšímu použití v praxi. V závěru předchozí kapitoly bylo představeno několik řešení, která výpočet globálního osvětlení v reálném čase umožňují. Většina těchto řešení však klade specifické požadavky na hardware nebo parametry zobrazované scény. Přesto existují způsoby, jak docílit realistického osvětlení i na běžném hardwaru. Řešením je odhad a zjednodušení osvětlení s ohledem na lidské vnímání, tzv. falšování (angl. fake). První část této kapitoly je věnována významu osvětlení pro lidské vnímání, druhá část pak osvětlovacím metodám, které těchto poznatků využívají. 4.1 Percepce Osvětlení má obecně důležitou roli pro orientaci ve světě kolem nás. Důsledkem osvětlení je totiž vznik stínů a právě stíny lidskému vnímání usnadňují prostorové pochopení scény, které je pro orientaci v prostoru klíčové. Při zobrazování počítačově generovaných scén, které mají působit realistickým dojmem, je proto nezbytné klást důraz na způsob, jakým jsou předměty ve scéně osvětleny, resp. stínovány. Metody uvedené v předchozí kapitole se zaměřují na fyzikálně přesné výpočty osvětlení. Lidské vnímání však některé faktory zcela opomíjí a naopak se zaměřuje na jiné. Toho lze velmi dobře využít v mnoha oblastech. Pěkným příkladem je obecný princip MP3 komprese. Ta je založena na faktu, že adaptace lidského sluchu je zpožděná v doméně času i intenzity zvuku. Kvůli tomu člověk nevnímá slabý zvuk, je-li zároveň přítomen hlasitější zdroj zvuku. Obdobně po odeznění hlasitého zvuku člověk po určitou dobu nevnímá slabší zvuky, než se jeho sluch přizpůsobí nové úrovni. Toho lze využít pro kompresi zvuku způsobem, při kterém jsou neslyšitelné složky zvuku zcela vypuštěny. Obdobná specifika platí i pro lidský zrakový systém. Obecně známým jevem je postupná adaptace lidského zraku při přechodu ze silně osvětleného prostředí do tmy a naopak. Jednou z vlastností zrakového vnímání je ovšem i odlišný důraz kladený na jednotlivé složky osvětlení. V [15] je popsán experiment, jehož účelem bylo zjistit význam jednotlivých složek nepřímého osvětlení difuzní, matné, lesklé a jejich kombinace. Autoři vytvořili sérii zobrazení několika scén s různou kombinací těchto složek. Kvalita těchto zobrazení pak byla subjektivně hodnocena několika dobrovolníky. Z výsledků vyplynulo, že největší podíl na zlepšení hodnocení měla přítomnost difuzní složky, méně složky lesklé a matné a jejich kombinace pak prakticky neměla vliv. Zároveň byla vypracována metrika, díky níž lze ze zastoupení jednotlivých složek v obraze určit odhad výsledné vizuální kvality. Cílem této metriky je určení významu jednotlivých složek pro danou scénu a tím pádem možnost optimálního rozložení výkonu věnovaného jejich výpočtu. Je-li pro zobrazení scény použit raytracing, lze míru zastoupení jednotlivých složek získat po jednom průchodu, který určuje přímé osvětlení a zároveň zjišťuje materiálové vlastnosti všech zobrazených objektů. Z výše uvedeného experimentu tedy můžeme vyvodit, že ve většině scén hraje významnou roli především difuzní nepřímé osvětlení. Toho je využito ve většině interaktivních aplikací a ostatní složky jsou buď nahrazeny odhadem nebo zcela vynechány. Některé z těchto metod jsou popsány v následující části. 4.2 Praktické aproximace Jak bylo uvedeno v předchozích kapitolách, výpočet globálního osvětlení je časově náročnou záležitostí. V praxi (a v interaktivních aplikacích především) je proto globální osvětlení často

33 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI 21 aproximováno, popř. pouze napodobeno za účelem dosažení aspoň zhruba srovnatelného vizuálního výsledku. Některé z praktických aproximativních metod mají za sebou již dlouhou historii, některé jsou poměrně novou záležitostí ať už díky výzkumu nových metod nebo vývoji výkonnějšího hardware. Pravděpodobně největším odbytištěm interaktivních aplikací, které požadují alespoň náznak realistické grafiky, je pole počítačových her. Zásadním požadavkem přitom je nutnost kompatibility s co nejširší škálou grafických karet použité metody tedy musí být dostatečně obecné a flexibilní. Metody používané herními vývojáři se proto zajímavě odlišují. V následujících odstavcích si představíme několik základních metod pro aproximaci a napodobování globálního osvětlení. Kromě obecných postupů se zaměříme i na jejich implementace v několika konkrétních případech. Jako praktický příklad jsem vybral dva zobrazovací systémy použité v několika hrách z poslední doby, které významně přispěly ke zvednutí pomyslné laťky vizuální kvality počítačových her. Prvním z nich je Source TM společnosti Valve Corporation 1, použitý např. v sérii Half-Life 2 (2004, 2006, 2007) a hrách Portal (2007) a Team Fortress 2 (2007). Druhým příkladem je CryEngine 2 r společnosti Crytek 2, použitý ve hře Crysis(2007) Ambientní osvětlení Obrázek 4.1: Srovnání ambientního a globálního osvětlení. U ambientního osvětlení (horní řada) lze pozorovat určitou mělkost stínů, naopak stíny globálního osvětlení (dolní řada) jsou prokreslenější a dávají vyniknout prostorové organizaci scény. Ambientní osvětlení je jednoduchá, ale ve velké části případů postačující metoda, kterou lze globální osvětlení aproximovat. Zatímco v reálném světě je intenzita stínů různá (podle míry

34 22 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI dopadajícího nepřímého osvětlení), ambientní osvětlení přiděluje všem stínům stejnou intenzitu. V určitých typech scén a při určitém typu osvětlení totiž dochází ke zhruba rovnoměrné distribuci světla mezi plochami, důsledkem čehož jsou velmi malé rozdíly v intenzitě stínů. Ambientní osvětlení tyto rozdíly aproximuje a nastavuje všem zastíněným plochám stejnou intenzitu. Kromě této základní metody existuje několik jejích modifikací, které si dále popíšeme. Konstantní ambientní osvětlení Základní metoda ambientního osvětlení neřeší odrazy světla, ale nahrazuje je aproximativní konstantou. Metodu tedy označíme jako konstantní ambientní osvětlení. Základní zobrazovací rovnici 2.4 tedy můžeme s použitím konstantního ambientního osvětlení vyjádřit ve tvaru I = gve + gvmgve 0 + gve a, (4.1) kde e a je hodnota určující ambientní osvětlení dané scény. Oproti původnímu znění rovnice 2.4 byly zcela vypuštěny členy určující odrazy vyšších řádů. Ambientní osvětlení totiž slouží jako aproximace nepřímého osvětlení, proto ambientní člen nahrazuje členy nepřímého osvětlení. Z příspěvků daných světelnými zdroji zůstává pouze člen gvmgve 0, který představuje přímé osvětlení (viz rovnice 2.9). Díky své jednoduchosti nevyžaduje použití konstantního ambientního osvětlení prakticky žádný výpočet ani speciální zobrazovací postup. Konstanta určující hodnotu ambientního osvětlení je obvykle empiricky nastavena pro konkrétní scénu, zobrazení pak probíhá jednoduchým přičtením této konstanty k intenzitě přímého osvětlení. Konstantní ambientní osvětlení nebere v potaz pozici světelných zdrojů a působí proto dojmem světla, které je rozptýlené, všudypřítomné (odtud název ambientní). Ze své podstaty nezachovává detaily a není proto vhodné pro oblasti se skokovou změnou osvětlení. Ambientní osvětlení lze s úspěchem použít u scén, které jsou z velké části osvětleny silným zdrojem přímého osvětlení. Intenzita přímého osvětlení je ve většině případů výrazně vyšší než intenzita nepřímého osvětlení. Je-li tedy ve scéně přítomen velmi silný zdroj přímého osvětlení, snadno dojde k překrytí odraženého světla a zahlazení jeho účinku. Dobrým příkladem je např. exteriér ozářený sluncem, ve kterém je lidský zrak přizpůsoben silnému přímému osvětlení a není tak schopen rozlišit jemné rozdíly v intenzitě stínů. Exteriéry obvykle splňují i další podmínku, která vyhovuje použití ambientního osvětlení. V otevřených scénách se většinou nevyskytují dostatečně členité prostory, ve kterých by mohlo docházet k pozorovatelným odrazům světla a tím i viditelně nerovnoměrnému nepřímému osvětlení. Díky tomu lze ambientní osvětlení s úspěchem použít pro většinu otevřených exteriérů, aniž by zde nepřímé osvětlení viditelně chybělo. U interiérů je však situace téměř opačná. Díky jejich obvyklé členitosti dochází k mnohanásobným odrazům světla a při osvětlení členitých prostor je rozdíl mezi ambientním a globálním osvětlením vidět na první pohled (viz obr. 4.1). Pro interiéry nebo členitější prostory je proto vhodná některá z pokročilejších modifikací ambientního osvětlení, popř. zcela jiná metoda falšování. Ambient Cube Pro nepřímé osvětlování dynamických objektů používá Source metodu označovanou jako Ambient Cube [11] (dále jen AC). Ambientní osvětlení zde není definováno pouze jednou hodnotou, ale šesti hodnotami. Každá z hodnot představuje intenzitu nepřímého osvětlení přicházející k objektu z jednoho ze šesti směrů. Ty jsou určeny kladným i záporným směrem souřadnicových os x, y a z. Můžeme

35 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI 23 si tedy představit, že je objekt osvětlen pomocí kubické mapy okolního prostředí (viz kapitola 3.2) nebo pro zjednodušení, že je osvětlen šesti bodovými zdroji. Po úpravě základní zobrazovací rovnice 2.1 získáme vztah [ ] I(x, x ) = g(x, x )v(x, x ) e(x, x ) + ρ(x, x, x )I(x, x )dx + e ac (x, x ), (4.2) S kde e ac (x, x ) určuje aproximaci hodnoty ve směru x x získané z AC. Šest hodnot určujících AC je přitom předpočítáno a během vyčíslování e ac dochází pouze k jejich interpolaci. Výpočet hodnot AC pro každý dynamický objekt zvlášť by byl časově náročný, Source proto používá zjednodušení. Tvůrce scény definuje několik bodů, pro které jsou hodnoty AC předpočítány. Během zobrazení scény jsou pak dynamické objekty osvětleny pomocí toho AC bodu, který je k nim právě nejblíže. e ac tedy interpoluje hodnoty AC bodu s minimální vzdálenosti k x. Výpočet e a má v tom případě konstantní složitost, interpolace hodnot nezahrnuje žádné integrální členy. Při přechodu mezi sférami vlivu dvou AC bodů by docházelo ke skokové změně osvětlení. V Source je proto hodnota získaná z e ac interpolována v čase a k její změně díky tomu dochází plynuleji. Praktická aproximace rovnice 4.2 má pak v operátorovém tvaru podobu I = gve + gvmgve 0 + gve ac, kde člen gve určuje vlastní vyzařování plochy, gvmgve 0 tvoří přímé osvětlení a gve ac definuje AC příspěvek. Člen e a z rovnice 4.1 je zde nahrazen členem e ac, který je narozdíl od konstantního ambientu závislý na pozici. Díky této závislosti lze alespoň částečně simulovat vliv nepřímého osvětlení na pohyblivé dynamické objekty Světelné mapy Technika světelných map (angl. light maps, LM) je založena na podobném principu jako běžný texturovací proces. Během něj je v texturovací paměti uložen obraz vzorku materiálu (např. zeď, tráva, oblečení), který je mapován na objekt. V případě světelných map je ale namísto vzorku materiálu v textuře uloženo osvětlení objektu. To je pak mapováno na objekt obdobně jako textura a použije se pro zesvětlení nebo ztmavení povrchu objektu. Světelné mapy jsou obvykle kombinovány s texturami a dalšími stínovacími technikami. Základní zobrazovací rovnice 2.1 s využitím světlených map bude mít tvar [ ] I(x, x ) = g(x, x )v(x, x ) e(x, x ) + ρ(x, x, x )I(x, x )dx + e lm (x ), (4.3) S kde e lm (x ) je funkce vyjadřující intenzitu světelné mapy v bodě x. Vzhledem ke svému difuznímu charakteru není e lm závislá na směru a jediným parametrem je tedy pozice bodu ve světelné mapě. Pro urychlení jsou světelné mapy předpočítány a uloženy ve formě textur pomocí některého z grafických či modelovacích editorů. K jejich výpočtu je obvykle použita některá z metod založených na radiozitě nebo raytracingu. Díky tomu probíhá vyhodnocení e lm (x ) rovněž v konstantním čase a praktickou aproximaci rovnice 4.3 pak můžeme zapsat ve tvaru I = gve + gve lm + gvmgve 0. Znatelnou nevýhodou světelných map je jejich statický charakter. Hodnoty osvětlení jsou předpočítány pro konkrétní rozmístění a nastavení světel ve scéně. Pokud by tedy došlo ke změně jejich pozice či barvy, bylo by nutné celou světelnou mapu předpočítat. Světelné mapy obsahující

36 24 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI nepřímé osvětlení jsou proto předpočítány pouze pro statické světelné zdroje. V průběhu zobrazení je k nim poté přičteno přímé osvětlení statických a dynamických (pohyblivých) zdrojů. Výsledné osvětlení pak lze popsat vztahem I = gve + gvmgve s + gve lm + gvmgve d, kde gve je světlo emitované plochou, gvmgve s je přímé osvětlení statických zdrojů, gve lm je nepřímé osvětlení statických zdrojů a gvmgve d je přímé osvětlení dynamických zdrojů světla. Jak je evidentní, nepřímé osvětlení dynamických zdrojů je v takovém případě vypuštěno. Pomocí světelných map jsou obvykle osvětlovány pouze statické objekty. Předpočtené osvětlení totiž závisí jak na parametrech světelných zdrojů, tak na geometrii a pozici objektů ve scéně. Pokud by během hry došlo k pohybu některého z objektů, bylo by opět nutné světelné mapy přepočítat. Dynamické objekty jsou tedy z výpočtu světelných map vypuštěny a pro jejich nepřímé osvětlení jsou většinou použity jiné techniky. Ambient Term Jedním z mála případů, kdy lze světelné mapy využít i pro osvětlení dynamických objektů, je tzv. Ambient Term [10] (ambientní člen). Tato technika byla použita např. ve hře Quake III (id Software, 1999) pro osvětlení postav hráčů. Během pohybu ve scéně je celé postavě přiřazováno konstantní ambientní osvětlení podle toho, jakou intenzitu má světelná mapa v místě, kde právě postava stojí. Zobrazovací rovnice pak využívá vztah pro světelné mapy 4.3 ve tvaru [ ] I(x, x ) = g(x, x )v(x, x ) e(x, x ) + ρ(x, x, x )I(x, x )dx + e lm (f p (x )), (4.4) S kde f p (x ) provádí projekci bodu x do příslušné světelné mapy. Metoda je tedy v podstatě jednodušší verzí Ambient Cube zohledňuje pozici objektu ve scéně a příslušné nepřímé osvětlení, výsledná hodnota má ale pouze formu konstantního ambientu. Radiosity Normal Mapping Do světelných map je obvykle uložena hodnota osvětlení, která na každou plochu dopadá kolmo (tzn. ve směru normály povrchu). V důsledku toho nejsou zachyceny slabší odstíny nepřímého osvětlení, které mohou dopadat pod nižším úhlem. Source proto používá vylepšenou verzi světelných map. Obrázek 4.2: Radiosity Normal Mapping pro každý ze tří bázových vektorů je vytvořena jedna světelná mapa. Výsledné osvětlení je pak dáno kombinací těchto map s normálou povrchu. Namísto jedné stínové mapy jsou vytvořeny tři, každá z nich určuje osvětlení přijaté plochou v jednom ze tří směrů daných bázovými vektory (viz 4.2). Výsledné osvětlení vzniká jejich

37 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI 25 Obrázek 4.3: Ambient Occlusion kombinací (viz [10]). Pro stínování jednotlivých bodů povrchu navíc není použita normála plochy, na které bod leží, ale hodnota uložená ve speciální textuře (tzv. normal mapping). Tímto způsobem je obvykle simulována nerovnost povrchů. CryEngine2 měl podle původního návrhu používat podobnou techniku se dvěma rozdíly světelné mapy nebyly počítány radiozitou, ale pomocí fotonových map (viz 3.3), a místo tří bázových vektorů byly použity čtyři. Z důvodů paměťové náročnosti vytvořených map však CryTek od světelných map upustil a CryEngine 2 využívá Ambient Occlusion mapy, kterým je věnována následující část Ambient Occlusion Technika označovaná jako Ambient Occlusion (dále jen AO) je v podstatě speciálním případem ambientního osvětlení, jehož cílem je simulovat nepřímé osvětlení. Jeho hodnota však není konstantní, ani určena světelnou mapou spočtenou pomocí radiozity. Základní princip spočívá v myšlence, že snadno přístupné (exponované) plochy jsou osvětleny více než plochy zastíněné. Pro každý bod nebo vrchol scény je spočteno, jak velká část okolního prostředí je z jeho pozice viditelná (viz obr. 4.3). Podle [16] můžeme výpočet charakterizovat vztahem A p = 1 π Ω V (p, ω)(n ω)dω, kde A p je hodnota AO v bodě p (viz obr. 4.3), N je normála v bodě p a V (p, ω) je viditelnost bodu p ve směru ω. Integrace přitom probíhá přes všechny směry ω hemisféry Ω. Jedním ze způsobů praktického výpočtu je vyslání několika paprsků a určení, jaká část jich nebyla ničím zastíněna. Tato míra pak přímo určuje hodnotu AO. Zcela viditelné části modelu budou v tomto případě plně osvětlené, zatímco části s nižší viditelností budou ve stínu (viz obr. 4.4). Uvedený postup je samozřejmě vzhledem k nutnosti vysílání velkého množství paprsků časově náročný. Protože je však geometrie objektů zpravidla statická (objekty nejsou deformovatelné), nedochází ke změnám viditelnosti a AO stačí spočítat pro každý objekt pouze jednou. Narozdíl od přístupů, jejichž řešení je založeno na metodě konečných prvků, má AO spíše gradientní charakter. Zobrazené nepřímé osvětlení díky tomu působí plynulejším dojmem a nedochází u něj k viditelným skokovým změnám, jako např. u radiozitních metod (viz kapitola 3.4). Ač není tato technika fyzikálně korektní, její zobrazení je rychlé a podává překvapivě dobré výsledky. Navíc je poměrně flexibilní AO viditelnost lze předpočítat jak ve formě hodnot jednotlivých vrcholů polygonu, tak pro každý bod povrchu ve formě textury. Díky tomu lze AO snadno použít jak pro statické, tak pro dynamické objekty.

38 26 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI Obrázek 4.4: Ambient Occlusion AO mapa (vlevo), scéna s klasickým AO (uprostřed), Screen- Space AO (vpravo) Real-Time Ambient Map CryEngine 2 používá metodu nazvanou Real-Time Ambient Map (viz [12]). Ta je založena na AO mapách uložených ve formě textur. Tyto textury jsou mapovány na objekt a pro každý bod povrchu určují, jak velká část příchozího světla na objekt skutečně dopadne. Screen-Space Ambient Occlusion Během zobrazování přímého osvětlení je do tzv. Z-bufferu ukládána výsledná hloubka jednotlivých pixelů. Toho využívá metoda nazvaná Screen-Space Ambient Occlusion (viz [12]) vyvinutá společnosti CryTek. Princip spočívá v testování hloubky okolních pixelů vůči aktuálně zpracovávanému pixelu v paměti Z-bufferu. Z rozdílu těchto hloubek je následně určena míra viditelnosti jednotlivých pixelů. Pixely s vyšší hloubkou obklopené pixely s nižší hloubkou v tomto případě představují prohlubně a mají proto nižší viditelnost. Podobným způsobem je zjišťována viditelnost i u klasické AO, zde však nedochází k testování paprsků v trojrozměrném prostoru, ale pouze k porovnávání hodnot pixelů v textuře. To je samozřejmě výrazně rychlejší, protože k podobným operacím je přizpůsobena většina GPU a celý proces tak lze výrazně urychlit. Metoda v podstatě funguje jako postprodukční filtr. Ze Z-bufferu je vytvořena AO mapa (viz obr. 4.4) a ta je následně aplikována na původní obraz. I přes svou jednoduchost podává metoda ve výrazně kratším čase výsledky kvalitativně srovnatelné s klasickým AO. Je ovšem nutno podotknout, že je pohledově závislá a nelze ji tedy použít pro obecný výpočet AO Další způsoby Kromě výše uvedených postupů, které určitým způsobem aproximují a napodobují původní osvětlení, existují i metody určené k jeho subjektivním úpravám. Jednou z nich je tzv. Half Lambert používaný systémem Source. Míra difuzního osvětlení povrchu zdrojem přímého osvětlení je obvykle dána orientací plochy ke světlu, resp. jako skalární součin normály plochy a směru ke zdroji. Výsledkem je hodnota v intervalu -1 až 1, označovaná jako Lambertovský člen. Uvedený postup sice zajišťuje fyzikálně korektní stínování, důsledkem ale může být přílišný kontrast a tím pádem ztráta detailů ve stínech. Source proto Lambertovský člen upravuje tak, aby jeho výsledek ležel v intervalu 0 až 1. Výsledkem jsou vizuálně atraktivnější prokreslené stíny. Dalším obvyklou metodou pro změnu světelnosti scény je finální úprava jejího barevného prostoru. V Source je tato funkce nazývána Color Correction, resp. Grading (podle obdobné techniky používané ve filmové postprodukci). Díky ní lze provádět např. saturaci barev nebo simulovat denní dobu změnou barvy a intenzity obrazu.

39 KAPITOLA 4. GLOBÁLNÍ OSVĚTLENÍ V PRAXI Srovnání osvětlovacích metod V předchozích kapitolách 2 a 3 byly popsány základní i pokročilé osvětlovací metody. Obr. 4.5 uvádí jejich souhrn a nabízí tak snadné srovnání jejich kvality s některými aproximativními metodami uvedenými v této kapitole. Je ovšem nutno podotknout, že uvedený souhrn žádným způsobem nezohledňuje časovou náročnost ukázaných metod, která je pro interaktivní aplikace klíčová. Obrázek 4.5: Srovnání osvětlovacích metod horní řada: lokální stínování, přímé osvětlení (s vrženými stíny), klasický raytracing. Dolní řada: ambient occlusion, radiozita, photon mapping (s final gather).

40 28 KAPITOLA 5. NÁVRH HRY 5 Návrh hry V předchozích kapitolách byly popsány metody pro výpočet globálního osvětlení a jejich modifikace používané v praxi. Výsledky jejich praktického využití ukazuje hra, jejíž vytvoření bylo cílem této práce. V následující části jsou tedy popsány její cíle a navržena forma a provedení hry. Následuje nástin jejího scénáře, shrnutí popisovaných osvětlovacích metod a volba vhodné metody pro zobrazení globálního osvětlení. V závěru je pak diskutována možnost nových konceptů herní mechaniky, které dynamické globální osvětlení přináší. 5.1 Cíle a forma Cílem navrhované hry je jednoduchou formou seznámit laického uživatele s výhodami globálního osvětlení. Díky interaktivním prvkům má mít uživatel možnost měnit parametry zobrazovaného osvětlení a pozorovat důsledky těchto změn. Triviálním řešením by bylo naprogramovat jednoduchou scénu s globálním osvětlením a tu dát uživateli k dispozici. Částečně je takto definováno i zadání. Dle mého názoru ale tento přístup vzhledem k výukové povaze hry nestačí. Uživatel, resp. hráč by v takovém případě neměl žádnou motivaci ani informace o tom, co vlastně vidí. Proto jsem se rozhodl přidat do hry určitou vodící linku ve formě scénáře, resp. příběhu hry, kterým hráč prochází a během kterého plní zadané úkoly. 5.2 Provedení Hra má lineární průběh. Nejprve jsou ukázány základní osvětlovací metody, postupně se hráč dostává k těm pokročilejším. Scéna je přitom uzpůsobena tak, aby dala co nejlépe vyniknout předváděným aspektům globálního osvětlení, resp. jeho výhodám oproti přímému osvětlení. Hráč ovládá hlavní postavu, která prochází scénou a plní zadané úkoly. Zadání úkolů a význam osvětlovacích metod se přitom dozvídá formou dialogu s jednou z dalších postav. Herní svět obsahuje statickou scénu a v ní dynamické objekty, se kterými může hráč manipulovat. Ovládání je řešeno pomocí klávesnice a myši, pro doplnění atmosféry je použita i hudba a zvuky. 5.3 Scénář Hráčem ovládaná postava prochází jednoduchým lineárním dějem, během kterého se hráč dozvídá nové informace o osvětlení. Vzhled scény je přitom navržen tak, aby co nejlépe ilustroval nedostatky klasického přímého či ambientního osvětlení a nabídl možnost srovnání s globálním osvětlením. Scénář je sestaven tak, aby byla mezi vysvětlovanými metodami logická návaznost a složitost úkolů měla rostoucí tendenci. Nejprve jsou tedy ukázány základní efekty jako skládání barevného spektra, ambientní osvětlení, dále pak nepřímé osvětlení, color-bleeding a osvětlení dynamických objektů. Na začátku hry se hlavní postava objevuje v ponuře osvětlené scéně, která připomíná katedrálu (viz obr. 5.1). Jediným zdrojem světla je paprsek světla pronikající otvorem ve stropě. Hlavní hrdina (světluška) se zde setkává s neznámým hlasem, který mu dává rady a napovídá, jak postoupit dále. První úkol spočívá v nastavení konkrétní barvy světla a jeho nasměrování na konkrétní objekt. Na podlaze katedrály totiž leží šest kostek, každá z nich je položena na barevném poli s jinou barvou. Cílem hráče je osvítit každou kostku světlem, které má barvu jejího pole. Barvu světla hráč mění pomocí barevných filtrů, které jsou umístěny před zdrojem světla. Jejich vysouvání,

41 KAPITOLA 5. NÁVRH HRY 29 Obrázek 5.1: Obrázky ze hry resp. zasouvání přitom ovládá pomocí trojice pák. Dvojicí dalších pák zároveň ovládá směr světelného paprsku. Během plnění tohoto úkolu je však hráč přerušen ve svém snažení skrze stropní okno totiž prolétne meteorit a rozbije barevné filtry. Hráč proto nemůže úkol dokončit. Dopad meteoritu ovšem rozbije jedny z dveří, které byly dosud zamčené. Hráč se proto vydává prozkoumat novou místnost a nachází zde páku, kterou může ovládat osvětlení v celé katedrále. Vypravěč ho poučí, že se jedná o ovládání ambientního osvětlení (viz kapitola 4.2.1). Kromě toho zde hráč nalézá GI1 stroj, který ve scéně aktivuje globální osvětlení. Po aktivaci GI stroje začne ve scéně fungovat globální osvětlení a tím pádem i color-bleeding (viz kapitola 2.5). Hráč zjišťuje, že pomocí tohoto efektu může měnit barvu světla jeho odrazem od barevného povrchu. Proto využije barevných panelů na stěnách, na které směruje světelný paprsek, a dokončí zadaný úkol. 5.4 Aspekty globálního osvětlení Hlavním cílem hry je poskytnutí prostředku pro vizuální srovnání klasických osvětlovacích metod a globálního osvětlení. Důraz je přitom kladen na představení a vysvětlení nejvýznam- nějších aspektů dynamického globálního osvětlení. Mezi ně patří nepřímé osvětlení a color-bleeding, pohyblivé zdroje světla, dynamické objekty a volitelná rychlost a kvalita. Nepřímé osvětlení a color-bleeding Nepřímé osvětlení je hlavní výhodou globálního osvětlení (viz kapitolu 2.4). V praxi je většinou nahrazováno stíny s konstantní intenzitou tzv. ambientním osvětlením (viz kapitolu 4.2.1). To je ovšem vhodné pouze pro určité typy scén a jeho hodnota je určována empiricky. Efekt označovaný jako color-bleeding byl popsán v kapitole 2.5. Lze jej pozorovat při odrazech světla od barevných materiálů, kdy dochází ke změně barevnosti nepřímého osvětlení. V interaktivních aplikacích dosud není tento efekt ve větší míře podporován, tím spíše na běžně dostupném hardware. Pohyblivé zdroje světla Nepřímé osvětlení a color-bleeding jsou nejlépe pozorovatelné při dynamické změně osvětlení způsobené pohybem světelného zdroje. Většina interaktivních aplikací sice pohyb světelných zdrojů umožňuje, jejich pohyb má ale ve většině případů vliv pouze na přímé osvětlení (viz kapitolu 2.4.1). Nepřímé osvětlení tak zůstává neměnné, popř. je v blízkosti přímého zdroje 1 Global Illumination - globální osvětlení

42 30 KAPITOLA 5. NÁVRH HRY vyrušeno. Interaktivní globální osvětlení naopak plně reflektuje pohyby světelných zdrojů a nepřímé osvětlení podle nich průběžně aktualizuje. Dynamické objekty Jednoduchého osvětlení dynamických (pohyblivých) objektů lze dosáhnout pomocí lokálních osvětlovacích metod (viz kapitola 2.3). Ty však berou v potaz pouze přímé osvětlení. Naopak s využitím globálního osvětlení lze i na pohyblivých objektech zobrazit dopadající nepřímé osvětlení určené pozicí objektu ve scéně. Volitelná rychlost a kvalita Metody pro výpočet globálního osvětlení jsou zpravidla výpočetně náročné. Většina jich však funguje na iterativním principu postupného zlepšování, a díky tomu lze výpočet ukončit, jakmile je vypočtené osvětlení vizuálně dostatečně věrohodné. Tímto způsobem lze výpočet výrazně urychlit a přiblížit se tak rychlosti běžných zobrazovacích metod. 5.5 Volba RTGI metody V předchozích kapitolách byly popsány některé metody pro zobrazování globálního osvětlení. Dvě hlavní skupiny metod jsou raytracing a radiozita. Pokusíme se nyní určit, která z nich je v našem případě vhodnější pro real-time výpočet globálního osvětlení (dále jen RTGI 2 ). Tato metoda pak bude použita ve výsledné počítačové hře s globálním osvětlením. Raytracing Metody využívající raytracing (sledování paprsku, viz kapitola 3.3) podávají obecně kvalitnější výsledky, jejich výpočet je však časově mnohem náročnější. Přesto existují implementace, které využívají princip sledování paprsku a jsou schopné fungovat v reálném čase (viz kapitolu 3.5). Většina z nich využívá principu zjednodušení a přenesení výpočtu na GPU, díky čemuž lze dosáhnout rychlosti umožňující interakci. Raytracing není u interaktivních aplikací dosud běžně využíván, jednou z příčin je zatím neexistující podpora raytracingu na grafickém hardwaru. Radiozita Výpočet radiozity (viz kapitola 3.4) je pro malé scény obecně mnohem rychlejší než raytracing, problémem je ovšem horší škálovatelnost. Proto existují radiozitní metody, které s využitím několika optimalizací výpočet zjednodušují a tím i urychlují (viz kapitolu 3.5). Jednou z nejperspektivnějších se jeví stochastická radiozitní metoda, pomocí které lze získat dostatečně věrohodné globální osvětlení v reálném čase. Globální osvětlení vypočtené pomocí radiozitních metod lze poměrně snadno začlenit do existujících zobrazovacích řešení. Díky tomu je možné pro zobrazení použít jak kvalitnější raytracingové metody, tak běžně používané polygonové vykreslování. Diskuze Jak je vidět z několika ukázek v části 3.5, v případě raytracingu i radiozity již existují metody, pomocí kterých lze interaktivního globálního osvětlení dosáhnout. V případě počítačových her jsou ovšem klíčovým prvkem parametry požadovaného hardware. Zatímco interaktivní metody využívající raytracing vyžadují specializované grafické zařízení, popř. dostatečný výkon, radiozitním metodám postačují běžně dostupné grafické karty za cenu nižší kvality. 2 Real-time Global Illumination

43 KAPITOLA 5. NÁVRH HRY 31 Pro výslednou hru se tedy perspektivnějším ukazuje využití radiozity, konkrétně její stochastické varianty. Ta je ve hře kombinována s několika metodami, které globální osvětlení falšují. 5.6 Nové herní koncepty Globální osvětlení přináší do interaktivních aplikací (zde konkrétně počítačových her) nejen zlepšení vizuální kvality, ale i nové možnosti týkající se jejich konceptuální náplně. Osvětlení hraje ve většině her čistě pasivní úlohu, resp. je využito pouze jako prvek dokreslující atmosféru zobrazované scény. Může docházet k jeho změnám pro zvýraznění dynamického efektu, ale jeho přítomnost nemá na hráčovy akce žádný vliv a naopak. Některé hry však osvětlení částečně využívají jako nástroj pro interakci hráče s prostředím. Hráčem ovládaná postava se může skrýt do stínu (Thief 3 ), popř. provádět některé akce pouze na přímém slunečním světle (Shadow of the Colossus 4 ). Koncept světla jako nástroje pro interakci s prostředím jsem se rozhodl využít při návrhu hry s globálním osvětlením a dále jej rozvést. Dynamické globální osvětlení přináší několik technik, které mohou zajímavě přispět k obohacení herní mechaniky. Jedná se o dynamické světelné zdroje a vlastnosti materiálů. Pohyb světelných zdrojů Současný pohyb více světelných zdrojů je v dnešních podmínkách technicky realizovatelný, zřídka je však kromě přímého osvětlení řešeno i dynamické nepřímé osvětlení. Radiozitní metoda není omezena počtem světelných zdrojů, výpočet je totiž orientován na plochy, nikoliv konkrétní zdroje světla. Při pohybu většího počtu světel dochází ke změně intenzity osvětlení v různých částech scény. Změny se týkají jak přímého, tak nepřímého osvětlení. Oblasti osvětlené přímým osvětlení jsou přímo viditelné ze světelných zdrojů a naopak. Z nepřímo osvětlených oblastí neexistuje přímý dohled na světelný zdroj. Příkladem využitím nepřímého osvětlení tedy může být následující scénář: hráč musí projít určitou trasu ve scéně, ale nesmí být při tom "spatřen" žádným ze světelných zdrojů (tedy nesmí být v přímo osvětlené oblasti). Zdroje světla se volně pohybují scénou a osvětlují ji. Hráč se musí zároveň vyhýbat tmavým koutům. Jeho úkolem tedy je držet se v polostínu, který je způsoben právě nepřímým osvětlením. Intenzita osvětlení se ovšem mění podle pohybu světelných zdrojů, hráč tedy musí svůj průchod scénou s rozmyslem plánovat. Změna osvětlení a materiálů Jednou z výhod radiozitní metody je i dynamická změna vlastností materiálů a světelných zdrojů. Světelné zdroje mohou měnit kromě polohy i svou intenzitu, materiály objektů mohou dynamicky měnit barvu a odrazivé vlastnosti. I tento prvek lze dobře zapojit do herní mechaniky. Hráč např. může interagovat s herními objekty podle jejich aktuální barvy, popř. podle barvy světla, které na ně dopadá. Obdobnou herní mechaniku je možné napodobit pomocí předem naprogramovaných událostí, které reagují na akce uživatele. S využitím globálního osvětlení lze ovšem funkčnost zajistit dynamickým výpočtem bez nutnosti předchozího statického programování. 3 Thief: The Dark Project. Looking Glass Studios, Shadow of the Colossus. Sony Computer Entertainment, 2005.

44 32 KAPITOLA 6. IMPLEMENTACE HRY 6 Implementace hry Hra je implementována v jazyce C++ a využívá několika hotových knihoven (tzv. frameworků). Jejich bližší popis je uveden v první části této kapitoly. Dále následuje popis struktury herní aplikace, resp. jejího objektového modelu, a jednotlivých funkčních bloků. V závěru kapitoly je popsán vnitřní skriptovací jazyk, kterým je řízen průběh celé hry. 6.1 Použité knihovny Kromě vlastního kódu využívá hra několika externích knihoven (viz obr. 6.1). Ze zadání vyplývá volba dvou hlavních knihoven těmi jsou OGRE3D pro zobrazení grafiky a Lightsprint pro výpočet nepřímého osvětlení. Jejich vzájemná integrace je zajištěna knihovnou OgreLightsprint, kterou jsem vytvořil v rámci předmětu X36PMI (Individuální projekt). Další knihovny zajišťují přehrávání zvuku, ovládání pomocí vstupních zařízení a zobrazování uživatelského rozhraní. Pro tvorbu veškerých modelů jsem použil modelovací program Blender. Obrázek 6.1: Schéma propojení hry s externími knihovnami. OGRE3D OGRE 1 (Object-Oriented Graphics Rendering Engine) je objektově orientovaný 3D zobrazovací systém. Jeho hlavním účelem je poskytnout vývojářům intuitivní a flexibilní nástroj pro tvorbu aplikací využívajících hardwarově urychlovanou grafiku. Jednou z výhod je nezávislost na konkrétním zobrazovacím systému. Veškeré operace jsou prováděny na abstraktním zobrazovacím systému, ten pak může být implementován pomocí rozhraní DirectX nebo OpenGL. Důsledkem je zajištění snadné přenositelnosti aplikace mezi systémy. Kromě propracovaného grafu scény je nejvýznamnější schopností systému OGRE patrně jeho definice materiálů. Pomocí jednoduchého skriptovacího jazyka lze skládat víceprůchodové řetězce s použitím shader programů. Takto získané průchody pak lze libovolně kombinovat. Toho lze velmi dobře využít při skládání několika typů osvětlení. OGRE je vyvíjen jako open-source knihovna a ve své třídě patří k jednomu z nejpoužívanějších řešení. Narozdíl od dalších grafických systémů ovšem přímo nezajišťuje další aplikační prvky, jakými jsou např. fyzikální simulace, práce se zvukem nebo komunikace se vstupními zařízeními. Tyto funkce jsou proto zajišťovány pomocí tzv. plug-inů (zásuvných modulů) nebo integrací externích knihoven. 1

45 KAPITOLA 6. IMPLEMENTACE HRY 33 Lightsprint Lightsprint 2 (dříve Lightsprint Vision) je knihovna pro výpočet globálního osvětlení. Mezi její hlavní výhody patří výpočet fyzikálně korektního globálního osvětlení. Další podporované funkce jsou např. zobrazení měkkých stínů, výpočet Ambient Occlusion a import široké škály modelů. Jeho součástí je i zobrazovací systém implementovaný v OpenGL, který zajišťuje vykreslování veškerých výše uvedených funkcí. Při integraci s OGRE ovšem není tento zobrazovací systém využit, protože OGRE obsahuje vlastní definici abstraktního zobrazovacího řetězce. Lightsprint je varianta knihovny, která provádí výpočet nepřímého osvětlení v reálném čase. Díky tomu je vhodná pro použití v interaktivních aplikacích, např. počítačových hrách. FMOD Ex FMOD Ex 3 je knihovna pro práci se zvukovým systémem. Podporována jsou všechna běžně používaná zařízení i zvukové formáty (MP3, WAV, OGG). Díky jednoduchému programovému rozhraní lze knihovnu snadno zakomponovat do hotových projektů. Zajímavostí je podpora nejen PC systémů, ale i platforem typu Playstation2, Microsoft Xbox nebo Nintendo Wii. OIS OIS 4 (Object-Oriented Input System) je knihovna pro správu vstupních zařízení. Podporuje vstup z klávesnice, myši nebo joysticku, ale i forcefeedback zařízení. Výhodou knihovny je jednoduché rozhraní a snadná integrace. Pro systém OGRE existuje OIS plug-in, pomocí kterého lze snadno nahradit funkce celé OIS knihovny. CEGUI CEGUI 5 (Crazy Eddie s GUI System) je systém pro zobrazování uživatelských rozhraní (Graphical User Interface GUI). Rozhraní je tvořeno samostatnými grafickými prvky, které lze hierarchicky vnořovat. Systém přitom automaticky řeší jejich rozmístění a zarovnávání. CEGUI je rovněž k dispozici jako jeden z plug-inů pro OGRE. Díky tomu lze pro grafické prvky využít definice materiálů z OGRE. Blender Blender 6 je grafický modelovací 3D systém. Jedná se o open-source projekt se širokou členskou základnou. Zajímavostí je, že pomocí něj bylo vytvořeno několik nezávislých animovaných filmů. Kromě modelování umožňuje Blender i zobrazování scén pomocí raytracingu a radiozitních metod. Jednou z funkcí je i tvorba světelných map. Pomocí exportního plug-inu dodávaného s OGRE lze Blender modely snadno převést na.mesh formát podporovaný knihovnou OGRE. Veškeré modely vyskytující se ve hře jsem vytvořil právě tímto způsobem. 6.2 Struktura Herní aplikace je rozdělena do několika funkčních bloků (viz obr. 6.2) tvořících hierarchickou strukturu. Každý blok plní specifickou funkci, jejich popis je uveden v následující části

46 34 KAPITOLA 6. IMPLEMENTACE HRY Obrázek 6.2: Objektový model herní aplikace. Světle vyznačené objekty představují vnitřní funkční bloky, čárkovaně orámované jsou předávané zprávy a tmavě označené jsou externí knihovny GameApplication Jedná se o jádro celé aplikace. Provádí inicializaci knihovny OGRE, vytvoření aplikačního okna. Zároveň vytváří a spravuje všechny ostatní funkční bloky a zajišťuje komunikaci mezi nimi. Důležitou roli hraje komunikace s blokem GameScript, která je řešena zasíláním událostí GameEvent. Takto přijaté události blok GameApplication zpracovává a předává příslušným podřízeným blokům GameScript Úkolem tohoto bloku je čtení a interpretace herního scénáře. Scénář je tvořen jednoduchým skriptovacím jazykem (viz popis v části 6.3). Jednotlivé herní události nejsou natvrdo naprogramovány, ale jejich definice jsou čteny ze scénáře a následně interpretovány. Blok GameScript tedy zajišťuje čtení scénáře z externího souboru a interpretaci jednotlivých příkazů. Může jít např. o přidání nového objektu (GameObject) do herního světa, zobrazení dialogu nebo spuštění zvuku. Herní objekty, narozdíl od samotné scény, mohou během hry měnit svou pozici a další vlastnosti. Některé z nich slouží zároveň jako interaktivní ovládací prvky, např. páky. GameScript obsahuje seznam všech herních objektů. Většinu operací, které jsou na nich prováděny, lze tedy řešitel interně. Některé operace ale vyžadují spolupráci dalších bloků, jedná se např. o interakci s ovládacími prvky nebo požadavky na přehrání zvuku či změnu GUI. V takovém případě je požadavek odeslán jinému funkčnímu bloku ve formě události GameEvent nebo herního objektu GameEvent. Jednou z operací zajišťovaných blokem GameScript je i animace objektů. Většina herních operací je spouštěna pravidelně při zobrazení každého snímku. Rychlost zobrazování, resp. FPS 7 se ovšem může lišit podle výkonu grafické karty nebo nastavení aplikace. Je proto nutné zajistit, aby časová délka animací nebyla závislá na počtu zobrazených snímků, ale na uplynulém čase. Veškeré animace v bloku GameScript jsou proto interpolovány podle času uplynulého mezi snímky. Výsledkem je plynulost animací a zachování jejich časové délky i při různém FPS. 7 Frames Per Second - počet snímků zobrazených za 1 sekundu

47 KAPITOLA 6. IMPLEMENTACE HRY GameEvent Spíše než o funkční blok se jedná o formu zprávy, resp. události předávané mezi bloky. Většinu částí scénáře řeší blok GameScript samostatně, některé příkazy ale posílá bloku GameApplication, který je pak rozděluje dál. Příjemce události je přitom určen jejím typem. Např. typ PLAY_SOUND je odeslán bloku GameAudio, typ WAIT je ponechán v GameApplication a způsobí vyčkání po daný časový interval. Speciálním typem je ADD_INTERACTIVE_OBJECT, kterým GameScript ohlašuje přítomnost nového interaktivního objektu. Tato událost je odeslána bloku GameControls, který si udržuje samostatný seznam všech interaktivních objektů GameObject Tento blok je reprezentací herního objektu. Herní objekty jsou umístěny ve statické scéně a pomocí herního scénáře lze dynamicky měnit jejich vlastnosti. Ty se mohou lišit podle typu objektu (ukázky herních objektů viz na obr. 6.3). Obrázek 6.3: Ukázka několika herních objektů (zleva): GoCannon, GoLever, GoCube Základní typ objektu je tvořen modelem umístěným ve scéně, jehož pozici a rotaci lze měnit pomocí scénáře. Jedná se o dynamický objekt nepřímé osvětlení tedy pouze přijímá, ale světlo se od něj neodráží (narozdíl od statické scény). Rozšířeným typem je GoLever (Game object Lever páka). Jedná se o interaktivní objekt v podobě páky, se kterou může hráč manipulovat. Páka má definován minimální a maximální rozsah a typ přepínání. Rozlišeny jsou zde dva typy přepínání vypínač a páka. První z nich umožňuje jednorázovou změnu z minima na maximum a naopak. Druhý typ umožňuje plynulé nastavení libovolné hodnoty v daném rozmezí. Dalším typem je GoCube detekční kostka. Představuje indikátor osvětlení v daném místě scény. Uživatel má velmi často za úkol docílit v některém místě scény určitého typu osvětlení. K jeho detekci slouží právě GoCube. Speciálním typem je GoLight dynamické světlo. Jedná se o dynamický zdroj světla s proměnlivou barvou a intenzitou vydávaného osvětlení. Stejně jako u ostatních herních objektů však lze měnit i jeho pozici a rotaci GameControls Funkcí tohoto bloku je zachytávání vstupů z myši a klávesnice a jejich zpracování. Pomocí klávesnice je ovládán pohyb postavy ve scéně, pomocí myši je řešen pohled kamery. Kamera je přitom fixována za zády ovládané postavy. GameControls zároveň řeší manipulaci s interaktivními objekty. Od bloku GameScript proto přijímá události typu ADD_INTERACTIVE_OBJECT obsahující odkaz na příslušný GameObject. Při pohybu postavy je pravidelně kontrolována vzdálenost všech interaktivních objektů. Po-

48 36 KAPITOLA 6. IMPLEMENTACE HRY kud se postava dostatečně přiblíží k některému z nich, je zobrazena ikona indikující možnost manipulace s objektem. Stisknutím tlačítka myši pak může uživatel manipulaci provést. Zároveň jsou přijímány i události typu SHOW_TEXT, které vyžadují uživatelské potvrzení stiskem tlačítka. GameControls proto požádá GameGUI o zobrazení textu ve formě dialogového okna a po stisku tlačítka opět o jeho skrytí GameGUI Jak je patrné z názvu, tento blok zajišťuje zobrazování prvků uživatelského rozhraní. Ty jsou vytvářeny pomocí CEGUI knihovny, která je v OGRE zastoupena formou externího plug-inu. Uživatelské rozhraní hry obsahuje prvky několika typů. Jedním z nich je dialogové okno, které zobrazuje text vyřčený postavami ve hře, popř. pokyny udělované hráči. Vyžaduje-li hra potvrzení dialogu, je v rohu okna zobrazena ikona počítačové myši se zvýrazněným levým tlačítkem. Obdobná ikona je použita i pro indikaci interaktivních objektů. Některé interaktivní objekty nabízejí více typů manipulace např. za páku je možno zatáhnout jedním nebo druhým směrem. V takovém případě je zobrazena ikona levého nebo pravého tlačítka myši podle toho, která akce je právě k dispozici GameAudio Tento blok slouží k přehrávání hudby a zvuků. Používá k tomu externí knihovnu FMOD Ex. Všechny zvuky jsou nejprve načteny do vnitřní databáze a poté spouštěny nebo vypínány podle událostí GameEvent přijatých z bloku GameApplication OgreLightsprint OgreLightsprint je knihovna sloužící jako mezičlánek knihoven OGRE a Lightsprint, kterou jsem vytvořil v rámci přípravy na tuto práci. Nepřímé osvětlení spočtené knihovnou Lightsprint lze díky knihovně převést do prostředí OGRE a využít je k zobrazení globálně osvětlených scén. Účelem OgreLightsprint je tedy usnadnění integrace globálního osvětlení do prostředí OGRE. Ke své činnosti využívá velkou část možností, které OGRE nabízí. Jedná se především o extrakci geometrie, detekci přímého osvětlení pomocí funkce render-to-texture a skládání přímého a nepřímého osvětlení pomocí tzv. kompozitorů. Veškeré nastavení osvětlovacích technik je provedeno automaticky. Uživatel tedy pouze specifikuje objekty, které tvoří statickou scénu, a ohlásí spuštění výpočtu nepřímého osvětlení. Materiálové definice těchto objektů jsou pak přizpůsobeny k zobrazení globálního osvětlení přidáním speciálního shaderu pro zobrazení nepřímého osvětlení (viz kapitola 7.4.2). Dynamické objekty je možno libovolně přidávat a rušit, jejich materiály jsou rovněž automaticky přizpůsobeny globálnímu osvětlení. Globální osvětlení je zobrazeno pomocí tzv. kompozitoru, který je vložen na začátek zobrazovacího řetězce. Způsob zobrazení tak není fixní a uživatel knihovny má díky tomu možnost přidat libovolné další efekty za tento kompozitor a obraz scény dále upravovat. Konkrétní popis této metody je uveden v kapitole Skriptovací jazyk Průběh hry je řízen vnitřním funkčním blokem GameScript. Ten čte scénář z externího souboru a interpretuje jej. Scénář je zapsán jednoduchým příkazovým jazykem, který jsem navrhl pro potřeby této hry.

49 KAPITOLA 6. IMPLEMENTACE HRY Syntaxe Jazyk je složen z posloupnosti příkazů, které mají podobu volání metod. Základní syntaxe je vidět z následující ukázky: text("aaaa",1,"") addlever( "lever1", 0, ( 1.5, 2, 0.3),(0,0,0),0,30,20) addlever( "lever2", 0, ( 11.5, 2, 0.3),(0,45,0),0,1,0.1) addlever( "lever3", 1, ( -10.5, 2, 0.3),(0,0,0),-40,0,-20) addlight("mylight1",(0,0,-30),(0,0,0),(1,1,0)) map("lever1","value","mylight1","roty") map("lever2","value","mylight1","r") sound("miracle.mp3",0) Příkazy lze podle jejich funkce rozdělit do následujících skupin: obsluha rozhraní, proměnné a jejich mapování, manipulace s objekty, podmínky a cykly. Jejich úplný seznam včetně přesné specifikace je k dispozici v příloze C. Obsluha rozhraní Obsluha uživatelského rozhraní je řešena samostatným funkčním blokem GameGUI. Rovněž obsluha zvukového zařízení je řešena odděleně v bloku GameAudio. Uživatelský vstup je zpracováván v bloku GameControls. Veškeré žádosti o tyto akce tedy GameScript zasílá formou událostí GameEvent. Jedná se např. o zobrazení dialogového okna s textem, přehrání nebo vypnutí zvuku, zakázání nebo povolení uživatelského vstupu nebo nastavení objektu, který představuje hráče. Speciální skupinou jsou příkazy pro pohyb kamery a nastavení sledovaného objektu. Manipulace s objekty Hra definuje několik typů herních objektů (viz část 6.2.4). Každý z nich má specifické vlastnosti, které je při jeho tvorbě třeba definovat. Všechny objekty ve hře lze animovat, resp. měnit v průběhu času jejich pozici a rotaci. Změna přitom probíhá formou lineární interpolace. Proměnné a jejich mapování GameScript udržuje vnitřní stav, který je definován i pomocí vnitřních proměnných. Ty lze pomocí příkazů vytvářet a nastavovat. Vzhledem k jednoduchosti skriptovacího modelu je jako univerzální datový typ použit číselný typ float. Obdobně jako vnitřní proměnné lze měnit i hodnoty vlastností jednotlivých herních objektů např. jejich pozici, barvu světla, ale i speciální vlastnosti jako intenzita ambientního osvětlení scény nebo zapnutí či vypnutí globálního osvětlení. Kromě jednorázové změny hodnot existuje i možnost mapování vlastností mezi objekty. Blok GameScript totiž spravuje veškeré herní objekty a má tak přímý přístup k jejich vlastnostem. Propojením dvou hodnot, které zde označuji jako mapování, bude docházet k pravidelné aktualizaci cílové proměnné vstupní proměnnou. Tímto způsobem lze např. mapovat pozici páky na barevnou složku světelného zdroje. Při manipulaci s pákou pak dochází k plynulé změně barvy světla vydávaného zdrojem. Obdobně lze měnit pozici a rotaci všech herních objektů. Podobná metoda mapování je použita i v jazyce VRML, kde lze (samozřejmě v mnohem flexibilnější formě) vzájemně vázat vlastnosti objektů.

50 38 KAPITOLA 6. IMPLEMENTACE HRY Podmínky a cykly Hra obsahuje i několik částí, které vyžadují interakci uživatele. Ta spočívá ve splnění úkolu, resp. změně herního světa tak, aby odpovídal požadovanému stavu. Ověření stavu je prováděno pomocí podmínkového příkazu if. Pomocí podmínek lze testovat vlastnosti herních objektů, vnitřní proměnné, ale i např. vzdálenost hlavní postavy od jiných objektů. Časový úsek, který bude hráč pro splnění úkolu potřebovat, nelze předem definovat. Proto jsem do lineárního scénáře zavedl i možnost jeho cyklení formou příkazu while. Cyklus tak probíhá, dokud není určitá podmínka splněna. Aby nedošlo k zacyklení bloku GameScript, je při každém jeho zavolání provedena pouze jedna iterace cyklu. Zavedl jsem i možnost přímého skoku na konkrétní řádek scénáře příkazem jump. Vzhledem k míře, kterou skokové příkazy snižují přehlednost kódu, je však určen pouze pro testovací účely Interpretace Proces čtení a interpretace je spuštěn žádostí bloku GameApplication o další událost. Game- Script tedy čte scénář a interpretuje příkazy. Většinu příkazů je GameScript schopen splnit sám, protože se jedná o manipulaci s herními objekty, ke kterým má přímý přístup. GameScript funguje jako jednoduchý procesor. Udržuje svůj vnitřní stav (definovaný pomocí proměnných, herních objektů a jejich mapování), který je postupně upravován na základě vstupních příkazů. Čtení příkazů je zastaveno až tehdy, došel-li blok GameScript až na konec scénáře nebo potřebuje-li ke splnění příkazu spolupráci některého z dalších bloků. O spolupráci tedy požádá odesláním události GameEvent a do další činnosti se pouští až poté, co je opět zavolán blokem GameApplication.

51 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE 39 7 Globální osvětlení v OGRE OGRE je komplexní zobrazovací systém, ale v oblasti osvětlení nabízí pouze základní metody. Navrhl jsem postup, pomocí kterého lze v OGRE využít některé metody globálního osvětlení. Pro výpočet globálního osvětlení je použita knihovna Lightsprint. 7.1 Osvětlovací proces Lightsprint je do OGRE integrován pomocí knihovny OgreLightsprint (viz kapitola 6.2.8). Ta zajišťuje konverzi předávaných dat a implementaci potřebných fází v OGRE. Celý proces vychází z principu radiozitní metody má zhruba následující průběh: 1. Načti scénu do OGRE 2. Pošli geometrii scény Lightsprintu 3. Zjisti ozáření geometrie přímým osvětlením 4. Pošli hodnoty ozáření Lightsprintu 5. Lightsprint spočítá nepřímé osvětlení 6. Převezmi vypočtené nepřímé osvětlení a zobraz globální osvětlení 7. Došlo-li ke změně osvětlení, jdi na Jdi na 5. Je třeba si uvědomit, že zatímco zobrazovaná scéna je pomocí OGRE vytvářena přímo na GPU, nepřímé osvětlení je Lightsprintem počítáno na CPU. Přenos dat mezi CPU a GPU, stejně jako frekventovanost této operace, může výrazně ovlivnit výkon celé aplikace. Proto je třeba hledat způsoby, jak tuto komunikaci omezit na potřebné minimum. Osvětlovací proces je složen z několika částí, z nichž důležitou roli hrají: zobrazení přímého osvětlení, jeho detekce a zobrazení globálního osvětlení. 7.2 Zobrazení přímého osvětlení Pro zobrazení přímého osvětlení (viz kapitola 2.4.1) existuje více metod různé kvality a rychlosti. Lokální osvětlovací metody stínují jednotlivé objekty samostatně a ignorují tak vržené stíny. Pro zobrazení aspoň částečně realistického osvětlení jsou ovšem vržené stíny nezbytností. V zásadě existují dva přístupy pro zobrazení vržených stínů stínová tělesa a stínové mapy (viz [1]). První uvedená metoda pracuje s objemovou reprezentací stínů v trojrozměrném prostoru, silně však závisí na komplexnosti zobrazované scény. Zvolil jsem proto druhou metodu, která pracuje pouze v rovinném prostoru a navíc umožňuje snadné zobrazení měkkých stínů. Dalším důvodem byl podpora ze strany OGRE, který stínové mapy automaticky vytváří. Depth shadow mapping Metoda stínových map má několik variant, zvolil jsem variantu označovanou jako stínová paměť hloubky (depth shadow mapping, viz [17]). Důvodem byla dostupnost její implementace ve formě shaderů pro OGRE, které byly k instalaci OGRE připojeny jako jeden z ukázkových příkladů. Metodu jsem proto přejal a upravil pro své účely, resp. doplnil zobrazení nepřímého osvětlení. Nepříjemným důsledkem však byl vznik chyb ve stínech, tzv. artefaktů (viz obr. 7.1 vlevo). Metoda totiž silně závisí na charakteru konkrétní scény a její nutno ji ladit pomocí několika parametrů. Obecně je tak obtížné dosáhnout přesných výsledků.

52 40 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE Obrázek 7.1: Srovnání stínovacích metod Depth shadow mapping (vlevo) a Variance shadow mapping [2]. Při použití první metody může dojít ke vzniku artefaktů (viz stín u paty sloupu), druhá metoda tyto nedostatky odstraňuje. Variance shadow mapping Kvůli nedostatkům předchozí stínovací metody jsem proto zvolil variantu označovanou jako Variance shadow mapping [2]. Využil jsem existující implementaci pro OGRE označenou jako Ogre Soft Shadows Demo, která je volně dostupná na komunitním serveru OGRE. Implementaci jsem opět doplnil o zobrazení nepřímého osvětlení a další funkce. Díky odlišnému přístupu této implementace již nedochází ke vzniku stínových artefaktů (viz obr. 7.1 vpravo). 7.3 Detekce přímého osvětlení Intenzita přímého osvětlení je jeden ze vstupních parametrů pro výpočet odrazů světla. Před zahájením výpočtu je tedy nutné zjistit intenzitu přímého osvětlení, které dopadá na každou plochu (resp. trojúhelník, ze kterých jsou objekty složeny). Implementoval jsem postup, který je doporučen v Lightsprint SDK: použít klasický mechanismus pro zobrazení scény s dvěma rozdíly. Trojúhelníky jsou místo své původní pozice (dané geometrií objektu) zobrazeny na nové pozici tvořící pravidelnou mřížku (viz obr. 7.2a). Ta zobrazuje všechny plochy ve scéně ozářené přímým osvětlením. Takto získaná mřížka není přímo zobrazena, ale uložena do paměti jako textura. Obrázek 7.2: Schéma detekce přímého osvětlení: a) mřížka tvořená ozářenými plochami, b) vzorkování jednoho trojúhelníku, c) výsledná podvzorkovaná mapa osvětlení

53 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE 41 Ozáření každé plochy ale potřebujeme reprezentovat pouze jedinou hodnotou. U každého trojúhelníku proto musíme zjistit průměrnou barvu jeho povrchu. Řešením je zvolit některé pixely (viz obr. 7.2b) a spočítat průměr jejich barev. Vzorkování by bylo možné provést na CPU. Mřížka trojúhelníků je ale zobrazena do textury uložené přímo na GPU, je proto rychlejší využít shaderů na GPU (tento postup je rovněž doporučen v Lightsprint SDK). Vytvořil jsem proto shader, který provádí vzorkování trojúhelníků a výpočet průměrné hodnoty jejich barvy. Tím dojde k podvzorkování celé trojúhelníkové mapy do textury, ve které je každý trojúhelník reprezentován pouze jedním pixelem (viz obr. 7.2c). Barva každého pixelu pak určuje průměrnou hodnotu ozáření příslušného trojúhelníku. Takto získané hodnoty jsou přeneseny na CPU a předány Lightsprintu. 7.4 Zobrazení globálního osvětlení Vypočtené globální osvětlení je nutné nějakým způsobem zapojit do zobrazovacího procesu. Výhodou řešení je v takovém případě jeho rychlost a zároveň obecnost Zobrazovací řetězec v OGRE Pro zobrazení globálního osvětlení využívá OgreLightsprint části zobrazovacího řetězce OGRE označované jako Technique, Pass a Compositor. Technique Každý materiál v OGRE obsahuje několik zobrazovacích technik (Technique). Při zobrazování objektu pokrytého tímto materiálem je vždy zvolena a použita pouze jedna z nich. Technika je zvolena buď automaticky (podle toho, zda grafická karta podporuje všechny požadované funkce), nebo manuálně. Manuální volba techniky probíhá určením zobrazovacího schématu (Material scheme). Např. při nastavení zobrazovacího schématu HDR budou použity pouze techniky, které spadají do této skupiny (resp. jsou označeny touto nálepkou). Toho jsem využil při začleňování technik pro globální osvětlení. Pomocí OgreLightsprint je do materiálů všech zobrazovaných objektů automaticky přidána jedna technika označená jako GI, která zobrazuje globální osvětlení. Pro zobrazení je pak nastaveno zobrazovací schéma GI. Díky tomu je globální osvětlení zobrazeno pouze u objektů, které je mají k dispozici, ostatní zůstávají beze změny. Pass Pass neboli průchod představuje stavební prvek zobrazovací techniky každá technika je tvořena nejméně jedním průchodem. Průchody představují kroky, ve kterých jsou objekty vykreslovány. Pro ilustraci si můžeme představit malíře tvořícího obraz, který nejprve načrtne tužkou obrysy, pak silným štětcem namaluje pozadí a na závěr tenčím štětcem dokreslí popředí a detaily. Každý průchod může k zobrazení objektu použít jinou texturu nebo shader. Ve výsledku pak mohou být všechny průchody sečteny, vynásobeny, popř. jinak zkombinovány. Compositor Kompozitor (Compositor) je nejvyšší prvek v zobrazovacím řetězci OGRE. V podstatě zde plní funkci postprodukčního filtru, kterým je obraz scény upravován. Příkladem může být kompozitor pro převod do černobílých odstínů, rozostření nebo přidání rozptýleného světla (tzv. glow). Kompozitory lze řadit do tzv. Compositor Chain řetězce kompozitorů. Vstupem je zde počáteční zobrazení scény. Jednotlivé kompozitory si jej vzájemně předávají a každý jej nějakým způsobem upraví, výsledek vzniklý průchodem celého řetězce je pak zobrazen. Kompozitor ale

54 42 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE neprovádí pouze úpravy přijatého obrazu. Jednou z možností je i opětovné vykreslení scény s vlastním nastavením a přičtení tohoto výsledku k původnímu obrazu Návrh techniky Díky flexibilitě zobrazovacího řetězce OGRE lze většinu problémů řešit více způsoby. Mým cílem bylo nalézt dostatečně rychlé a zároveň obecné řešení pro zobrazení globálního osvětlení. Vyzkoušel jsem při tom dva přístupy oddělené a sloučené texturování. Jako výhodnější se nakonec ukázal druhý přístup, bližší popis obou variant je uveden v následujících odstavcích. Obrázek 7.3: Schéma kompozitoru pro globální osvětlení: Vlevo oddělené texturování, vpravo sloučené texturování. Globálně osvětlená scéna je zobrazena pomocí speciálního kompozitoru. Ten je přidán do řetězce kompozitorů a má nastaveno zobrazovací schéma GI. Při vykreslování objektů tedy budou použity techniky, které do materiálů doplnil OgreLightsprint a jsou určeny pro zobrazení globálního osvětlení. Výsledek je předán dalšímu kompozitoru v řetězci, který má možnost provést další úpravy obrazu. Oddělené techniky Samotná GI technika může být řešena více způsoby. Jedním z nich je zobrazit pouze stínování vzniklé součtem přímého a nepřímého osvětlení. Tímto způsobem získané globální stínování je pak zkombinováno s texturami, resp. původním zobrazením scény tak, jak by vypadala bez globálního osvětlení při plném světle (viz obr. 7.3 vlevo). Výhodou je, že pro zobrazení textur lze použít původní materiály prakticky beze změny. Nevýhodou je ovšem další zobrazovací průchod celé scény, který je pro získání původního obrazu nutno provést. Proto jsem navrhl méně obecné, ale rychlejší zobrazovací řešení. Sloučené techniky Druhou možností provedení GI techniky je sečtení přímého i nepřímého osvětlení a textur v jednom průchodu (viz obr. 7.3 vpravo). Rovněž vnitřní složení samotné GI techniky lze zjednodušit sloučením přímého i nepřímého osvětlení. V původním návrhu techniky byla každá složka osvětlení řešena v samostatném průchodu (viz obr. 7.4 vlevo). Přímé osvětlení je totiž skládáno jako součet příspěvků jednotlivých zdrojů světla. Všechny složky však lze řešit v jednom společném průchodu (viz obr. 7.4 vpravo), což přináší další urychlení.

55 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE 43 Obrázek 7.4: Schéma zobrazovací techniky pro globální osvětlení Privátní nepřímé osvětlení Jako ve většině radiozitních metod pro real-time použití, i v našem případě jsou objekty rozlišeny na statické a dynamické. Statické objekty nemohou nemohou měnit svou pozici, ale jsou přesněji osvětlené. Pro dynamické objekty platí v obou případech opačné tvrzení. Lightsprint nabízí nepřímé osvětlení v několika datových formátech. V našem případě budeme požadovat osvětlení u statických objektů pro každý vrchol, u dynamických objektů ve formě kubické environment mapy. Statické objekty jsou složeny z trojúhelníkových ploch, získáme tedy hodnotu nepřímého osvětlení pro všechny vrcholy trojúhelníků ve scéně. Kubická environment mapa nahrazuje světlo přicházející k objektu ze všech směrů. Dynamický objekt je tedy stínován, jako by byl uzavřen v krychli, jejíž stěny jsou pokryty osvětlovacími texturami kubické environment mapy. Statické objekty Technika (viz část 7.4.1) pro zobrazení globálního osvětlení skládá přímé a nepřímé osvětlení. Nepřímé osvětlení statické scény je uloženo v tzv. vertex bufferu, který obsahuje hodnotu nepřímého osvětlení pro každý vrchol objektu. Tento vertex buffer je uložen vedle geometrie scény na GPU. V tomto bodě je jedna z výhod OGRE spíše na závadu. OGRE totiž provádí instancování geometrie. To znamená, že existuje-li více instancí vzniklých ze stejného modelu, OGRE u každé uloží pouze odkaz na společnou geometrii. Např. dva různé modely židlí se odkazují na stejnou geometrii uloženou v paměti. V našem případě ale ke geometrii ukládáme i informace o osvětlení. Výsledkem by proto byly dvě instance stejného modelu s různou pozicí ve scéně, ale s identickým osvětlením, což je chyba. Úpravou třídy, která v OGRE definuje geometrické objekty, jsem tedy zajistil vytvoření privátního vertex bufferu pro osvětlení každé instance. Do něj je uloženo osvětlení, které je určeno pouze pro jednu konkrétní instanci. Zároveň jsem vytvořil metodu, která přiřazuje osvětlovací buffer ke geometrii podle toho, která instance je právě zobrazována. Díky tomu může být zobrazeno více instancí stejného modelu, ale každá bude mít své unikátní nepřímé osvětlení. Dynamické objekty Nepřímé osvětlení u dynamických objektů není uloženo pro každý vrchol objektu, ale ve formě kubické environment mapy. Ta je pak pomocí normálového mapování zobrazena na objekt. Nastává ovšem stejný problém s instancováním jako u statických objektů. I materiály jsou totiž instancovány. OgreLightsprint pro každý dynamický objekt vytvoří privátní kubickou mapu

56 44 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE s nepřímým osvětlením a ta je přiřazena danému materiálu. Pokud by ale měly dva různé dynamické objekty nastaven stejný materiál, došlo by k použití stejné kubické mapy pro oba objekty, a tím k jejich identickému osvětlení. I zde jsem proto vytvořil metodu, která sleduje zobrazování dynamických objektů a přepíná kubickou texturu podle toho, který objekt je právě zobrazován. 7.5 Optimalizace výkonu Některé části osvětlovacího procesu jsou časově náročné a je proto nutné regulovat jejich výkon pro zajištění plynulého chodu. Jednou z časově náročných operací je detekce přímého osvětlení. Během ní dochází k opětovnému vykreslení celé scény do podoby trojúhelníkové mřížky (viz 7.3). Míra osvětlení objektů je přitom zjišťována pomocí metody stínových map [1] (viz 7.2). Pro každý ze světelných zdrojů je v takovém případě nutné aktualizovat jeho stínovou mapu. K tomu ovšem dochází průběžně při vytváření každého nového snímku. Pro detekci přímého osvětlení jsem proto aktualizaci stínových map pozastavil a použil stínové mapy vytvořené pro zobrazení předchozího snímku scény. Tyto mapy jsou totožné s těmi, které by byly vytvořeny při aktualizaci. Díky tomu je ušetřeno několik zobrazovacích průchodů. K detekci přímého osvětlení dochází při jeho změně, která je ohlašována samotnou aplikací (např. dojde-li ke změně intenzity nebo pozice světelného zdroje). Další časově náročnou operací je samotný výpočet nepřímého osvětlení prováděný knihovnou Lightsprint. Knihovna dynamicky upravuje časový úsek věnovaný každé výpočetní iteraci. Délku tohoto úseku lze ovlivnit vnějším ohlašováním interakce ve scéně. Při každé změně ve scéně (pohyb objektu, pohyb kamery) je proto nutné tuto změnu ohlašovat a zajistit tím rovnoměrné rozložení výkonu. 7.6 Přenositelnost Oproti původnímu předpokladu snadné přenositelnosti aplikací napsaných v OGRE se bohužel ukázalo, že opak je pravdou. OGRE definuje vlastní abstraktní zobrazovací systém, který může být reprezentován systémy OpenGL i DirectX na libovolném GPU. Uvedené tvrzení však dle mých zkušeností platí pouze pro jednoduché aplikace, které nevyužívají některé z pokročilých funkcí GPU (render-to-texture, floating point textury, shadery vyšších verzí). Bohužel právě tyto funkce tvoří jádro celé aplikace využívající globální osvětlení. Přestože se tvůrci OGRE snaží o zajištění kompatibility zobrazovacího systému s co nejširší škálou GPU, specifické vlastnosti některých grafických karet bohužel zatím nebyly plně postihnuty. Především v důsledku nepřesné implementace rozhraní OpenGL na některých GPU nebylo možné aplikaci na některých kartách úspěšně otestovat. Naopak rozhraní DirectX vykazovalo ve většině případů bezproblémovou kompatibilitu i lepší výkon. Proto jsem do herní aplikace implementoval několik detekčních metod, které se snaží zjistit možnosti GPU a podle nich upravit funkci celé aplikace, popř. podat hlášení o možné nápravě. 7.7 Testování Hra byla testována na několika PC s různými GPU (viz tab. 7.1). Měření obsahuje rychlost zobrazení při dynamickém osvětlení (plynulý pohyb některého ze světelných zdrojů). Během pohybu světelného zdroje dochází k průběžné aktualizaci nepřímého osvětlení, rychlost zobrazení tím může být ovlivněna. Rychlost zobrazování je kromě GPU závislá i na výkonu CPU. Nepřímé osvětlení je totiž počítáno právě na CPU. K měření byla použita scéna složená ze trojúhelníků. Ve scéně byly umístěny dva dynamické světelné zdroje, pro každý z nich byla generována stínová mapa o velikosti 512x512

57 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE 45 CPU GPU OpenGL [FPS] 640 x x x 1440 Intel Core2 2.2GHz NV GF8600M GT AMD Sempron NV GF7600 GS Intel 1.66GHz ATI Radeon X1300 Intel Core2 2.5GHz ATI Radeon X Intel Core2 2.5GHz NV GF 8800 GTS Intel Core2 2.5GHz ATI Radeon HD CPU GPU DirectX [FPS] 640 x x x 1440 Intel Core2 2.2GHz NV GF8600M GT AMD Sempron NV GF7600 GS Intel 1.66GHz ATI Radeon X Intel Core2 2.5GHz ATI Radeon X Intel Core2 2.5GHz NV GF 8800 GTS Intel Core2 2.5GHz ATI Radeon HD Tabulka 7.1: Měření rychlosti zobrazení hry v OpenGL a DirectX. pixelů. Přestože je nepřímé osvětlení počítáno na CPU, nemá tento výpočet na rychlost zobrazení scény prakticky vliv. Nízké hodnoty FPS na pomalejších GPU (viz tabulka 7.1) jsou způsobeny zobrazováním přímého osvětlení. Součástí pixel shaderu je totiž jednoduchý filtr pro zobrazení měkkých stínů, který provádí vícenásobné vzorkování stínové textury. U méně výkonných GPU je tedy rychlost zobrazení závislá na rozlišení. I ve vyšších rozlišeních však na většině standardních GPU dosahuje rychlost zobrazení nejméně 25 FPS. 7.8 Srovnání V předchozích kapitolách byly popsány metody pro výpočet globálního osvětlení a některé implementace, které to umožňují v reálném čase. Instant Radiosity nahrazuje odražené světlo virtuálními bodovými zdroji světla. Její vylepšená verze [8] dosahuje při rozlišení 1024x768 hodnot vyšších než 50 FPS. Metoda je dobře škálovatelná a podává kvalitní vizuální výsledky, byla ovšem implementována pouze pro jeden zdroj světla a počítá pouze s jednou úrovní odrazu. Photon Mapping simuluje odrazy světla střílením fotonů ze světelného zdroje a následovným sběrem jejich světelných příspěvků. Jeho implementace na GPU [9] v rozlišení 512x512 dosahuje více než 35 FPS. Metoda umožňuje zobrazení kaustik, které jsou jinak velmi obtížné dosažitelné. Osvětlení je aktualizováno postupně a selektivně, při rychlém pohybu objektů proto může docházet k zobrazení nekorektního osvětlení. Vizuálně nejzdařilejší a zároveň dostatečně obecnou implementací je Raytracing in Egoshooters [14]. Jedním z navržených uplatnění je i oblast počítačových her. S využitím clusteru několika PC bylo při rozlišení 512x512 dosaženo 5-20 FPS. Aplikace sice umožňuje zobrazení všech efektů, které globální osvětlení nabízí, výkonové požadavky ovšem v současné době zabraňují širšímu rozšíření pro běžné použití. Žádná z výše uvedených technik dosud není v případě počítačových her ani interaktivních aplikací obecně ve větší míře rozšířena. Příčinou jsou zpravidla hardwarové nároky kladené na použití některých metod. V oblasti počítačových her jsou proto používány metody, které

58 46 KAPITOLA 7. GLOBÁLNÍ OSVĚTLENÍ V OGRE globální osvětlení nějakým způsobem napodobují (viz kapitola 4.2). Ve většině případů se jedná o jeho statické předpočítání a následnou dynamickou aproximaci. To umožňuje rychlé a poměrně věrné osvětlení scén, přesto však existují omezující parametry zobrazovaných scén pohyb světelných zdrojů, zobrazení nepřímého osvětlení atd. Hra, jejíž vytvoření bylo cílem této práce, implementuje globální osvětlení v reálném čase, k jeho výpočtu je použita externí knihovna. I při pohybu několika světelných zdrojů a dynamického výpočtu nepřímého osvětlení dosahuje hra v běžně používaném rozlišení (800x600) rychlosti zobrazení vyšší než 50 FPS. K testování byl přitom použit běžně dostupný hardware střední třídy (viz tab. 7.1). Nepřímé osvětlení zobrazené ve hře má pouze difuzní charakter, zrcadlové a lesklé odrazy nepřímého osvětlení tedy nejsou v této implementaci zobrazeny. Příčinou je podstata radiozitní metody, která se zaměřuje především na difuzní odrazy (viz kapitola 3.4). Pro běžné použití v počítačových hrách lze však toto zjednodušení považovat za postačující, difuzní složka je totiž z hlediska lidského zrakového vjemu nejpodstatnější, ostatní typy odrazů nehrají v tomto případě tak významnou roli [15] (viz kapitola 4.1). Použitá radiozitní metoda stojí na pomezí mezi osvětlovacími technikami, které jsou aktuálně používány v počítačových hrách a fyzikálně korektními metodami. Bere v potaz základní charakteristiky osvětlení a umožňuje jeho dynamický výpočet. Zároveň je snadno škálovatelná z hlediska kvality a rychlosti a tím spíše vhodná pro použití v interaktivních aplikacích.

59 KAPITOLA 8. ZÁVĚR 47 8 Závěr Cílem práce bylo provedení analýzy globálních osvětlovacích metod a jejich možností v rámci interaktivních aplikací. Provedl jsem proto obecnou rešerši osvětlovacích metod a metod používaných pro výpočet globálního osvětlení. Účelem bylo nalezení a formulace vizuálně pozorovatelných výhod, které globální osvětlovací přístup přináší. Vzhledem k zaměření na interaktivní aplikace jsem rovněž provedl rešerši metod, které jsou v počítačových hrách aktuálně používány pro zobrazení osvětlení. Výsledkem bylo zjištění, že globální osvětlení je v interaktivních aplikacích aktuálně pouze aproximováno, popř. napodobeno fyzikálně ne zcela korektními metodami, které dosahují různého stupně věrohodnosti. Jednoduché aproximativní metody nějakým způsobem zjednodušují nepřímé osvětlení. Rozdíly oproti korektnímu globálnímu osvětlení lze pozorovat především v interiérech a při dynamické změně osvětlení. V interiérech dochází k četnějším světelným odrazům a tím i méně pravidelnému rozložení světla konstantní aproximativní metody zde proto při komplexnějším osvětlení často selhávají. Nepřímé osvětlení je ve většině případů předpočítáno. Předpočtené nepřímé osvětlení má však pouze statický charakter, jakékoliv dynamické změny světelných podmínek proto nejsou v rámci nepřímého osvětlení zohledňovány. Zatímco v případě statického srovnání mohou interaktivní aplikace napodobit globální osvětlení poměrně věrně, při dynamickém osvětlení jsou rozdíly mnohem patrnější. V důsledku své výpočetní náročnosti však nejsou dynamické globální osvětlovací metody v interaktivních aplikacích dosud ve větší míře využívány. Právě dynamická změna světelných podmínek je hlavní výhodou dynamického globálního osvětlení, na kterou poukazuje hra, kterou jsem v rámci této práce vytvořil. Hra jednoduchou formou seznamuje s hlavními aspekty globálního osvětlení a snaží se při tom nabídnout srovnání s běžně používanými aproximativními metodami. Hráč zde cíleně manipuluje s několika zdroji světla a dynamicky tak upravuje světelné podmínky. Ve hře je implementováno difuzní nepřímé osvětlení, které postačuje pro předvedení základních výhod dynamického globálního osvětlení. Výsledná hra tedy prezentuje výhody dynamického globálního osvětlení, které dosud nebylo v interaktivních aplikacích ve větší míře využíváno. V důsledku statického charakteru osvětlení byla částečně omezena dynamika i celkový charakter zobrazovaných scén, s využitím dynamického osvětlení by však bylo možné tato omezení minimalizovat. Možným pokračováním práce by mohla být implementace lesklých a zrcadlových nepřímých odrazů, popř. techniky Ambient Occlusion používané pro napodobení nepřímého osvětlení. Hra by rovněž mohla být rozšířena o další kapitoly, které se zaměří na jiné aspekty globálního osvětlení (statické světelné mapy, ambient cube, atd.). Pro potřeby hry jsem navrhl jednoduchý skriptovací jazyk, pomocí kterého lze psát scénář hry bez nutnosti jakékoliv úpravy původní aplikace.

60 48 KAPITOLA 8. ZÁVĚR

61 KAPITOLA 9. LITERATURA 49 9 Literatura [1] D. Ambrož. Stíny v počítačové grafice, [2] W. Donnelly and A. Lauritzen. Variance shadow maps. In I3D 06: Proceedings of the 2006 symposium on Interactive 3D graphics and games, pages , New York, NY, USA, ACM. [3] P. Dutré. Global illumination compendium. [Online]. [4] P. Heckbert. "Adaptive Radiosity Textures for Bidirectional Ray Tracing". In Proceedings of SIGGRAPH 90, pages , August [5] J. T. Kajiya. The rendering equation. In SIGGRAPH 86: Proceedings of the 13th annual conference on Computer graphics and interactive techniques, pages , New York, NY, USA, ACM. [6] A. Keller. Instant radiosity. In SIGGRAPH 97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques, pages 49 56, New York, NY, USA, ACM Press/Addison-Wesley Publishing Co. [7] J. Křivánek. X36RSO - Realistická syntéza obrazu, výukové materiály, CTU Prague. [8] S. Laine, H. Saransaari, J. Kontkanen, J. Lehtinen, and T. Aila. Incremental Instant Radiosity for Real-Time Indirect Illumination. In Proceedings of Eurographics Symposium on Rendering Eurographics Association, [9] B. D. Larsen and N. Christensen. "Simulating Photon Mapping for Real-time Applications". In A. K. Henrik Wann Jensen, editor, "Eurographics Symposium on Rendering", June [10] G. McTaggart. Half-life 2 / Valve Source shading, Direct3D Tutorial Day, Game Developer s Conference, March [11] J. Mitchell, G. McTaggart, and C. Green. Shading in Valve s Source engine. In SIG- GRAPH 06: ACM SIGGRAPH 2006 Courses, pages , New York, NY, USA, ACM. [12] M. Mittring. Finding next gen: Cryengine 2. In SIGGRAPH 07: ACM SIGGRAPH 2007 courses, pages , New York, NY, USA, ACM. [13] P. B. Philip Dutré, Kavita Bala. Advanced Global Illumination. A K Peters Ltd., 2nd edition, [14] J. Schmittler, D. Pohl, T. Dahmen, C. Vogelgesang, and P. Slusallek. Realtime ray tracing for current and future games. In SIGGRAPH 05: ACM SIGGRAPH 2005 Courses, page 23, New York, NY, USA, ACM. [15] W. A. Stokes, J. A. Ferwerda, B. Walter, and D. P. Greenberg. Perceptual illumination components: a new approach to efficient, high quality global illumination rendering. ACM Trans. Graph., 23(3): , [16] Wikipedia. "Ambient occlusion Wikipedia, The Free Encyclopedia", [Online; accessed 18-April-2008]. [17] J. Žára, B. Beneš, J. Sochor, and P. Felkel. Moderní počítačová grafika. Computer Press s.r.o, Brno, 2nd edition, 2004.

62 50 KAPITOLA 9. LITERATURA

63 DODATEK A. BAREVNÁ PŘÍLOHA 51 A Barevná příloha Obrázek 1.1: Srovnání počítačové grafiky ve filmu a v počítačových hrách film Final Fantasy: Advent Children (2006, Sony Pictures Home Entertainment), hra Half-Life 2: Episode Two (2007, Valve Corporation), hra Crysis (2007, Crytek) Obrázek 2.5: Efekty globálního osvětlení: color-bleeding (vlevo), kaustika (vpravo) Obrázek 3.3: Raytracing in Egoshooters

Zobrazování a osvětlování

Zobrazování a osvětlování Zobrazování a osvětlování Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa

Více

Počítačová grafika III Úvod

Počítačová grafika III Úvod Počítačová grafika III Úvod Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Syntéza obrazu (Rendering) Vytvoř obrázek z matematického popisu scény. Popis scény Geometrie Kde je jaký objekt ve scéně

Více

Odraz světla, BRDF. Petr Kadleček

Odraz světla, BRDF. Petr Kadleček Odraz světla, BRDF Petr Kadleček 17. října 2011 Úvod V minulé přednášce jsme si představili matematický model scény včetně geometrie, materiálů, zdroje světla, kamery, atd. Ukázali jsme si, že při formulaci

Více

Fotonové mapy. Leonid Buneev

Fotonové mapy. Leonid Buneev Fotonové mapy Leonid Buneev 21. 01. 2012 Popis algoritmu Photon mapping algoritmus, který, stejně jako path tracing a bidirectional path tracing, vyřeší zobrazovací rovnice, ale podstatně jiným způsobem.

Více

Počítačová grafika III Úvod

Počítačová grafika III Úvod Počítačová grafika III Úvod Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Syntéza obrazu (Rendering) Vytvoř obrázek z matematického popisu scény. Popis scény Geometrie Kde je jaký objekt ve scéně

Více

Výpočet vržených stínů

Výpočet vržených stínů Výpočet vržených stínů 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Shadows 2016 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 18 Metody vícenásobný

Více

Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm.

Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm. 1. Podstata světla Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm. Vznik elektromagnetických vln (záření): 1. při pohybu elektricky nabitých částic s nenulovým zrychlením

Více

Photon-Mapping Josef Pelikán CGG MFF UK Praha.

Photon-Mapping Josef Pelikán CGG MFF UK Praha. Photon-Mapping 2009-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Photon-mapping 2016 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 25 Základy Photon-mappingu

Více

7. Rozdělení pravděpodobnosti ve statistice

7. Rozdělení pravděpodobnosti ve statistice 7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,

Více

11 Zobrazování objektů 3D grafiky

11 Zobrazování objektů 3D grafiky 11 Zobrazování objektů 3D grafiky Studijní cíl Tento blok je věnován základním algoritmům zobrazení 3D grafiky. Postupně budou probrány základní metody projekce kolmé promítání, rovnoběžné promítání a

Více

7. OSVĚTLENÍ. Cíl Po prostudování této kapitoly budete znát. Výklad. 7. Osvětlení

7. OSVĚTLENÍ. Cíl Po prostudování této kapitoly budete znát. Výklad. 7. Osvětlení 7. OSVĚTENÍ Cíl Po prostudování této kapitoly budete znát základní pojmy při práci se světlem charakteristické fyzikální vlastnosti světla důležité pro práci se světlem v počítačové grafice základní operace

Více

Distribuované sledování paprsku

Distribuované sledování paprsku Distribuované sledování paprsku 1996-2015 Josef Pelikán, CGG MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz DistribRT 2015 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 24 Distribuované

Více

Geometrická optika. předmětu. Obrazový prostor prostor za optickou soustavou (většinou vpravo), v němž může ležet obraz - - - 1 -

Geometrická optika. předmětu. Obrazový prostor prostor za optickou soustavou (většinou vpravo), v němž může ležet obraz - - - 1 - Geometrická optika Optika je část fyziky, která zkoumá podstatu světla a zákonitosti světelných jevů, které vznikají při šíření světla a při vzájemném působení světla a látky. Světlo je elektromagnetické

Více

12 Metody snižování barevného prostoru

12 Metody snižování barevného prostoru 12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů

Více

Radiometrie, radiační metody

Radiometrie, radiační metody Radiometrie, radiační metody 1996-2018 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Radiometry 2018 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 34 Globální výpočet

Více

Základní pojmy Zobrazení zrcadlem, Zobrazení čočkou Lidské oko, Optické přístroje

Základní pojmy Zobrazení zrcadlem, Zobrazení čočkou Lidské oko, Optické přístroje Optické zobrazování Základní pojmy Zobrazení zrcadlem, Zobrazení čočkou Lidské oko, Optické přístroje Základní pojmy Optické zobrazování - pomocí paprskové (geometrické) optiky - využívá model světelného

Více

Jaký obraz vytvoří rovinné zrcadlo? Zdánlivý, vzpřímený, stejně velký. Jaký obraz vytvoří vypuklé zrcadlo? Zdánlivý, vzpřímený, zmenšený

Jaký obraz vytvoří rovinné zrcadlo? Zdánlivý, vzpřímený, stejně velký. Jaký obraz vytvoří vypuklé zrcadlo? Zdánlivý, vzpřímený, zmenšený Jan Olbrecht Jaký obraz vytvoří rovinné zrcadlo? Zdánlivý, vzpřímený, stejně velký Jaký obraz vytvoří vypuklé zrcadlo? Zdánlivý, vzpřímený, zmenšený Jaký typ lomu nastane při průchodu světla z opticky

Více

Stanovení nejistot při výpočtu kontaminace zasaženého území

Stanovení nejistot při výpočtu kontaminace zasaženého území Stanovení nejistot při výpočtu kontaminace zasaženého území Michal Balatka Abstrakt Hodnocení ekologického rizika kontaminovaných území představuje komplexní úlohu, která vyžaduje celou řadu vstupních

Více

Laboratorní úloha č. 7 Difrakce na mikro-objektech

Laboratorní úloha č. 7 Difrakce na mikro-objektech Laboratorní úloha č. 7 Difrakce na mikro-objektech Úkoly měření: 1. Odhad rozměrů mikro-objektů z informací uváděných výrobcem. 2. Záznam difrakčních obrazců (difraktogramů) vzniklých interakcí laserového

Více

Optika nauka o světle

Optika nauka o světle Optika nauka o světle 50_Světelný zdroj, šíření světla... 2 51_Stín, fáze Měsíce... 3 52_Zatmění Měsíce, zatmění Slunce... 3 53_Odraz světla... 4 54_Zobrazení předmětu rovinným zrcadlem... 4 55_Zobrazení

Více

Rekurzivní sledování paprsku

Rekurzivní sledování paprsku Rekurzivní sledování paprsku 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 21 Model dírkové kamery 2 / 21 Zpětné sledování paprsku L D A B C 3 / 21 Skládání

Více

Počítačová grafika Radiozita

Počítačová grafika Radiozita Počítačová grafika Radiozita V. Chalupecký chalupec@kmlinux.fjfi.cvut.cz Obsah 1 Literatura 1 2 Úvod 5 3 Radiometrie a fotometrie 6 3.1 Prostorový úhel.......................... 6 3.2 Zářivý tok.............................

Více

ZOBRAZOVÁNÍ ZRCADLY. Mgr. Jan Ptáčník - GJVJ - Septima - Optika

ZOBRAZOVÁNÍ ZRCADLY. Mgr. Jan Ptáčník - GJVJ - Septima - Optika ZOBRAZOVÁNÍ ZRCADLY Mgr. Jan Ptáčník - GJVJ - Septima - Optika Úvod Vytváření obrazů na základě zákonů optiky je častým jevem kolem nás Základní principy Základní principy Zobrazování optickými přístroji

Více

Moderní metody rozpoznávání a zpracování obrazových informací 15

Moderní metody rozpoznávání a zpracování obrazových informací 15 Moderní metody rozpoznávání a zpracování obrazových informací 15 Hodnocení transparentních materiálů pomocí vizualizační techniky Vlastimil Hotař, Ondřej Matúšek Katedra sklářských strojů a robotiky Fakulta

Více

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/ Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Zrcadla Zobrazení zrcadlem Zrcadla jistě všichni znáte z každodenního života ráno se do něj v koupelně díváte,

Více

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

4.2.3 ŠÍŘE FREKVENČNÍHO PÁSMA CHOROVÉHO ELEMENTU A DISTRIBUČNÍ FUNKCE VLNOVÝCH NORMÁL

4.2.3 ŠÍŘE FREKVENČNÍHO PÁSMA CHOROVÉHO ELEMENTU A DISTRIBUČNÍ FUNKCE VLNOVÝCH NORMÁL 4.2.3 ŠÍŘE FREKVENČNÍHO PÁSMA CHOROVÉHO ELEMENTU A DISTRIBUČNÍ FUNKCE VLNOVÝCH NORMÁL V předchozích dvou podkapitolách jsme ukázali, že chorové emise se mohou v řadě případů šířit nevedeným způsobem. Připomeňme

Více

U Úvod do modelování a simulace systémů

U Úvod do modelování a simulace systémů U Úvod do modelování a simulace systémů Vyšetřování rozsáhlých soustav mnohdy nelze provádět analytickým výpočtem.často je nutné zkoumat chování zařízení v mezních situacích, do kterých se skutečné zařízení

Více

Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2.

Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2. Kapitola 2 Přímková a rovinná soustava sil 2.1 Přímková soustava sil Soustava sil ležící ve společném paprsku se nazývá přímková soustava sil [2]. Působiště všech sil m i lze posunout do společného bodu

Více

Fotorealistická syntéza obrazu Josef Pelikán, MFF UK Praha

Fotorealistická syntéza obrazu Josef Pelikán, MFF UK Praha Fotorealistická sntéza obrazu 2006 Josef Pelikán MFF UK Praha Josef.Pelikan@mff.cuni.cz 10.4.2006 Obsah přednášk cíle a aplikace realistického zobrazování historie přehled používaných přístupů teoretické

Více

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika.

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika. 4.8.3. Cvičení z matematiky Předmět Cvičení z matematiky je vyučován v sextě a v septimě jako volitelný předmět. Vzdělávací obsah vyučovacího předmětu Cvičení z matematiky vychází ze vzdělávací oblasti

Více

Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1

Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1 Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1 Ing. Jakub Ulmann Zobrazování optickými soustavami 1. Optické

Více

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy

Více

Úvod Game designer Struktura hry Formální a dramatické elementy Dynamika her Konec. Úvod do game designu 1 / 37

Úvod Game designer Struktura hry Formální a dramatické elementy Dynamika her Konec. Úvod do game designu 1 / 37 Počítačové hry Úvod do game designu 1 / 37 Obsah přednášky Role game designera Struktura hry Formální a dramatické elementy Dynamika herních systémů 2 / 37 Literatura a odkazy Chris Crawford. The Art of

Více

zdroj světla). Z metod transformace obrázku uvedeme warping a morfing, které se

zdroj světla). Z metod transformace obrázku uvedeme warping a morfing, které se Kapitola 3 Úpravy obrazu V následující kapitole se seznámíme se základními typy úpravy obrazu. První z nich je transformace barev pro výstupní zařízení, dále práce s barvami a expozicí pomocí histogramu

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Jednoduchý elektrický obvod

Jednoduchý elektrický obvod 21 25. 05. 22 01. 06. 23 22. 06. 24 04. 06. 25 28. 02. 26 02. 03. 27 13. 03. 28 16. 03. VI. A Jednoduchý elektrický obvod Jednoduchý elektrický obvod Prezentace zaměřená na jednoduchý elektrický obvod

Více

9 Kolmost vektorových podprostorů

9 Kolmost vektorových podprostorů 9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.

Více

Stručný úvod do spektroskopie

Stručný úvod do spektroskopie Vzdělávací soustředění studentů projekt KOSOAP Slunce, projevy sluneční aktivity a využití spektroskopie v astrofyzikálním výzkumu Stručný úvod do spektroskopie Ing. Libor Lenža, Hvězdárna Valašské Meziříčí,

Více

Objektově orientovaná implementace škálovatelných algoritmů pro řešení kontaktních úloh

Objektově orientovaná implementace škálovatelných algoritmů pro řešení kontaktních úloh Objektově orientovaná implementace škálovatelných algoritmů pro řešení kontaktních úloh Václav Hapla Katedra aplikované matematiky Fakulta elektrotechniky a informatiky VŠB-Technická univerzita Ostrava

Více

Fyzikálně založené modely osvětlení

Fyzikálně založené modely osvětlení Fyzikálně založené modely osvětlení 1996-2015 Josef Pelikán, CGG MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz Physical 2015 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 31 Historie

Více

VÝUKOVÝ SOFTWARE PRO ANALÝZU A VIZUALIZACI INTERFERENČNÍCH JEVŮ

VÝUKOVÝ SOFTWARE PRO ANALÝZU A VIZUALIZACI INTERFERENČNÍCH JEVŮ VÝUKOVÝ SOFTWARE PRO ANALÝZU A VIZUALIZACI INTERFERENČNÍCH JEVŮ P. Novák, J. Novák Katedra fyziky, Fakulta stavební, České vysoké učení technické v Praze Abstrakt V práci je popsán výukový software pro

Více

ODRAZ A LOM SVĚTLA. Mgr. Jan Ptáčník - GJVJ - Septima - Fyzika - Optika

ODRAZ A LOM SVĚTLA. Mgr. Jan Ptáčník - GJVJ - Septima - Fyzika - Optika ODRAZ A LOM SVĚTLA Mgr. Jan Ptáčník - GJVJ - Septima - Fyzika - Optika Odraz světla Vychází z Huygensova principu Zákon odrazu: Úhel odrazu vlnění je roven úhlu dopadu. Obvykle provádíme konstrukci pomocí

Více

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D EVROPSKÝ SOCIÁLNÍ FOND Základy 3D modelování a animace v CGI systémech Cinema 4D C4D PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Mgr. David Frýbert 2013 CGI systémy Computer - generated imagery - aplikace

Více

Odraz světla na rozhraní dvou optických prostředí

Odraz světla na rozhraní dvou optických prostředí Odraz světla na rozhraní dvou optických prostředí Může kulová nádoba naplněná vodou sloužit jako optická čočka? Exponát demonstruje zaostření světla procházejícího skrz vodní kulovou čočku. Pohyblivý světelný

Více

Globální matice konstrukce

Globální matice konstrukce Globální matice konstrukce Z matic tuhosti a hmotnosti jednotlivých prvků lze sestavit globální matici tuhosti a globální matici hmotnosti konstrukce, které se využijí v řešení základní rovnice MKP: [m]{

Více

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/ Vlnění

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/ Vlnění Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Vlnění Vhodíme-li na klidnou vodní hladinu kámen, hladina se jeho dopadem rozkmitá a z místa rozruchu se začnou

Více

Realistický rendering

Realistický rendering Realistický rendering 2010-2017 Josef Pelikán, CGG MFF UK http://cgg.mff.cuni.cz/ http://cgg.mff.cuni.cz/~pepca/ Festival fantazie, Chotěboř, 4. 7. 2017 1 / 47 Obsah přednášky co je realistický rendering?

Více

9 Prostorová grafika a modelování těles

9 Prostorová grafika a modelování těles 9 Prostorová grafika a modelování těles Studijní cíl Tento blok je věnován základům 3D grafiky. Jedná se především o vysvětlení principů vytváření modelů 3D objektů, jejich reprezentace v paměti počítače.

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

Rozšíření bakalářské práce

Rozšíření bakalářské práce Rozšíření bakalářské práce Vojtěch Vlkovský 2011 1 Obsah Seznam obrázků... 3 1 Barevné modely... 4 1.1 RGB barevný model... 4 1.2 Barevný model CMY(K)... 4 1.3 Další barevné modely... 4 1.3.1 Model CIE

Více

7. Funkce jedné reálné proměnné, základní pojmy

7. Funkce jedné reálné proměnné, základní pojmy , základní pojmy POJEM FUNKCE JEDNÉ PROMĚNNÉ Reálná funkce f jedné reálné proměnné je funkce (zobrazení) f: X Y, kde X, Y R. Jde o zvláštní případ obecného pojmu funkce definovaného v přednášce. Poznámka:

Více

Tvorba výpočtového modelu MKP

Tvorba výpočtového modelu MKP Tvorba výpočtového modelu MKP Jaroslav Beran (KTS) Modelování a simulace Tvorba výpočtového modelu s využitím MKP zahrnuje: Tvorbu (import) geometrického modelu Generování sítě konečných prvků Definování

Více

Počítačová grafika 2 (POGR2)

Počítačová grafika 2 (POGR2) Počítačová grafika 2 (POGR2) Pavel Strachota FJFI ČVUT v Praze 19. února 2015 Kontakt Ing. Pavel Strachota, Ph.D. Katedra matematiky Trojanova 13, místnost 033a E-mail: pavel.strachota@fjfi.cvut.cz WWW:

Více

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice 9. Lineární diferenciální rovnice 2. řádu Cíle Diferenciální rovnice, v nichž hledaná funkce vystupuje ve druhé či vyšší derivaci, nazýváme diferenciálními rovnicemi druhého a vyššího řádu. Analogicky

Více

Otázky z optiky. Fyzika 4. ročník. Základní vlastnosti, lom, odraz, index lomu

Otázky z optiky. Fyzika 4. ročník. Základní vlastnosti, lom, odraz, index lomu Otázky z optiky Základní vlastnosti, lom, odraz, index lomu ) o je světlo z fyzikálního hlediska? Jaké vlnové délky přísluší viditelnému záření? - elektromagnetické záření (viditelné záření) o vlnové délce

Více

Rozvoj tepla v betonových konstrukcích

Rozvoj tepla v betonových konstrukcích Úvod do problematiky K novinkám v požární odolnosti nosných konstrukcí Praha, 11. září 2012 Ing. Radek Štefan prof. Ing. Jaroslav Procházka, CSc. Znalost rozložení teploty v betonové konstrukci nebo její

Více

4. Statika základní pojmy a základy rovnováhy sil

4. Statika základní pojmy a základy rovnováhy sil 4. Statika základní pojmy a základy rovnováhy sil Síla je veličina vektorová. Je určena působištěm, směrem, smyslem a velikostí. Působiště síly je bod, ve kterém se přenáší účinek síly na těleso. Směr

Více

MĚŘENÍ ABSOLUTNÍ VLHKOSTI VZDUCHU NA ZÁKLADĚ SPEKTRÁLNÍ ANALÝZY Measurement of Absolute Humidity on the Basis of Spectral Analysis

MĚŘENÍ ABSOLUTNÍ VLHKOSTI VZDUCHU NA ZÁKLADĚ SPEKTRÁLNÍ ANALÝZY Measurement of Absolute Humidity on the Basis of Spectral Analysis MĚŘENÍ ABSOLUTNÍ VLHKOSTI VZDUCHU NA ZÁKLADĚ SPEKTRÁLNÍ ANALÝZY Measurement of Absolute Humidity on the Basis of Spectral Analysis Ivana Krestýnová, Josef Zicha Abstrakt: Absolutní vlhkost je hmotnost

Více

Animace a geoprostor. První etapa: Animace 3. přednáško-cvičení. Jaromír Landa. jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně

Animace a geoprostor. První etapa: Animace 3. přednáško-cvičení. Jaromír Landa. jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně Animace a geoprostor První etapa: Animace 3. přednáško-cvičení Jaromír Landa jaromir.landa@mendelu.cz Ústav informatiky PEF MENDELU v Brně Náplň přednáško-cvičení Nasvícení scény Světelné zdroje umělé

Více

Zákony hromadění chyb.

Zákony hromadění chyb. Zákony hromadění chyb. Zákon hromadění skutečných chyb. Zákon hromadění středních chyb. Tomáš Bayer bayertom@natur.cuni.cz Přírodovědecká fakulta Univerzity Karlovy v Praze, Katedra aplikované geoinformatiky

Více

Balmerova série. F. Grepl 1, M. Benc 2, J. Stuchlý 3 Gymnázium Havlíčkův Brod 1, Gymnázium Mnichovo Hradiště 2, Gymnázium Šumperk 3

Balmerova série. F. Grepl 1, M. Benc 2, J. Stuchlý 3 Gymnázium Havlíčkův Brod 1, Gymnázium Mnichovo Hradiště 2, Gymnázium Šumperk 3 Balmerova série F. Grepl 1, M. Benc 2, J. Stuchlý 3 Gymnázium Havlíčkův Brod 1, Gymnázium Mnichovo Hradiště 2, Gymnázium Šumperk 3 Grepl.F@seznam.cz Abstrakt: Metodou dělených svazků jsme určili lámavý

Více

3.1 Laboratorní úlohy z osvětlovacích soustav

3.1 Laboratorní úlohy z osvětlovacích soustav Osvětlovací soustavy. Laboratorní cvičení 11 3.1 Laboratorní úlohy z osvětlovacích soustav 3.1.1 Měření odraznosti povrchů Cíl: Cílem laboratorní úlohy je porovnat spektrální a integrální odraznosti různých

Více

Návod k použití softwaru Solar Viewer 3D

Návod k použití softwaru Solar Viewer 3D Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a

Více

Úvod do počítačové grafiky

Úvod do počítačové grafiky Úvod do počítačové grafiky elmag. záření s určitou vlnovou délkou dopadající na sítnici našeho oka vnímáme jako barvu v rámci viditelné části spektra je člověk schopen rozlišit přibližně 10 milionů barev

Více

Automatický optický pyrometr v systémové analýze

Automatický optický pyrometr v systémové analýze ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA DOPRAVNÍ K611 ÚSTAV APLIKOVANÉ MATEMATIKY K620 ÚSTAV ŘÍDÍCÍ TECHNIKY A TELEMATIKY Automatický optický pyrometr v systémové analýze Jana Kuklová, 4 70 2009/2010

Více

4. Napjatost v bodě tělesa

4. Napjatost v bodě tělesa p04 1 4. Napjatost v bodě tělesa Předpokládejme, že bod C je nebezpečným bodem tělesa a pro zabránění vzniku mezních stavů je m.j. třeba zaručit, že napětí v tomto bodě nepřesáhne definované mezní hodnoty.

Více

Úvod do analytické mechaniky

Úvod do analytické mechaniky Úvod do analytické mechaniky Vektorová mechanika, která je někdy nazývána jako Newtonova, vychází bezprostředně z principů, které jsou vyjádřeny vztahy mezi vektorovými veličinami. V tomto případě např.

Více

FTTX - Měření v optických sítích. František Tejkl 17.9.2014

FTTX - Měření v optických sítích. František Tejkl 17.9.2014 FTTX - Měření v optických sítích František Tejkl 17.9.2014 Náplň prezentace Co lze měřit v optických sítích Vizuální kontrola povrchu ferule konektoru Vizuální hledání chyb Optický rozpočet Přímá metoda

Více

Modelování a simulace Lukáš Otte

Modelování a simulace Lukáš Otte Modelování a simulace 2013 Lukáš Otte Význam, účel a výhody MaS Simulační modely jsou nezbytné pro: oblast vědy a výzkumu (základní i aplikovaný výzkum) analýzy složitých dyn. systémů a tech. procesů oblast

Více

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem 7 Transformace 2D Studijní cíl Tento blok je věnován základním principům transformací v rovinné grafice. V následujícím textu bude vysvětlen rozdíl v přístupu k transformacím u vektorového a rastrového

Více

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Příklady použití tenkých vrstev Jaromír Křepelka

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Příklady použití tenkých vrstev Jaromír Křepelka Příklady použití tenkých vrstev Jaromír Křepelka Příklad 01 Spočtěte odrazivost prostého rozhraní dvou izotropních homogenních materiálů s indexy lomu n 0 = 1 a n 1 = 1,52 v závislosti na úhlu dopadu pro

Více

Měření spektra světelných zdrojů LED Osvětlovací soustavy - MOSV

Měření spektra světelných zdrojů LED Osvětlovací soustavy - MOSV FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Měření spektra světelných zdrojů LED Osvětlovací soustavy - MOSV Autoři textu: Ing. Tomáš Pavelka Ing. Jan Škoda, Ph.D.

Více

Optické spektroskopie 1 LS 2014/15

Optické spektroskopie 1 LS 2014/15 Optické spektroskopie 1 LS 2014/15 Martin Kubala 585634179 mkubala@prfnw.upol.cz 1.Úvod Velikosti objektů v přírodě Dítě ~ 1 m (10 0 m) Prst ~ 2 cm (10-2 m) Vlas ~ 0.1 mm (10-4 m) Buňka ~ 20 m (10-5 m)

Více

Řešení slovních úloh pomocí lineárních rovnic

Řešení slovních úloh pomocí lineárních rovnic Řešení slovních úloh pomocí lineárních rovnic Řešení slovních úloh představuje spojení tří, dnes bohužel nelehkých, úloh porozumění čtenému textu (pochopení zadání), jeho matematizaci (převedení na rovnici)

Více

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

Zákon odrazu. Úhel odrazu je roven úhlu dopadu, přičemž odražené paprsky zůstávají v rovině dopadu.

Zákon odrazu. Úhel odrazu je roven úhlu dopadu, přičemž odražené paprsky zůstávají v rovině dopadu. 1. ZÁKON ODRAZU SVĚTLA, ODRAZ SVĚTLA, ZOBRAZENÍ ZRCADLY, Dívejme se skleněnou deskou, za kterou je tmavší pozadí. Vidíme v ní vlastní obličej a současně vidíme předměty za deskou. Obojí však slaběji než

Více

Název a číslo materiálu VY_32_INOVACE_ICT_FYZIKA_OPTIKA

Název a číslo materiálu VY_32_INOVACE_ICT_FYZIKA_OPTIKA Název a číslo materiálu VY_32_INOVACE_ICT_FYZIKA_OPTIKA OPTIKA ZÁKLADNÍ POJMY Optika a její dělení Světlo jako elektromagnetické vlnění Šíření světla Odraz a lom světla Disperze (rozklad) světla OPTIKA

Více

Jaroslav Tuma. 8. února 2010

Jaroslav Tuma. 8. února 2010 Semestrální práce z předmětu KMA/MM Odstraňování šumu z obrazu Jaroslav Tuma 8. února 2010 1 1 Zpracování obrazu Zpracování obrazu je disciplína zabývající se zpracováním obrazových dat různého původu.

Více

Monochromatické zobrazování

Monochromatické zobrazování Monochromatické zobrazování 1995-2015 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Mono 2015 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 27 Vnímání šedých odstínů

Více

Katedra geotechniky a podzemního stavitelství

Katedra geotechniky a podzemního stavitelství Katedra geotechniky a podzemního stavitelství Modelování v geotechnice Metoda oddělených elementů (prezentace pro výuku předmětu Modelování v geotechnice) doc. RNDr. Eva Hrubešová, Ph.D. Inovace studijního

Více

Gymnázium Jiřího Ortena, Kutná Hora

Gymnázium Jiřího Ortena, Kutná Hora Předmět: Náplň: Třída: Počet hodin: Pomůcky: Cvičení z matematiky algebra (CZMa) Systematizace a prohloubení učiva matematiky: Číselné obory, Algebraické výrazy, Rovnice, Funkce, Posloupnosti, Diferenciální

Více

Novinky v Solid Edge ST7

Novinky v Solid Edge ST7 Novinky v Solid Edge ST7 Primitiva Nově lze vytvořit základní geometrii pomocí jednoho příkazu Funkce primitiv je dostupná pouze v synchronním prostředí Těleso vytvoříme ve dvou navazujících krocích, kde

Více

Základní druhy osvětlení

Základní druhy osvětlení Základní druhy osvětlení Ing. Jan Matěják www.matejakart.com Jedním ze základních stavebních prvků na obraze je světlo. Světlo určuje vzhled modelu, jeho barevnost, kontrasty apod. Směr, kvalita, množství,

Více

Didaktické metody Metodou

Didaktické metody Metodou Didaktické metody Metodou rozumíme záměrné, plánovité uspořádání úkolů a činností sportovce tak, aby vzhledem k spolupůsobícím podmínkám byl co nejefektivněji dosažen tréninkový cíl. Z aspektu trenéra

Více

Učební texty z fyziky 2. A OPTIKA. Obor zabývající se poznatky o a zákonitostmi světelných jevů. V posledních letech rozvoj optiky vynález a využití

Učební texty z fyziky 2. A OPTIKA. Obor zabývající se poznatky o a zákonitostmi světelných jevů. V posledních letech rozvoj optiky vynález a využití OPTIKA Obor zabývající se poznatky o a zákonitostmi světelných jevů Světlo je vlnění V posledních letech rozvoj optiky vynález a využití Podstata světla Světlo je elektromagnetické vlnění Zdrojem světla

Více

(Umělé) osvětlování pro analýzu obrazu

(Umělé) osvětlování pro analýzu obrazu (Umělé) osvětlování pro analýzu obrazu Václav Hlaváč České vysoké učení technické v Praze Centrum strojového vnímání (přemosťuje skupiny z) Český institut informatiky, robotiky a kybernetiky 166 36 Praha

Více

NESTABILITY VYBRANÝCH SYSTÉMŮ. Úvod. Vzpěr prutu. Petr Frantík 1

NESTABILITY VYBRANÝCH SYSTÉMŮ. Úvod. Vzpěr prutu. Petr Frantík 1 NESTABILITY VYBRANÝCH SYSTÉMŮ Petr Frantík 1 Úvod Úloha pokritického vzpěru přímého prutu je řešena dynamickou metodou. Prut se statickým zatížením je modelován jako nelineární disipativní dynamický systém.

Více

Souřadnicové prostory

Souřadnicové prostory Prostor objektu Tr. objektu Tr. modelu Prostor scény Souřadnicové prostory V V x, y z x, y z z -z x, y Tr. objektu V =V T 1 T n M Tr. modelu Tr. scény x, y Tr. pohledu Tr. scény Tr. pohledu Prostor pozorovatele

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo 0. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo (PEF PaA) Petr Gurka aktualizováno 9. prosince 202 Obsah Základní pojmy. Motivace.................................2 Aritmetický vektorový

Více

Obsah. Zpracoval:

Obsah. Zpracoval: Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč

Více

Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16

Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchický model 1995-2013 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchie v 3D modelování kompozice zdola-nahoru složitější objekty se sestavují

Více

3.2.5 Odraz, lom a ohyb vlnění

3.2.5 Odraz, lom a ohyb vlnění 3..5 Odraz, lom a ohyb vlnění Předpoklady: 304 Odraz a lom vlnění na rozhranní dvou prostředí s různou rychlostí šíření http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=16.0 Rovinná vlna dopadá šikmo

Více

Numerické modelování interakce proudění a pružného tělesa v lidském vokálním traktu

Numerické modelování interakce proudění a pružného tělesa v lidském vokálním traktu Numerické modelování interakce proudění a pružného tělesa v lidském vokálním traktu Vedoucí práce: doc. Ing. Petr Šidlof, Ph.D. Bc. Petra Tisovská 22. května 2018 Studentská 2 461 17 Liberec 2 petra.tisovska@tul.cz

Více

Kritický stav jaderného reaktoru

Kritický stav jaderného reaktoru Kritický stav jaderného reaktoru Autoři: L. Homolová 1, L. Jahodová 2, J. B. Hejduková 3 Gymnázium Václava Hlavatého Louny 1, Purkyňovo gymnázium Strážnice 2, SPŠ Stavební Plzeň 3 jadracka@centrum.cz Abstrakt:

Více

Teorie systémů TES 1. Úvod

Teorie systémů TES 1. Úvod Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti. Teorie systémů TES 1. Úvod ZS 2011/2012 prof. Ing. Petr Moos, CSc. Ústav informatiky a telekomunikací Fakulta dopravní ČVUT v Praze

Více

POKUSY VEDOUCÍ KE KVANTOVÉ MECHANICE II

POKUSY VEDOUCÍ KE KVANTOVÉ MECHANICE II POKUSY VEDOUCÍ KE KVANTOVÉ MECHANICE II FOTOELEKTRICKÝ JEV VNĚJŠÍ FOTOELEKTRICKÝ JEV na intenzitě záření závisí jen množství uvolněných elektronů, ale nikoliv energie jednotlivých elektronů energie elektronů

Více