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 středové promítání.
Doba nutná k nastudování
3-4 hodiny
Průvodce studiem Při studiu tohoto bloku se předpokládá, že student je seznámen se základy analytické geometrie, základy modelování 3D objektů, základy lineárních transformací 3D.
11.1 Promítání V předchozích dvou blocích byly vysvětleny základní principy vytvoření modelů prostorových těles a aplikování lineárních transformací, pomocí nichž je možno model modifikovat. Jedním z navazujících cílů 3D počítačové grafiky, který logicky přichází v úvahu, pokud máme v paměti počítače data, která představují model reálného tělesa (případně kompletní scénu složenou z těchto jednotlivých těles), je jejich zobrazení na výstupním zařízení. Až na výjimky (např. 3D tiskárna) je většina výstupních zařízení schopna zobrazit dvourozměrný obraz, který je definován pomocí dvourozměrného souřadnicového systému. K realizaci zobrazení je tedy potřeba převést 3D model do rovinné grafiky, kterou bude možno na výstupním zařízení (např. monitor nebo tiskárna) zobrazit. Tento převod z 3D na 2D je označován jako promítání. Promítání je možno chápat jako specifickou transformaci, při které dojde k převodu trojrozměrných souřadnic každého řídícího bodu modelovaného objektu na dvourozměrné souřadnice. Důležitým pojmem je promítací rovina (tzv. průmětna), což je plocha, na které se zobrazuje 2D obraz. Na průmětnu se pomocí tzv. promítacích paprsků, což KST/IPOGR Počítačová grafika
1-1
Petr Veselý KST FEI Univerzita Pardubice
jsou polopřímky, vycházející z místa pozorování (pozorovatele) a procházející jednotlivými body modelu, vytváří obraz těchto promítaných bodů. Mezi základní typy projekce patří: Kolmá projekce Rovnoběžné promítání Středové promítání Obecný vztah pro transformaci projekte je P’[x’, y’] = f(P[x, y, z]) x’ = f(x, y, z) y’ = f(x, y, z) 11.1.1 Kolmé promítání Tento způsob promítání (označovaný rovněž jako Mongeova projekce) je často využíván především v technickém kreslení. Ve velmi přesný, nicméně pro běžné uživatele, kteří nejsou zvyklí na tento způsob zobrazení je problematicky čitelný. To je dáno především tím, že kolmé promítání neumožňuje vyjádření perspektivy. Obraz je složen ze tří pohledů půdorysu, bokorysu a nárysu. Tyto obrazy jsou vytvořeny samostatně pomocí tří samostatných zobrazení na tři odlišné průmětny. Při tomto zobrazení jsou zachovány jak délky, tak i všechny úhly.
Obrázek 1: Zobrazení bodu na průmětny při kolmém promítání
Půdorys je dán rovinou XY, souřadnice Z = 0 x’= x KST/IPOGR Počítačová grafika
1-2
Petr Veselý KST FEI Univerzita Pardubice
y’=-x Bokorys je dán rovinou XZ, souřadnice Y = 0 x’= -x y’=-z Nárys je dán rovinou YZ, souřadnice X = 0 x’= y y’=z Uvedené transformační vztahy popisují projekci bodu na jednotlivé průmětny, které jsou dány rovinami zy, xy a yz, jak je naznačeno na obrázku 1. 11.1.2 Rovnoběžné promítání Tento způsob promítání umožňuje zobrazení perspektivy a je vhodný pro běžné zobrazení samostatných objektů (případně kompletní scény, skládající se z více objektů) v případě, že objekty (případně scéna) nejsou příliš velkých rozměrů. Rozměrné objekty by při tomto způsobu zobrazení působily nepřirozeně právě díky způsobu promítání, který je založen na rovnoběžnosti všech promítacích paprsků. Tento způsob neodpovídá lidskému vidění, kdy paprsky vychází z jednoho místa (lidské oko, kamera) a díky tomu se u rozměrných objektů jeví perspektiva jako nepřirozená a deformovaná.
Obrázek 2: Nákres parametrů pro rovnoběžné promítání
Průmětna nemusí být rovnoběžná s osami, protíná 2 nebo 3 osy. Zachovává se rovnoběžnost hran, úhly se mění dle typu a parametrů rovnoběžné projekce. KST/IPOGR Počítačová grafika
1-3
Petr Veselý KST FEI Univerzita Pardubice
Na obrázku 2 je naznačena specifická situace, kdy osa z leží na průmětně a protíná osy x a y v jejich počátku. Pro tuto situaci platí pro rovnoběžné promítání následující vztahy. Obecné vztahy pro rovnoběžné promítání lze nalézt v literatuře [2]. x = -JX * cos(α) * xB + JY * cos(β) * yB y = -JX * sin(α) * xB - JY * sin(β) * yB + JZ * zB Při této projekci je bod P[xB, yB, zB] zobrazen do bodu P’[x, y], přičemž promítání je ovlivněno parametry JX , JY, JZ, α, β. Význam parametrů je zřejmý z obrázku 2. xB, yB, zB
- souřadnice bodu v 3D
x, y
- jsou promítací souřadnice 2D
JX , JY, JZ
- jsou jednotkové vektory daného promítání
α, β
- úhly svírající 3D osy s osami 2D
V praxi se běžně používá několik standardních nastavení parametrů JX , JY, JZ, α, β. Podle hodnot těchto parametrů se potom jednotlivé zobrazení nazývá: Technická axonometrie Jy = Jz = 1 α = 45 (30 ), β = 0
Kabinetní projekce JX = 0,5
Kavalírská projekce JX = 1
KST/IPOGR Počítačová grafika
1-4
Petr Veselý KST FEI Univerzita Pardubice
Izometrie Jy = Jz = Jx α=β
Dimetrie Jy = Jx α=β
Trimetrie Jy <> Jx <> Jz α=β 11.1.3 Středové promítání Toto promítání umožňuje zobrazení perspektivy tak, jak je to pro vnímání lidským okem přirozené. Všechny paprsky vychází (resp. se sbíhají) v jednom bodě), který se označuje jako ohnisko. Je určeno pro realistické zobreazení zobrazení větších objektů. Je určeno průmětnou a středem promítání. Specifický případ, kdy střed leží na ose z ve vzdálenosti –D a průmětna je tvořena rovinou xy je znázorněn na následujícím obrázku 3.
KST/IPOGR Počítačová grafika
1-5
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 3: Středové promítání
Pro tento případ promítání platí transformační vztahy:
D Dz D y ' y. Dz
x' x.
Obecné vztahy pro středové promítání, kdy je průmětna tvořena livobolnou rovinou, případně další specifické případy, kdy je rovina rovnoběžná nebo totožná s některou z rovin xz nebo yz, jsou uvedeny v literatuře [3].
11.2 Viditelnost Jednou z úloh, které je třeba při projekci řešit je tzv. viditelnost jednotlivých částí objektů zobrazované scény. Této situaci se vyhneme pouze tehdy, pokud jsou objekty scény modelovány pouze pomocí drátěného modelu a nejsou definovány, případně není požadováno zobrazení stěn. Pokud jsou stěny definovány a mají býti zobrazeny, potom je potřeba jednotlivé stěny zobrazit při projekci jako rovinné útvary, které jsou zobrazeny pomocí svého okraje a určitým způsobem definované výplně. Výplň může být zobrazena nejčastěji jednolitou barvou nebo pomocí rastrového obrázku, tzv. textury. Ve většině případů, kdy je třeba stěny zobrazovat dojde k situaci, že stěna, která je k pozorovateli blíže zakrývá úplně nebo z části jinou stěnu nebo stěny. KST/IPOGR Počítačová grafika
1-6
Petr Veselý KST FEI Univerzita Pardubice
V těchto případech je třeba rozlišovat, které stěny jsou přední (a budou vykresleny) a které jsou tzv. zadní a nebudou vykresleny, neboť jsou z pohledu pozorovatele viditelné. U zobrazení více těles ve scéně a/nebo v případě nekonvexních objektů m;6e nastat ještě další složitá situace, kdy některé stěny jsou viditelné jen částečně. Obecně lze algoritmy viditelnosti rozdělit na: algoritmy, řešící viditelnost v prostoru (v 3D datech scény), algoritmy, řešící viditelnost až ve 2D obraze (na průmětně). 11.2.1 Viditelnost jednoho konvexního tělesa Specifickým příkladem je řešení situace, kdy model je tvořen pouze jedním konvexním tělesem. Každý mnohostěn je určen konečným počtem stěn. Stěny lze rozdělit na přední (viditelné) a zadní (neviditelné). V kresbě budou viditelné hrany: předních stěn zadních stěn, které jsou součástí některé přední stěny Základem je zachování orientace vrcholů stěny. U každé stěny určíme orientaci vrcholů v 3D a poté porovnáme s orientací po zobrazení ve 2D scéně. 1. Každou stěnu popíšeme tak, aby orientace vrcholů byla proti směru hodinových ručiček 2. Provedeme projekci a zjistíme souřadnice všech vrcholů ve 2D obrazu 3. Všechny hrany označíme jako neviditelné 4. Pro všechny stěny zjistíme viditelnost, pokud je stěna viditelná, její hrany označíme za viditelné. Pro zjištění orientace použijeme např. vektorový součin vektorů prvních dvou hran dané stěny (A1,A2), (A2,A3). Pokud je D>0, potom vektor směřuje před průmětnu.
D
x 2 x1
y 2 y1
x3 x 2
y3 y 2
5. Vykreslíme viditelné hrany KST/IPOGR Počítačová grafika
1-7
Petr Veselý KST FEI Univerzita Pardubice
Příklad k předchozímu algoritmu: Stěny kvádru jsou definovány posloupností vrcholů. Příklady definice dvou stěn: (A, B, C, D) a (F, E, H, G)
Při pohledu v 3D z tohoto místa jsou vrcholy stěny (A, B, C, D) orientovány proti směru HR
Při pohledu v 3D na kvádr z tohoto místa jsou vrcholy stěny (F, E, H, G) orientovány rovněž proti směru HR
Při pohledu na 2D obraz kvádru, zobrazený na průmětně, zůstala orientace (A, B, C, D) nezměněna (proti směru HR, proto je přední) a orientace (F, E, H, G) je změněna (po směru HR, proto je zadní) Obrázek 4: Nákres řešení viditelnosti jednoho konvexního tělesa
KST/IPOGR Počítačová grafika
1-8
Petr Veselý KST FEI Univerzita Pardubice
Pojmy k zapamatování Projekce (promítání), kolmé promítání, středové promítání, rovnoběžné promítání, paprsek, viditelnost, model tělesa, scéna, průmětna, ohnisko, perspektiva
Otázky na procvičení 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
K čemu slouží transformace projekce? Jaké znáte běžně používané typy projekce? Co je to průmětna? Které typy projekce umožňují zobrazení perspektivy? Jaká projekce se používá v technickém kreslení? Jaká projekce poskytuje realistické zobrazení rozsáhlejších scén? Jaké znáte typy rovnoběžného promítání? Ve kterých typech projekcí jsou zachovány délky a/nebo úhly? Co je to ohnisko a při jaké projekci se uplatní? Co řeší algoritmy viditelnosti?
Odkazy a další studijní prameny
Žára, J., Beneš, B., Felkel, P. Moderní počítačová grafika. Computer Press, Brno, 1998. ISBN 80-7226-049-9. Beneš, B., Felkel, P., Sochor, J., Žára, J. Skripta Vizualizace. Cenek, P., Počítačová grafika. Univerzita Pardubice, 1999. ISBN 807194-229-4.
KST/IPOGR Počítačová grafika
1-9
Petr Veselý KST FEI Univerzita Pardubice