sveuČilište u zagrebu fakultet elektrotehnike · pdf file2.1 Čitanje visinske mape iz...
TRANSCRIPT
SVEUILITE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAUNARSTVA
ZAVRNI RAD br. 221
GENERIRANJE I PRIKAZ TERENADario Filipovi
Zagreb, veljaa 2008.
Zahvaljujem se mentorici prof. dr. sc. eljki Mihajlovi na savjetima i pruenoj pomoi prilikom pisanja ovog rada. Posebno se zahvaljujem roditeljima Gordani i Sreku na pruenoj podrci tokom dosadanjeg studija.
Sadraj:1. Uvod...................................................................................................................................12. Problematika generiranja terena.........................................................................................2
2.1 itanje visinske mape iz datoteke................................................................................32.2 Generiranje visinske mape dijeljenjem........................................................................42.3 Generiranje visinske mape pukotinama.......................................................................62.4 Generiranje visinske mape krunicama.......................................................................8
3. Dodavanje detalja.............................................................................................................103.1 Teksture terena..........................................................................................................10
3.1.1 Proceduralno generiranje tekstura......................................................................113.1.2 Teksturiranje 3D teksturama..............................................................................133.1.3 Teksturiranje mijeanjem teksturama...............................................................16
3.2 Sjene na terenu...........................................................................................................203.2.1 Volumeni sjena..................................................................................................203.2.2 Mape sjena.........................................................................................................22
4. Postupci prikazivanja 3D terena.......................................................................................264.1. Optimalno prilagoavajue mree u stvarnom vremenu - ROAM...........................27
4.1.1 Binarna stabla trokuta........................................................................................294.1.2 Dinamika kontinuirana triangulacija................................................................304.1.3 Redovi spajanja i dijeljenja................................................................................31
4.2. Geometrijsko MIP preslikavanje..............................................................................334.2.1 Odabir razine geometrijskog isjeka terena.......................................................34
5. Programsko rjeenje.........................................................................................................375.1. Analiza zahtjeva i izrada specifikacije....................................................................375.2 Detalji implementacije i rad programa......................................................................395.3 Analiza algoritama.....................................................................................................40
5.3.1 Analiza fraktalnog generatora............................................................................405.3.1 Analiza ROAM algoritma..................................................................................43
6. Zakljuak..........................................................................................................................457. Popis slika.........................................................................................................................468. Popis kratica.....................................................................................................................479. Popis tablica.....................................................................................................................4810. Literatura........................................................................................................................4911. Saetak............................................................................................................................5012. Abstract..........................................................................................................................5113. Privitak A UML dijagram programa...........................................................................52
1. Uvod
Prikaz trodimenzionalnih terena ve due vrijeme je jedno od zanimljivijih
podruja raunalne grafike, odnosno animacije. to se ustvari eli postii je preslikavanje
krajobraza iz naeg, stvarnog, svijeta na raunalni ekran. To nipoto nije jednostavan
proces ako uzmemo u obzir kompleksnost svega to nas okruuje.
Ne postoje dva identina genetska bia na ovoj planeti. Analogno tome ne
postoje niti dva identina mjesta na Zemlji. Sve sadri odreenu koliinu nasuminosti,
kako mi to volimo zvati. Tonije bi bilo rei da sve podlijee nekom pravilu, vidjeli mi to
pravilo ili ne. ovjekova tenja za shvaanjem stvari oduvijek je bila motivacija za
traenje tih pravila i njihovim koritenjem u svrhe predvianja i opisivanja stvari i
dogaaja. Ona su obino ili prilino intuitivna i jednostavna ili izrazito kompleksna do te
granice da se ne mogu pratiti sve varijable koje se mijenjaju u realnosti. To nas prisiljava
na pojednostavljivanje svari.
S terenima je ista pria. Zar bi bilo potrebno svaki atom zemlje upisati u
memoriju i kasnije crtati? Vjerojatno bi bilo korisno za neke svrhe, no treba pogledati
stvarnost. Prva i najvanija stvar; za to je potreban prikaz terena u prostoru?
Trodimenzionalni prikaz terena emo esto nai u ovim aplikacijama:
Simulacijama (esto vojne)
Sustavima vizualizacija (npr. za prikaz topologije)
Igre
Virtualni turizam
...
Jo jedno vano pitanje je: Koja razina detalja nam treba? Tu se treba osvrnuti
na to za to nam je potreban teren. Ako je potrebno za scenu u filmu, u redu je odvojiti sat
vremena za metodu praenja zrake za generiranje jednog okvira. ee je naglasak na
animaciji terena u stvarnom vremenu (engl. realtime). U ovom radu e fokus biti na
problematici generiranja terena i njihovo prikazivanje u stvarnom vremenu.
1
2. Problematika generiranja terena
Za poetak bi bilo dobro spomenuti da za prikaz u stvarnom vremenu moramo
izbaciti veliku veinu detalja iz stvarnog svijeta. Tako se stvarni krajobraz na raunalu
esto zapisuje kao mrea pravilno rasporeenih toaka (zato je to tako biti e rijei
prilikom opisa metoda prikaza terena). Naziv za takvu mreu je visinska mapa (engl.
heightmap). Moe se zamisliti da kreemo od mree trokuta (engl. triangle mesh) koja
predstavlja jednu plohu. Ta ploha je dakle predstavljena dvodimenzionalnim poljem toaka
koje sve imaju jednu koordinatu 0. To bi izgledalo kao na slici 1. Mi elimo postii efekt
slian onom na slici 2.
Slika 2 prikazuje mreu trokuta koja je deformirana tako da nalikuje 3D terenu koji je
prikazan kao mrea linija. Na slici se vidi valovit oblik koji predstavlja brda i doline
stvarnog terena i to prilino dobro. Postoji vie metoda kojima je mogue stvoriti/uitati
ovako deformiranu mreu trokuta.
Osvrnuti emo se na neke od njih:
itanje visinske mape iz datoteke
Generiranje visinske mape dijeljenjem (metoda dijamant-kvadrat)
Generiranje visinske mape pukotinama
Generiranje visinske mape krunicama
2
Slika 1: Mrea trokuta na jednoj plohi Slika 2: Deformirana mrea trokuta
2.1 itanje visinske mape iz datoteke
Visinska mapa se moe predstaviti kao slika. Oboje su u osnovi
dvodimenzionalno polje vrijednosti. Jedina je razlika to su slike kao datoteke zapisane
kao cjelobrojne vrijednosti, a za prikaz u prostoru se najee koriste decimalni brojevi
(float). Znai najvei problem je uitavanje podataka iz datoteke i skaliranje brojeva tako
da nam odgovaraju. Na internetu se mogu pronai brojni generatori terena koji generiraju
npr. BMP datoteku ije nijanse sive boje predstavljaju visinu te toke u prostoru. Primjer
takvog generatora je http://nemesis.thewavelength.net/index.php?c=2.
Visinska mapa se moe vidjeti na slici 3.
Visinske mape su najee oblika takvog da crna boja predstavlja najnie
razine terena, a bijela najvie razine. Razina terena je najee predstavljena Y-osi u
prostoru, dok su X i Z osi koordinate te toke na visinskoj mapi.
Ovo je jedina spomenuta metoda koja ne stvara visinsku mapu ve ju samo uitava.
3
Slika 3: Primjer visinske mape
http://nemesis.thewavelength.net/index.php?c=2
2.2 Generiranje visinske mape dijeljenjem
Ovo je prvi od algoritama koji poinju s praznom visinskom mapom (sve
vrijednosti visinske mape na 0), te odreenim postupcima generiranja terena odreuju
vrijednosti za svaku toku. Za ovaj algoritam je poeljno da su visina i irina visinske
mape jednake i djeljive sa 2. To znai da bi visinska mapa trebala biti etverokut. Osnovni
razlog tome je to je algoritam dosta bri ako se radi s ovakvim dimenzijama.
Prvi korak algoritma dodjeljuje krajnjim rubnim tokama nasumine
vrijednosti visine. Slijedei korak uzima toke na polovitu svake stranice i na sredini
tren