ZAVRŠNI RAD br. 221
Dario Filipović, lipanj 2008.

Generiranje i prikaz terena










Analiza

Analiza fraktalnog generatora

Kod fraktalnog generatora koristi se samo jedna varijabla za kontrolu kakav će se rezultat ovim algoritmom dobiti, a to je grubost (engl. roughness). Promjenom te varijable određuje se najveće odstupanje od početne visine. Grubost se monotono smanjuje pri svakoj rekurzivnoj propagaciji.

Mijenjanjem grubosti mogu se dobiti različiti tipovi terena koji se mogu vidjeti na slici 25. Očito je da za najveći r, teren je najgrublji, odnosno visinske razlike su najveće.

Zanimljivije je uočiti da nije samo bitna početna vrijednost grubosti terena. Jako je bitno na koji način opada ta vrijednost. Naime, nije svejedno je li to linearno, dijeli li se u svakom koraku, traži li se korjen u svakom koraku ili neka druga operacija. Stoga je implementirana i mogućost promjene tih parametara, a rezultati se mogu vidjeti na slici 26.

Linearno opadanje grubosti je ponešto sporo, no izgleda prilično prirodno. Opadanje dijeljenjem s 2, također u svakom slučaju izgleda vrlo prirodno. Korištenjem korjena kao funkcije opadanja grubosti terena jako se brzo guše visoke frekvencije u terenu, tako da nam ostaje utjecaj samo prvih nekoliko koraka algoritma.


Ovo su korištene operacije kao zakon opadanja za pojedini tip

case LIN:

roughness-=40;

case DIV:

roughness>>=1;

case SQRT:

roughness=sqrt(roughness);

, gdje je roughness vrijednost grubosti terena za tu razinu

Jednostavnom analizom se dolazi do spoznaje da za linearno opadanje grubosti, za dubinu od 7 grubost iznosi 0. Kod opadanja dijeljenjem za to je potrebna dubina od 8, a za opadanje pomoću korjena, zbog zaokruživanja brojeva, na 1 se pada već nakon četvrte razine. To znači da se sve niže razine od ovdje navedenih mogu smatrati zanemarenima za određeni slučaj.Zaključak je da odabiranje zakona opadanja grubosti terena daje još jednu dimenziju fraktalnom generatoru terena.

Analiza ROAM algoritma

Kod ROAM algoritma najzanimljivije je za promatrati ovisnost broja okvira po sekundi (engl. frames per second, FPS) o veličini visinske mape.

Slika 27 i slika 28 se moraju gledati zajedno, inače je moguće doći do pogrešnih zaključaka. Dakle, broj okvira po sekundi usko je vezan s brojem trokuta po sekundi. Broj trokuta koji se koristi je postavljen na 80 000. Za vrijeme rada programa, taj se broj smije prijeći, ali će se povratnom vezom pokušati vratiti na vrijednost od oko 80 000.

Veličina terena ne utječe na broj sličica u sekundi, osim ako je veličina terena previše malena za zadani broj trokuta, kao u slučaju visinske mape 256x256. Takav slučaj je besmislen, jer je to ekvivalentno iscrtavanju bez ikakvog algoritma za upravljanjem detaljima.

Pomoću ova dva grafa dokazano je da je ROAM algoritam pogodan za prikazivanje velikih terena po pitanju brzine, jer veličina visinske mape ne utječe na rad algoritma. Slijedeća korisna informacija je ovisnost broja okvira po sekundi o broju

Vidimo da broj okvira po sekundi brzo konvergira prema nuli, što je i očekivano, jer svaki dodatni trokut predstavlja dodatno opterećenje i glavnom procesoru koji mora analizirati pogrešku za trokut i odlučiti treba li ga crtati i za grafičku karticu koja taj trokut mora iscrtati.

Algoritam je pogodan za dodavanje sustava za određivanje vidljivog volumena. Nakon implementacije tog sustava je ustanovljeno da on stavlja preveliki pritisak na glavni procesor i da performanse padaju. Iz toga razloga je on isključen predprocesorskom naredbom. Informacija koju možemo izvući iz ovoga je da je glavni procesor usko grlo ovog algoritma, usprkos korištenju cjelobrojnih varijabli da bi pojednostavili operacije. Ovaj rezultat se u zadnje vrijeme često javlja, a uzrok tomu je nesrazmjeran razvoj grafičkih procesora i klasičnih procesora. Današnji grafički procesori su veoma brzi i optimiziran, u stanju isporučiti velik broj obrađenih poligona u sekundi. Ovaj je algoritam je iz doba dok to nije bilo tako. Tada se na glavnom procesoru radilo sve što je bilo moguće da bismo rasteretili grafičku karticu, dok je danas to često suvišno.