Vježbe 6
Perspektivno projiciranje u OpenGL-u - Poligonski modeli ploha -
Selektivno odbacivanje (culling) - Spremnik dubine (depth buffer)
Primjer 1: Postavljanje koordinatnog sustava kamere, primjena perspektivnog
projiciranja i stoga (
stack) matrica transformacija na primjeru rješenje
proširenog zadatka 4.4. uz pomoć OpenGL rutina -
GL-F.c
Prošireni zadatak 4.4.: Mrežom ravnih linija vizualizirajte
xy-ravninu,
a na nju postavite stilizirano slovo F sačinjeno od devet kocaka. "Krakovi" slova
F rotiraju oko vertikalne osi različitim brzinama, a kocke na krajevima vrte se
oko osi krakova. Koristite perspektivno projiciranje i mijenjajte visinu na kojoj
se nalazi kamera.
6.1. Modificirajte gornji primjer tako da oba kraka rotiraju oko
vertikalne osi jednakim brzinama, a obje kocke u svakom kraku zajedno
rotiraju oko osi krakova. Kocku između krakova iscrtati u crvenoj boji
i rotirati u smjeru suprotnom od krakova
(
vidi sliku).
Primjer 2: Crtanja poligona i važnost konzistentne orijentacije poligona
kako bi se moglo provesti selektivno odbacivanje (
culling) te primjer
korištenja spremnika dubine (
depth buffer) -
polikocka.c
U demo programu polikocka.c mogu se odgovarajućim slovima interaktivno
uključivati/isključivati opcije:
- 'C' - uključuje selektivno odbacivanje
- 'c' - isključuje selektivno odbacivanje
- 'B' - odbacuju se poligoni kojima gledamo stražnju stranu
- 'b' - odbacuju se poligoni kojima gledamo prednju stranu
- 'D' - uključuje provjeru dubine
- 'd' - isključuje provjeru dubine
- 's' - postavlja opciju glatkog sjenčanja
- 'f' - postavlja opciju ravnomjernog sjenčanja.
U momentu kad je kocka najbliže kameri, najbliži kut ulazi u ravninu projekcije
i biva odrezan, jer je ravnina projekcije ujedno bliža odrezujuća ploha
(
clipping plane). To nam omogućava da na trenutak "zavirimo" u kocku i
vidimo da li se stražnje plohe kocke iscrtavaju.
6.2. Uz pomoć trokuta (TRIANGLES) i četverokuta (QUADS) konstruirajte modele
te animirajte rotaciju sljedećih geometrijskih tijela:
- stožca
- valjka
- kugle.
Da bi pojedini poligoni bili uočljivi, koristite se različitim bojama.
Pazite na orijentaciju poligona, kako bi metodom selektivnog odbacivanja
mogli biti odbačeni poligoni nevidljivi za promatrača.
6.3. Korištenjem poligonalnih modela geometrijskih tijela iz prethodnog
zadatka konstruirajte i animirajte model vjetrometra
(
vidi sliku).
Za postizanje realističnosti koristite se perspektivnim projiciranjem i
spremnikom dubine (
depth buffer).