10.08.2013 Views

Terrain Processing on Modern GPU - Computer Graphics Group ...

Terrain Processing on Modern GPU - Computer Graphics Group ...

Terrain Processing on Modern GPU - Computer Graphics Group ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Popsaný způsob ořezávání pohledovým jehlanem je téměř ideální. Produkuje jen velmi malé<br />

množství trojúhelníků, je výpočetní nenáročný a implementačně velice jednoduchý díky<br />

efektivnímu využití struktury ringmapy. Za negativum by se dala považovat nesouhra se zbytkem<br />

scény. Objekty ve scéně budou totiž pravděpodobně uchovány v nějakém stromě a návaznost<br />

našeho postupu na takový strom by byla netriviální. S ohledem na zmíněné výhody se nám však<br />

zdá tato stránka zcela zanedbatelná.<br />

4.4 Generování dat<br />

V odstavci 4.1.2 jsme popsali dvouúrovňovou datovou strukturu, kterou užíváme k reprezentaci<br />

terénu. Řekli jsme si, že struktura se skládá z výškové mapy a z mapy reziduí. Výšková mapa<br />

obsahuje hrubý popis terénu a mapa reziduí je použita pro rek<strong>on</strong>strukci detailu. V odstavci 4.3.2<br />

jsme nastínili jednoduchý proces rek<strong>on</strong>strukce skutečné výšky terénu ve zvoleném bodě na<br />

základě dat z obou map. V následujícím odstavci se budeme věnovat tomu, jak obě mapy vytvořit,<br />

neboť tato reprezentace není běžná a nezískáme ji nikde přímo. V ukázkové aplikaci, do které<br />

jsme námi navrhovaný algoritmus s použitím zmíněné struktury implementovali, je kromě těchto<br />

dvou map použita ještě normálová mapa k získání lepších vizuálních výsledků při stínování.<br />

Postup vytvoření normálové mapy popisuje odstavec 4.4.2.<br />

4.4.1 Generování reziduí<br />

Pro účely testování bylo třeba vytvořit nějaká data, na kterých by bylo možné studovat a<br />

porovnávat dosažené výsledky. Za tím účelem jsme vytvořili jednoduchý nástroj na přeměnu<br />

vstupní výškové mapy na výškovou mapu nižšího rozlišení a mapu reziduí k rek<strong>on</strong>strukci detailu.<br />

Bylo možné zvolit i jinou vstupní reprezentaci, ale protože výšková mapa je často volenou<br />

reprezentací a není těžké nějaká reálná data získat na Internetu (například USGS), rozhodli jsme<br />

se ji jako vstupní formát použít i my. I přes dostupnost reálných dat jsme však nak<strong>on</strong>ec použili<br />

data generovaná automaticky pomocí k tomu vytvořeného nástroje.<br />

Generování výškové mapy nízkého rozlišení ze vstupní výškové mapy je realizováno pouhým<br />

průměrováním všech vstupních hodnot, které pokrývá jeden vzorek výstupní výškové mapy.<br />

K tomu je definován faktor zmenšení, který zároveň udává počet vzorků mapy reziduí mezi<br />

dvěma vzorky výstupní výškové mapy.<br />

Mapa reziduí má stejné rozlišení jako vstupní výšková mapa, proto se při výpočtu rezidua<br />

nepoužívá žádné filtrování vstupních dat, ale posuzuje se pouze jeden odpovídající vzorek.<br />

Reziduum je definováno jako rozdíl mezi hodnotou definovanou ve vstupní výškové mapě a<br />

hodnotou aproximovanou pomocí výškové mapy nižšího rozlišení. Volba aproximace může být<br />

libovolná. My jsme pro jednoduchost použili bilineární interpolaci čtyř nejbližších vzorků, ale<br />

kosinová interpolace by jistě fungovala stejně dobře, možná lépe. To záleží na charakteru dat<br />

terénu. Jistě by bylo možné pro k<strong>on</strong>krétní data zvolit vhodné aproximační schéma z nějakého<br />

pevně definovaného seznamu, které bude produkovat nejnižší chybu. Tomu však musí odpovídat<br />

postup zpětné rek<strong>on</strong>strukce.<br />

Abychom vůbec ušetřili nějakou paměť, musíme využít toho, že jsou hodnoty reziduí v menším<br />

rozsahu, než hodnoty výšek. K jejich vyjádření je tedy zapotřebí menší počet bitů. Navíc je možné<br />

76

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!