Az árnyékolás általánosan
Egyszerű árnyék
Árnyék generálása pásztázó-vonal algoritmussal
Kétmenetes árnyékolási algoritmus
Árnyékoló térfogat
Kétmenetes z-pufferes árnyékolási algoritmus
Az árnyékolás általánosan
algoritmus, amely meghatározza, hogy melyik felszín látható a fényforrásból
nézve
általában bonyolult (sokmindentől függ, pl. a fényforrás méretétől)

egyszerűsítés:
1. pontszerű fényforrásokra :

ahol
| |
 |
0,
|
ha
az i forrásból ez a pont nem látszik |
| Si
= |
|
| |
1
|
különben. |
2. poligon határú testekkel foglalkozunk csak
1. Egyszerű árnyék (Blinn 1988)
egyetlen (vagy több, egymástól távoli) tárgy árnyékát kiszámolni
sík felszínen
| pl. |
paralell
fénysugarak,
vízszintes síklap ( zs = 0 ) |
 |
lin. trafó:
Mpar·P = S

 |
|
perspektív
vetítés?
tetsz. helyzetű síklap? |
alkalmazása árnyékolásra:
poligon
(tárgy)
|
 |
vetített
poligon |
 |
z-buffer
(kezdeti értékadás) |
2. Árnyék generálása pásztázó-vonal algoritmussal
(APPEL 1968, BOUKNIGHT, KELLEY 1970)
A látható felszín meghatározására szolgáló pásztázó-vonal algoritmus
kibővítése árnyék generálással.

A pásztázó-vonalat metsző poligonon ( B ) az A poligon
vetületet ( A' poligon ) adja meg az árnyékot.
Tehát a pásztázó-vonal és A' metszéspontjai határozzák meg az
árnyék határait.
"árnyék ki-be kapcsolása", mint a látható felszín meghatározásánál
sok számolás: n(n-1) vetület számítása
gyorsítás: előfeldolgozás

poligonok vetítése egy gömb felszínére,
ha a vetületeknek ( kiterjedésüknek ) nincs közös része, akkor nem árnyékolhatják
egymást - ezeket a párokat kiszűrjük
Algoritmus:
pásztázás - a látható szakaszokra megvizsgálni, hogy árnyékban
vannak-e
Adatstruktúra:
adatstruktúra a látható felszín meghat.
adatstruktúra az árnyék meghat.
esetek:
ha nincs árnyékoló poligon az aktuális pásztázandó szakaszhoz, akkor
normál pásztázás,
különben
ha az árnyékoló poligon nem takarja a pásztázandó szakaszt, akkor
normál pásztázás,
ha teljesen takarja, akkor árnyékolás,
ha részben takarja, akkor a pásztázandó szakaszt részekre osztjuk,
és a részekre megismételjük az eljárást.
3. Kétmenetes árnyékolási algoritmus
(ATHERON, WEILER, GREENBERG 1978)
| Észrevétel: |
csak
azokat a poligonokat kell árnyékolni, amelyek |
| -
láthatóak (nézőpontból) és |
| -
nem láthatóak a fényforrásból; |
azaz a két helyzetből (nézőpont és a fényforrás helye) meghatározott
látható felszíneket kell összevetni.
Algoritmus:
| 1.
lépés: |
a
fényforrás helyéről látható felszín meghatározása
(output: megvilágított poligonok listája)
a./ trafó a fényforrásból vetítve
b./ látható felszín meghatározása
c./ visszatrafó. |
| 2.
lépés: |
a
poligonok adatbázisának összefésülése
(mi van árnyékban és mi nincs). |
| 3.
lépés: |
a
nem látható felszínek eltávolítása
(output: látható poligonok listája). |
| 4.
lépés: |
megjelenítés
(pl.pásztázó vonal) |


előnye: jól használható animációra (pl. csak a nézőpont
változik)
4. Árnyékoló térfogat (CROW
1977)
Tárgy árnyékoló térfogata: a térnek az a része, amit a tárgy eltakar
a fényforrás elől, árnyékoló poligonok határolják, a fényforrás helyéből
és a tárgy konturvonalaiból meghatározható.
árnyékoló poligon
- síkjának normálisa mutasson a térfogatból kifelé
- nem kell megjeleníteni
- felhasználható az árnyékoláshoz

| legyen: |
előre
(felénk) néző árnyékoló poligon
|
+1 |
| hátra
néző árnyékoló poligon |
-1
|
árnyékoló térfogatok száma P pontban: á(P)
P árnyékban van
á(P) > 0
Példák: