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.6. uz pomoć OpenGL rutina - GL-F.c
Prošireni zadatak 4.6.: Mrežom ravnih linija vizualizirajte xz-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:
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:
  1. stožca
  2. valjka
  3. 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 zadatka 6.1. konstruirajte i animirajte model vjetrometra (vidi sliku). Za postizanje realističnosti koristite se perspektivnim projiciranjem i spremnikom dubine (depth buffer).