Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 1/25 Reprezentace 3D modelu Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010 Multimediální a grafické aplikace (BI-MGA), ZS 2010/11, Přednáška 8 MI-POA Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 2/25 Povrchová reprezentace zdaleka nejčastější reprezentace (podporovaná grafickým hardwarem) reprezentuje se povrch modelu (žádná informace o vnitřku) typicky pomocí trojúhelníkové sítě geometrie a topologie (rozdíl?)
Povrchová reprezentace Jak uložit trojúhelníkovou síť v paměti? pro každý trojúhelník seznam vrcholů neefektivní Lepší způsob: pole vrcholů V (bodů A 3 ) pole trojúhelníků T (pole hran ne vždy nutné) Trojúhelník dán trojicí indexů do V... nedochází k duplikaci vrcholů Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 3/25
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 4/25 Příklad V 2 V 3 T 2 T 3 T 1 V 1 V5 V 4 T[1] = {1,5,2} T[2] = {2,5,3} T[3] = {3,5,4}
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 5/25 Stěna trojúhelníku Objekt typicky uzavřený nikdy nevidíme dovnitř každý trojúhelník má dvě stěny: přední a zadní obvyklá optimalizace: uvažovat pouze jednu stěnu V 1 V 2 normála Jak se určí zdali je stěna přední nebo zadní? Podle zvolené konvence a normálového vektoru. V 3
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 6/25 Stěna trojúhelníku Jak spočteme normálu? Vektorový součin: (V 3 -V 1 )(V 2 -V 1 ) Poznámka: (V 2 -V 1 )(V 3 -V 1 ) je opačně orientovaný vektor V 2 (V 1, V 2, V 3 )... jedna stěna (V 1, V 3, V 2 )... druhá stěna V 1 normála Stěna trojúhelníku je dána pořadím vrcholů (resp. jejich permutací) V 3
CCW konvence CCW: obvykle používaná konvence Hledíme-li na stěnu ze směru normály, vidíme vrcholy uspořádány proti směru hodinových ručiček (Counter- ClockWise) Alternativou je CW (po směru, ne tak časté) Příklad: CCW (V 1, V 3, V 2 ) (V 3, V 2, V 1 ) (V 2, V 1, V 3 ) CW: (V 1, V 2, V 3 ) (V 2, V 3, V 1 ) (V 3, V 2, V 1 ) Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 7/25 V 1 V 2 V 3 normála
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 8/25 Projektivní transformace promítá 3D svět do 2D roviny (obrazovka) na podobném principu funguje lidský zrak C P V V - 3D vrchol P průmět V C střed projekce d vzdálenost průmětny d průmětna
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 9/25 Projektivní transformace Lze ji popsat následující maticí: 1 0 0 0 0 1 0 0 P 0 0 1 0 0 0 1 / d 0 Pozor: Nejedná se o afinní transformaci! Projekcí (x, y, z, 1) T je (x, y, z, z/d) T, což je vektor v homogenních souřadnicích. Převod na afinní souřadnice: skalárně vynásobíme d/z Výsledek: (xd/z, yd/z, d, 1) T (Cvičení: Odvoďte tentýž vztah z předchozího obr.)
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 10/25 Kreslení povrchové rep. Promítnout trojúhelníky do průmětny a vyplnit je Problém: viditelnost Možná řešení: Malířův algoritmus setřiď trojúhelníky odzadu dopředu a v tomto pořadí kresli ne vždy lze takto setřídit (příklad?) Z-buffer (paměť hloubky) kresli trojúhelníky v libovolném pořadí pomocné pole Z-buffer (stejné rozlišení jako průmětna) inicializace: +nekonečno ve všech pixelech Z-bufferu před nakreslením pixelu se porovná jeho hloubka (Z) s aktuální hodnotou v Z-bufferu je-li menší, přepíšeme barvu a hodnotu v Z-bufferu jinak neděláme nic (bod je zakrytý)
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 11/25 Z-Buffer (paměť hloubky) Omezená přesnost počet bitů dán grafickým HW rozlišení ovlivňují ořezávací roviny (blízká a vzdálená) Pixely se překreslují neefektivní Optimalizace: odstranění odvrácených stěn odstranění trojúhelníku mimo zorný jehlan early Z-culling blízká ořezávací rovina vzdálená ořezávací rovina
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 12/25 Odstranění odvrác. stěn Trojúhelník má maximálně dvě stěny typicky jen jednu (pro uzavřené objekty) Známe-li pohledový vektor v d R 3, můžeme odstranit odvrácené stěny: Stěna s normálou n je odvrácená právě když skalární součin <v d,n> je kladný v d n - normal triangle (projection)
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 13/25 Ořezávání zorným jehlanem Příklad: rozsáhlá scéna (např. virtuální město) vidíme vždy jen malou část Viditelná část je obsažená v tzv. zorném jehlanu (je dán středem projekce, zornými úhly a blízkou/vzdálenou rovinou) Cíl: rychle zahodit trojúhelníky mimo zorný jehlan Pro statickou scénu: vytvořit hierarchii obalových těles (např. koulí) spočítat průsečíky koulí se zorným jehlanem podobný algoritmus jako detekce kolizí více o detekci kolizí v dalších přednáškách
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 14/25 Osvětlovací modely klasický osvětlovací model: Phongův říká jak spočítat barvu nasvíceného materiálu ke světlu normála odražené světlo pozorovatel
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 15/25 Phongův osvětlovací model L s = C L s cos h () (odražená složka) L d = C C L d cos() (difúzní složka) L a = C a (ambientní osvětlení) L = L a + L d + L s (výsledek) kde C je barva materiálu C L je barva světelného zdroje C C L násobení po složkých (nikoliv skalární součin) s, d, a, h... materiálové konstanty s... odrazivost d... koeficient difúzního osvětlení a... okolní osvětlení (ambient) h... koeficient ostrosti odrazu (např. zrcadlo - vysoké h)
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 16/25 Hladké stínování Nevýhoda povrchové reprezentace: hrany někdy potřebujeme hladký objekt (např. koule) Trik: uvádět normály ve vrcholech nejde o normálu v pravém slova smyslu používá se místo normály trojúhelníka lze ji interpretovat jako normálu aproximované plochy (např. opět koule) Vyhlazovací skupiny: jen některé části hladké (např. válec)
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 17/25 Stínovací metody vyčíslování osvětlovacího modelu je časově náročné Typické otimalizace Konstantní stínování: osvětlovací model se spočítá jednou pro celý trojúhelník vyplní se konstantní barvou Gouraudovo stínování: osvětlovací model se vyhodnotí ve vrcholech interpoluje se barva Phongovo stínování: osvětlovací model se vyhodnocuje v každém pixelu interpolují se normály vrcholů nejpřesnější, dostatečně rychlý na moderním HW
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 18/25 Konstantní stínování viditelné plošky nehladké Stínovací metody Gouraudovo stínování hladké difúzní materiál Phongovo stínování hladké i lesklý materiál
Graf scény Skládá se z následujících prvků: 3D objekty uložené v hierarchické struktuře (DAG) terminologie: uzly, listy, otec, syn, kořen lze přirozeně skládat každý objekt ve svém lokálním souřadném systému dáne transformační matice z otce na syna udává relativní polohu objektů světový souřadný systém souř. systém kořene více kopií jednoho objektu je možné měnit atributy (např. materiál) relativně levná variace (objekt se neukládá znovu) Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 19/25
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 20/25 Transformace normál Problém: normálové vektory přestanou být kolmé tečná rovina zůstavá tečnou M změna měřítka v ose x M M 0 1 1 t M 1... 33 matice
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 21/25 Transformace normál Normála je vektor, tj. n = (n 1, n 2, n 3, 0) T (transformuje se pouze M 1, žádné posunutí) Mn M 0 tn 10 M1 0 1 n Řešení: transformovat normály M 1 -T (transpozice inverzní matice) Platí: M 1 -T = M 1 (pouze pro rotaci či reflexi) (M 1-1 ) T = (M 1T ) -1 toto nás opravňuje psát M 1 -T
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 22/25 Textury významně vylepší vzhled modelu princip: modulace povrchových vlastností typicky barvy normály (bump mapping zdánlivá struktura povrchu) dále: neprůhlednost, odrazivost,... 3D (objemové) textury také možné, ale více paměti Mapování textur zobrazení z povrchu (v 3D) na 2D obrázek texturové souřadnice: U, V ( UV-mapping) (U, V) dány v každém vrcholu lineárně se interpolují uvnitř trojúhelníku lze kombinovat více textur (barva a normála)
Příklad textury Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 23/25
Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 24/25 Alfa kanál a neprůhlednost barevné kanály R, G, B doplněné o typicky stejné počet bitů, ale záleží na HW znamená neprůhlednost = 0... zcela průhledný materiál (neviditelný) = 1... zcela neprůhledný Jak se používá spolu se Z-bufferem? nejdřív vykreslit neprůhledné trojúhelníky setřídit ostatní ( < 1) trojúhelníky ozdadu dopředu vykreslit trojúhelníky s < 1 Míchání barev: S=(R s,g s,b s, s ), D=(R d,g d,b d, d ) Výsledná barva (a alfa kanál) = F s S + F d D kde F s a F d jsou míchací koeficienty
Děkuji Dotazy Ing. Jan Buriánek (ČVUT FIT) Reprezentace 3D modelu BI-MGA, 2010, Přednáška 8 25/25