Výukové materiály pro výuku 3D grafiky na SOŠ Část 1. Výukové materiály pro učitele a studenty Popis Výukové materiály pro výuku počítačové grafiky na střední odborné škole se zaměřením na informační technologie
Lukáš Kalčok
[email protected]
1
Obsah 1
2
3
4
5
6
7
8
Historie a současnost 3D grafiky ........................................................................................................... 3 1.1
Historie 3D grafiky......................................................................................................................... 3
1.2
Hlavní směry 3D grafiky ................................................................................................................ 3
3D prostor ............................................................................................................................................. 5 2.1
Co je to 3D prostor? ...................................................................................................................... 5
2.2
Systém souřadnic .......................................................................................................................... 6
Křivky a plochy ...................................................................................................................................... 8 3.1
Křivky ............................................................................................................................................. 8
3.2
Plochy .......................................................................................................................................... 12
3.3
Dělené povrchy ........................................................................................................................... 12
Reprezentace a modelování těles ....................................................................................................... 15 4.1
Trojúhelníková síť........................................................................................................................ 15
4.2
Hraniční reprezentace ................................................................................................................. 16
4.3
Konstruktivní geometrie ............................................................................................................. 19
4.4
Modelování pomocí deformací ................................................................................................... 20
Objemová reprezentace těles ............................................................................................................. 22 5.1
Mřížky.......................................................................................................................................... 22
5.2
Trojrozměrné objekty a data v diskrétní mřížce ......................................................................... 22
5.3
Základní způsoby převodu těles do reprezentace v objemové mřížce ....................................... 23
5.4
Základní způsoby převodu objemové mřížky na síť trojúhelníků ............................................... 24
Zobrazování prostorových dat ............................................................................................................ 25 6.1
Promítání..................................................................................................................................... 25
6.2
Světlo........................................................................................................................................... 26
6.3
Řešení viditelnosti ....................................................................................................................... 29
6.4
Stíny ............................................................................................................................................ 30
6.5
Textury ........................................................................................................................................ 31
Reprezentace scény ............................................................................................................................ 38 7.1
Obálky těles................................................................................................................................. 38
7.2
Dělení prostoru scény ................................................................................................................. 40
Globální zobrazovací metody .............................................................................................................. 41 8.1
Metody od pozorovatele ............................................................................................................ 41
8.2
Metody od zdroje světla ............................................................................................................. 42
2
9
Použité zdroje ..................................................................................................................................... 43
10
Seznamy .......................................................................................................................................... 44
10.1
Seznam obrázků .......................................................................................................................... 44
10.2
Seznam tabulek ........................................................................................................................... 45
10.3
Seznam vzorců ............................................................................................................................ 45
10.4
Seznam definic ............................................................................................................................ 45
3
1 Historie a současnost 3D grafiky 1.1 Historie 3D grafiky První známé použití 3D grafiky bylo zaznamenáno ve filmu FutureWorld z roku 1976, kde byla animována mechanická ruka. Původně byla vytvořena hlavně firmou Boeing. 3D grafika používá trojrozměrná geometrická data, která jsou uložena v počítači k vytvoření 2D obrazu.
1.2 Hlavní směry 3D grafiky 1.2.1 Modeling Modeling má v současné době takovou úroveň, že není problém vytvořit fotorealistický detailní model. To znamená, že model má větší množství detailů, než má zobrazovací zařízení pixelů. Existuje více možností, jak je možné definovat tvar ve 3D prostoru. První možnost je definovat je jako primitivy a z nich poskládat větší útvar. Nebo je definovat pomoci polygonů. Každý model je definován za pomoci polygonu, přičemž každý polygon se skládá z určitého množství vrcholů, které jsou pospojovány hranami. Viz obrázek.
1.2.2 Animace
Obrázek 1 Plakát k filmu FutureWorld (MGM, 1976)
Animace je v současné době nejrychleji se rozvíjejícím oborem. Jde o umísťování 3D modelů do času a prostoru scény. Tato oblast v sobě zahrnuje i fyzikální výpočty. Rychlému rozmachu této oblasti přispívají multi-procesorové stroje. Dříve bylo nutné rozdělit výpočetní výkon na jednom procesoru, a teď je možné přiřadit každému procesu jeden samostatný procesor. Toto se používá hlavně při real-time výpočtech.
1.2.3 Rendering Rendering je poslední, ale snad nejdůležitější částí 3D grafiky. V této fázi jsou vizualizována uložená data. V současné době je to nejrozšířenější část počítačové grafiky. Je nutné si uvědomit, že k vizualizaci se používají dva velice odlišné přístupy. 1.2.3.1 Real-time rendering První je real-time rendering. Je co nejvíce optimalizován a téměř celý výpočet obrazu je obvykle počítán na grafické kartě. Jde o dodržení požadovaného množství snímku za sekundu. Detaily je možné odstranit, protože je oko stejně nepostřehne. Používají se co největší aproximace a požaduje se co nejmenší množství výpočtů a docílení co nejvěrnějšího obrazu. Pro zobrazování se vyvinulo a používá větší množství enginu. Engine je systém, který se stará o zobrazování dat. Vy mu jenom říkáte zjednodušenými příkazy, co chcete zobrazit a jak. Takže například místo toho, abyste si museli napsat svůj vlastní načítávač modelů ze souborů, mu jenom řeknete load(“model.obj”) a místo zobrazování mu řeknete inputObjectAt(154.4; 487.4; 15.8). Engine za vás model načte a umístí na dané pozice. Nejznámější 3D enginy, které v současné době dominují na trhu, jsou OpenGL a Microsoft DirectX. Tyto enginy nejsou vysokoúrovňové a existují nad nimi nadstavby. OpenGL je momentálně ve verzi 4.2 a je volně k použití, ale jeho zdrojové kódy ne. Microsoft DirectX, který původně vznikl s Direct3D, je také volně ke stáhnutí a využívání, a jeho zdrojové
4
kódy nejsou uveřejněny. DirectX je však vyvíjen jenom firmou Microsoft, naproti tomu OpenGL má ARP (Architecture Review Board), což je řada, která se skládá z více organizací, a ty rozhodují o tom, jestli je možné dané změny nebo vylepšení provést. 1.2.3.2 Off-line rendering Druhým je off-line rendering, který se soustředí na kvalitu. Jeho hlavní úlohou je zobrazovat scénu co nejrealističtěji. Počítá většinou s přesnou fyzikou nebo pokud možno s co nejmenšími odchylkami. Kvůli urychlení výpočtů se používají různé statistické a matematické aparáty.
1.2.4 Současná 3D grafika Obrázek 2 byl generován v roce 2006. Za použití zdrojového kódu, který je volně použitelný a může ho každý znovu vygenerovat na svém osobním počítači. Nejde o state-of-the-art obrázek 3D grafiky. Chybí zde například disperze barevného spektra. Použitá technologie byla POV-Ray a výpočet proběhl za pomoci radiozity. V současné době je pro nezkušeného diváka velice těžké rozlišit mezi rendrovanou 3D grafikou, a fotografií či natáčeným filmem. Samotní výrobci produktů v současné době již objekty raději vizualizují1, než fotí. Firma IKEA již místo focení některých svých interiérů používá 3D grafiky pro zobrazení realistické scény.
Obrázek 2 Ukázka výsledku POV-Ray rendereru (Tran)
1
Render pro zobrazení objektu tak jak by byl nafocen v ideálních podmínkách.
5
2 3D prostor 2.1 Co je to 3D prostor? Trojrozměrný prostor je zjednodušeně řečeno pro všechno, co nás obklopuje. Je pravdou, že existence lidí jako taková se pohybuje minimálně v čtyřrozměrném prostředí, kde čas je poslední veličinou prostoru, ale my budeme tuto hodnotu zanedbávat. Pokud vezmeme v úvahu, že veškerý materiál, který nás obklopuje, je složen z částic. Tyto částice mají polohu v prostoru kolem nás. Na to, abychom byli schopni určit vzájemné vztahy mezi částicemi, je nutné určit polohu těchto bodů v prostoru. Pro jednotný systém určení polohy v prostoru byly vytvořeny systémy souřadnic.
Obrázek 3 Ukázka „reálného” 3D prostoru – vlastní zdroj
6
Obrázek 4 Ukázka počítačem generovaného 3D prostoru – vlastní zdroj
2.2 Systém souřadnic Pro určování polohy bodů v prostoru je nutné zavést systém, kterým je možno popsat vzájemnou polohu bodů v prostoru. Vzhledem k tomu, že nás zajímá třídimenzionální prostor, budeme uvažovat jenom o systémech souřadnic, které jsou používané pro jednorozměrný, dvourozměrný a trojrozměrný prostor. Systém souřadnic je platný pouze tehdy, pokud je podle zvolených parametrů možné jednoznačně určit polohu bodu.
2.2.1 Kartézský systém souřadnic Nejznámější systém souřadnic je založen na bázi kartézského součinu. Jsou určeny osy X, Y a Z. Všechny tyto osy jsou na sebe vzájemně kolmé a protínají se v jednom bodě. Tento bod je označován jako střed souřadnicového systému a jeho souřadnice jsou (X=0,Y=0,Z=0). Poloha bodu v prostoru je určena třemi souřadnicemi x, y a z, které jednoznačně určují polohu bodu v prostoru. Pokud chceme zjistit hodnotu bodu souřadnice X, je nutné posunout tento bod do dvourozměrného prostoru určeného osami Y a Z, a to tak že úsečka posunu je kolineární2 s osou X. Velikost úsečky určuje hodnotu souřadnici X. Určení hodnot Y a Z je analogické3 k určení X.
2 3
rovnoběžné podobné vzhledem na uvedený příklad
7
Obrázek 5 Kartézský souřadnicový systém – vlastní zdroj
2.2.2 Jiné typy souřadnicového systému Jiné typy souřadnicového systému jsou používány často pro jiné účely, než je počítačová grafika. Nejsou však naší úlohou, a proto se jim nebudeme věnovat. Jinými a často používanými typy souřadnicového systému jsou polární soustava souřadnic či válcová soustava souřadnic.
8
3 Křivky a plochy 3.1 Křivky Znalost křivek je ve všeobecnosti v počítačové grafice velice důležitým pojmem. Pomocí křivek je modelováno velké množství objektů a pro obor animace je v současné době znalost křivek alespoň na triviální úrovni nutnou záležitostí.
3.1.1 Vlastnosti křivek Z našeho pohledu je možné chápat křivku jakožto funkci, která je určena časem. Jedná se o takzvaný parametrický tvar křivky. Můžeme si představit křivku jako dráhu pohybujícího se bodu v prostoru. Souřadnice tohoto bodu jsou funkce parametrů času.
𝑥 = 𝑥(𝑡), 𝑦 = 𝑦(𝑡), 𝑧 = 𝑧(𝑡) Vzorec definice křivky ve 3D prostoru
Křivka může být zadána různým způsobem. Ať už je zadána funkcemi pro výpočet bodu v čase či body v prostoru a funkcemi na výpočet chybějících hodnot v čase, můžeme se bavit o jejích vlastnostech.
3.1.2 Interpolační křivka a aproximační křivka Křivky je možné dělit na interpolační a aproximační. Interpolační křivka (vlevo) prochází všemi body, které byly zadané pro výpočet křivky. Aproximační křivka nemusí procházet body, jež byly zadané pro výpočet křivky. Interpolační křivkou je například Hermitova kubika a aproximační křivkou je kupříkladu Bezierova křivka. Více o těchto křivkách dále.
Obrázek 6 Interpolační a aproximační křivka – vlastní zdroj
3.1.2.1 Spojitost křivky Spojitost křivky je možné posuzovat ze dvou hledisek, a to parametrická spojitost křivky a geometrická spojitost křivky. Spojitost křiky je velice důležitou vlastností křivky, protože nám nápovídá o jejím tvaru. Je nepostradatelnou například pro plynulost animace objektů. Také se využívá při modelování křivkami a pro určení hladkosti povrchu různých ploch. Je možné zjišťovat, jestli je křivka spojitá v bodě. Pokud pro každý bod křivky platí, že je spojitý daného typu, tak je možné říci, že celá křivka je spojitá daného typu.
9
3.1.2.1.1 Parametrická spojitost křivky „Říkáme, že křivka je třídy Cn, má-li ve všech bodech spojité derivace podle parametru t do řádu n. Označení Cn se nazývá parametrická spojitost stupně n.“ Definice 1 Parametrická spojitost křivky
Z našeho pohledu nás bude zajímat jenom to, jestli je křivka C0 či C1 spojitá, a nebudeme se zaobírat spojitostí řádu n. Vrchní definice je uvedena pro spojitost s matematikou a diferenciálním počtem.
Křivka je spojitá řádu C0, pokud je koncový bod daného segmentu začátečním bodem dalšího segmentu. Křivka je spojitá řádu C1, pokud je tečný vektor koncového segmentu rovný tečnému vektoru počátečního segmentu.
Obrázek 7 Parametrická spojitost křivky – vlastní zdroj
3.1.2.1.2 Geometrická spojitost křivky Další možnou variantu pro určování spojitosti křivky je geometrická spojitost. Křivka je G0 spojitá, pokud je koncový bod jednoho segmentu stejný jako začáteční bod navazujícího segmentu. Křivka je G1 spojitá, pokud tečný vektor v koncovém bodě jednoho segmentu má stejný směr jako vektor v bodě navazujícího segmentu. Jinak řečeno, tyto dva vektory jsou kolineární. Jedná se tedy jenom o směr vektorů a ne o jejich velikost. Vyplývá z toho, že křivka může být G0 a G1 a přitom jenom C0.
3.1.3 Interpolační křivky Pochopení interpolačních křivek je základním kamenem pro pochopení chování křivek jako takových. Jak již bylo zmíněno. Interpolační křivky prochází body, kterými jsou zadané. Zpravidla bývají zadané:
dvojicí bodů a jejich vektory 4 body, z kterých dva jsou vodící a dva jsou pomocné
Existuje převod mezi těmito různými druhy křivek a je možné je mezi sebou převádět. Tyto křivky mají veliké uplatnění v různých vektorových programech jako je například Adobe Illustrator, Corel Draw, MAXON Cinema 4D či Autodesk 3DS Max. Jejich použití je velice jednoduché a praktické, protože si můžeme být jisti tím, že křivka bude procházet daným bodem. Pokud animujeme objekt, který letí scénou,
10
tak si můžeme být jistí, že u použití interpolační křivky prolétne danými body na křivce, a tedy stanovenou trasou. 3.1.3.1 Hermitovská kubika Hermitovská kubika (označována také jako Fergusonova kubika) je interpolační křivka, která je zadána dvojici bodů (P0,P1) a dvojicí vektorů (Vp0,Vp1). Jak je vidět na obrázku, křivka vychází z prvního bodu a přimyká se k prvnímu vektoru. Končí v druhém bodu a to tak, aby její tečný vektor v tomto bodě byl kolineární s vektorem pro koncový bod. Křivky lze takto skládat po úsecích a platí, že koncový bod jednoho segmentu je začátečním bod dalšího segmentu. Neplatí to však o vektorech těchto bodů. Pokud je takovýmto způsobem skládána do série bodů je křivka spojitá C0 a G0, avšak ne nutně C1 či G1.
Obrázek 8 Hermitovská kubika – vlastní zdroj
3.1.4 Aproximační křivky Aproximační křivky na rozdíl od interpolačních křivek nemusí procházet určenými body. 3.1.4.1 Bezierovy křivky Bezierovy křivky jsou často používány pro definici ploch či těles, ale také jsou používány v definicích písem. Je známo, že Bezierova křivka může být n-tého stupně a prochází pouze prvním a posledním bodem posloupnosti bodů. Pokud se podíváme na obrázek vlevo, je zde jedna křivka, která je složena ze dvou segmentů S1 a S2. Segment S1 obsahuje vrcholy P0 až P3. Segment S2 obsahuje vrcholy P3 až P6. Oba tyto segmenty jsou stupně 3. Napravo na obrázku je jedna křivka, která má jeden segment a je stupně 7. Vzhledem k tomu, že křivka je mezi počátečním a koncovým bodem spočítána vzorcem, který dodržuje spojitosti C0,C1,G1 a G2, je nutné určovat spojitost křivky jenom v bodech, kde se napojuje jeden segment na druhý.
11
Obrázek 9 Bezierova křivka – vlastní zdroj
3.1.4.2 B-Spline křivky Tyto křivky se nazývají podle pružného pravítka, kterým je možné tyto křivky zakreslit. V této části se budeme zaobírat pouze uniformními kubickými B-sline a to z toho důvodu, že jsou nejvíce používané a jejich porozumění je pro 3D počítačovou grafikou nutné. Pochopení těchto křivek usnadňuje pochopení dělených povrchů, které najdeme v další části této literatury. Dále existují ještě non-uniform rational bsline, ale problematika NURBS je nad rámec stanovené výuky. Pokud vás zajímá NURBS více, je možné najít více informací v (Jiří Žára, 2004).
Obrázek 10 Křivítko používané pro B-sline – vlastní zdroj
Na Obrázek 11 B-spline je možné vidět, černé body označené jako P. Tyto body jsou zadané jako vstup pro křivku. Taktéž je vidět modrá čára, která představuje samotnou křivku. Na této křivce leží červené body označené jako R. Pro určení těchto bodů, kterými má křivka procházet, je nejdříve nutné tyto body spočítat. Jejich výpočet probíhá tak, že první bod křivky R0 je spočítán z prvních 3 vstupních bodů P0,P1 a P2, další bod křivky R1 je určen z druhého až čtvrtého body křivky, teda P1, P2 a P3 a bod R5 je určen z bodů P5,P6 a P7. Je možné všimnout si, že pokud zdvojíme bod P3, tedy P3 = P4, tak R2 bude ležet na úsečce mezi těmito body. Je to z toho důvodu, že je počítán z bodů P2,P3 a P4. Pokud bod P3 ztrojíme, tedy P3 = P4 = P5, tak R3 bude ležet na souřadnicích bodů P2, P3 a P4, a to ze stejného důvodu jako předtím.
12
Obrázek 11 B-spline – vlastní zdroj
3.2 Plochy Parametrické vyjádření ploch je ve 3D grafice velice používané. Je to přesné vyjádření, které se pro účely vizualizace optimalizuje na trojúhelníky, jenž je jednodušší zobrazovat. Tak jak se křivky konstruují po úsecích, tak se křivky konstruují po plátech. Takovéto dělení na pláty nám umožňuje zkoumat jejich vlastnosti.
3.2.1 Vlastnosti Jako u křivek, zde můžeme hovořit o interpolačních a aproximačních plochách a o spojitosti parametrické a geometrické. Interpolační plochy se v počítačové grafice málo používají a to z toho důvodu, že podmínka toho, aby plocha procházela všemi body, často způsobuje to, že se plocha začne výrazně vlnit. Taktéž výsledná plocha se často velice liší od představ konstruktéra. Oproti tomu aproximační plochy jsou využívány velice hojně. Jsou charakterizovány hlavně tím, že odstínují uživatele od matematiky, na které jsou tyto plochy budovány. Spojitost ploch je analogická ke spojitosti křivek, více informací je možné najít v (Jiří Žára, 2004).
3.3 Dělené povrchy V současné době je nejpoužívanějším systémem neboli metodou pro vytváření objektů polygonové modelování. Vzhledem k tomu, že je mnohem lehčí kontrolovat menší množství polygonů než větší pro
13
modeláře, je často velice důležité udržet počet polygonů na co nejnižším počtu. Výsledná vizualizace pro dosažení co nejkvalitnějšího výsledku požaduje co největší počet polygonů. Částečným řešením tohoto problému jsou dělené povrchy. Polygonální síť je definována jako množina vrcholů společně s informacemi o jejich propojení. Takto lze vytvářet hrany, které spojují vrcholy a plošky, jež jsou těmito hranami vymezeny. Takto je definována topologie povrchu. Dělící schéma je rekurzivní proces, který zjemňuje topologie povrchu tím, že přidává další vrcholy, hrany a plošky. Vzhledem k tomu, že tento proces je rekurzivní a principiálně aplikovatelný do nekonečna, je možné určovat hranici kolik krát se má proces opakovat a tím učit celkovou „hladkost“4 povrchu. Tento fakt je velice důležitý hlavně pro to, že pro přenos informace například na grafickou kartu stačí poslat základní polygonální síť tzv. mesh a grafická karta se sama postará o zjemnění povrchu. Taktéž je to důležité pro skladování modelů. Menší mesh zabírá menší množství paměti. Toto ale klade nemalé nároky na grafický procesor, který zjemňuje danou mesh. Vzhledem k tomu, že proces je rekurzivní, máme možnost vybrat, jaká bude maximální úroveň zjemnění, a tím nepřetížit grafický procesor.
3.3.1 Dělící schémata Dělící pravidlo je předpis, jenž charakterizuje způsob, jakým se dělí povrch. Zpravidla se jedná o vzorec, který určuje pozici nových vrcholů a ploch. Dělící schémata budeme rozdělovat na ty, která dělí vrcholy a na ta, která dělí plochy. Mimo Doo-Sabin a Catmull-Clark zde opomenutá dělící schémata jsou používána taktéž dělící schémata Loop, Butterfly, Midedge a Kobbelt. 3.3.1.1 Doo-Sabin Aproximační dělící schéma Doo-Sabin používá přístup dělení vrcholů. Jedna aplikace Doo-Sabin vytvoří:
z plochy jednu novou plochu z hrany novou plochu z vrcholu novou plochu
Tento proces je možné opakovat rekurzivně a výsledek je zobrazen na obrázku. Zleva doprava: bez aplikace, po první aplikaci, po dvou aplikacích.
4
Některé dělící schémata se snaží o co nejvíce nesourodý povrch na rozdíl od zahlazení povrchu.
14
Obrázek 12 Dělené povrchy Doo-Sabin – vlastní zdroj
3.3.1.2 Catmull-Clark Aproximační dělící schéma Catmull-Clark využívá dělení nad plochami. Princip je následovný: 1. Pro každou plošku původního povrchu je spočítán nový vrchol, 2. Pro každou hranu je určen nový vrchol, který byl spočítán za pomoci hrany a nových vrcholů z výpočtu z bodu 1. 3. Pro každý vrchol je učen nový vrchol, který byl spočítán za pomoci nových vrcholů z bodů 1. a 2. Výpočet Catmull-Clark dělení hran je o něco složitější vzhledem na výpočetní výkon oproti Doo-Sabin, ale v praxi je více používan.
Obrázek 13 Dělené povrchy Catmull-Clark – vlastní zdroj
15
4 Reprezentace a modelování těles V 3D grafice je poměrně časté uvažovat nad pojmem těleso. Za tento pojem budeme považovat uzavřený objekt, který je nějak ohraničený, a můžeme teda uvažovat o vnitřním a vnějším prostoru. Bod v prostoru potom může být uvnitř tělesa nebo mimo těleso. Reprezentace tělesa ve 3D grafice bývá často za pomocí trojúhelníkové sítě, hraniční reprezentace či konstruktivní geometrie. Každá z těchto reprezentací má svoje výhody a nevýhody a každá z těchto reprezentací je vhodná pro jiný účel.
4.1 Trojúhelníková síť Trojúhelníková síť je v současné počítačové grafice velice využívána. Platí v ní totiž základní pravidla, která nám ulehčují koncové zobrazení dané sítě. Trojúhelník vždy tvoří rovinu a je velice lehké počítat jeho normálu a těžiště, které jsou potřebné pro výpočet osvětlení tělesa. Taktéž je velice jednoduché spočítat, jestli se dva trojúhelníky protínají či nikoliv, a tím zjistit, který trojúhelník kryje jiný a podobně. S trojúhelníkovou sítí se velice dobře pracuje, protože je možné do ní přidávat detaily nebo detaily na modelu odebírat. Vždy je upraveno jenom malé okolí kolem dané redukce nebo dané modifikace. Jak již bylo dříve uvedeno, trojúhelníková síť má základní kameny, a to jsou:
Vrchol (Vertex) – je to bod v prostoru. Hrana (Edge) – spojuje dva vrcholy. Ploška (Face) – je určena třemi vrcholy a třemi hranami, které tyto vrcholy spojují.
16
Je časté, že je modelována ne trojúhelníková, ale mnohoúhelníková síť. V konečném zobrazování na grafické kartě se však vykresluje vždy trojúhelníková síť. Grafická karta je optimalizována na vykreslování trojúhelníků a často ani není schopna vykreslovat mnohoúhelníky. Ukázka mnohoúhelníkové sítě a převod na trojúhelníkovou síť viz obrázek. Ať už se jedná o trojúhelníkovou nebo mnohoúhelníkovou síť je často označována pod pojmem mesh.
Obrázek 14 Trojúhelníková síť – vlastní zdroj
4.2 Hraniční reprezentace Dalším způsobem, jak lze reprezentovat těleso v prostoru, je popsat ho na základě jeho hranice. Toto je možné třemi způsoby, a to hranami, plochami nebo body. Informace o vnitřních bodech se neuchovávají a je možné odvodit, jestli je bod v objektu, nebo nikoliv, na základě hranové reprezentace objektu.
17
Obrázek 15 Manifold – vlastní zdroj
4.2.1 Manifold „Manifold je těleso, které odpovídá tělesu, které by mohlo existovat v reálnem prostředí.“ Definice 2 Manifold
Jinak řečeno jde o těleso, které je reálně vytvořitelné. Pokud si představíme reálný materiál, tak tento materiál musí mít nějakou šířku. Představme si těleso ukázané na obrázku níže. Pokud by těleso bylo spojené jako A nebo B, tak by bylo manifoldem. Pokud by ale nastala situace, že by hrana byla nekonečně tenká a spojovala by ty stejné body jak z hora, tak zdola, těleso by nebylo manifoldem. Jakmile by těsně u spoje existovala jenom jedna hrana místo dvou, tak by se jednalo takzvaný non-manifold.
Obrázek 16 Je těleso na obrázku Manifold? – vlastní zdroj
18
Obrázek 17 Manifold A/B – vlastní zdroj
Eulerova rovnost Mnohostěn je těleso ohraničené množinou mnohoúhelníkových stěn, každou hranu sdílí vždy sudý počet stěn. Mnohoúhelníky jsou v počítačové grafice velice používané a je na nich možné aplikovat Eulerovu formuli nebo jinak řečeno Eulerovu rovnost. Definujme si následující zkratky:
V - mohutnost množiny vrcholů (vertices) E – mohutnost množiny hran (edges) F - mohutnost množiny ploch (faces)
Eulerova rovnost říká: 𝐹+𝑉 =𝐸+2 Vzorec 1 Eulerova rovnost
Definujme dále:
C – množství oblastí neboli samostatných komponent tělesa (components) H – množství děr v objektu (holes) R – množství vnitřních smyček hran (rings)
Rozšířená Eulerova rovnice zní: 𝐹 + 𝑉 = 𝐸 + 2. (𝐶 − 𝐻) + 𝑅 Vzorec 2 Rozšířená Eulerova rovnost
Na obrázku A je 8 vrcholů, 12 hran a 6 ploch. 6 + 8 = 12 + 2. Na obrázku B je 5 vrcholů, 8 hran a 5 ploch. 5 + 5 = 8 + 2. Na obrázku C je
24 vrcholů (V = 24), 36 hran (E = 36), 15 ploch (F = 15) 1 komponenta (C = 1), 1 díra (H = 1) a 3 vnitřní smyčky (R = 3, modře vyznačené) 15 + 24 = 36 + 2.(1 -1) + 3
19
Obrázek 18 Eulerova rovnost na tělesech – vlastní zdroj
4.2.2 Hranová, plošková a bodová reprezentace Hranová reprezentace tělesa spočívá v tom, že jsou zapsány pouze vrcholy a hrany tělesa. Taktéž se tento zápis označuje jako drátěný model. Toto je však velice nepřesné, protože zápis není jednoznačný a může být interpretován velice různě. V drátěném modelu totiž není jasné, jakým způsobem jsou vytvářeny plochy a která hrana patří ke které ploše. Plošková reprezentace tělesa obsahuje už i informace o tom, která hrana patří které plošce. Je často používána a pro uchování takovéto struktury se používá datová struktura okřídlená hrana. Ta nám umožňuje lehce prohledávat topologii objektu. Bodová reprezentace tělesa obsahuje jenom informace o bodech. Je nutné použít algoritmy pro výpočet povrchu tělesa, pokud chceme objekt vizualizovat. Takováto reprezentace je nevhodná pro uchovávání informací o modelech, ale v jistých případech není možné získávat informace jiným způsobem. Takovéto zařízení je například 3D skener, který zachycuje pouze body v prostoru.
4.3 Konstruktivní geometrie Konstruktivní geometrie, jinak řečeno CSG (Constructive Solid Geometry), je založena na reprezentaci tělesa samotnou geometrií. Objekty jsou vyjádřeny matematicky a na základě množinových operací a transformací jsou mezi sebou počítány. Každá takováto operace je jeden samostatný konstruktivní krok. Konečným množstvím operací na objektech je možné docílit požadovaného objektu.
20
4.3.1 Množinové operátory na tělesech Základní množinové operace na množinách jsou: sjednocení, průnik, rozdíl, doplněk a symetrická diference.5 Všechny tyto operace je možné provádět i na tělesech v prostoru. Na obrázku jsou vyobrazeny zleva doprava: kostka A, válec B, průnik A a B, sjednocení A a B, rozdíl A a B, rozdíl B a A.
Obrázek 19 Ukázka množinových operací na tělesech – vlastní zdroj
4.4 Modelování pomocí deformací Vzhledem k tomu, že klasické modelovací techniky nám umožňují pouze omezené tvarování těles, je možné dané modely, respektivě tělesa ještě deformovat deformacemi. Základní deformace, které jsou používány v 3D grafice jsou nazývány Barrovy deformace. Nejznámější Barrovy deformace jsou zmenšení a zvětšení, zašpičatění/zhrubení, zkrocení a ohýbání. Na obrázku níže jsou vyobrazeny zleva doprava: kostka A, zkroucení na kostce A, zhrubení kostky A.
Obrázek 20 Barrovy deformace na kostce – vlastní zdroj
Jinou deformační technikaouje technika FFD (Free Form Deformation). Tato technika je založena na tom, že v daném systému souřadnic zvolíme vymezený prostor, ve kterém v pravidelné mřížce umístíme body. Tyto body potom posouváme, a tímto vytváříme novou nepravidelnou mřížku, kde body nové mřížky odpovídají bodům původní mřížky. Body deformovaného tělesa potom počítáme na základě interpolace 5
http://cs.wikipedia.org/wiki/Mno%C5%BEina
21
nebo aproximace podle původní polohy v mřížce a propočtu do nové pokřivené mřížky. Na obrázku zleva: objekt A, objekt A s počáteční FFD mřížkou, objekt A s modifikovanou FFD mřížkou.
Obrázek 21 FFD – vlastní zdroj
22
5 Objemová reprezentace těles Tělesa je možné reprezentovat i jinak než geometrií pomocí trojúhelníkové sítě nebo za pomoci konstruktivní geometrie. Pro určení tělesa je možné zvolit i aproximační reprezentaci tělesa za pomoci vyplňování objemu menšími objemy. Jedná se o objemovou reprezentaci těles. Každé těleso je možné definovat na základě mřížky, která je v systému souřadnic nějak umístěna. Nemusí být nutně umístěna kolineárně se souřadnicovou soustavou.
5.1 Mřížky Mřížka je z našeho pohledu často používána výhradně jako pravidelná mřížka a často čtvercová. Existují však i mřížky nepravidelné.
5.1.1 Pravidelné Pravidelné mřížky se vyznačují tím, že každá buňka má stejný tvar a opakování je pravidelné. Viz obrázek: čtvercová síť, šestiúhelníková síť, obdélníková síť.
Obrázek 22 Ukázka pravidelných mřížek – vlastní zdroj
5.1.2 Nepravidelné Nepravidelné mřížky se vyznačují tím, že buď nejsou buňky stejné, nebo se buňky neopakují pravidelně.
Obrázek 23 Ukázka nepravidelných mřížek – vlastní zdroj
5.2 Trojrozměrné objekty a data v diskrétní mřížce Objekty jsou definovány ve trojrozměrné mřížce za pomoci stavu každé buňky.
5.2.1 Voxel a buňka Uvažujme teď pro rychlé pochopení pouze o pravoúhlé čtvercové/kostkové souřadnicové soustavě. Každá tato buňka má střed v daném průsečíku x-ové a y-ové souřadnice. Voxel je však reprezentace této buňky a jeho objem je od (x-0,5) po (x+0,5) v x-ové souřadnici a (y-0,5) po (y+0,5) v y-ové souřadnici. Obdobné
23
tvrzení by platilo pro z-ovou souřadnicovou soustavu. Na obrázku je znázorněna buňka v bodě (3,3) a voxel, který ji patří/reprezentuje ji. Voxel sahá od 2,5 do 3,5 na x-ové souřadnicové osy a od 2,5 do 3,5 na y-ové souřadnicové osy.
Obrázek 24 Ukázka voxelu a buňky – vlastní zdroj
5.3 Základní způsoby převodu těles do reprezentace v objemové mřížce Tělesa je možné převádět do objemové mřížky v zásadě třemi způsoby. I když tyto způsoby neprodukují stejnou výslednou mřížku, všechny jsou validní6. Každý ze způsobů je určen pro jinou aplikaci. První aproximace buduje buňky jenom tam, kde se celý voxel vejde do tělesa. Druhá aproximace buduje buňky, pokud se nachází v tělese. Třetí aproximace buduje buňky tam, kde se voxel dané buňky protíná s tělesem. Je možné všimnout si, jak velký rozdíl v aproximacích může být, pokud se zvolí různé druhy aproximace. Taktéž je možné všimnout si, že velice záleží na tom, jakým způsobem je objekt v mřížce umístěn, resp. kde se v mřížce těleso nachází.
Obrázek 25 Převod tělesa do objemové mřížky – vlastní zdroj
6
Správné a korektní
24
5.4 Základní způsoby převodu objemové mřížky na síť trojúhelníků Většina zařízení, která pořizuje prostorová data do formy mřížky (CT mozku, MRI), ukládá data přímo v této formě. Vzhledem k tomu, že těchto dat bývá velké množství (v Gigabytech), je pro vizualizaci vhodné je převést do trojúhelníkové sítě, na kterou jsou tato zobrazovací zařízení připravena. Vzhledem ke komplexnosti těchto algoritmů se jim nebudeme věnovat podrobně, ale je možné je najít v (Jiří Žára, 2004).
25
6 Zobrazování prostorových dat Vzhledem k tomu, že člověk je vizuálně orientován, je nutné data vizualizovat. Samotné vypsání dat člověku nic neříká. Celkové zobrazování dat je závislé na více faktorech a skládá se z více částí. Základem zobrazování 3D dat je promítání. Další velice významnou částí je světlo, bez kterého není možné dosáhnout realistické scény. Na toto navazují stíny, které dodávají scéně prostorovou doménu. Objekty můžou zakrývat jiné objekty, nebo se můžou mezi sebou překrývat. Proto je nutné řešit, které objekty jsou ve scéně viditelné. Tyto objekty je nutné také texturovat, aby připomínaly dané objekty v reálnem prostředí. Vzhledem k tomu, že ve scéně je možné mít veliké množství objektů, je vhodné mít scénu rozdělenou na části. Budují se obálková tělesa a ta se řadí do stromu scény, který se prochází při rendrování. Pro zlepšení celkového dojmu a přiblížení se realistickému zobrazování se používá Globální Iluminace nebo RayTracing algoritmy, které aproximují nebo přesně počítají dané šíření světla.
6.1 Promítání Promítání je možné si představit jako zobrazení daného prostoru. Běžně používáme pro tento účel jistou formu abstrakce kamery.
6.1.1 Kamera Kameru můžeme chápat jako bod či plochu v prostoru, ze které se potom na scénu díváme. Běžně v našem reálném či fyzikálně korektním prostoru je možné dívat se pouze z bodu. Pokud se vezme fotoaparát, je možné najít ohnisko čoček, na které se promítá obraz. Takováto aproximace je nutná pro jakékoliv zobrazovaní 3D prostředí.
6.1.2 Typy promítání Kamera má nastavený daný typ promítání. Na obrázku je možné vidět promítání zleva doprava: rovnoběžné (z vrchu), paralelní (čáry jsou rovnoběžné) a perspektivní (zde konkrétně troj bodové perspektivní promítaní.)
Obrázek 26 Promítání 3D – vlastní zdroj
V technických nákresech se často používá promítání rovnoběžné nebo paralelní, a to z toho důvodu, že je na těchto nákresech ihned vidět objekt z různých pohledů a jsou zachovány délky úseček. Oproti tomu promítání perspektivní ukazuje objekty tak, jak je vidíme my lidé a většina zařízení, která pořizují obraz. Pro realistické zobrazení scény je nutné objekty vyobrazovat v perspektivním zobrazení.
26
Množství softwaru umožňuje nastavovat kameru takovým způsobem, jako byste nastavovali reálnou kameru. Je možné nastavit uzávěrku, clonu a ISO daného filmu. Taktéž je možné simulovat/spočítat rozostření obrazu před ohniskem a za ohniskem, nebo případně vytvořit realistický bokeh efekt, či vinětaci obrazu.
6.2 Světlo Pro vyřešení realistického zobrazování scény je nutné se zamyslet nad světlem ve scéně. Ve scéně je nutné mít zdroj světla. Tento zdroj může mít různé tvary a různé intenzity a barvy.
6.2.1 Rekapitulace fyziky Světlo z našeho pohledu budeme chápat ne jako vlnění, ale jako šíření fotonů. Zdroje světla šíří z našeho pohledu fotony, které dopadají na dané objekty. Tyto objekty můžou světlo buď pohlcovat, nebo odrážet dále. Vlnová délka světla bude z našeho pohledu zanedbána až na specifické případy lomu světla. Je časté, že velké množství výpočtů se aproximuje, a proto se zanedbává vlnová délka světla co nejvíce.
6.2.2 Odraz světla Objekty mohou dané světlo odrážet nebo i pohlcovat. Na obrázku vlevo je difúzní povrch, kdežto na obrázku vpravo je objekt, který odráží světlo absolutně. Je vidět, že odrazivost světla dává okamžitě informaci o tom jaký povrch je. Těleso může být jak matné, tak odrazivé zároveň. Je možné si toho všimnout na různých površích. Kupříkladu lakované dřevo neodráží všechno světlo jako zrcadlo a taktéž neplatí, že by se od něj neodráželo nic.
Obrázek 27 Ukázka difuzního a lesklého materiálu – vlastní zdroj
6.2.2.1 Difúzní povrch Difúzní povrch neodráží žádné světlo a má svou barvu. Tento materiál má vždy barvu daného materiálu. V reálném prostředí se nevyskytují objekty, které mají pouze difúzní povrch. 6.2.2.2 Lesklý povrch Totálně odrazivý povrch na světě neexistuje. Nejblíže se tomuto povrchu blíží zrcadlo. Odrazivost nejhladšího a nejodrazivějšího zrcadla je však jenom zhruba 99.9 %. Lesklý povrch bývá často používán, aby předmět získal luxusní vzhled. 6.2.2.3 Spekulární odraz světla Odraz okolí je principiálně to stejné jako odraz světla, používá se však samostatně pro urychlení výpočtů. Některé materiály odráží světlo ze zdroje jiným způsobem. Jedná se o to, že po dopadu světla na plochu se neodráží světlo přesně, ale vzhledem k úhlu dopadu se intenzita odrazu liší. Světlo se jakoby rozloží a
27
odráží se v jistém kuželu. Tento typ odrazu se nastavuje samostatně. Na obrázku zleva doprava: spekulární odraz světla s ostrými hranami, jiné nastavení spekulárního odrazu bez ostrých hran, bez spekulárního odrazu světla.
Obrázek 28 Ukázka spekulárního odrazu světla – vlastní zdroj
6.2.2.4 Fresnel Kapitola o fresnelovém odrazu světla se zde nenachází, ale v počítačové grafice se používá velice často, protože umožňuje korektně počítat dopad a odraz světla a dále posouvá možnosti rendrování a vizualizace.
6.2.3 Lom světla Lom světla je v počítačové grafice často využíván a je nezbytný pro napodobení velkého množství materiálů. Napodobování jakéhokoliv materiálu, který je průsvitný (ang. transparency) se neobejdou bez poznání Snellova zákonu lomu světla. 𝑛1 . 𝑠𝑖𝑛𝛼1 = 𝑛2 . 𝑠𝑖𝑛𝛼2 Vzorec 3 Snellův zákon lomu světla
V počítačové grafice se tento zákon používá a nepřihlíží se k tomu, že každá vlnová délka světla má jiný úhel lomu. Nevzniká tak často přirozený jev chromatické aberace. Tento výpočet by byl x-násobně delší, a to v závislosti na jeho přesnosti. Je nutné uvědomit si, že každý materiál má různý index lomu světla. Následná přehledová tabulka ukazuje ty nejčastější. Materiál Vzduch Voda Diamant Lidská čočka
Index lomu 1 1,3330 2,419 1,39
Materiál Akrylátové sklo Plast (PET láhev) Etanol Led
Tabulka 1 Indexy lomů materiálů (2014)
Index lomu 1,49 1,52 1,36 1,31
28
Pro ukázku chování různých lomů světla je na obrázku zleva doprava: plast, diamant, voda
Obrázek 29 Index lomu na kouli – vlastní zdroj
6.2.4 Světelné zdroje Ve skutečném světě neexistuje jednolitý světelný zdroj. Jednotlivé fotony jsou vyzařovány velkým množstvím atomů. Takovýto výpočet by však byl příliš komplikovaný a bylo by téměř nemožné ho spočítat. Proto se prochází k aproximacím. Světelné zdroje jsou aproximovány nejčastěji jako bod, plocha (ne nutně rovina), bodové směrové světlo a nekonečné světlo. Bodové světlo jako takové je všesměrové a osvětluje vše. Jeho použití je poměrně rychlé, ale může způsobovat prodlužování výpočtu vzhledem k tomu, že se šíří i mimo požadovanou scénu. Plošný zdroj světla se používá velice často, a to z toho důvodu, že je snad nejpoužitelnější. Nevytváří zbytečně ostré stíny. Chová se velice přirozeně a často je možné nastavit, která strana dané plochy má vyzařovat světlo a která ne. Aproximujeme takto většinu oken, zářivek, krbů a podobně. Bodové směrové světlo je možné si představit jako kužel, který má ve svém vrcholu zdroj světla a kužel určuje výseč, ve kterém se světlo šíří. Tímto způsobem nahrazujeme reflektory automobilů, světla z majáků či svítilny. Výhoda těchto světel je v tom, že šetří čas pro výpočet a je ihned vidět, kam dopadá světlo a kam ne. Nekonečné světlo se používá ve vizualizacích architektury, a to z toho důvodu, že z veliké dálky se slunce jeví jako bodový zdroj světla, který je ale větší jako my, takže na každou část země koule dopadá ze stejného úhlu.
29
6.2.5 Stínování Je dobré uvědomit si, že stínování a stíny jsou v počítačové grafice rozdílné pojmy. Stínování rohoduje, jakým způsobem se bude počítat barva daného objektu. Na spodním obrázku je možné vidět, jakým způsobem ovlivňuje nastavení stínování. Všimněte si, že obě koule mají stejnou geometrii. Na kouli vlevo je nastaveno Phongovo stínování a na kouli vpravo není nastaveno stínování. Stínování vybarvuje polygony tak, aby barva, která je detekována na středu polygonu, procházela gradientem do dalšího polygonu.
Obrázek 30 Stínování objektů – vlastní zdroj
6.2.5.1 Konstantní vs. Guarodovo vs. Phongovo V současné počítačové grafice jsou nejvíce používané dva typy stínování, Guarodovo a Phongovo. Phongovo stínování je používáno častěji v Off-line renderingu a Guarodovo v Real-time renderingu. Toto vyplývá z větší výpočtové náročnosti Phongova stínování.
6.3 Řešení viditelnosti Všeobecný problém viditelnosti řeší, jestli je objekt z určitého pohledu viditelný, nebo nikoliv. Užitečnost těchto algoritmů je jasná, pokud budeme uvažovat o výkonu aplikace. Představme si komplexní scénu. Kupříkladu vizualizaci západu slunce nad oceánem na pobřeží. Na hladině oceánu se nachází loď a za ní objekt našeho zájmu, slunce. Za pláží, směrem od oceánu, se nachází hustý les. Pokud se podíváme na loď na oceánu z pláže, je pro nás les za námi. Není tedy nutné brát ho do úvahy a je možné ho z výpočtu odstranit. (Předpokládáme, že na lodi není nic takového, co by mohlo les odrážet v reflexi, nebo nám nepřítomnost tohoto odrazu nevadí.) Pokud vezmeme, že les zabírá ze scény například 90 % polygonů, a my les odstraníme, je zřejmé, že scéna se vyrendruje rychleji nebo alespoň nebude potřebovat tolik systémových prostředků7. Dalším příkladem by byl pohled na zeď, za kterou se skrývá sídliště. Stěna je však tak vysoká, že není skrz ni vidět nic ze sídliště. Tato situace je klasickým příkladem, kde můžeme neřešit a dovolit si nezahrnout do výpočtu sídliště za stěnou, a tím ušetřit systémové prostředky.
7
Rendrovací algoritmy mají netriviální požadavky na operační paměť a výpočtovou jednotku. Pro téměř jakékoliv seriózní použití se používají rendrovací farmy.
30
Většina algoritmů pro detekci viditelnosti objektů používá mesh. Je časté, že se jakákoliv jiná reprezentace těles transformuje do ploškové reprezentace těles. Ztráta přesnosti po převodu je často nahrazována rychlejším vykreslováním scény (u real-time rendering).
6.3.1 Vektorové algoritmy vs. rastrové algoritmy Vektorové algoritmy jsou často používány u aplikací, kde je nutné dodržovat co největší přesnost. Tyto algoritmy produkují výstup ve vektorech, které je možno libovolně přibližovat či oddalovat beze ztráty kvality. Rastrové algoritmy oproti tomu produkují obraz ve zvoleném rozlišení a barva daného segmentu odpovídá barvě daného objektu. Většina algoritmů pro zpracování problematiky viditelnosti je rastrového typu. Nejznámější algoritmus pro řešení viditelnosti je Malířův algoritmus. Jeho jméno je skutečně odvozeno od povolání malíře. Algoritmus vykresluje nejdříve objekty, které jsou vzadu, a na to stejné plátno neboli obraz kreslí postupně odzadu dopředu další objekty. Algoritmus sice řeší viditelnost objektů, ale jenom tím, že ji převádí na jiný problém. Na problém seřazení objektů podle vzdálenosti od pozorovatele.
6.4 Stíny Stíny jsou ve vizualizacích a celkově 3D grafice velice důležitý prvek, protože nám prozrazují informace o vzájemné poloze a velikosti objektů. Bez stínů je velice obtížné identifikovat vzdálenost objektů od kamery a jejich vzájemnou velikost. Postupem času, jak se počítačová grafika vyvíjela, vyvíjeli se i algoritmy pro stínování objektů. První typ stínu, který byl vytvořen, je takzvaný ostrý stín.
6.4.1 Typy stínů
Obrázek 31 Ukázka druhů stínů – vlastní zdroj
6.4.1.1 Ostré stíny Ostré stíny jako takové nám postačují pro zajištění rozpoznání základních vlastností objektů. Používají se pro architektonické vizualizace nebo pro technické vizualizace, kde je kladen více důraz na přesnost zobrazení. Ostré stíny jsou podporovány většinou pouze bodovým zdrojem světla. Je to z toho důvodu, že výpočet takovýchto stínů je poměrně triviální. Pokud chceme vykreslit bod, tak se podíváme z tohoto bodu na zdroj světla a zjistíme, zdali je mezi bodem a tímto světlem objekt. Je-li tomu tak, je bod ve stínu tohoto objektu, a pokud ne, tak spočítáme dopadené světlo. Takto spočítáme osvětlení pro každý viditelný bod našeho záběru a pro každé světlo. Ostré stíny bývají často pojmenovávány jako Hard Shadows nebo RayTraced Shadows.
31
6.4.1.2 Měkké stíny Problém ostrých stínů je v tom, že světlo jako takové se tak nechová a ne každý zdroj světla je možné aproximovat8 za bod v prostoru. Pro přiblížení se reálnému šíření světla a výpočtu stínů je používán algoritmus pro měkké stíny. Ty jsou počítány téměř stejným způsobem jako ostré stíny, ale je započítána vzdálenost objektu od plochy, kde se stín vykresluje, a je rozmazán podle vzdálenosti mezi stínícím objektem a plochou na který stín dopadá. Takovéto stíny se nazývají Soft Shadows. 6.4.1.3 Plošné stíny Pokud budu mít objekt, který září a bude větší než objekt, který vrhá stín, je aproximace ze světleného zdroje za bod velice nepřesná a nemůžeme očekávat správný výpočet stínů. Tento problém řeší takzvané plošné stíny. Princip výpočtu těchto stínů spočívá v tom, že pokud chceme vypočítat, jak moc je bod osvětlen daným světlem, vrháme z tohoto bodu více paprsků a zjišťujeme, kolik z nich dopadlo na objekt, který vyzařuje světlo. Podle tohoto procenta můžeme určit, jak moc je bod daným světlem osvětlen. Takovéto stíny se nazývají Area Shadows.
6.5 Textury Textury můžeme chápat jako rastrový obraz, který může být generovaný nebo zaznamenaný. Tento obraz může být dvoj, troj či více rozměrný. Při dvojrozměrném obrázku chápeme texturu jako klasickou rastrovou mřížku, respektive jako digitalizovanou spojitou funkci. U trojrozměrné textury uvažujeme i třetí rozměr a mapování takovéto textury se poněkud liší od mapování dvojrozměrných textur. U vícerozměrných textur často bereme v úvahu i čas, ve kterém je textura aplikována.
6.5.1 Mapování textur Mapování textur je proces, kterým nanášíme texturu na 3D objekt. U 3D textur je proces velice jednoduchý, a pouze posuneme začátek souřadnicové soustavy textury na začátek souřadnicové soustavy tělesa. Potom za pomoci interpolace dopočítáme konkrétní hodnotu barvy daného bodu, který chceme vykreslit. U 2D textury je ale nutné jistým způsobem mapovat na těleso. Tento proces je velice často řešen za pomocí jednoduchých operací, které využívají křivky a normály v daném bodě. Tento proces je většinou řešen za pomoci inverzního mapování. Je také ale možnost provádět takzvané UVW mapování. 6.5.1.1 Inverzní válcové a kulové mapování Inverzní mapování je možno chápat tak, že nejdříve se textura mapuje na jednoduchý 3D objekt, ze kterého se potom mapuje na složitější 3D objekt. Mapování na jednoduché objekty jako je kostka, válec, či koule je jednoduché na výpočet a s těmito objekty je potom možno manipulovat ve 3D prostoru, a tím lépe uložit texturu na objekt. Na obrázku níže je možné vidět pohled na válec z vrchu (z podstavy) a objekt umístěn v něm. Pokud budeme chtít zjistit barvu bodu A, B nebo C tak z tohoto bodu vyvedeme normálu (kolmici) na dané povrchy v tomto bodě. Tam, kde daná normála protne válec, vyčteme barvu a tuto barvu přiřadíme danému bodu. U bodu A normála protne povrch válce tam, kde je purpurová barva, a proto má bod A
8
Nahradit za pomoci nějakého výpočtu, či úvahy. Většinou se jedná o odborný odhad nebo přímo algoritmický postup pro určení dané aproximace.
32
purpurovou barvu. To stejné pro bod C. U bodu B normála protne povrch válce tam, kde je bílá barva, a proto má bod B bílou barvu.
Obrázek 32 Mapování textury na povrch – vlastní zdroj
33
Obrázek 33 Ukázka inverzního mapování na koule – vlastní zdroj
Obrázek 34 Ukázka inverzního mapování na kostky – vlastní zdroj
Různé možností inverzního mapování textur viz obrázky. Zleva doprava, zadní řada: mapování z kostky (cubical), mapování z válce (cylindrical), mapování z koule (spherical), mapování z plochy (flat). Druhá řada, zleva doprava: čelní mapování (frontal), doménové mapování (domain), smršťovací mapování (shrinking).
34
6.5.1.2 UVW mapování UVW mapování používá jiný přístup. Rozloží polygony tělesa na 2D plochu. Zaznamená se, který polygon má jaké souřadnice na 2D ploše. Na tuto plochu se potom kreslí a mapování probíhá tak, že se přenáší 2D plocha vždy na daný polygon zpátky do 3D prostoru. Na spodním obrázku je možné vidět příklad UVW mapování jednoduchého jehlanu.
Obrázek 35 Ukázka UVW mapování – vlastní zdroj
6.5.2 Šumové textury Vzhledem k tomu, že velikost rastrových obrázků je často nedostačující pro výsledný render, je časté využívání takzvaných šumových textur. Jedná se o textury, které jsou generované na základě algoritmů. V současné době je tato metoda velice často využívána a náročnost takovýchto algoritmů se zvyšuje. Výsledky jsou však velice často nerozeznatelné od reálných povrchů materiálů. Rozebírání algoritmů, které generují dané textury, je nad rámec výuky, ale materiály k němu je možné najít v (Jiří Žára, 2004).
35
Obrázek 36 Generování textur šumem – vlastní zdroj
6.5.3 Bump Mapping vs. Displacement mapping Je časté, že objekty kolem nás nemívají absolutně hladký povrch. Je to spíše výjimkou. Bylo by však neskutečně náročné modelovat každý povrch ručně. Pro zrychlení práce se používají takzvané Bump nebo Displacement mapping. Obě tyto mapování upravují část tělesa. Rozdíl je v tom, že Bump mapping mění jenom to, jakým způsobem těleso odráží paprsky. Displacement mapping však mění strukturu tělesa jako takovou. Mnohem více je možné vidět na obrázku níže. Zprava doleva: bez mappingu (jenom textura), Bump mapping, Displacement mapping.
Obrázek 37 Displacement vs. Bump mapping – vlastní zdroj
36
6.5.4 MIP Mapping MIP-map je způsob, jakým je uložena textura v paměti počítače pro zlepšení konečného zobrazování. Pokud máme objekt v pozadí a chceme ho vykreslit, dostáváme se k problému určování jeho barvy. Jeho barva bude vycházet z jeho textury. Pro výpočet barvy však musíme zahrnout do výpočtu více bodů z textury, protože na jeden pixel obrazové plochy výstupního zařízení připadá větší množství pixelů z jeho textury. Následuje tedy výpočet. Tento výpočet je časově náročný. Řešením je kupříkladu MIP Map-a. MIP je zkratka pro „multum in parvo“, co je přeložitelné jako „mnoho v málu“. Vzhledem k tomu, že máme textury, které jsou RGB a počítače fungují na principu dvojkové soustavy, bylo by nerozumné nevyužít přebytečnou paměť. Na obrázku dole je vidět, že obraz je rozložen do RGB složky a v posledním kvadrantu je uložen zase ten stejný obrázek opětovně rozložen po RGB složkách. Takto postupujeme, dokud je v textuře místo. Textura je uložena takto a je spočítána dopředu. Vyhneme se tak pracnému počítání za běhu aplikace. Během aplikace jenom aplikujeme na objekt texturu v daném rozlišení podle potřeby. Takto šetříme i paměť grafické karty, protože načítáme jenom texturu v potřebném rozlišení a ne větším. Alternativou pro MIP-Mapping je SAT Mapping.
Obrázek 38 MIP MAP – vlastní zdroj
37
Obrázek 39 MIP Mapping v praxi. Zdroj (Ing. Radek Poliščuk)
38
7 Reprezentace scény Scéna ve 3D grafice je tvořena jak objekty, tak ostatními strukturami. Pod těmito ostatními strukturami si můžeme představit kameru či světla. Aby bylo možné rychle zjistit, které objekty světlo pozmění, nebo které kamera uvidí, buduje se takzvaný graf scény. Tento graf scény je postupně budován pomocí obálkových těles, které obsahují reálné objekty. Graf scény se také používá pro detekci kolizí ve fyzikálních enginech. Reprezentaci scény za pomoci grafu i s obálkovými tělesy je možno vidět na následujícím obrázku. Z tohoto obrázku je patrné, že pokud chceme zjistit, jestli se těleso A neprotíná s tělesem C, tak stačí otestovat, jestli se obálková tělesa těles A a C neprotínají.
Obrázek 40 Graf scény – vlastní zdroj
7.1 Obálky těles Na následujícím obrázku je pohled shora na scénu. Je možno vidět, že kamera nezachycuje objekt A a světlo nemodifikuje objekt B. Vzhledem k tomu, že objekty jsou poměrně složité a testování, jestli každý polygon objektu je mimo záběr kamery nebo světla, je složitá operace, je jednodušší obalit tělesa do zmiňovaných obálek a zhodnotit, jestli se celé obálkové těleso nachází mimo záběr nebo nikoliv. Je mnohem rychlejší otestovat, jestli kužel, jenž reprezentuje světlo, se protíná s kvádrem, který reprezentuje objekt. Jsou zde uvedeny jenom základní obálková tělesa a algoritmů pro výpočet obálkového tělesa je více. Neexistuje špatné obalové těleso, existuje jenom špatné využití obalového tělesa. Pokud volíme obálková tělesa, vždy musíme dbát na to, abychom vybrali ta správná pro dané použití. Obálkovým tělesům se v anglickém jazyce říká Bounding Box.
39
Obrázek 41 Zobrazení scény – vlastní zdroj
7.1.1 Koule, AABB a OBB, polytop a konvexní obálka Koule je obálkové těleso, má značnou výhodu v tom, že je invariantní k otáčení9. Koule často produkuje velké místo kolem sebe, které je prázdné. Taktéž výpočet kolize dvou koulí je triviální. Kvádr AABB (Axis Aligned Bounding Box) je velice často používané obálkové těleso. Stěny kvádru jsou kolmé na souřadnicové osy. Výpočet bounding boxu je vlastně jenom výpočet minima a maxima ze všech bodů objektu v něm. Avšak je nutné ho po otočení objektu uvnitř vždy přepočítat. Kvádr OBB je kvádr, který je otočen tak, aby měl co nejmenší objem. Je zde snaha o zabírání co nejmenšího prostoru. Polytop10 k-DOP je v počítačové grafice často jako 6-DOP, 14-DOP, 18-DOP nebo 24-DOP.
9
Nezáleží na otočení tělesa. Polytop je těleso, které je ohraničeno zvolenými rovinami.
10
40
Konvexní obálka je takové těleso, které nemá žádnou konkávní11 část.
Obrázek 42 Obálková tělesa – vlastní zdroj
7.2 Dělení prostoru scény Existuje větší množství algoritmů vytvářejících graf scény. Všechny tyto algoritmy využívají nějakou datovou strukturu. Tyto datové struktury jsou navrženy nebo upraveny pro 3D grafiku. Jejich úlohou je zjednodušovat prohledávání scény a umožňovat segmentaci scény na části. Nebudeme se zaobírat přímo algoritmy, které danou scénu dělí, ale na daných datových strukturách si ukážeme jejich funkčnost.
7.2.1 Mřížka, oktalový strom, BSP strom, kD-strom Pravidelná mřížka je obdoba toho, s čím jsme se setkali v sekci o obsahu objektu a jeho rasterizaci ve 3D. Zde platí to stejné. V každém voxelu jsou ale zapsány identifikátory o všech objektech, které se v daném voxelu nachází. Pro zjištění viditelných objektů jednoduše sesbíráme indexy všech objektů, které jsou ve viditelných voxelech. Oktalový strom si lze představit jako dělení prostoru rekurzivně vždy na 8 částí. Uprostřed prostoru se zvolí střed souřadnicového systému a tento rozdělí prostor na oktanty12. BSP Strom je rozdělení prostoru tak, aby na každé částí stromu bylo vždy pokud možno stejné množství objektů. Dělící objekt je rovina. Anglicky je to Binary Space Partitioning tree. kD-strom je speciální případ BSP stromu. Dělící roviny jsou však vždy kolmé na některou rovinu a pravidelně se střídají.
Obrázek 43 Dělení prostoru – vlastní zdroj
11 12
Konkávní část je možno si představit jako prohloubeninu. Konvexní část je vyboulenina. Oktant je 3D alternativa ke kvadrantu ve 2D.
41
8 Globální zobrazovací metody Zatím jsme se věnovali pouze objektům ve scéně a jejich hierarchii. Říkali jsme si o světlech a stínech. Náš veškerý pohled na scénu byl však velice zjednodušen. V reálném prostředí se světlo šíří i odrazem od ploch či prochází skrz objekty. Toto nám není z pohledu klasického rendrování umožněno. Aby bylo možné tento princip šíření světla uchopit, byly vytvořeny globální zobrazovací metody. I když globální zobrazovací metody je možno dělit na metody od pozorovatele a od zdroje světla, tyto metody se často kombinují pro dosažení optimálních výsledků a odstranění chyb, které mohou vzniknout použitím jenom jedné metody. Pro ukázku, jaký velký rozdíl může způsobovat přechod z klasického vykreslování na globální zobrazovací rovnice, je zde obrázek. Na obrázku vlevo není započítán odraz žádného světla a je zde započítán jenom ostrý stín. Na obrázku vpravo jsou započítány odrazy od objektů a také jsou zahrnuty kaustiky13.
Obrázek 44 Rozdíl ve vizualizaci při použití globálních zobrazovacích metod – vlastní zdroj
8.1 Metody od pozorovatele Metody od pozorovatele zjišťují barvy pixelů na základě detekce dopadu paprsku, který je vystřelen od pozorovatele.
8.1.1 Sledování paprsků (Ray tracing) Sledování paprsků, neboli také Ray-tracing, je metoda, kdy pro každý pixel, jenž chceme zobrazit na rendru, určíme paprsek, kterým najdeme nejbližší průseční s objekty v prostoru. Zde určíme dopad světla na daný bod, a pokud je objekt transparentní nebo odrazivý, tak rekurzivně sledujeme paprsky, které vzniknou tímto způsobem, a sbíráme informace podle cesty.
13
Více o výpočtu kaustik je možné najít v (Jiří Žára, 2004)
42
8.1.2 Sledování cesty (Path tracing) Sledování cesty probíhá na začátku stejně jako u sledování paprsků. Jakmile paprsek narazí na objekt, tak nehledá jeho odraz, ale zjišťuje, které světlo dopadne na daný bod, a sleduje paprsek tohoto světla. Takto zabezpečuje více realistické výsledky, protože tyto paprsky mají větší dopad na výslednou barvu pixelu. Tento postup je fyzikálně korektní. Nevýhodou této metody je, že má velké nároky na výpočtový výkon.
8.2 Metody od zdroje světla Tyto metody sledují paprsky od světelného zdroje. Je velice nevhodné je používat pro světelné zdroje, které jsou skryté nebo malé. Z následujícího nákresu je zcela jasné proč.
Obrázek 45 Globální zobrazovací metody od zdroje světla – vlastní zdroj
8.2.1 Sledování světla (Light tracing) Tato metoda sleduje paprsky přímo od zdroje světla a počítá jejich dopady na plochy. Každý tento paprsek má svůj výkon. Jakmile se paprsek po dopadu na plochu odrazí nebo roztříští, jsou zaznamenány tyto paprsky jako nové paprsky s úměrně sníženým výkonem. Celkově se při rendrování počítá do barvy pixel nejenom barva objektu, ale také světelný přírůstek z takovéhoto sběru.
43
9 Použité zdroje Ing. Radek Poliščuk, Ph.D. Počítače a grafika. Ústav automatizace a informatiky. [Online] [Citace: 31. 8 2014.] http://autnt.fme.vutbr.cz/poliscuk/VPG/pg03.pdf. Jiří Žára, Bedřich Beneš, Jiří Sochor. 2004. Moderní počítačivá grafika. Brno : Computer Press, 2004. MGM. 1976. Poster for Futureworld (1976, USA). Wrong Side of the Art. [Online] 1976. http://wrongsideoftheart.com/2011/11/futureworld-1976-usa/. 2014. Refractive index. Wikipedia, The Free Encyclopedia. [Online] 16. September 2014. [Citace: 17. September 2014.] http://en.wikipedia.org/wiki/Refractive_index. Tran, Gilles. Glasses demo. Oyonale - 3D art and graphic experiments. [Online] http://www.oyonale.com/image.php?lang=en&code=316.
44
10 Seznamy 10.1 Seznam obrázků Obrázek 1 Plakát k filmu FutureWorld (MGM, 1976) ................................................................................... 3 Obrázek 2 Ukázka výsledku POV-Ray rendereru (Tran) ................................................................................ 4 Obrázek 3 Ukázka „reálného” 3D prostoru – vlastní zdroj ........................................................................... 5 Obrázek 4 Ukázka počítačem generovaného 3D prostoru – vlastní zdroj .................................................... 6 Obrázek 5 Kartézský souřadnicový systém – vlastní zdroj ............................................................................ 7 Obrázek 6 Interpolační a aproximační křivka – vlastní zdroj ........................................................................ 8 Obrázek 7 Parametrická spojitost křivky – vlastní zdroj ............................................................................... 9 Obrázek 8 Hermitovská kubika – vlastní zdroj ............................................................................................ 10 Obrázek 9 Bezierova křivka – vlastní zdroj.................................................................................................. 11 Obrázek 10 Křivítko používané pro B-sline – vlastní zdroj .......................................................................... 11 Obrázek 11 B-spline – vlastní zdroj ............................................................................................................. 12 Obrázek 12 Dělené povrchy Doo-Sabin – vlastní zdroj ............................................................................... 14 Obrázek 13 Dělené povrchy Catmull-Clark – vlastní zdroj .......................................................................... 14 Obrázek 14 Trojúhelníková síť – vlastní zdroj ............................................................................................. 16 Obrázek 15 Manifold – vlastní zdroj ........................................................................................................... 17 Obrázek 16 Je těleso na obrázku Manifold? – vlastní zdroj ........................................................................ 17 Obrázek 17 Manifold A/B – vlastní zdroj .................................................................................................... 18 Obrázek 18 Eulerova rovnost na tělesech – vlastní zdroj ........................................................................... 19 Obrázek 19 Ukázka množinových operací na tělesech – vlastní zdroj........................................................ 20 Obrázek 20 Barrovy deformace na kostce – vlastní zdroj........................................................................... 20 Obrázek 21 FFD – vlastní zdroj .................................................................................................................... 21 Obrázek 22 Ukázka pravidelných mřížek – vlastní zdroj ............................................................................. 22 Obrázek 23 Ukázka nepravidelných mřížek – vlastní zdroj ......................................................................... 22 Obrázek 24 Ukázka voxelu a buňky – vlastní zdroj ..................................................................................... 23 Obrázek 25 Převod tělesa do objemové mřížky – vlastní zdroj .................................................................. 23 Obrázek 26 Promítání 3D – vlastní zdroj..................................................................................................... 25 Obrázek 27 Ukázka difuzního a lesklého materiálu – vlastní zdroj ............................................................. 26 Obrázek 28 Ukázka spekulárního odrazu světla – vlastní zdroj .................................................................. 27 Obrázek 29 Index lomu na kouli – vlastní zdroj .......................................................................................... 28 Obrázek 30 Stínování objektů – vlastní zdroj.............................................................................................. 29 Obrázek 31 Ukázka druhů stínů – vlastní zdroj ........................................................................................... 30 Obrázek 32 Mapování textury na povrch – vlastní zdroj ............................................................................ 32 Obrázek 33 Ukázka inverzního mapování na koule – vlastní zdroj ............................................................. 33 Obrázek 34 Ukázka inverzního mapování na kostky – vlastní zdroj ........................................................... 33 Obrázek 35 Ukázka UVW mapování – vlastní zdroj .................................................................................... 34 Obrázek 36 Generování textur šumem – vlastní zdroj ............................................................................... 35 Obrázek 37 Displacement vs. Bump mapping – vlastní zdroj ..................................................................... 35 Obrázek 38 MIP MAP – vlastní zdroj ........................................................................................................... 36 Obrázek 39 MIP Mapping v praxi. Zdroj (Ing. Radek Poliščuk) ................................................................... 37 Obrázek 40 Graf scény – vlastní zdroj ......................................................................................................... 38 Obrázek 41 Zobrazení scény – vlastní zdroj ................................................................................................ 39 Obrázek 42 Obálková tělesa – vlastní zdroj ................................................................................................ 40
45
Obrázek 43 Dělení prostoru – vlastní zdroj................................................................................................. 40 Obrázek 44 Rozdíl ve vizualizaci při použití globálních zobrazovacích metod – vlastní zdroj .................... 41 Obrázek 45 Globální zobrazovací metody od zdroje světla – vlastní zdroj................................................. 42
10.2 Seznam tabulek Tabulka 1 Indexy lomů materiálů (2014) .................................................................................................... 27
10.3 Seznam vzorců Vzorec 1 Eulerova rovnost .......................................................................................................................... 18 Vzorec 2 Rozšířená Eulerova rovnost.......................................................................................................... 18 Vzorec 3 Snellův zákon lomu světla ............................................................................................................ 27
10.4 Seznam definic Definice 1 Parametrická spojitost křivky....................................................................................................... 9 Definice 2 Manifold ..................................................................................................................................... 17