7. Sjenčanje tijela i uklanjanje skrivenih ploha

48 KB
Lab7.zip

ZADATAK VJEŽBE

Ostvariti osvjetljavanje tijela po Phongovom modelu, te sjenčanje u realističan 3D-prikaz.

KONCEPTUALNO RJEŠENJE

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.

UPUTE ZA KORIŠTENJE

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.