Sjenčanje tijela



Uvod

Za potrebu sjenčanja tijela koristimo empirijski (Phongov) model osvjetljenja te Gouraudov postupak sjenčanja. Gouraudov postupak sjenčanja smo upoznali u sklopu prošle vježbe, a Phong-ov model osvjetljenja je opisan niže u tekstu. Osim sjenčanja poželjno je ukloniti stražnje plohe radi bržeg iscrtavanja tijela.

Implementacija vježbe

Sama implementacija vježbe se sastoji od JAVA appleta u osnovi vrlo sličnom onom iz vježbe 5, ali s dodatkom mogućnosti unosa koordinate izvora svijetlosti te pripadnog inteziteta. Sjenčanje poligona je identično onom iz vježbe 6. U implementaciji vježbe korišteni su slijedeći, po mjeri napravljeni, razredi Ravnina, Vektor, RubnaTocka, TočkaNH, Točka, Točka3D, Matrix, MyWindow.

1.Uklanjanje stražnjih poligona u sustavu scene na osnovi promatranja kutova

Uklanjanje stražnjih poligona u sustavu scene možemo načiniti na osnovi promatranja kuta između vektora normale ravnine u kojoj "leži" poligon i vektora od središta (težišta) promatranog poligona do očišta. Ako su vektori normala svih poligona usmjereni u unutrašnjost tijela kut između promatranih vektora određuje da li je poligon stražnji ili nije tj. ako je kut :
0o- 90o onda je poligon stražnji,
90o- 180o onda poligon nije stražnji
Kut između dva vektora V1=A1a+B1b+C1c i V2=A2a+B2b+C2 računa se na slijedeći naćin :
ArcCos( (A1*A2 + B1*B2 + C1*C2) / ( (A12+B12+ C12)0.5 * (A22+B22+C22)0.5))

2.Model osvjetljavanja

Model osvjetljavanje nam omogućuje određivanje intenziteta u pojedinim točkama. Phongov model osvjetljavanja čini jednostavnu aproksimaciju fizikalnog modela. Phongov model sadrži linearnu kombinaciju tri komponente: ambijentnu, difuznu i zrcalnu, tj. zbroj sve tri komponente Ig, Id i Is.

Ambijentna

Ambijentna komponenta predstavlja aproksimaciju doprinosa refleksije svih površina u sceni i jednaka je:
Ig = Iaka, gdje je Ia intenzitet na zaklonjenim plohama, a ka koeficijent između [0, 1].

Difuzna

Difuzna komponenta je jednaka:
 Id = Iikdcos(Fi),  0<=Fi<=180
Ii je intenzitet točkastog izvora, Fi kut između normale na površinu i vektora prema izvoru, kd je empirijski koeficijent refleksije (0<=kd<=1).

Zrcalna

Zrcalna komponenta nije razmatrana u sklopu ove implementacije. Za više od zrcalnoj komponenti vidi predavanja.

    U modelu osvjetljavanja potrebno je poznavati normale u vrhovima tijela, kako bi se moglo linearno interpolirati uzduž bridova te potom unutar samog poligona.
    Normale u vrhovima određuju se na osnovi normiranih normala poligona. Normala u pojedinom vrhu se dobije tako da se sumiraju utjecaji susjednih normala poligona po komponentama i podjele s brojem poligona koji su sudjelovali u određivanju normale. Normala vrha Ax+By+Cz, po komponentama, jednak je :
A = 1/4 * (Ai + Aj + Ak + Al)
B = 1/4 * (Bi + Bj + Bk + Bl)
C = 1/4 * (Ci + Cj + Ck + Cl)
gdje su normale i, j, k, l
susjedne normale poligona koji su sudjelovali u određivanju normale.


Demonstracija :



Napisao Andro Galinović