egc_12
TRANSCRIPT
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 1/10
Algoritmul Warnock
Divizeaza recursiv zona de afisare, pana se poatedetermina poligonul vizibil in acea zona sau dimensiuneazonei este 1 pixel.
P
poligon acoperitor
ZZ
P
poligon disjunct
Z
P
poligon intersectat
ZP
poligon inclus
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 2/10
Algoritmul Warnock
O zona de afisare cu dimensiunea mai marede 1 pixel nu va mai fi divizata daca: toate poligoanele sunt disjuncte fata de zona
considerata exista doar un poligon ce poate fi intersectat,
inclus sau acoperitor exista mai multe poligoane intersectate, incluse
sau acoperitoare, dar cel mai apropiat deobservator este un poligon acoperitor
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 3/10
Algoritmul Warnock
Warnock(Zona Z, ListaPligoane LP)clasifica poligoanele din LP (poligoane incluse, acoperitoare, disjuncte, intersectate = incluse+disjunctte)elimina poligoanele disjuncte din LPordoneaza poligoanele din LP in ordine descrescatoare dupa zmin al fiecarui poligon
elimina din LP poligoanele care se afla in spatele primului (cel mai apropiat de observator) poligon acoperitordaca LP == vida atunci
afiseaza zona Z in culoarea de fond;
stop;daca LP contine un singur poligon atuncidaca P este inclus atunci
afiseaza zona Z in culoarea de fond; afiseaza poligondaca P este acoperitor atunci
afiseaza zona Z in culoare poligonstop;
daca zona Z are dimensiunea de 1 pixel (x, y) atuncipentru fiecare poligon P din LP calculeaza z(x, y);determina max pentru z(x, y);
afiseaza pixelul (x,y) in culoarea poligonului cu z(x, y) maxstop;
Warnock(Z1, LP); Warnock(Z2, LP);Warnock(Z3, LP); Warnock(Z4, LP);
Z
ZZ
Z
Z
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 4/10
Transparenta
Daca nu se tine cont de refractie, cand suprafata vizibila intr-un pixel estetransparenta, culoarea in care va fi afisat pixelul se poate obtine combinandculoarea suprafetei vizibile cu aceea a suprafetei aflata imediat in spatelesau, folosind urmatoarea formula de interpolare:
I = (1-k)*I1 + k*I2
k masoara transparenta suprafetei vizibile in pixel, 0<= k <=1 daca k = 0, suprafata vizibila este opaca pixelul va fi afisat in culoarea sa,
I1; daca k = 1, suprafata vizibila este transparenta si nu contribuie la culoarea
pixelului.
Daca k = 1 si suprafata din spatele celei vizibile este la randul sautransparenta, metoda de calcul se aplica recursiv, pana cand se intalneste osuprafata opaca sau fondul.
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 5/10
Umbre
Cand un observator priveste o scena 3D iluminata de osursa de lumina dintr-o poziţie diferita de aceea a surseide lumina va vedea umbrele produse de obiectele scenei.
O zona de umbra se compune in realitate din doua parti: umbra pura - este densa, neagra si are un contur bine delimitat Penumbra - inconjoara umbra pura. Zona aflata in
penumbra primeste o parte din lumina de la sursa. Sursele punctiforme produc numai umbra pura. Sursele
reale, cu o dimensiune finita, produc si penumbra.
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 6/10
Umbre (2)
•Umbrele sunt de doua tipuri:•Umbre proprii•Umbre purtate
•Umbrele proprii sunt generate de obiectul insusi, care impiedica lumina sa ajunga la unele
dintre fetele sale. Fetele umbrite de umbra proprie sunt fetele auto-obturate atunci candscena este vazuta din pozitia sursei de lumina.•Umbra purtata este umbra pe care un obiect o produce pe alte parţi ale scenei, la carelumina nu ajunge din cauza obiectului.
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 7/10
Volume de umbra
• Volum de umbra - este definit de o sursa de lumina si un poligon vizibildin pozitia sursei de lumina (poligon generator).
• FUV fetele de umbra care sunt vizibile din pozitia observatorului• FUN fetele de umbra care nu sunt vizibile din pozitia observatorului• Pentru un punct P al unei suprafete si V pozitia observatorului.
• P este umbrit:• Se foloseste un contor in care initial se memoreaza numarul de volume de
umbra care contin pozitia observatorului.• Pentru FUV se asociaza valoarea +1 iar celor de tip FUN valoarea 1.• Cand vectorul VP traverseaza o fata de umbra, se aduna la contor
valoarea asociata fetei.• Punctul P este umbrit daca valoarea contorului este pozitiva in P.
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 8/10
Algoritmul z-buffer cu umbre
In scena exista o singura sursa de lumina
Se executa algoritmul z-buffer din pozitia sursei delumina si se construieste bufferul zs_buff
zs_buff(x, y) contine coordonata z corespunzatoarepunctului cel mai apropiat de sursa de lumina care seproiecteaza in pixelul (x, y)
Se executa algoritmul z-buffer din pozitia observatoruluitinand cont si de valorile din bufferul zs_buff
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 9/10
Algoritmul z-buffer cu umbre
se executa algoritmul z-buffer din pozitiasursei de lumina si se obtine bufferul zs_buf
Pentru fiecare pixel (x, y)
z_buf(x, y) = z plan spate al volumului devizualizare canonic
inscrie pixelul (x, y) in culoarea de fond
5/17/2018 egc_12 - slidepdf.com
http://slidepdf.com/reader/full/egc12 10/10
Algoritmul z-buffer cu umbre Pentru fiecare poligon P
pentru fiecare pixel (x, y) interior proiectiei poligonului P
{
determina coordonata z a punctului care se
proiecteaza in pixelul (x, y)
daca z > z_buf(x, y) atunci{
z_buf(x, y) = z;
determina (xs, ys, zs) punctul corespunzator lui
(x, y, z) in vederea din pozitia sursei de lumina
daca zs_buf(xs, ys) > zs atunci
afiseaza pixelul (x, y) in umbra
altfel
afiseaza pixelul (x, y) luminat
}
}