Data pro real-time grafiku © 2005 Josef Pelikán, MFF UK Praha
Obsah povrchové modely efektivní přenos dat do GPU hierarchické reprezentace světa artikulované hierarchie, kostry „Level of Detail” (LoD) různé úrovně přesnosti modelů obecné povrchové modely i terén (DMT) billboardy, impostery, point-sprites
Reprezentace 3D dat obecně existuje několik odlišných přístupů k reprezentaci 3D dat v real-time grafice je nejběžnější povrchová reprezentace (B-rep, „boundary representation”) pouze informace o povrchu těles nejjednodušší formát: povrch je tvořen rovinnými ploškami (trojúhelníky) nebo body (point-sprites) geometrie + topologie souřadnice vrcholů + napojení plošek (síť trojúhelníků) sdílení sousedních vrcholů, hran apod. (úspory)
Síť trojúhelníků V1V1 V2V2 V3V3 V5V5 V4V4 V6V6 F1F1 V 1 x,y,z,w V 2 x,y,z,w V 3 x,y,z,w V 4 x,y,z,w V 5 x,y,z,w... F 1 V 1,V 4,V 5 F 2 V 1,V 3,V 4 F 3 V 2,V 3,V 1 F 4 V 2,V 4,V 3... podobnost s relační databází tabulky vrcholů (V, „vertex”), hran (E, „edge”) a stěn (F, „face”) jsou navzájem propojeny každá entita může obsahovat libovolný počet dalších atributů (vrchol: normála, barva,..; stěna: textura,..) odkazy pomocí indexů (místo ukazatelů)
Síť trojúhelníků hrany se u některých systémů používají, hardware s nimi však většinou nepočítá hardware umí přistupovat k datům úsporně: zadá se kompletní pole vrcholů (viz „VBO” na serveru) jednotlivé stěny (trojúhelníky) se pak už jenom odkazují do pole vrcholů pomocí indexů (viz index buffer) nejrychlejší konstrukce: proužky trojúhelníků („triangle strip”) nebo vějíře („triangle fan”)
Aproximace hladkého tělesa aby byl vzhled co nejlepší, musí se použít velký počet trojúhelníků pro kulovou plochu několik stovek, pro postavu člověka až desítky tisíc trojúhelníků hladkému vzhledu napomáhá některá ze stínovacích technik interpolace barvy nebo normály, viz v plné přesnosti se nemusí kreslit objekty značně vzdálené od pozorovatele úroveň detailu (LoD, „Level of Detail”), viz dále
Aproximace hladkého tělesa pro realistický výsledek ani taková přesnost nemusí stačit viz obrysy těchto „hladkých” těles
Hierarchické modelování scéna se skládá z objektů objekty se skládají z komponent komponenty se skládají ze součástek » součástky se skládají z... Hierarchické modelování je přirozené a efektivní v databázi mohou být uloženy celé knihovny dílů, ze kterých si konstuktér/umělec vybírá další „přidružené” vlastnosti hierarchické metodiky: atributy uzlů hierarchie (dědičnost, parametrizovatelnost) relativní transformační matice (poloha potomka je definována pouze vzhledem k jeho rodičovskému uzlu)
Strom scény Strom scény je uložen na disku kvůli vícenásobným odkazům se částečně v paměti rozvíjí robot hlavatělorukanoha ruka oko ramenoloketzápěstí... palecprst1prst2 T1T1 T2T2 T3T3
Relativní transformace Transformace listu scény (síť trojúhelníků) do světových souřadnic se skládá z posloupnosti transformací součiny matic i modelové transformace může počítat GPU robot hlavatělorukanoha ruka oko ramenoloketzápěstí... palecprst1prst2 T5T5 T7T7 T9T9 T 9 · T 7 · T 5
Animace kostry hierarchický systém „kostí” (souřadných soustav) relativní transformace – otočení vzhledem k předkovi + translace (matice, kvaternion): R i (t) posunutí celého objektu (těla): T(t) celková transformace: R 1 (t) R 2 (t) T(t) R 3 (t)
Úroveň detailu (LoD) Optimální efektivita vykreslování: vzdálené detaily (velikostí srovnatelné s rozměrem pixelu) se už nemusí vykreslovat naopak – nejbližší předměty (na které se dívá uživatel) si zasluhují co možná nejlepší vizuální kvalitu dynamická úroveň detailu („dynamic Level of Detail”) program automaticky přizpůsobuje jemnost dat lze implementovat globální dolaďování (např. zadání celkového počtu trojúhelníků, které se mají vykreslovat) náročná příprava dat: předem se musí připravit několik úrovní dat (nebo algoritmus spojitého zjemňování)
Diskrétní LoD předem je připraveno několik LoD-ů modely objektu s různou přesností může se vycházet z nejjemnějšího modelu – generalizace (časově náročný výpočet) vykreslování – výběr použitého LoDu: podle vzdálenosti od kamery podle velikosti projekce obalového tělesa nebo přesná projekce – nejvíc pozorovatelné jsou chyby kolmé na směr pohledu důležitost objektu, zaměření („focus”) pozorovatele globální vyvážení (počet vykreslovaných polygonů)
Přepínání LoD jednoduché přepínání musí se zavést hystereze ! „popping” – blikání LoDů míchání sousedních LoDů (LoD blending) kreslení dvou sousedních úrovní pomocí průhlednosti lineární kombinace („transition”) alternativa aktuální LoD se kreslí neprůhledně přidá se poloprůhledný nový LoD (alfa operace „over”) zápis „z-write” je zapnutý jen u aktuálního LoDu
Inkrementální LoD potlačuje blikání přechod je spojitý – množství jednoduchých (elementárních) přechodů bývá náročný na přípravu dat a FPU příklad elementárních operací nad sítí trojúhelníků: kolaps hrany (a dvou sousedních trojúhelníků) zmizí 1 vrchol, 3 hrany a 2 trojúhelníky rozpojení vrcholu (inverzní operace) vznikne nový vrchol, 3 hrany a 2 trojúhelníky možnost animace: vrchol míří doprostřed hrany..
Elementární operace I kolaps hrany vs. rozpojení vrcholu: možnost přechodové animace edge collapse vertex split
Elementární operace II jeden z vrcholů může zůstat na místě: je to vlastně jedna z forem odstranění vrcholu (viz dále) half-edge collapse vertex split
Elementární operace III kolaps trojúhelníka vs. rozpojení vrcholu: triangle collapse vertex split
Elementární operace IV odstranění vrcholu vs. přidání vrcholu: retriangulace vzniklého polygonu vertex removal vertex add
Kolapse buněk síť buněk: všechny vrcholy ve stejné buňce kolabují do jednoho (ve středu buňky) + indukované topologické změny cell collapse
Generování LoD shora dolů (top-down) základem je nejjednodušší reprezentace, přidávají se detaily méně častý přístup (subdivision surfaces..) zdola nahoru (bottom-up) začíná se s detailní reprezentací postupné zjednodušování (redukce dat) různé typy optimalizace „nejhezčí” reprezentace při daném počtu polygonů globální optimalizace je NP-úplná
Optimalizace při generování LoD bez optimalizace (např. u kolapse buněk) hladové přístupy („greedy”) kriteriální funkce – chybová metrika vždy se uvažují všechny možnosti, jak provést zjednošující krok (hodně výpočtů metriky) líné vyhodnocování metriky („lazy evaluation”) hladový přístup s redukovaným počítáním po lokální změně se okolí označí jako „špinavé” („dirty”), ale zatím se pro něj metrika nepřepočítává.. výsledky mohou být o něco méně kvalitní (ale rychlejší)
Optimalizace při generování LoD odhad metriky („estimation”) místo přesné hodnoty použiji rychlejší odhad možnost kombinace s líným vyhodnocováním, tři stavy: špinavý (nepřepočítáno) odhad (přibližná hodnota) přesná hodnota nezávislé zjednodušování vybírám sadu elementárních operací, které spolu nekolidují, tj. mohu je provést současně hierarchie – logaritmický počet úrovní (předchozí přístupy pracují lineárně)
Chybové metriky založené jen na 3D geometrii neuvažují se: směr pohledu, parametry projekce založené na projekci (výsledku – „target driven”) efektivnější – přímo záleží na vizuální chybě výsledku obrysy jsou důležitější změny při mapování kontrastní textury jsou důležité chyba atributu barva (často se nevhodně průměruje) normálový vektor (má vliv na stínování) mapování textury
Konkrétní metriky I vzdálenost vrchol – vrchol pro kolapsi buněk jinak lze použít jako odhad složitějších metrik vzdálenost vrchol – rovina d = p · v = n x v x + n y v y + n z v z + D „supporting planes”: roviny všech stěn incidentních s daným vrcholem kolaps hrany: zdroje rovin jsou oba původní vrcholy maximum přes všechny supporting planes: Err = max (p · v) 2
Konkrétní metriky II chybová kvadrika (Garland, Heckbert) Err = Σ (p · v) 2 = Σ v T Q p v = v T Q all v Q p je symetrická matice 4 4 s 10 různými hodnotami spočítaná podle roviny p kvadriky (matice) různých rovin lze sčítat (Q all ) vzdálenost vrchol – plocha složitý výpočet, může být nahrazen vzorkováním plochy vzdálenost plocha – plocha různé přístupy: geometrie, textura, obalové objemy,..
Konstantní snímková frekvence To do...
Spojité LoD nezávisle v letech : Xia & Varshney, Hoppe, Luebke & Erikson To do...
Terén – zemský povrch velmi rozsáhlá data USGS (U.S. Gelogical Survey): 1km síť – 2 miliardy trojúhelníků pro celou Zemi jiné systémy: i 30m nebo 15m rozlišení! pravidelná topologie používá se nejčastěji (jednoduchost implementace) čtvercová nebo obdélníková mřížka výjimečně hexagonální mřížka (rovnostranné trojúhelníky) nepravidelná síť trojúhelníků (TIN)
Quadtree rekurzivní dělení pravidelné mřížky 4-cestný (quadtree) nebo 2-cestný (bintree) strom Quadtree:
Bintree oblasti jsou pravoúhlé rovnoramenné trojúhelníky stejně jako Quadtree obsahuje T-vrcholy
Praskliny a T-vrcholy jsou způsobené rozdílným dělením sousedů prasklinu lze eliminovat posunutím vrcholu do středu sousední hrany T-vrchol může pořád vadit (interpolace barvy..): rekurzivní indukované dělení sousedů
Lindstrom 1996 algoritmus založený na bintree zjednodušování nejjemnějšího terénu (triangle-split) metrika: průmět posunutí vrcholu do obrazovky (1pix) T-vrcholy se eliminují indukovaným dělením kompaktní reprezentace: 32 bitů na vrchol (h, δ, flags) posunutí vrcholu δ
ROAM algoritmus (Duchaineau 1997) založený opět na bintree spojují a rozdělují se sousední trojúhelníky se společnou přeponou dynamické zjednodušování a zjemňování (screen err) prioritní fronta potenciálních spojení prioritní fronta potenciálních rozdělení Split Merge
Lindstrom a Pascucci 2001 jednoduchý přístup nezávislý na metrice postavený nad pravidelnou čtvercovou sítí (Digital Elevation Model) hierarchický systém – rodičovský uzel je zaveden před jeho potomky (eliminace prasklin)
Point sprites bod se kreslí pomocí malé textury (sprite) využití průhlednosti GL_POINT_SPRITE_NV aplikace: částicové systémy textura se mapuje na malý čtverec rovnoběžný s průmětnou stále se může používat poloměr bodu speciální texturovací souřadnice r [s,t,r] (viz COORD_REPLACE_NV)
Billboards „Billboard” – poloprůhledná textura s obrázkem složitějšího objektu textura mapovaná na čtyřúhelník často se orientuje kolmo na směr pohledu otáčení za pozorovatelem: vlastní transformační matice otáčení jenom kolem svislé osy (nepěkný pohled shora) použití: stromy a keře (i neorientované billboardy a multi- billboardy) složitější nápisy, 2D grafika, HUD, lens flare,..
Imposters „Imposter” – billboard vytvářený za běhu programu cache složitější scenérie (dynamika) geometricky nebo barevně složitý objekt nebo skupina objektů používá se hlavně pro vzdálené objekty hierarchie, LoD, více instancí stejného objektu technika: HW musí být schopen efektivně kreslit do textury (pbuffer) stromy a keře impostery mohou být orientovány podle větších větví..
Literatura Tomas Akenine-Möller, Eric Haines: Real-time rendering, 2 nd edition, A K Peters, 2002, ISBN: D. Luebke, M. Reddy, J. D. Cohen, A. Varshney, B. Watson, R. Huebner : Level of Detail for 3D Graphics, Morgan Kaufmann, 2002, ISBN : J. Žára, B. Beneš, J. Sochor, P. Felkel: Moderní počítačová grafika, 2. vydání, Computer Press, 2005, ISBN: (Dave Eberly)