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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

sebou. Spočítáme, které z výsečí jsou viditelné, a právě toto rozmezí necháme zobrazit grafickou<br />

kartou.<br />

Protože jsme situaci představou dvourozměrné scény příliš zjednodušili, musíme ji vrátit zpět do<br />

trojrozměrného světa. Zorný prostor pozorovatele tvoří pohledový jehlan. Spočítáme tedy jeho<br />

projekci do roviny 0 a následně vzniklou omezenou plochu uzavřeme kruhovou výsečí se<br />

středovým vrcholem umístěným do pozice pozorovatele (resp. jeho projekce do téže roviny).<br />

Trojrozměrný případ připouští také komplikovanější situaci, při které se pozorovatel dívá<br />

směrem k zemi. Tehdy si nevystačíme s kruhovou výsečí, protože někdy je pokryt plný úhel<br />

kolem pozorovatele. Naproti tomu do dálky je vidět pouze několik prvních prstenců. Tuto situaci<br />

do jisté míry řeší fakt, že ringmapa se skládá ze dvou částí. Centrální kruh zobrazujeme za<br />

všechno okolností celý, a proto, není-li pozorovatel příliš vysoko nad povrchem, není třeba ani<br />

vnější část ringmapy zobrazovat. Obrázek 4.10 schematicky znázorňuje, co je v obecné situaci<br />

zobrazováno.<br />

Obrázek 4.10: Projekce pohledového jehlanu do roviny , ve které se uzavře vzniklá plocha<br />

kruhovou výsečí. Výseč se aplikuje na vnější okruhy ringmapy, zatímco centrální kruh se zobrazuje<br />

vždy celý.<br />

Rozdělení ringmapy do dvou částí tedy řeší dva problémy – vysokou frekvenci vzorkování<br />

v blízkosti pozorovatele a komplikovaný výpočet viditelnosti při některých pohledech. Velikost<br />

centrální ringmapy je proto dobré nastavit tak, aby porývala všechen terén, který je vidět<br />

z maximální výšky pozorovatele při pohledu do země. To není těžké zajistit v případě chodce<br />

nebo vozidla, ale v případě leteckého simulátoru bychom museli vytvořit robustnější řešení i na<br />

centrální kruh, aby se nezobrazoval stále ve stejné úrovni detailu.<br />

Je také vhodné mít pro vnější oblasti ringmapy dva index buffery. Jeden, který indexuje vrcholy<br />

po prstencích, a druhý, který je indexuje po výsečích. V případě, že se pozorovatel dívá spíše do<br />

země, je dobré mít možnost zobrazit jen několik málo vnějších prstenců. Pokud se naopak dívá<br />

do dálky, je efektivnější zobrazovat terén po výsečích. Pohled na horiz<strong>on</strong>t je sice daleko častější<br />

případ, přesto se vyplatí jednoduchým testem zjistit, kterým typem indexace v danou chvíli<br />

dosáhneme menšího počtu trojúhelníků pro vykreslení.<br />

75

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

Saved successfully!

Ooh no, something went wrong!