Terrain Processing on Modern GPU - Computer Graphics Group ...
Terrain Processing on Modern GPU - Computer Graphics Group ...
Terrain Processing on Modern GPU - Computer Graphics Group ...
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