Zanir » Blog Archive » Program 22 – Terén

Program 22 – Terén

08.09.2002

022_terrain022_terrain_volum_fogTerén je dôležitá časť viacerých typov hier. Vytvorenie tohto programu mi trvalo dosť dlho. Použil som oktanový strom (OcTree).
OcTree sa používa na delenie priestoru tak, aby sa nemuselo vykresľovať všetko (celý svet) ale iba to čo je v pohľade. Oktánový strom predstavuje rozdelenie priestoru a zároveň trojuholníkov v svete na kocky. Hlavný vrchol stromu predstavuje kocku, ktorá obsahuje všetky trojuholníky sveta. Tato kocka sa delí na 8 kociek (v každom smere na polovicu). Od toho sa strom volá oktánový, lebo jeden vrchol-otec môže obsahovať 8 synov. Podľa toho či v tej, ktorej kocke sa nachádzajú trojuholníky sa vrchol-syn vytvorí, alebo nie. Vrcholy-kocky sa rekurentne delia dokedy sa nespní podmienka. Podmienka na ukončenie delenia môže byť jedna z týchto: počet trojuholníkov v kocke je menej ako nejaké maximum, úroveň delenia je rovná hraničnej úrovni, počet všetkých vrcholov je väčší ako maximálny počet.

Vykreslenie sveta cez OcTree sa realizuje s pomocou Frustum Culling, čo je vlastne zistenie či je niečo v pohľade. Najprv sa zistí či kocka-otec aspoň čiastočne je v pohľade. Ak je v pohľade a vrchol je delený tak, sa funkcia rekurentne volá pre všetkých synov. Ak vrchol nie je delený tak sa vykreslia trojuholníky ktore táto kocka obsahuje.
Viac nájdete na www.gametutorials.com.

Ďalej som vytvoril prechody medzi rôznými textúrami. Osvetlenie som urobil pomocou glColor.
Do programu som pridal volumetrickú hmlu.

zdrojové texty (bez jpeg.lib) a program – 300kB

Pridať komentár