Árnyékolás
A számítógépes grafikában az árnyékolás a 3D jelenetben lévő objektum/felület/poligon színének megváltoztatására utal, olyan dolgok alapján, mint (de nem kizárólagosan) a felület fényszöge a fényekhez képest, a fényektől való távolsága, a kamerához viszonyított szöge és az anyagtulajdonságok (pl.pl. kétirányú reflexiós eloszlási függvény) a fotórealisztikus hatás elérése érdekében.
Az árnyékolást a renderelési folyamat során egy árnyékolónak nevezett program végzi.
A felület fényforráshoz viszonyított szöge Szerkesztés
Az árnyékolás a felület fényforráshoz vagy fényforrásokhoz viszonyított szöge alapján módosítja a 3D-modell arcainak színét.
A lenti első képen a doboz arcai renderelve vannak, de mind ugyanolyan színűek. Az élvonalakat itt is rendereltük, ami megkönnyíti a kép áttekinthetőségét.
A második kép ugyanezt a modellt ábrázolja élvonalak nélkül. Nehéz megmondani, hol végződik a doboz egyik oldala, és hol kezdődik a következő.
A harmadik képen engedélyezve van az árnyékolás, ami valósághűbbé teszi a képet, és könnyebben láthatóvá teszi, hogy melyik oldal melyik.
A megvilágítás típusaiSzerkesztés
Mikor egy árnyékoló kiszámítja az eredmény színét, egy világítási modellt használ a felület meghatározott pontjain visszaverődő fény mennyiségének meghatározásához. A különböző világítási modellek különböző árnyékolási technikákkal kombinálhatók – míg a világítás megmondja, hogy mennyi fény tükröződik, az árnyékolás azt határozza meg, hogy ezt az információt hogyan használja fel a végeredmény kiszámításához. Lehet például, hogy csak bizonyos pontokon számítja ki a megvilágítást, a többit pedig interpolációval tölti ki. Az árnyékoló dönthet arról is, hogy hány fényforrást vesz figyelembe stb.
Környezeti megvilágításSzerkesztés
A környezeti fényforrás egy minden irányú, fix intenzitású és színű fényforrást jelent, amely a jelenet minden objektumára egyformán hat (mindenütt jelen van). A renderelés során a jelenet összes objektuma a megadott intenzitással és színnel világít. Ezt a típusú fényforrást elsősorban arra használják, hogy a jelenetben lévő különböző objektumok alapvetően láthatóvá váljanak. Ez a legegyszerűbben megvalósítható világítási típus, és azt modellezi, hogy a fény sokszor szóródhat vagy tükröződhet, ezáltal egységes hatást keltve.
A környezeti világítás kombinálható a környezeti okklúzióval, hogy megjelenítse, mennyire vannak kitéve a jelenet egyes pontjai, ami befolyásolja a környezeti fény mennyiségét, amelyet vissza tudnak tükrözni. Ez szórt, nem irányított megvilágítást eredményez az egész jelenetben, amely nem vet egyértelmű árnyékokat, de a zárt és védett területek elsötétülnek. Az eredmény vizuálisan általában egy borult naphoz hasonlít.
Point lightingEdit
A fény egyetlen pontból ered, és minden irányban kifelé terjed.
SpotlightingEdit
Spotlightot modellez: a fény egyetlen pontból ered, és kúp alakban terjed kifelé.
Area lightingEdit
A fény egyetlen sík kis területéről ered. (Valósághűbb modell, mint a pontszerű fényforrás.)
Irányított világításSzerkesztés
Az irányított fényforrás egy adott irányból egyformán világít meg minden objektumot, mint egy végtelen méretű és végtelen távolságra lévő területi fény; van árnyékolás, de nem lehet távolságcsökkenés. Ez olyan, mint a nap.
Distance falloffEdit
elméletileg két párhuzamos felületet gyakorlatilag ugyanannyira világít meg egy távoli, nem blokkolt fényforrás, például a Nap. A távolság esés hatása olyan képeket eredményez, amelyek több árnyékot tartalmaznak, és így a közeli fényforrások esetében reálisak lennének.
A bal oldali kép nem használja a távolság esést. Vegye észre, hogy a két doboz előlapjának színei pontosan megegyeznek. Úgy tűnhet, hogy a két felület közvetlen átfedésénél van egy kis különbség, de ez egy optikai csalódás, amelyet a két felület találkozásának helye alatt lévő függőleges él okoz.
A jobb oldali képen a távolságfüggést használjuk. Vegye észre, hogy a közelebbi doboz elülső oldala világosabb, mint a hátsó doboz elülső oldala. A padló is világosból sötétbe megy át, ahogy távolodik.
SzámításSzerkesztés
A távolsági esés többféleképpen is kiszámítható:
- A távolság hatványa – A fényforrástól x távolságra lévő adott pont esetében a kapott fényerősség 1/xn arányos.
- Nincs (n = 0) – A kapott fényerősség a pont és a fényforrás közötti távolságtól függetlenül azonos.
- Lineáris (n = 1) – A fényforrástól x távolságra lévő adott pont esetében a kapott fényintenzitás 1/x arányos.
- Kvadratikus (n = 2) – Így csökken a fényintenzitás a valóságban, ha a fénynek szabad útja van (azaz nincs köd vagy bármi más a levegőben, ami elnyeli vagy szórja a fényt). A fényforrástól x távolságra lévő adott pont esetében a kapott fényintenzitás 1/x2 arányos.
- Minden más matematikai függvény is használható.
Árnyékolási technikákSzerkesztés
Az árnyékolás során gyakran van szükség a felületi normálisra a világítás kiszámításához. A normálisok előre kiszámíthatók és tárolhatók a modell minden egyes vertexére.
Lapos árnyékolásSzerkesztés
Itt, a megvilágítás csak egyszer kerül kiértékelésre minden egyes poligonra (általában a poligon első csúcsára, de néha háromszögháló esetén a középpontra is), a poligon felületi normálisa alapján és azon a feltételezésen alapulva, hogy minden poligon lapos. A kiszámított színt az egész poligonra használjuk, így a sarkok élesnek tűnnek. Ezt általában akkor használják, ha a fejlettebb árnyékolási technikák túl számításigényesek. A tükrös fénypontok lapos árnyékolással rosszul ábrázolódnak: Ha a reprezentatív csúcson történetesen nagy fényes komponens van, akkor ez a fényesség egyenletesen kirajzolódik az egész arcra. Ha a tükrös fénypont nem a reprezentatív pontra esik, akkor az teljesen kimarad. Következésképpen a tükörreflexiós komponens általában nem szerepel a lapos árnyékolás számításában.
Sima árnyékolásSzerkesztés
A lapos árnyékolással ellentétben, ahol a színek a poligonok határainál diszkontinuusan változnak, a sima árnyékolásnál a szín pixelről pixelre változik, ami két szomszédos poligon között sima színátmenetet eredményez. Általában először a csúcspontokban számítjuk ki az értékeket, majd bilineáris interpolációt alkalmazunk a poligonok csúcsai közötti pixelek értékeinek kiszámításához. A sima árnyékolás típusai közé tartozik a Gouraud-árnyékolás és a Phong-árnyékolás.
Gouraud-árnyékolásSzerkesztés
- Meghatározza a normált minden egyes poligon-csúcson.
- Alkalmazzon egy megvilágítási modellt minden egyes csúcsra a fényintenzitás kiszámításához a csúcsnormálból.
- Interpolálja a csúcsintenzitásokat bilineáris interpolációval a felületi poligonon.
Problémák:
- Mivel a megvilágítás csak a csúcsokon kerül kiszámításra, a pontatlanságok (különösen a nagy háromszögeken a tükrös kiemeléseknél) túlságosan nyilvánvalóvá válhatnak.
- A szomszédos poligonokkal való T-csatlakozások néha vizuális anomáliákat eredményezhetnek. Általában a T-összeköttetéseket kerülni kell.
Phong árnyékolásSzerkesztés
A Phong árnyékolás hasonló a Gouraud árnyékoláshoz, kivéve, hogy a fényintenzitások interpolálása helyett a normálisok interpolálódnak a csúcsok között, és a megvilágítás pixelenként kerül kiértékelésre. Így a tükröződő fénypontok sokkal pontosabban kerülnek kiszámításra, mint a Gouraud árnyékolási modellben.
- Kiszámít egy N normált a sokszög minden egyes csúcsához.
- Bilineáris interpolációval kiszámít egy Ni normált minden egyes pixelhez. (A normált minden alkalommal újranormalizálni kell.)
- Alkalmazzon egy megvilágítási modellt minden egyes pixelre, hogy a Ni-ből kiszámítsa a fényintenzitást.
Halasztott árnyékolásSzerkesztés
A halasztott árnyékolás egy olyan árnyékolási technika, amellyel az árnyékolás kiszámítása két menetben történő rendereléssel későbbi szakaszra halasztódik, ami potenciálisan növeli a teljesítményt, mivel nem dobja el a drágán árnyékolt pixeleket. Az első menet csak a felületi paramétereket rögzíti (például a mélység, a normálisok és az anyagparaméterek), a második menet elvégzi a tényleges árnyékolást és kiszámítja a végső színeket.:884
Egyéb megközelítésekEdit
A Gouraud-árnyékolás és a Phong-árnyékolás is megvalósítható bilineáris interpolációval. Bishop és Weimer a megvilágítási modell alkalmazásából és a normálisok bilineáris interpolációjából eredő kifejezés Taylor-soros kiterjesztését javasolta. Ezért másodfokú polinom interpolációt használtak. Ezt a fajta bikvadratikus interpolációt Barrera és társai továbbfejlesztették, ahol egy másodrendű polinomot használtak a Phong reflexiós modell diffúz fényének interpolálásához, és egy másik másodrendű polinomot a tükrös fényhez.
Szférikus lineáris interpolációt (Slerp) használt Kuij és Blake mind a sokszög feletti normális, mind a fényforrás irányába mutató vektor kiszámításához. Hasonló megközelítést javasolt Hast is, amely a normálisok kvaternerion-interpolációját használja, azzal az előnnyel, hogy a normális mindig egységnyi hosszúságú lesz, és elkerülhető a számításigényes normalizálás.
Flat vs. smooth shadingEdit
Flat | Smooth |
---|---|
Uses the same color for every pixel in a face – usually the color of the first vertex | Smooth shading uses linear interpolation of either colors or normals between vertices |
Edges appear more pronounced than they would on a real object because in reality almost all edges are somewhat round | The edges disappear with this technique |
Same color for any point of the face | Each point of the face has its own color |
Individual faces are visualized | Visualize underlying surface |
Not suitable for smooth objects | Suitable for any objects |
Less computationally expensive | More computationally expensive |