Ostvariti osvjetljavanje tijela po Phongovom modelu, te sjenčanje u realističan 3D-prikaz.
Koristimo tijelo koje je već izgrađeno u vježbi 4. Ono je sastavljeno od poligona na način da su poligoni na vrhu i na dnu paralelni, a svi ostali su četverokuti koji su podijeljeni po "katovima." Tijelo ima m katova s po n točaka na svakom katu. Poligoni su izgrađeni tako da su im normale usmjerene u središte tijela.
Tijelo se premješta iz sustava scene u sustav oka i vrši se perspektivna projekcija.
Za učinkovit prikaz 3D-tijela izvodimo uklanjanje skrivenih ploha, što je konkretno ostvareno razvrstavanjem poligona na prednje i stražnje. Stražnjima smatramo one kod kojih je tupi kut između njihove normale (usmjerene u unutrašnjost tijela) i zrake prema očištu. Takve poligone jednostavno ne uzimamo u obzir pri iscrtavanju, kao da i ne postoje u sceni.
Osvjetljavanje tijela ostvarujemo Phongovim modelom. Svakom vrhu tijela računamo vektor normale i zatim, ovisno o kutu kojeg zatvara taj vektor sa zrakom prema izvoru svjetla, određujemo intenzitet svjetla u dotičnom vrhu prema formuli:
intenzitet = ambijentna komponenta + difuzna komponenta
gdje je difuzna komponenta proporcionalna kosinusu izračunatog kuta. Ambijentna komponenta je konstantna; to je intenzitet kojeg želimo na zaklonjenim stranama tijela, gdje difuzna komponenta ne postoji. Phongov model predviđa i još jednu, zrcalnu komponentu svjetla, ali nju ne uzimamo u obzir zbog pojednostavnjenja.
Program očekuje da mu se navede ulazna datoteka kao parametar:
Lab7.exe ulaz.txt
Ulazna datoteka je u sljedećem formatu: u prvoj liniji navedene su koordinate očišta, zatim gledišta, zatim slijedi popis točaka tijela koje treba iscrtati – za svaku točku navedene su koordinate x, y i z.
Primjer ulazne datoteke:
300 400 250 0 0 100 4 4 75 75 0 -75 75 0 -75 -75 0 75 -75 0 50 50 30 -50 50 30 -50 -50 30 50 -50 30 50 50 60 -50 50 60 -50 -50 60 50 -50 60 150 150 160 -150 150 160 -150 -150 160 150 -150 160 150 150 200 -150 150 200 -150 -150 200 150 -150 200
daje sljedeći 3D-prikaz:
Ante Radman, Laboratorijske vježbe iz Računalne grafike, šk. godina 2003/2004.