Level of detail
Základním stavebním kamenem povrchu modelů jsou trojúhelníky. Jejich rozmístění a počet určuje detail modelu. S větším počtem grafických primitiv (polygonů) je zobrazení povrchu objektu přesnější a lze zobrazit i velmi jemné detaily. Pokud je ale trojúhelníků příliš mnoho, hardwarová náročnost scény je příliš velká a grafický řetězec není schopen scénu zobrazovat v rozumném čase. Je tedy potřeba modely zjednodušit s ohledem na co nejmenší zmenšení vizuální kvality výsledné animace. Abychom zajistili maximální kvalitu a optimální efektivitu vykreslování, tak vzdálené detaily, které jsou velikostí srovnatelné s velikostí pixelu, se už nemusí vykreslovat. Naopak nejbližší předměty (na které se dívá uživatel) je třeba zobrazovat s co možná nejvyšší vizuální kvalitou. Existují dva základní přístupy, jak pracovat s úrovní detailu modelu ve scéně. Jedná se o statický LOD (Level of Detail) a dynamický LOD. [1] [2] [3]
Diskrétní LOD
Pod pojmem diskrétní (statický) LOD rozumíme vytvoření více variant úrovní detailu pro daný model, které se vytvoří před samotným spuštěním procesu. Za běhu programu se provádí pouze volba varianty pro zobrazení podle vhodných kritérií (např. vzdálenost od pozorovatele). Výhodou diskrétního LOD je, že dochází ke generování LOD modelů před spouštěním a za běhu se pouze přepíná, což značně snižuje výpočetní náročnost. Nevýhodou diskrétního LODu je ta, že máme omezený počet variant modelů a proto je třeba někdy vybrat model vyšší kvality než je třeba a někdy naopak nižší. Další nevýhodou může být vyšší využití paměti. Největší nevýhodou je však „blikání“, které vzniká při přepínání mezi modely. Proto existují některé modifikace, které blikání alespoň částečně potačují:[1][2]
- míchání sousedních LODů (LOD blending) – dva sousední modely se kreslí pomocí míchání
- inkrementální LOD – provádí se množství jednoduchých (elementárních) přechodů a přechod se pak jeví jako spojitý.
Obrázek | |||||
---|---|---|---|---|---|
Počet trojúhelníků | ~5500 | ~2880 | ~1580 | ~670 | ~140 |
Spojité LOD
Spojitý (dynamický) LOD se zásadně liší od diskrétního v tom, že se vytváří model za běhu programu a ne před spuštěním. V přípravné fázi je vypočítána reprezentace objektu a uložena do datové struktury. Poté se v každém novém snímku běžícího procesu vytvoří model s vhodnou úrovní detailu dle dané datové struktury. Jelikož dochází k výpočtům za běhu programu, jsou výpočetní nároky na zpracování vyšší. Výhoda tohoto přístupu je v tom, že úroveň detailu je přesně taková, jaká je pro danou scénu potřeba. To má za následek lepší využití prostředků a tudíž i lepší přesnosti a kvalitě pro daný počet polygonů. Další výhody jsou, že dochází k plynulému přechodu mezi dvěma úrovněmi a také menší paměťové nároky oproti diskrétnímu LODu. Typickým příkladem jsou Progressive meshes a vylepšená varianta view-dependent PM. [1] [2]
Výběr úrovně detailu objektu v daném zobrazení
Pro daný objekt je nutné vybrat vhodnou úroveň detailu. Obvyklá kritéria jsou:
- vzdálenost od kamery
- plocha průmětu objektu na obrazovce
- plocha průmětu obalového tělesa objektu na obrazovce
- objekt, na který je upřená pozornost uživatele a jeho důležitost
Redukce počtu trojúhelníků
Abychom byli schopni dosáhnout různých úrovní detailu, je třeba znát techniky, které zajistí redukci počtu trojúhelníků. Při těchto metodách je nutné brát ohled na výslednou vizuální kvalitu. Zjednodušení objektu probíhá pomocí jednotlivých lokálních zjednodušení. Nejčastěji používané přístupy jsou: [1]
- Eliminace vrcholů
- Eliminace hran
- Eliminace Re-Tiling
- Kolaps buněk
Generování LOD
Zdola nahoru
Tato technika vede ke zjednodušení původního modelu. Při postupu zjednodušování opakovaně přidávám (ale mohu i odebírat) různé entity – vrcholy, hrany, skupiny vrcholů či plochy. Odebírání se provádí z původního modelu a tato činnost se nazývá decimace. [3][2]
Shora dolů
V tomto případě postupujeme opačně než při generování zdola nahoru. To znamená, že začínáme s minimální reprezentací modelu a postupně přidáváme vrcholy až dosáhneme požadovaného výsledku. Postupujeme tedy shora-dolů. Výhodou je, že zpracováváme pouze ty entity, které vyprodukujeme. Nevýhodou může být, že máme méně informací při sestupu a z toho plyne i horší kvalita výstupu. [3][2]
Optimalizace při generování
Při této činnosti jde o to najít co „nejhezčí“ reprezentaci při daném počtu polygonů. Mezi nejznámější metody, které vyhodnocují chybovou metriku, patří například hladové přístupy, při kterých se uvažují všechny možnosti, jak provést zjednodušovací krok. Z toho plyne, že se provádí hodně výpočtů. Další metodou je líné vyhodnocování. Jedná se o hladový přístup s redukovaným počítáním. Výsledky mohou být o něco méně kvalitní, ale rychlejší. Metoda odhad metriky (estimation) zase počítá místo přesné hodnoty pouze rychlý odhad chyby, což je přibližná hodnota. Další možností, jak optimalizovat generování, je vybrat sadu elementárních operací, které spolu nesouvisí a tudíž je možné je provést současně. Příkladem operace, při které se neprovádí žádná optimalizace, je kolaps buněk. [3][2]
Chybové metriky
Chybové metriky jsou důležitou součástí problému a využívají se k měření kvality. Způsob měření chyby při vytváření modelu má velký vliv na výslednou použitelnost a vizuální kvalitu. Pro měření kvality se používají kromě geometrických chyb i chyby atributové, což může být např. barva, normála čí mapovací koordináty. [1]
Mezi nejčastější přístupy patří:
- vzdálenost vrchol-vrchol
- vzdálenost vrchol-rovina
- vzdálenost vrchol-povrch
- vzdálenost povrch-povrch
Odkazy
Reference
- Ondrej Klučka: Automatické vytváření úrovní detailu, bakalářská práce, Praha, FE ČVUT v Praze, 2007
- Roman Margold: Zpracování terénu na moderních GPU, diplomová práce, Praha, MFF UK v Praze, 2007
- cgg.mff.cuni.cz/~pepca/lectures/pdf/trimesh.pdf
Literatura
- D. Luebke, M. Reddy, J. D. Cohen, A. Varshney, B. Watson, R. Huebner: Level of Detail for 3D Graphics, Morgan Kaufmann, 2002, ISBN 0321194969