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:


:  + 1 á(A) = 1 :  1 - 1 + 1 á(A) = 1
:  + 1 - 1 á(B) = 0 :  1 + 1 - 1 á(B) = 1
:  + 1 + 1 á(C) = 2 :  1 - 1 + 1 + 1 á(C) = 2

5. Kétmenetes z-pufferes árnyékolási algoritmus
1. lépés: számítsuk ki a z-puffert a fényforrás pontjából nézve
2. lépés: ha egy pont látható (a megfigyelő helyéről), akkor transzformáljuk át a fényforrás-középpontú vetítési rendszerbe, ahol a z-puffer tartalmából eldönthető, hogy árnyékban van-e ( = a transzformált pont távolabb van a fényforrástól, mint a z-pufferhez tartozó pont ? )

 


Vissza a lap tetejére