BEVEZETÉS A SZÁMÍTÓGÉPES GRAFIKÁBA
1.4. Fénytan, megvilágítás és árnyékolás
1.4.3. A fénytörés, áttetsz®ség és átlátszóság
Két közeg határfelületére érve a bees® fény egy része visszaver®dik, a többi megtörik és a másik közegben halad tovább. Ha a két közeg átlátszó anyagból van, akkor a fénysugár az egyik átlátszó anyagból egy másik átlátszó anyagba hatol, csak egy kis része ver®dik vissza, és a nagyobbik része a fénysugárnak megváltoztatott iránnyal halad tovább.
Ezt a jelenséget fénytörésnek (refrakció) nevezzük.
A fénytörés törvényei:
A bees® fénysugár, a megtört fénysugár és a beesési mer®leges egy síkban A beesési szög szinusza egyenesen arányos a törési szög szinuszávalvan.
(Snellius-örvény, 1620):sini=n2,1·sinβ. A megtört fénysugár és a be-esési mer®leges által bezárt szöget törési szögnek nevezzük. Az n2,1 arányossági tényez® a második közegnek az els® közegre vonatkozó relatív törésmutatója, amelynek értéke a két közegben mért fénysebes-ségeknek a hányadosa:n2,1=c1/c2.
A beesési szög és a törési szög szinuszának hányadosa ugyanarra a két közegre állandó, ez a relatív törésmutató.
Ha az els® közeg légüres tér, akkor a második közegre vonatkoztatott törésmutatót abszolút törésmutatónak nevezzük.
Ha a fénysugár mer®leges a felületre, akkor a fény irányváltoztatás nélkül halad tovább.
Ha a fénysugár párhuzamos oldalú (planparalell) lemezen haladva ke-resztül kett®s törést szenved, a fény iránya nem változik, csak eltolódik az eredeti iránytól.
Ha a fény prizmán keresztül halad át, akkor is kétszeres törést szenved, de a fény iránya megváltozik.
Az egyes objektumok átlátszók vagy áttetsz®k lehetnek. A fény terjedése az átlátszó objektumokon keresztül spekuláris, míg az áttetsz®kön keresztül diffúz.
Az 1.49. ábrán a 3-as és 4-es objektum átlátszatlan, az 1-es és 2-es pedig átlátszó, ugyanazzal a törésmutatóval. Ha nem vesszük gyelembe a fénytörést, az afénysugár a 3-as objektummal találkozna. A valóságban a törés miatt a 4-es objektumot metszi, amely emiatt megvilágított objektum l4-esz. Hasonlóan, a fénytörés gyelembevétele nélkül, abfénysugár a 4-es objektumot metszené a 3-as helyett [21].
A fénytörés torzítja is az objektumokat a perspektivikus vetítéshez hason-lóan. A valóságh¶ség érdekében számolni kell ezzel is.
Ha egy látható felület átlátszó, a színét a látható felület színének és a rög-tön utána található felület színének az összetevéséb®l kapjuk meg, a következ®
interpolálási képletet használva [24]:
Iλ= (1−kt1)·Iλ1+kt1·Iλ2, 06kt161,
1.48. ábra. A fénytörés
1.49. ábra. A fénytörés szerepe
aholkt1a látható felület átlátszhatóságát méri az adott pontban. Hakt1= 0, akkor a felület átlátszatlan, ezért a pont színe a felület színe lesz. Hakt1= l, a felület tökéletesen átlátszó, és a színe nem járul hozzá a pont színéhez. Ha kt1= l és a hátul lev® felület szintén átlátszó, a számításokat rekurzívan folytatjuk, mindaddig, amíg egy átlátszatlan felületet kapunk vagy a háttérhez értünk.
Az átlátszóság eme megközelítése nem ad jó eredményt a görbe felületeknél, azért, mert a felület körvonalához közeledve, az anyag vastagsága megváltoztatja az átlátszóságot. Ebben az esetben a következ® egyszer¶ nemlineáris megköze-lítést használjuk:
kt=ktmin+ (ktmax−ktmin) [1−(1−Nz)m],
aholktminésktmaxaz objektum minimális, illetve maximális fénytörését jellemzi, Nz a pontba húzott normálvektorz komponense és megy hatvány, amely az átlátszhatóságot jellemzi (a használt értékek általában 2 és 3).
Ez a képlet meghatározza a felület áttetszési együtthatóját.
1.4.4. Árnyékolás
Ha a meggyel® egy fényforrás által megvilágított színtér objektumait nézi, a fényforrás pozíciójától különböz® pozícióból, az objektumok által létrehozott árnyékokat is meggyelheti.
Egy árnyék két részb®l áll: a valódi árnyékból és a félárnyékból. A valódi ár-nyék s¶r¶, fekete és jól elkülöníthet® határa van. A félárár-nyék körülveszi a valódi árnyékot. A félárnyékban lev® objektumok egy kis fényt kapnak a fényforrástól.
A pontszer¶ fényforrások csak valódi árnyékot hoznak létre.
1.50. ábra. Árnyék és félárnyék
Az árnyékok meghatározása hasonló feladat, mint az objektumok látható-ságának a meghatározása (lásd A sugárkövetési algoritmus cím¶ fejezetet). Ezért
egy árnyékolt kép létrehozása a látható felületek kétszeri meghatározását jelenti:
egyszer a fényforrások pozíciójából, majd a meggyel® pozíciójából gyelve a színteret.
Két típusú árnyék létezik: sajátos és nem sajátos árnyékok [66]. A sajátos árnyékot az objektum hozza létre úgy, hogy a fény nem jut el az egyik oldalához.
A nem sajátos árnyék egy másik objektum által létrehozott árnyék.
A nem sajátos árnyékot meg lehet határozni úgy, hogy fényforrás pozíci-ójából levetítjük azokat az oldalakat, amelyek nincsenek sajátos árnyékokkal árnyékolva. Az így kapott sokszögek megadják a nem sajátos árnyékot.
Egy jobb módszer az, ha az objektum körvonalát vetítjük le a fényforrás pozíciójából. Egy felület pontja, amely látható a meggyel® pozíciójából, de a fényforráséból nem, az árnyékolási intenzitással vagy más objektumoktól szár-mazó intenzitással lesz megjelenítve.
Egy felületP pontjában a fény intenzitásának a kiszámítása a következ®-képpen alakul: ajfényforrásból elér aPpontba.
1.5. A modellezés
A generatív számítógépes grakában és a képfeldolgozás során nem a valódi objektumokat (valóságbeli tárgyakat), hanem azok egy modelljét dolgozzuk fel.
A modellezés során a valós tárgyakból entitásokat absztrahálunk. Az ember a körülötte lév® tárgyakat, valós entitásokat észreveszi, leegyszer¶síti, meg-különbözteti és rendszerezi. A végs® cél a bonyolult rendszer megismerése, m¶ködésének megértése, a felhasznált eszköz pedig a modellezés. A modellezés során az ember tulajdonképpen egy alapvet®, elemi gondolatmenetet (algorit-must) használ, amelynek segítségével absztrahál, megkülönböztet, osztályoz, általánosít specializál, részekre bont és kapcsolatokat épít fel.
Az absztrakció az a szemléletmód, amely segítségével egy végtelenül bo-nyolult rendszert leegyszer¶sítünk úgy, hogy csak a lényegre, a cél elérése érdekében feltétlenül szükséges részekre koncentrálunk. Az absztrahálás tehát azt jelenti, hogy elvonatkoztatunk a számunkra pillanatnyilag nem fontos, kö-zömbös információktól, és kiemeljük az elengedhetetlen fontosságú részleteket.
A megkülönböztetés és az osztályozás szinte automatikus folyamat. Az entitásokat a számunkra lényeges tulajdonságaik, viselkedési módjuk alap-ján megkülönböztetjük és kategóriákba, osztályokba soroljuk ®ket, oly módon,
hogy a hasonló tulajdonságokkal rendelkez® entitások egy osztályba, a különbö-z® vagy eltér® tulajdonságokkal rendelkekülönbö-z® entitások pedig külön osztályokba kerülnek. Az osztályozás folyamata tulajdonképpen az általánosítás és a speci-alizálás m¶veleteinek segítségével valósul meg. Az entitások között állandóan hasonlóságokat vagy különbségeket keresünk, hogy ezáltal b®vebb vagy sz¶kebb kategóriákba, osztályba soroljuk ®ket. Minden entitás valamilyen osztály példá-nya, rendelkezik osztályának sajátosságaival, átveszi annak tulajdonságait.
1.51. ábra. A modellezés folyamata
A generatív számítógépes grakában a feldolgozott grakus objektumokat (testek, felületek, alakzatok, görbék stb.) modell-, objektum- vagy színterekben (scene) írjuk le matematikai eljárások segítségével. A modellterek általában két-vagy háromdimenziós koordináta-rendszerek (2D, 3D).
A pixelgraka modelltere kétdimenziós egész koordináta-rendszer.
A vektorgraka modelltere két- vagy háromdimenziós valós euklidészi tér lebeg®pontos koordinátaértékekkel.
1.5.1. 3D modellez®k
A 3D modellez®k olyan alkalmazások, amelyek a valóságból vett objek-tumokat dolgoznak fel. Az objektumok úgy viselkednek vagy úgy néznek ki,
hasonló struktúrájuk, esetleg néhány zikai tulajdonsággal rendelkeznek (tö-meg, térfogat), mint a valóságban. A 3D modellez®k moduláris felépítés¶ek.
Egyik modul kezeli az objektumok térbeli modellezését, egy másik a zikai tulajdonságokat, egy harmadik a vetítést, megvilágítást (perspektíva, fényforrá-sok, atmoszféra, a fény terjedésének törvényei), és esetleg létezik egy animációs modul is, amely az objektumok vagy fényforrások mozgását valósítja meg. A mo-dellez®k legújabb generációi tartalmaznak egy interaktivitás-modult is, amely segítségével a felhasználó dinamikusan közbeléphet és interaktívan módosít-hatja az objektumok tulajdonságait.
A [20] alapján a következ® modellez® szoftvereket tudjuk megkülönböz-tetni:
Felületmodellez®: egy vázra rányújtunk egy b®rt. A váz sokszö-gekb®l vagy görbékb®l állhat. Az eredmény egy struktúra, amelynek térfogata van, de nincsenek zikai tulajdonságai: tömeg, s¶r¶ség stb.
Szilárdtest-modellez®: több modellezési lehet®séget nyújt, viszont a számítási id® észrevehet®en megn®. A szilárdtest-modellez®t nehezebb kezelni, mint a felületmodellez®t, viszont le tudják kezelni a s¶r¶séget, tömeget, súrlódási tényez®ket, gravitációs er®ket, ütközéseket stb., így a 3D objektumok viselkedését közelebb hozzák a valósághoz.
Sokszög-modellez®: konvex sokszögek összességéb®l állítja össze a 3D objektumot. A hátránya, hogy a görbe felületeket mindig sík felületekkel közelíti meg. El®nye, hogy egyszer¶bb számításokat kell elvégezni, és az algoritmusok is sokkal egyszer¶bbek, gyorsabbak.
Spline-görbéken alapuló modellez®: a 3D objektumokat (felületek vagy szilárd testek) matematikailag könnyen leírható görbékkel közelítik meg (spline görbék). Nagyobb rugalmasságot és pontosságot nyújtanak, mint a sokszög-modellez®k. A legtöbb modellez® program egyenletes spline-okon alapszik, egy modernebb verzió a NURBS (Non-Uniform Rational B-Splines) modellez®. A NURBS esetében a pontok nem egyenletesen vannak elosztva a görbén, így sokkal jobban meg tudják közelíteni a modellezett objektumokat. A pontosság azonban sok matematikai m¶-veletet igényel, és a renderelési algoritmusuk kivitelezése még nehézkes és lassú.
1.5.2. 3D testek modellezésének módszerei
Minden 3D modellez® szoftver rendelkezik egy pár alaptulajdonsággal, eze-ket foglaljuk össze a következ®kben [20]:
Primitívek használata: minden modellez® alkalmazás ismer néhány 3D primitív objektumot: gömböket, kúpokat, hengereket, kockákat és néha komplexebb objektumot is, mint a tórusz, dodekaéder stb. Ezekb®l a primitívekb®l komplexebb objektumokat lehet el®állítani.
Extrudálás (extrusion): a 3D modellezés egyik alaptechnikája, amely abból áll, hogy egy 2D objektumot (kör, téglalap, sokszög) eltolunk egy görbe vagy egyenes mentén a harmadik dimenzióba, így létrehozunk egy 3D objektumot (pl. egy kör extrudálásával egy egyenes mentén egy hengert kapunk). Az extrudálás parametrizálásával (a 2D objektum mé-retezése, forgatása) a végs® objektum formáját befolyásolhatjuk.
Forgástest kialakítása (lathing): egy görbe tengely körüli forgatásával generálunk 3D testeket.
B®rözés (skinning): egy több görbéb®l álló vázra kihúzunk egy felü-letet (hasonló egy hajó építéséhez, ahol el®bb a metszeti síkokat építik meg, majd ezek haránt irányú felületekkel lesznek összekötve). A szer-kezet minden bordája egy ponthalmaz, amelyen keresztülmegy az adott felület.
Vertex-szerkesztés: megadja azt a lehet®séget, hogy a 3D objektum bár-mely pontjának a pozícióját lehessen változtatni. A vertex-szerkesztés kétfajta: statikus, amikor a vertexek egymástól függetlenül mozognak, és dinamikus, amikor egy vertex elmozdítása maga után vonja a szomszé-dos vertexek kisebb mértékbeli elmozdulását (így egy simább felületet kapunk).
Boole-m¶veletek: a legtöbb számítást igényl® m¶veletek, két vagy több 3D objektum egyesítéséb®l, különbségéb®l, metszetéb®l komplexebb 3D formát állítunk el®.