CAD RENDSZERBEN. IKTA-KÉPI 00101/2000 projekt Szerződés számok: OMFB-00179/2001, OMFB-00190/2001 Fotorealisztikus megjelenítes CAD rendszerekben

Hasonló dokumentumok
Hajder Levente 2017/2018. II. félév

Tartalom. Tartalom. Anyagok Fényforrás modellek. Hajder Levente Fényvisszaverési modellek. Színmodellek. 2017/2018. II.

GLOB ALIS ILLUMIN ACI

Számítógépes Grafika mintafeladatok

Az Ampère-Maxwell-féle gerjesztési törvény

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Akusztikai tervezés a geometriai akusztika módszereivel

Alapfogalmak folytatás

Geometriai és hullámoptika. Utolsó módosítás: május 10..

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Pontműveletek. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar február 20.

Optika gyakorlat 2. Geometriai optika: planparalel lemez, prizma, hullámvezető

Optika és Relativitáselmélet II. BsC fizikus hallgatóknak

Összeállította: dr. Leitold Adrien egyetemi docens

Matematika (mesterképzés)

OTKA Nyilvántartási szám: T ZÁRÓJELENTÉS

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Hajder Levente 2017/2018. II. félév

Számítógépes Grafika mintafeladatok

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

KOVÁCS BÉLA, MATEMATIKA I.

OPTIKA. Fotometria. Dr. Seres István

BAGME11NNF Munkavédelmi mérnökasszisztens Galla Jánosné, 2011.

17. előadás: Vektorok a térben

Tartalom. Tartalom. Raycasting. Hajder Levente 2017/2018. II. félév. Raycasting. Raycasting. Sugár és háromszög metszéspontja

Láthatósági kérdések

Maga a tématerület így nagyon nagy. A fények pontos fizikai szimulációja kimondottan számításigényes

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Számítógépes Grafika SZIE YMÉK

5.1. ábra. Ábra a 36A-2 feladathoz

OPTIKA. Fotometria. Dr. Seres István

A gradiens törésmutatójú közeg I.

(Independence, dependence, random variables)

Robotika. Kinematika. Magyar Attila

A mérési eredmény megadása

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT. Koordináta-geometria

Q 1 D Q 2 (D x) 2 (1.1)

Orvosi Biofizika I. 12. vizsgatétel. IsmétlésI. -Fény

10. Koordinátageometria

Tartalom. Megjegyzések. Valasek Gábor Befoglaló keretek. Felosztások. Informatikai Kar

Felügyelt önálló tanulás - Analízis III.

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

Optika gyakorlat 6. Interferencia. I = u 2 = u 1 + u I 2 cos( Φ)

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Koordináta-geometria

Dr. Nagy Balázs Vince D428

Elektromágneses hullámok

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

Számítási feladatok a Számítógépi geometria órához

Geometriai Optika (sugároptika)

Világítástechnika I. VEMIVIB544V A fény és tulajdonságai, fotometriai alapfogalmak és színmérés

Koordináta-geometria feladatok (középszint)

KOVÁCS BÉLA, MATEMATIKA I.

TÁVKÖZLÉSI ISMERETEK FÉNYVEZETŐS GYAKORLAT. Szakirodalomból szerkesztette: Varga József

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Fourier transzformáció

A kvantummechanika kísérleti előzményei A részecske hullám kettősségről

Vektorok és koordinátageometria

A maximum likelihood becslésről

Optika gyakorlat 5. Gyakorló feladatok

Abszorpciós spektroszkópia

Az egyenlőtlenség mindkét oldalát szorozzuk meg 4 16-al:

A mérések általános és alapvető metrológiai fogalmai és definíciói. Mérések, mérési eredmények, mérési bizonytalanság. mérés. mérési elv

Alkalmazás a makrókanónikus sokaságra: A fotongáz

A +Q töltés egy L hosszúságú egyenes szakasz mentén oszlik el egyenletesen (ld ábra ábra

Matematika A1a Analízis

Bevezetés a színek elméletébe és a fényképezéssel kapcsolatos fogalmak

Geometria 1 normál szint

5. előadás. Skaláris szorzás

1. ábra. 24B-19 feladat

Képfeldolgozás. 1. el adás. A képfeldolgozás m veletei. Mechatronikai mérnök szak BME, 2008

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

c adatpontok és az ismeretlen pont közötti kovariancia vektora

2015. évi Bolyai János Megyei Matematikaverseny MEGOLDÁSI ÉS ÉRTÉKELÉSI ÚTMUTATÓ 12. évfolyam

Klár Gergely 2010/2011. tavaszi félév

A PiFast program használata. Nagy Lajos

STATISZTIKA ELŐADÁS ÁTTEKINTÉSE. Matematikai statisztika. Mi a modell? Binomiális eloszlás sűrűségfüggvény. Binomiális eloszlás

Véletlen jelenség: okok rendszere hozza létre - nem ismerhetjük mind, ezért sztochasztikus.

Elektromágneses hullámok - Interferencia

Nagy András. Feladatok a koordináta-geometria, egyenesek témaköréhez 11. osztály 2010.

5. házi feladat. AB, CD kitér élpárra történ tükrözések: Az ered transzformáció: mivel az origó xpont, így nincs szükség homogénkoordinátás

Matematika 11 Koordináta geometria. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Geometria III.

Koordináta-geometria feladatgyűjtemény

1.1 Emisszió, reflexió, transzmisszió

Matematika szigorlat június 17. Neptun kód:

Milyen simaságú legyen a minta felülete jó minőségű EBSD mérésekhez

Keresztmetszet másodrendű nyomatékainak meghatározása

Optika gyakorlat 1. Fermat-elv, fénytörés, reexió sík és görbült határfelületen. Fermat-elv

Least Squares becslés

Bevezetés a színek elméletébe és a fényképezéssel kapcsolatos fogalmak

352 Nevezetes egyenlôtlenségek. , az átfogó hossza 81 cm

Geometria II gyakorlatok

3. Fuzzy aritmetika. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

A Föld középpontja felé szabadon eső test sebessége növekszik, azaz, a

VEMIVIB544V A fény és tulajdonságai, fotometriai alapfogalmak és színmérés

Matematika A2 vizsga mgeoldása június 4.

Fényhullámhossz és diszperzió mérése

Első egyéni feladat (Minta)

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Trigonometria Megoldások. 1) Igazolja, hogy ha egy háromszög szögeire érvényes az alábbi összefüggés: sin : sin = cos + : cos +, ( ) ( )

Átírás:

IKTA-KÉPI 00101/2000 projekt Szerződés számok: OMFB-00179/2001, OMFB-00190/2001 Fotorealisztikus megjelenítes CAD rendszerekben GLOBÁLIS ILLUMINÁCIÓS SÁMÍTÁSI MÓDSEREK CAD RENDSERBEN 1.0 verzió: 2001.07.30 ÍRTA: DR. SIRMAY-KALOS LÁSLÓ KOVÁCS LÁSLÓ CSONKA FERENC ANTAL GYÖRGY KELEMEN CSABA DR. HORVÁTH TAMÁS ELLENŐRITE: CSONKA FERENC ANTAL GYÖRGY

Tartalomjegyzék 1. Bevezetés 3 2. A virtuális világ elemei 5 2.1. A geometria.... 5 2.1.1. Delaunay háromszögesítés... 5 2.1.2. Sokszögek háromszögekre bontása a fülek levágásával... 5 2.1.3. Háromszögek tovább-bontása... 6 2.1.4. Nem-folytonos felbontás... 6 2.2. BRDF modellek...... 6 2.2.1. Lambert-törvény... 8 2.2.2. Ideális visszaverődés... 10 2.2.3. Ideális törés... 10 2.2.4. Phong illuminációs modell és változatai.... 10 2.2.5. Cook-Torrance modell...... 13 2.3. Fényforrások... 15 2.4. Mérőműszerek...... 15 3. Színleképzés 19 3.1. Spektrum-RGB transzformáció... 19 3.2. Az intenzitás értékek skálázása... 21 4. A globális illuminációs feladat megoldásának lehetőségei 23 4.1. Expanzió... 23 4.1.1. Az árnyalási egyenlet expanziója: a gyűjtőséta... 23 4.1.2. Az potenciál egyenlet expanziója: a lövőséta... 24 4.1.3. Az expanzióelőnyei és hátrányai... 24 4.2. Iteráció... 24 4.2.1. Miért kell Monte-Carlo iterációt használni?...... 25 4.2.2. A sztochasztikus iteráció formális definíciója... 26 4.2.3. A véletlen operátor definíciója... 26 5. Vélelen bolyongáson alapuló algoritmusok 27 5.1. Véletlen bolyongáson alapuló gyűjtőséták: inverz fénykövetés... 27 5.2. Véletlen bolyongáson alapuló lövőséták: Fénykövetés... 30 5.3. Kétirányúfényútkövetés... 32 5.3.1. Többszörös fontosság szerinti mintavételezés... 33 5.3.2. Egyensúly heurisztika...... 34 5.3.3. Maximum heurisztika...... 35 5.4. Metropolis fényterjedés... 36 5.4.1. Korrelált minták... 38 5.4.2. Válasszunk megfelelő teret a mutációkhoz!...... 38 5.4.3. Nagy lépések... 40 5.4.4. Mutációs stratégiák avégtelen dimenziós egységkockában: lusta kiértékelés... 40 5.4.5. A visszautasított minták felhasználása... 41 5.4.6. A Metropolis módszer teljesítményvizsgálata..... 42 5.5. Foton térkép... 45 5.6. Láthatóság számítás sugárkövetéssel... 45 5.6.1. Metszéspontszámítás egyszerű felületekre... 45 1

5.6.2. A sugárkövetés gyorsítási lehetőségei.... 47 6. Sztochasztikus iteráció sugárkötegekkel 51 6.1. Az árnyalási egyenlet átalakítása a sugárköteg követéshez...... 51 6.2. Párhuzamos sugárköteg módszer.... 52 6.2.1. Perspektív sugárköteg módszer........ 53 6.2.2. Sugár lövés... 54 6.3. Az ideiglenes sugársűrűség reprezentációja... 55 6.4. Kombinált stratégiás algoritmus.... 55 6.5. Képbecslőszámítása... 56 6.6. Elsőlövés technikák... 57 6.6.1. Az első lövés alapötlete.... 57 6.6.2. Elsőlövés pontszerűfényforrásokra..... 58 6.6.3. Kis területi fényforrások.... 59 6.6.4. Az első-lövés felhasználása a sugárköteg módszerben.... 60 6.7. Szimulációs eredmények... 60 7. Többmenetes képszintézis 67 7.1. Többszörös fontosság szerinti mintavételezés... 67 7.1.1. Inverz fénykövetés és párhuzamos sugárköteg módszer kombinációja... 69 7.1.2. Kétirányú fénykövetés és párhuzamos sugárköteg módszer kombinációja... 69 8. Progresszív képszintézis és a virtuális világ interaktív bejárása 73 8.1. Progresszív képszintézis.... 73 8.2. Kamera és objektum animáció... 73 8.2.1. Kamera animáció bolyongási algoritmusokban... 73 8.2.2. Kamera animáció iterációs algoritmusokban..... 73 Irodalomjegyzék 75

1. fejezet Bevezetés Ezen tanulmány az IKTA-KÉPI 00101/2000 projekt keretében készülő, CAD rendszerekben alkalmazható képszintézis program algoritmusait specifikálja, és a prototípusok segítségével szerzett tapasztalatokat ismerteti. A program részletes szoftver specifikációit ezen tanulmány alapján készítjük el, és egy különálló dokumentumban adjuk közre, így itt erre nem térünk ki. Jelen dokumentáció közvetlen előzménye ugyanezen projekt előző fázisában készült Globális illuminációs számítási módszerek című tanulmány, amiben a szóba jöhető módszereket és azok matematikai alapjait írtuk le. Az prototípusokkal történt vizsgálatok alapján az ott tárgyalt módszerek közül csak néhányat találtunk megfelelőnek arra, hogy CAD rendszerekben alkalmazzuk őket. Most csak ezeket az módszereket ismertetjük, a korábbiaknál részletesebben és mellőzve a korábbi dokumentumban tárgyalt matematikai-fizikai alapokat. A képszintézis célja az, hogy a számítógép előtt ülő felhasználóban a valóság szemlélésének illuzióját keltse (1.1. ábra). felhasználó a monitor elõtt monitor R G B Szín leképzés mérõ mûszer ablak képszintézis virtuális világ színérzet az idegsejtekben teljesítmény λ teljesítmény λ radiancia λ felhasználó a valós világban teljesítmény λ valós világ radiancia λ 1.1. ábra. A képszintézis lépései A lefényképezendő virtuális világ a következő főbb részekre bontható: geometria, optikai tulajdons ágok és fényforrások és a kamera (1.2. ábra). A geometria a testeket és a felületeket definiálja, az optikai tulajdonságok azt írják le, hogy a felület hogyan veri vissza a rá eső fényt, a fényforrások az elsődleges megvilágításért felelősek, a kamera pedig egy megfigyelőt helyez el a virtuális térben. 3

A képszintézis eredménye a kép, amely a pixelek színét, vagy az intenzitásfüggvény diszkrét hullámhosszakon vett mintáit tartalmazza. A monitorok szabályozható erősségű elektromágneses hullámokat bocsátanak ki három hullámhosszon, amelyeket önállóan szemlélve vörös, zöld és kék színeket érzékelnénk. A képszintézis utolsó lépése tehát a sz ínleképzés, amely a számított spektrumot R vörös, G zöld és B kék intenzitásokra alakítja át. a virtuális világ geometriája anyag jellemzõk globális felületi pontok képszintézis radianciája (globális lépés) kép számítás (lokális lépés) pixelek radianciája szín leképzés pixel R,G,B értékek világítás kamera 1.2. ábra. A képszintézis adatfolyam modellje Ebben a tanulmányban azokat a módszereket foglaljuk össze, amelyeket a projekt keretében ténylegesen implementálunk. Először áttekintjük virtuális világ elemeit majd rátérünk a javasolt számítási algoritmusokra. A javasolt algoritmusokat három nagy csoportba bontottuk, mint ffl Bolyogási algoritmusok, ffl Iterációs algoritmusok, ffl Kombinált algoritmusok, amelyeket különálló fejezetekben tárgyalunk. Végül kitérünk a progresszív képszintézis és az animáció lehetőségeire is.

2. fejezet A virtuális világ elemei 2.1. A geometria A 3D virtuális világot geometriai szempontból, testek, felületek, vonalak és pontok építhetik fel. Mi csak felületekkel és a valódi 3D elemmel, a testtel foglalkozunk és feltételezzük, hogy a test a határoló felületeivel definiált. A képszintézis program számára a felületeket háromszögek sorozatával kell megadni. Az iterációs megoldásokban a háromszögek egyben a végeselem megoldás bázisfüggvényeit is meghatározzák, így nem lehetnek tetszőlegesek. Akkor kapunk pontos megoldást, ha egy háromszögön belüli pontok homogénnak tekinthetők, tehát a háromszög nem túl nagy és semmilyen fontos tulajdonság sem változik jelentősen a háromszögön belül. Ebben a fejezetben összefoglaljuk, hogy miként állítható elő acélnak megfelelőháromszögháló. felhasználó modellezõ program modell adatbázis geometria konverter bemeneti formátum képszintézis kép 2.1. ábra. A képszintézis kapcsolata a modellező rendszerrel A geometria megfelelő előállítása a modellező program (pl. ArchiCAD) és a javasolt képszintézis program közötti híd (2.1. ábra), a geometria konverter feladata. 2.1.1. Delaunay háromszögesítés Tegyük fel, hogy az eredeti geometriát diszkrét pontok adják meg. A feladat tehát egy olyan illeszkedő háromszög háló előállítása, amely nem tartalmaz hosszú keskeny háromszögeket. Ezt pontosabban úgy fogalmazhatjuk meg, hogy semelyik háromszög körülírt köre sem tartalmazhat más háromszög csúcspontot. Az ilyen felbontást Delaunay felbont ásnak nevezzük, amely a Voronoi diagram duálja. A Delaunay háromszögesítés inkrementális megvalósítása a [GS77, GS85, Lis94] cikkekből származik. Az algoritmus egy olyan háromszögből indul, amely az összes adatpontot tartalmazza. A pontokat egyenként adjuk hozzá az adatszerkezethez úgy, hogy a Delaunay tulajdonság minden lépés után megmaradjon. Először az új pontot tartalmazó háromszöget azonosítjuk, majd új éleket hozunk létre az új pont és a tartalmazóháromszög csúcspontjai között. A tartalmazóháromszög eredeti oldalaira ellenőrizzük, hogy megsértik-e az üres körülírt kör elvárást, azaz az eredeti oldal két végpontjára és az új pontra egy kört illesztünk és azt minden egyes korábbi ponttal összevetjük. Ha ez a kör nem tartalmaz korábbi pontot, akkor az eredeti oldalt megtartjuk. Ellenkező esetben az eredeti oldalt töröljük és felváltjuk az eredeti élre illeszkedőkét háromszög távolabbi csúcsait összkötő éllel. Ezzel két másik háromszög keletkezik, amelynek eredeti oldalait rekurzívan ellenőrizni kell. Az algoritmus implementációja a [Lis94]-ban található. 2.1.2. Sokszögek háromszögekre bontásaafülek levágásával Akövetkezőkben egy egyszerű háromszögesítő algoritmust ismertetünk, amely egy r 0 ;r 1 ;:::r n sokszöget háromszögekre oszt fel. Kezdjük két alapvető definícióval: ffl Egy sokszög diagonálja egy, a sokszög két csúcsát összekötő szakasz, amely teljes egészében a háromszög beljesében van. A diagonál tulajdonság egy szakaszra úgy ellenőrizhető, ha az összes oldallal megpróbáljuk elmetszeni és megmutatjuk, hogy metszéspont csak a végpontokban lehetséges, valamint azt, hogy a szakasz egy tetszőleges belső pontja a sokszög belsejében van. 5

ffl A sokszög egy csúcsa fül, ha az adott csúcsot megelőző és követő csúcsokat összekötő szakasz a sokszög diagonálja. Nyilván csak azok a csúcsok lehetnek fülek, amelyekben a belső szög 180 foknál nem nagyobb. Az ilyen csúcsokat konvex csúcsoknak nevezzük, a nem konvex csúcsokat pedig konkáv csúcsoknak. Aháromszögekre bontó algoritmus füleket keres, és azokat levágja addig, amíg egyetlen háromszögre egyszerűsödik az eredeti sokszög. Az algoritmus az r 2 pontnál kezd. Az algoritmus egy lépésben, amikor az i. csúcsnál van, először ellenőrzi, hogy a megelőző r i 1 csúcspont fül-e. Ha az nem fül,akövetkezőcsúcspontra lép (i = i +1). Ha a megelőző csúcs fül, akkor a r i 2 ;r i 1 ;r i háromszöget létrehozzuk, és az r i 1 csúcsot töröljük a sokszög csúcsai közül. Ebben az esetben csak akkor lépünk a következő csúcspontra, ha az új megelőző csúcspont éppen a 0 indexű, egyébként nem. 2.1.3. Háromszögek tovább-bontása 2.2. ábra. A háromszögek felbontásának lehetőségei Előfordulhat, hogy a felosztás után keletkező háromszögek még mindig túlságosan nagyok, és emiatt a háromszögek sugársűrűségét homogénnek vagy lineárisnak feltételező algoritmusok számítási hibája nagy. Ekkor a háromszöget tovább kell bontani, amelyre két eljárás is használható. Felbonthatjuk egy lépésben a háromszöget két kis háromszögre úgy, hogy megkeressük a leghosszabb oldalt, azt megfelezzük, és a felezőpontot a szemközt lévő csúccsal összekötjük. A másik megoldás minden oldalt megfelez és a három felezőpontot köti össze, így a háromszöget négy darab, az előzővel hasonló részre bontja. Az első megoldás tömzsi (nem hosszú, keszkeny) háromszögeket állít elő, ami a véges-elem felbontás miatt kívánatos, azonban igen sok ún. T csomópontot vezet be, amelyek a Gouraud árnyalásnál észrevezetők. 2.1.4. Nem-folytonos felbontás Az éles árnyékok miatt a háromszög homogén radianciájára vonatkozó feltételezés egyes helyeken nem tartható. Ekkor meg kell keresni a háromszögön belül az árnyék helyét, és ennek mentén kell a darabolást elvégezni. A művelet pontos megvalósításához az árnyékok helyét számítani kell. Közelítő jelleggel az árnyékok számítása nélkül is alkalmazhatjuk az elvet. Keressük meg azon pontokat, amelyek a felbontandó sokszöghöz közel vannak és vetítsük ezeket a pontokat a sokszög síkjára, majd ezekre a vetületekre is terjesszük ki a háromszögesítést. Ehhez először is ellenőrizzük, hogy a poligonok nem metszik-e egymást, és a metszésvonal mentén két részre vágjuk őket. Ezt követően a poligonokat az összes többi poligon csúcspontjával hasonlítjuk össze. Első lépésben ellenőrizzük, hogy a pont közel van-e a poligon síkjához. Legyen a poligon síkjának normalizált normálvektora ~n, helyvektora ~r 0. Egy ~p pont távolsága a ~n (~p ~r 0 ) kifejezéssel számítható. Ha a pont közel van, akkor a poligon síkjára vetítjük a ~p 0 = ~p ~n (~n (~p ~r 0 )) képlettel, majd eldöntjük, hogy a vetített pont a poligon beljesében van. Konvex poligonokra ez minden oldalra a ((~r n+1 ~r n ) (~p 0 ~r n )) ~n 0 reláció ellenőrzésével lehetséges (~r n a poligon n. csúcspontja). A poligonra vetült pontok alapján a Delaunay módszerrel kapjuk meg a végső felbontást. Az ismertetett módszer naív megvalósítása négyzetes komplexitású. Ezen segíthetünk, ha először egy irány (például az x tengely mentén) rendezzük a poligonokat és a csúcs pontokat. A két listán párhuzamosan megyünk végig és csak azokat a párosításokat vizsgáljuk, amely potenciális metszésponthoz vezethet. 2.2. BRDF modellek A felület optikai tulajdonságait BRDF modellekkel adhatjuk meg. Tegyük fel, hogy az! 0 irányból egy foton érkezik a felület ~x pontjába. A foton! irányú továbbhaladását a következő feltételes valószínűség-sűrűségfüggvénnyel jellemezzük: w(! 0 ;~x;!) d! =Prfa foton az! irány körüli d! térszögben megy j! 0 irányból jöng: (2.1)

Ez a valószínűség-sűrűségfüggvény az anyag optikai tulajdonságait írja le. Erősen tükröző felületeknél nagy a valószínűsége annak, hogy a foton az elméleti visszaverődési irány közelében halad tovább. Matt felületeknél viszont a különböző irányokban történő kilépés hasonló valószínűségű. A foton haladását leíró valószínűség-sűrűségfüggvény és a kimeneti szög koszinuszának hányadosa, az optikai anyagmodellek egy alapvető mennyisége, amelynek neve k étirányú visszaverődés eloszlási függvény, vagy röviden BRDF (Bidirectional Reflection Distribution Function): f r (! 0 ;~x;!) = w(!0 ;~x;!) : (2.2) cos A BRDF mértékegysége 1 per szteradián [sr 1 ]. Valósághű képek előállítása során olyan BRDF modelleket kell használnunk, amelyek nem sértik az alapvető fizikai törvényeket, mint például a BRDF-k szimmetriáját kimondó Helmholtz-t örvényt, vagy az energiamegmaradás törvényét. A reciprocitást és az energiamegmaradás elvét nem sértő BRDF-eket fizikailag plauzibilisnek nevezzük [Lew93]. A BRDF modellek bemutatása során a következő jelöléseket használjuk: N ~ a felületelemre merőleges egységvektor, ~L afényforrás irányába mutató egységvektor, V ~ anézőirányba mutató egységvektor, R ~ az L ~ tükörképe az N-re ~ vonatkoztatva, H ~ az L ~ és V ~ közötti felező egységvektor. Egy BRDF modellnek arra kell választ adnia, hogy ha a felületet adott irányból egy adott hullámhosszon érkező fénynyaláb éri, akkor egy másik adott irányban milyen fényesnek látszik. Véletlen bolyongási algoritmusoknál ezen az alapfeladaton kívül a BRDF modellnek a fontosság szerinti mintavételezést is segítenie kell. Ez azt jelenti, hogy szükség van egy olyan módszerre, amely adott belépési irány mellett véletlen kilépési irányokat állít elő, mégpedig olyan valószínűség sűrűséggel, ami arányos a BRDF-nek és a kilépési irány és a felületi normális közötti szög koszinuszának szorzatával. Formálisan, a BRDF alapú fontosság szerinti mintavételezés azt jeleni, hogy az i. lépésben az irányok t i sűrűségfüggvénye arányos a visszaverődés valószínűségsűrűség függvénnyel, vagyis t i / w i = f r (! in ;~x;! out ) cos : (2.3) Agyűjtősétában az! out ismert, a az! in és a felület normálisa közötti szög, és az! in -t kell meghatározni. A lövősétákban viszont az! in ismert, a az! out és a felület normálisa közötti szög, és az! out -t kell meghatározni. Mivel a t i sűrűséget jelent (a Monte-Carlo módszerek valószínűség-sűrűségét), ezért az integrálja egységnyi. A gyűjtősétákra és nem-átlátszó anyagokra, ez az arányossági tényező a 2.3 képletben ΩH wd! in = ΩH f r (! in ;~x;! out ) cos in d! in = a(~x;! out ) ahol a(~x;! out ) a felület ~x pontjának albedoja a kimenőirányban. Hasonlóan, az arányossági tényezőalövősétákra ΩH wd! out = ΩH f r (! in ;~x;! out ) cos out d! out = a(~x;! in ): A w Λ = w i =t i súlyfüggvények tehát éppen a meglátogatott pontok albedoját jelentik ebben az esetben. A gyakorlatban használt visszaverő modellek különböző egyszerű BRDF-eket kombinációit használják. Szerencsére az orosz-rulett kiterjeszthető a kombinált eset kezelésére is. Ha a visszaverődési modell különböző BRDF-ek összege, akkor a különböző összetevőkből véletlenszerűen választhatunk. Tételezzük fel, hogy az visszaverődés valószínűség-sűrűsége a BRDF-eknek megfelelően összegeként írható fel: Ebből adódóan a sugársűrűség egyszeres visszaverődése: [0;1] 2 L = Ω w L in d! = w = w 1 + w 2 + :::+ w n : Ω w 1 L in d! + :::+ Ω w n L in d!: Tételezzük fel, hogy minden integrálhoz találhatóegyt i leképezés, amely, legalább közelítően arányos az adott integrandussal: w 1 L = L in w n dz + :::+ L in dz = E w Λ 1 L inλ + :::+ E wn Λ L inλ : t 1 t n [0;1] 2 Válasszuk ki az i. BRDF-et p i valószínűséggel, és súlyozzuk az eredő radianciát 1=p i -vel vagy fejezzük be a sétát p 0 =1 p 1 ::: p n valószínűséggel. Az i. modell használatakor az új ^L valószínűségi változó értéke w Λ i L in =p i és 0, ha nem választunk ki BRDF modellt. A ^L várható érték továbbra is megfelelő:» w E[ ^L] Λ» =p 1 E 1 L in w Λ + :::+ p n E n L in p 1 p n +(1 p 1 ::: p n ) 0=E (w Λ 1 + :::+ wλ n )LinΛ = L: (2.4)

Ez lényegében egy összeg kiértékelése Monte-Carlo módszerrel. A fontosság szerinti mintavételezés szerint a szórás kicsi lesz, ha a wi ΛLin =p i kifejezés legalább megközelítőleg állandó. Mivel rendszerint nincs előzetes információnk az L in radianciáról, ezért a wi Λ=p i tesszük konstanssá. A kis szórású becslés létrehozásához tehát az alap BRDF-eket azok w i Λ transzformált súlyainak valószínűségével kell kiválasztani. Mivel a fontosság szerinti mintavétel után a w i Λ súly egyenlő vagy megközelítőleg egyenlő az albedoval, ezért a kis szórású becslés az alap BRDF-eket a hozzájuk tartozó albedo valószínűségével választja ki. Ha a bejövő irányból és a felületi normálisból akarunk kimenő irányt generálni, akkor a következő általános BRDF mintavételező algoritmust használhatjuk: BRDFSampling(in, normal, out) prob = SelectBRDFModel(normal, in) if prob = 0 then return 0 prob *= Reflection(in, normal, out) if prob = 0 then return 0 return prob end Ebben a programban a SelectBRDFModel szerepe az alap BRDF-k albedo valószínűségével történő kiválasztása, és ezen valószínűség visszaadása. Ha ez a valószínűség 0, akkor a sétát az orosz-rulett elvei szerint befejezzük. A Reflection függvény új out irányokat generál a választott visszaverődési modell visszaverési valószínűségi sűrűségével megközelítőleg arányosan, és visszaadja a minta előállításának valószínűségét. A BRDF modellek áttekintésénél ezért az albedo számítás és a fontosság szerinti mintavételezés lehetőségeit is tárgyaljuk. 2.2.1. Lambert-törvény Optikailag nagyon durva, ún. diffúz anyagok esetén a visszavert radiancia független a nézeti iránytól. Fehérre meszelt falra, homokra, matt felületre nézve ugyanazt a hatást érzékeljük ha merőlegesen nézünk rá, mintha élesebb szögben vizsgálódnánk. V N L in θ θ L 2.3. ábra. Diffúz visszaverődés A Helmholtz-féle reciprocitás értelmében a BRDF ekkor a bejövőiránytól sem függhet, azaz a BRDF konstans: f r ( ~ L; ~ V )=k d : (2.5) A diffúz visszaverődésű anyag albedoja: a(~l) = k d cos d!= k d ß: (2.6) Ω Az energiamegmaradás miatt az albedo diffúz visszaverődés esetén sem lehet 1-nél nagyobb, így a k d diffúz visszaverődési együtthatóra a következő korlát állítható fel: a( ~ L)=k d ß =) k d» 1 ß : (2.7) BRDF mintavételezés diffúz anyagokra A diffúz anyagok konstans BRDF-fel rendelkeznek, azaz t i (ffi; ) / w i = f r cos sin :

Az arányossági tényezőt kiszámolhatjuk, ha a t i -t normalizáljuk: t i (ffi; ) = R ΩH w i f r w i d! = cos sin = 2ß R ß=2 R f r cos sin d dffi ffi=0 =0 cos sin : ß Tételezzük fel, hogy a két koordináta-minta előállításához használt valószínűségi változók függetlenek, ekkor a sűrűség szorzat formájában írható fel: t i (ffi; ) = 1 [2 cos sin ] ; (2.8) 2ß ahol 1=(2ß) a ffi és 2cos sin =sin2 pedig a sűrűségfüggvénye. A megfelelővalószínűség-sűrűségfüggvények a következők: P (ffi) = ffi 0 1 2ß dφ= ffi 2ß ; P ( ) = 0 sin 2 d =sin 2 : Következésképpen a keresett ffi és valószínűségi változók a következő, a [0; 1] intervallumon egyenletes eloszlású, u; v változók transzformációjával kereshetők meg: ffi =2ß u; = arcsin p v: A transzformált súly a fontosság szerinti mintavételezés után éppen az albedo: w Λ i = w i t i = f r ß = a: (2.9) 2.4. ábra. Koszinuszos eloszlás előállítása az alapkörön Más módszerek is léteznek a megfelelővéletlen irányok előállítására. Az első módszer a felületen a mintavételi pont körül egy egységkörben állít elő mintákat, majd a pontokat felvetíti a felület fölé emelt egység félgömbre (2.4. ábra). Egy körben úgy lehet egyenletes eloszlású pontokat előállítani, hogy a pont befoglalónégyzetében generálunk mintapontokat és ellenőrizzük, hogy a pont a körön belül van-e. Ha nincs, a mintát eldobjuk (visszautasításos mintavételezés). 2.5. ábra. Koszinuszos eloszlás előállítása az érintőgömbön A második módszer a felületet az adott pontban érintő egységgömbben vesz fel mintákat (2.5. ábra). Ez ugyancsak a visszautasításos mintavételezés szerint lehetséges. A gömböt körülvevő kockában állítjuk elő a pontokat, és azokat, amelyek a gömbön kívül esnek, eldobjuk. A gömbön belüli mintákat a gömb felületére vetítjük, ezáltal a gömb felületén egyenletes eloszlást állítunk elő. A véletlen irányokat az adott pont és a gömb felületén lévő pont közötti irányok adják meg.

2.2.2. Ideális visszaverődés Az ideális tükör teljesíti a geometriai optika által kimondott visszaverődési törvényt miszerint a beesési irány ( ~ L), felületi normális ( ~ N) és a kilépési irány ( ~ V ) egy síkban van, és a 0 beesési szög megegyezik a visszaverődési szöggel ( 0 = ). Az ideális tükör tehát csak az ~ R visszaverődési irányba ver vissza, egyéb irányokba nem. A BRDF tehát Dirac-delta függvénnyel adható meg (a Dirac-delta a 0 értéknél végtelen, minden más értéknél zérus, de integrálja 1): f r ( ~ L; ~ V )=k r ffi( ~ R ~ V ) cos 0 ; az energiamegmaradáshoz k r» 1: (2.10) Az ideális visszaverődés albedoja k r. Még a tökéletes tükrök is elnyelik a beérkezőfény egy részét. A visszavert és beeső energia hányadát az anyag Fresnel-együtthatója fejezi ki, ami pedig az anyag törésmutatójából számítható ki. A törésmutató dielektrikumoknál skalár, az elektromosságot vezető fémeknél azonban komplex szám. Jelöljük a törésmutató valós részét n-nel, az elektromos vezetőképességet kifejező képzetes részét pedig»-val. Legyen a beérkezőfénysugár és a felületi normális által bezárt szög 0,atörési irány és a normális közötti szög pedig. A Fresnel-egyenletek a visszavert és a beérkező fénynyalábok energiahányadát fejezik ki külön arra az esetre, amikor a fény polarizációja párhuzamos, és arra, amikor a polarizáció merőleges a felülettel: F? ( ; 0 )= fi fi fi cos fi (n +» ) cos 0 fififi 2 fi cos +(n +» ) cos 0 ; F k ( ; 0 )= fi fi fi fi cos 0 (n +» ) cos cos 0 +(n +» ) cos fi fi fi fi 2 ; (2.11) ahol = p 1. Ezen egyenleteket az elektromágneses hullámok terjedését leíró Maxwell-egyenletekből származtathatjuk. Nem polarizált fény esetében a párhuzamos ( ~ E k ) és merőleges ( ~ E? ) mezőknek ugyanaz az amplitúdója, így a visszaverődési együttható: k r = F ( ; 0 )= jf 1=2 k ~E k + F 1=2? ~E? j 2 F k + F? j E ~ k + E ~ =? j 2 2 : (2.12) Dielektrikumokra a törésmutatóvalós, ekkor a Fresnel tagot jól közelíthetjük a Schlick által javasolt képlettel: F ( ; cos 0 ) ß (n( ) 1)2 +(1 cos 0 ) 5 4n( ) (n( ) +1) 2 : A fontosság szerinti mintavéletezés ideális tüköresetre triviális, hiszen ilyenkor csak egyetlen kilépőirány valószínűsége nem zérus. 2.2.3. Ideális törés Az ideális törés során a fény útja követi a Snellius-Descartes-törvényt, miszerint a beesési irány ( ~ L), a felületi normális ( ~ N) ésatörési irány ( ~ V ) egy síkban van, és sin 0 sin = n; ahol n az anyag relatív törésmutatója. A BRDF az ideális visszaverődéshez hasonlóan ugyancsak Dirac-delta jellegű függvény f r ( ~ L; ~ V )=k t ffi(~ T ~ V ) cos 0 ; (2.13) ahol ~ T atörési irány. Az ideális törés albedoja k t. A fontosság szerinti mintavéletezés ideális tüköresetre triviális, hiszen ilyenkor csak egyetlen kilépőirány valószínűsége nem zérus. 2.2.4. Phong illuminációs modell és változatai Az inkoherens azaz nem a geometriai visszaverődési törvénynek megfelelően viselkedő ideális visszaverődést általában két tényezőre bontjuk. Diffúz visszaverődésre, amelyet a Lambert-törvénnyel írunk le, és spekuláris visszaverődésre, amelyre külön modellt állítunk fel. A Phong BRDF a spekuláris visszaverődés egyszerű empirikus modellje [Pho75]. A spekuláris felületek a beérkező fény jelentős részét az elméleti visszaverődési irány környezetébe verik vissza. Ezt a jelenséget modellezhetjük bármely olyan függvénnyel, amely a visszaverődési irányban nagy értékű, és attól távolodva rohamosan csökken.

H N I R V ψ L 2.6. ábra. Spekuláris visszaverődés Phong a következőfüggvényt javasolta erre a célja: f r;phong ( ~ L; ~ V )=k s ( ~ R ~V ) n ( ~ N ~L) (2.14) ahol ~ R az ~ L vektor tükörképe a felületi normálisra. A k s faktor a Fresnel-együtthatóval arányos, de annál kisebb, hiszen a felület most nem ideális tükör. A k s faktort dielektrikumoknál tekinthetjük hullámhossz és beesési szög függetlennek (egy műanyagon, a fehér fény által létrehozott tükrös visszaverődés fehér). Az eredeti Phong-modell fizikailag nem plauzibilis, mert nem szimmetrikus. Ezért a fotorealisztikus képszintézisben ehelyett a következőváltozatokat használják [ICG86]: A modell albedoja csak közelítőleg számítható: f r;reciprocalphong ( ~ L; ~ V )=k s ( ~ R ~V ) n (2.15) a( ~ L) ß 2ß k s n +2 (~ L ~N) Az ilyen modell által visszavert radiancia nagy beesési szögekre zérushoz tart, ami nem felel meg a gyakorlati tapasztalatainknak. Ezt a hiányosságot küszöböli ki a következőváltozat [NNSK98]: A modell albedoja közelítőleg: f r;maxphong ( ~ L; ~ V )=k s ( ~ R ~V ) n max (( ~ N ~V ); ( ~ N ~L)) a( ~ L) ß 2ß k s n +2 Az energiamegmaradáshoz a következő feltételt kell garantálni [LW94]: (2.16) k s» n +2 2ß : (2.17) Ha a k s paramétert a Fresnel-együttható alapján határozzuk meg, akkor gondot jelent az, hogy milyen beesési szögre tekintsük annak az értékét. A felületi normális és a fényvektor szöge most nem megfelelő, egyrészt azért, mert ekkor a BRDF nem lesz szimmetrikus, másrészt azért, mert a felületi egyenetlenségek következtében egy pontban a tényleges normálvektor nem állandó, hanem valószínűségi változó. Ha a felületet kis, véletlenszerűen orientált ideális tükrök gyűjteményének tekintjük, akkor azon felületelemek, amelyek L-ből ~ V ~ irányba vernek vissza, a visszaverődési törvénynek megfelelően H ~ =( L ~ + V ~ )=2 normálvektorral rendelkeznek. A beesés szögének koszinuszát a ( H ~ ~L) skalárszorzatból számolhatjuk ki. BRDF mintavételezés spekuláris anyagokra A spekuláris anyagok a Phong BRDF modell reciprok alakjával jellemezhetők, vagyis f r (! in ;~x;! out )=k s cos n ψ ffl(ß=2 ); ahol ψ az! out és a felület normálisához viszonyított! in tükörirány amelyet! r -rel fogunk jelölni közötti szög, és az ffl(ß=2 ) azt jelenti, hogy a kimenőirány nem mutathat a testbe, vagyis a felület normálisa és a visszavert irány közti szögnek kisebbnek kell lennie 90 foknál.

2.7. ábra. Fresnel tagot tartalmazó max-phong BRDF-el számított kép: arany (n = 10), ezüst (n = 190) és réz (n = 100) teáskancsók N R sík merõleges az R -re V ψ φ felület referencia irány a síkon, amely merõleges az R -re 2.8. ábra. Parametrizálás az albedo számolásához

Az iránygömb megfelelő parametrizálásához az északi pólus az! r visszaverődési irány szerint választandó (2.8. ábra). Jelöljük ψ szöggel az! r iránytól való eltérést, és ffi-vel pedig ennek az iránynak az! r -ra merőleges síkra vett vetülete és ezen sík szabadon választott vektora közötti szöget. A BRDF mintavételezés olyan sűrűséget követel meg, amely megfelel a következő feltételnek: t i (ffi; ψ) / w i = k s cos n ψ cos (ψ;ffi) ffl(ß=2 (ψ;ffi)) sin ψ: Sajnos, a cos ffl(ß=2 ) faktor nem teszi lehetővé e formula szimbolikus integrálását, ezért olyan sűrűségfüggvényt fogunk alkalmazni, amely csak a ~w i = k s cos n ψ sin ψ kifejezéssel arányos. Az arányossági tényezőt a t i normalizálásával kapjuk meg: t i (ffi; ψ) = 2ß R R ß=2 ffi=0 ψ=0 k s cos n ψ sin ψ k s cos n ψ sin ψdψdffi = n +1 2ß cosn ψ sin ψ: Tételezzük fel, hogy a koordináta-minták előállítására használt valószínűségi változók függetlenek, azaz a sűrűségfüggvényt szorzat alakban írhatjuk fel: t i (ffi; ψ) = 1 2ß [(n + 1) cosn ψ sin ψ]; (2.18) ahol 1=(2ß) a ffi és a (n + 1) cos n ψ sin ψ a ψ valószínűség-sűrűségfüggvénye. A megfelelővalószínűség-sűrűségfüggvények a következők: P (ffi) = ffi 2ß ; P (ψ) = ψ 0 (n +1)cos n Ψ sin Ψ dψ =1 cos n+1 ψ: Következésképpen a keresett ffi és valószínűségi változók a következő, a [0; 1] intervallumon egyenletes eloszlású, u; v változók transzformációjával kereshetők meg: ffi =2ß u; ψ = arccos(1 v) 1=(n+1) : A transzformált súly a fontosság szerinti mintavételezés után: w Λ i = w i t i = 2ßk s cos (ψ;ffi) ffl(ß=2 (ψ;ffi)): (2.19) n +1 2.2.5. Cook-Torrance modell A Cook-Torrance modell a spekuláris visszaverődés fizikai alapú modellje, amely a felületet véletlen orientációjú, azonos S területű, ideális tükör jellegű mikrofelületek halmazának tekinti. A feltételezés szerint a mikrofelületek egyszeres viszszaverődése a spekuláris taghoz járul hozzá. A többszörös visszaverődés, illetve a fotonok elnyelése és későbbi emissziója viszont a diffúz (vagy más néven matt) tagot erősíti. Tekintsük az egyszeres visszaverődésekből származó spekuláris tagot. Az L ~ irányból a V ~ körüli d! V ~ térszögbe tartó egyszeres visszaverődéshez azok a mikrofelületek járulhatnak hozzá, amelyek normálvektora az L ~ és V ~ közötti H ~ felezővektor körüli d! H ~ térszögben vannak. Az egyszeres visszaverődéshez a mikrofelületet más felületek nem takarhatják, a visszavert foton nem ütközhet más felületekkel és a mikrofelület sem nyelheti el a fotont. Azon esemény tehát, hogy a felület a fotont közvetlenül a V ~ körüli d! V ~ térszögbe veri akövetkező események ÉS kapcsolatával fejezhető ki: 1. Orientáció: A foton útjába egy olyan mikrofelület kerül, amelynek a normálvektora a ~ H körüli d! ~ H térszögben van. 2. Nincs árnyékolás és maszkolás: A megfelelő orientációjú mikrofelületet nem takarják más felületek és a visszavert foton nem ütközik újabb mikrofelületekkel. 3. Visszaverődés: A fotont nem nyeli el az ideális tükör jellegű mikrofelület. Mivel a visszaverődés illetve az árnyékolás és maszkolás független események, ha az orientáció adott, a fenti összetett esemény valószínűsége a következő szorzatként írható fel: Prforientáció ^ nincs árnyékolás és maszkolás ^ visszaverődésg = Prfnincs árnyékolás és maszkolás j orientációg Prfvisszaverődésj orientáció g Prforientációg:

Ezek a tagok egyenként: Prforientációg P ~H = ( H) ~ 4( N ~ ~L) d! V ~ : Prfnincs árnyékolás és maszkolás j orientációg =minf2 ( ~ N ~H) ( ~ N ~V ) ( ~ V ~H) Prfvisszaverődésj orientáció g = F ( ; ~ H ~L): ; 2 ( N ~ ~H) ( N ~ ~L) ( L ~ ~H) ; 1g = G( N; ~ L; ~ V ~ ): Vegyük észre, hogy a 0 belépési szöget a H ~ ~L = cos fi szögre cseréltük fel, hiszen az L ~ irányból a V ~ irányba azon ideális tükör mikrofelületek verhetnek vissza, amelyek normál vektora éppen H. ~ Most már összegezhetjük az eredményeket és megadhatjuk a w( L; ~ V ~ )d! V ~ visszaverődési valószínűségsűrűség függvényt: G( ~ N; ~ L; ~ V ) F ( ; ~ H ~L) d! ~ V : (2.20) w( L; ~ V ~ )d! P V ~ = ~H ( H) ~ 4( N ~ ~L) A BRDF a visszaverődési sűrűségfüggvény osztva a kilépési szög koszinuszával ( N ~ ~V ), így azt kapjuk, hogy: f r ( ~ L; ~ V )= P ~ H ( ~ H) 4( N ~ ~L)( N ~ ~V G( N; ~ L; ~ V ~ ) F ( ; H ~ ~L): (2.21) ) A P ~ H ( ~ H) mikrofelület orientációs sűrűségfüggvényt több különbözőmegközelítéssel definiálhatjuk. Blinn [Bli77] a Gauss féle normális eloszlást javasolta a centrális határeloszlás tétel szellemében: P ~ H ( ~ H)=const e (ff=m)2 ; (2.22) ahol ff mikrofelület normálvektor ( H) ~ és a makrofelület normálvektora ( N)közötti ~ szög, m pedig a felület durvaságát kifejezőtényező. Később Torrance és Sparrow megmutatta, hogy a Beckmann [BS63] és Davies [Dav54] által kidolgozott, az elektromágneses hullámok durva felületek okozta szóródását leíró elmélet is használható és a Beckmann eloszl ással helyettesítette a normális eloszlást: P H ~ ( H)= ~ 1 2 ff m : (2.23) 2 m 2 cos 4 ff e tan Sajnos ez az eloszlás nem alkalmas fontosság szerinti mintavételre. Ezt a hiányosságot küszöböli ki a Ward féle változat: A megfelelő mintavételezési séma az alábbi: P ~ H ( ~ H)= 1 m 2 ß cos 3 ff e tan ff =arctan(m p log(1 u)); ffi =2ß v: 2 ff m 2 : (2.24) Cook-Torrance jellegű BRDF modellek fontosság szerinti mintavételezés A Cook-Torrance jellegű BRDF modellekben a ~ H felezővektort mintavételezzük először a megadott P ~ H ( ~ H) valószínűségsűrűség szerint, kiszámítjuk a cos fi = ~ V ~H skalárszorzatot, majd a kilépő ~ L irányt a belépő ~ V iránynak a ~ H felezővektorra történő tükrözésével kapjuk: ~L =2cosfi ~H ~ V: Figyelembe véve, hogy most nem közvetlenül a kilépő vektort mintavételezzük, ez a séma a kilépő vektort a következő valószínűségsűrűség szerint állítja elő: P ~ L (~ L)=P ~ H ( ~ H) d! ~H d! ~ L = P ~H ( ~ H) 4cosfi : A fontosság szerinti mintavételezés után az ~ L irányból érkező sugársűrűséget a f r ( ~ L; ~ V ) cos 0 P ~ L (~ L) = F ( ; cos fi) cos 0 cos fi taggal kell súlyozni.

2.9. ábra. Cook-Torrance BRDF-fel számított női alak, amelyet nagy környezeti fényforrás világít meg (derítés). A modell a (http:// www.3dcafe.com) címről származik 2.3. Fényforrások A fényforrások olyan felületek, ahol az L e saját sugárzás nem zérus. A képszintézis során absztrakt fényforrásokat is használhatunk, amelyek nem fordulhatnak elő a valós életben [SKe95]. Ezek legfontosabb típusai a következők: ffl a pont-fényforrás a 3D egy pontjában található, kiterjedése nincs. Egy másik pontban a sugárzási irány a pontot és a fényforrás helyét összekötő vektor. Az intenzitás a távolság négyzetével csökken. Az elektromos izzó jó közelítéssel ebbe a kategóriába sorolható. ffl az irány-fényforrás vagy más néven párhuzamos-fényforrás végtelen távol levő sík sugárzónak felel meg. Az irányfényforrás iránya és intenzitása minden pontban azonos. A nap irány-fényforrásnak tekinthető. ffl az ambiens-fényforrás minden pontban és minden irányban azonos intenzitású. Az ambiens-fényforrásokat a valódi globális illuminációs algoritmusokban nem engedünk meg. ffl az égbolt fény akár irányfüggő is lehet, és akkor jelentkezik, ha az adott irányban semmilyen tárgy sincsen. 2.4. Mérőműszerek A kameramodell megalkotásához vizsgáljuk meg, hogy hogyan reagál az emberi szem a monitorból és a valós világból érkező ingerekre. Az emberi szemben egy lencse, ún. pupilla található, amelynek mérete e (2.10. ábra). A továbbiakban feltételezzük, hogy a pupilla a monitorhoz ésatárgyakhoz képest kicsiny. Amikor a szem a monitortól kap ingereket, p pixelt Ω p térszögben látjuk. Annak érdekében, hogy a monitorból érkező gerjesztés a valós gerjesztéssel egyezzen meg, a pixel által kibocsátott és a pupillára érkező Φ p teljesítménynek a valós világból a Ω p térszögből a pupillára jutó Φ teljesítménynek kell megfelelnie. Amennyiben a pixel sugárzási intenzitása L p, a pixelből a pupillára jutó teljesítmény: Φ p = L p e cos e Ω p ; ahol e a pupilla felületi normálisa és a pixel iránya által bezárt szög. A kameramodellnek olyan P mért értéket kell előállítani, amelyet a rasztert árba írhatunk, és amellyel a monitort vezérelhetjük. A monitor válaszát egy B R(P) összefüggéssel jellemezhetjük, ahol B az aktuális fényerőbeállításoktól függő skálatényező, R pedig normalizált, de esetlegesen nem lineáris függvény. A monitor nem linearitását kompenzálhatjuk

e e ω θ Φ Ω p y e Ω p Φ p L p pixel p y - e valós világ szemlélése monitor szemlélése 2.10. ábra. Az emberi szem modellje úgy, hogy a look-up tábla segítségével a P értékeket előtorzítjuk ezen normalizált válasz inverzével, azaz R 1 -gyel. A torzítást gamma-korrekciónak nevezik. A gamma-korrekcióután a sugársűrűség: L p = B R(R 1 (P )) = B P: Mivel elvárásunk szerint Φ p =Φ, a kameramodellnek a következőmért értéket kell szolgáltatnia: P = R R 1 Lp B = L p B = Φ e cos e Ω p B : Rendeljünk egy mérőműszert ehhez a pixelhez. Műszerünk a pixelben azaz a Ω p térszögben látható pontokra és azokra az irányokra érzékeny, amelyek a látható pontokat a pupillával összekötik. Formálisan ez a következő érzékenységfüggvénnyel adható meg: W e (~y;!) = ( C; ha ~y láthatóaωp térszögben és! az ~y pontból a e pupillára mutat ; 0; egyébként, (2.25) ahol Aműszer a következőmért értéket mutatja: P = ML = C = Ω S 1 e cos e Ω p B : Kihasználva, hogy a pupilla e mérete kicsiny, a következőket kapjuk: P = Ωp L(~y;!) W e (~y;!) cos d~yd!: (2.26) L(h( eye; ~! p );! p ) 1 Ω p B d! p; (2.27) ahol eye ~ a kicsiny pupilla pozíciója,! p pedig az ~y pontot a szemmel összekötőirány. Vegyük észre, hogy a mért érték független mind a látható pont távolságától, mind pedig a látható felület orientációjától. Ez megfelel annak a tapasztalatnak, hogy egy objektumra (például a falra) ránézve ugyanolyan fényesnek érezzük akkor is, ha közelebb megyünk hozzá, vagy ha eltávolodunk tőle. A jelenséget azzal magyarázhatjuk, hogy amikor távolodunk a felülettől, bár az egységnyi felület által kibocsátott és a szembe jutó teljesítmény csökken a távolság négyzetével, az adott térszögben látható felület nagysága ugyanezen sebességgel nő. Hasonlóan, ha nem merőlegesen nézünk rá egy felületre, a sugársűrűséget az orientációs szög koszinuszával szorozni kell, viszont a látható terület tényleges mérete fordítottan arányos ezen szög koszinuszával. Az Ω p térszög azon irányokat tartalmazza, amelyek keresztülmennek a pixelen. A mért értéket adó integrál az S p területű pixelen is kiértékelhető (2.11. ábra). Legyen ~p a pixelen futó pont, p pedig a pixel felületi normálisa és a ~p eye ~ vektor által bezárt szög. Jelöljük pix -szel p értékét a pixel közepén. Mivel fenáll a j~p eyej ~ = f=cos p összefüggés, ahol f a fókusztávolság, azaz a szem és az ablak síkja közötti távolság, a következő összefüggést állíthatjuk fel: d! p = d~p cos p d~p cos 3 p = : (2.28) j~p eyej ~ 2 f 2

ablak Ω p θ p dω p p pixel Ω p θ dω p y eye eye f : fókusz távolság y - eye 2.11. ábra. A mért érték kiszámítása a pixelen végrehajtott integrálásként (bal) és a felületen végrehajtott integrálásként (jobb) Behelyettesítve a 2.27. egyenletbe, a mért érték az alábbi: Vezessük be a c(~p) kamera paramétert: Felhasználva, hogy 1 P = L(h(~p;! ~p );! ~p ) Ω p B cos 3 p d~p: f 2 S p Ω p = Ωp c(~p) = d! p = a kamera paraméter a következőmódon közelíthető: c(~p) = S p S p Ω p B cos cos 3 p f 2 S p cos 3 p B R cos 3 p d~p ß S p 3 p f 2 : (2.29) d~p ß S p cos 3 pix ; (2.30) f 2 cos 3 p Ezaközelítés akkor pontos, ha a pixel a fókusztávolsághoz képest kicsiny. számított integrállal kapjuk: P = S p ß 1 B cos pix 3 B : (2.31) Összefoglalva, a mért értéket egy pixelen L(h(~p;! ~p );! ~p ) c(~p) S p d~p: (2.32) A 2.27. egyenlet integrálját a felületeken is kiértékelhetjük. Az 2.11. ábra jelöléseivel azt kapjuk, hogy: d! p = d~y cos j~y eyej ~ 2 ahol ~y a pixelben látható felületi pont. Legyen azon pontok indikátor függvénye, amelyek a Ω p térszögben láthatók V Ω p (~y). Amért érték tehát: P = Vezessük be a felületi kamera paramétert: g(~y) = 1 Ω p B j~y ~ S L(~y;! ~y! eye ~ ) V Ω p (~y) 1 Ω p B cos j~y eyej ~ d~y: 2 eyej 2 = f 2 B j~y ~ cos 3 p d~p ß 2 f B j~y ~ S p eyej 2 R eyej 2 S p cos 3 pix (2.33) a 2.30. egyenlet felhasználásával, amely Ω p térszöget fejezi ki. A mért érték végső alakja a következő: P = S L(~y;! ~y! eye ~ ) V Ω p (~y) g(~y) cos d~y: (2.34) Ezen képletet a 2.26. egyenlettel összevetve az alábbi érzékenységfüggvényt kapjuk: W e (~y;!) = 8 < : ffi(!! ~y! eye ~ ) g(~y); 0; egyébként. ha ~y látható a pixelen keresztül; (2.35)

3. fejezet Színleképzés A fény elektromágneses hullám és a szín ezen hullám spektrális jellemzőinek hatása az emberi szemben. A szem nagyon gyenge spektrométer, a fotopigmentjei a beérkező energiát három, részben átlapolódósávban képesek mérni. Ennek következtében a monitoron nem szükséges a számított spektrumot reprodukálni, csupán olyat kell találni, amely a szemben ugyanolyan színérzetet ad. Ezt a lépést nevezzük sz ínleképzésnek (tone mapping). Idáig a fényt radiometriai jellemzőkkel írtuk el, amely azt különböző hullámhossztartományokban átvitt energianyalábként közelíti meg. Az emberi szem azonban nem egyenlő mértékben érzékeny a különböző hullámhosszokra, ezért a vizuális hatás kifejezése miatt a spektrumot a szem érzékenységi görbéjével súlyozni szokták. A súlyozott mértékeket fotometriai jellemzőknek nevezzük. 3.1. Spektrum-RGB transzformáció Ahelyett, hogy a spektrumfüggvényekkel kellene dolgoznunk [ Ábr97, Nem90], a színérzetet három skalárral jellemezhetjük, amelyeket tristimulus értékeknek is nevezzük. Másképpen, a színérzetek tere három dimenziós. Ebben a térben egy koordináta-rendszert felállíthatunk úgy, hogy három olyan hullámhosszot választunk, ahol mindig másik fotopigmens domináns [SK99b]. A törvényt formálisan Grassmann mondta ki, aki megadta a három hullámhossz szétválasztásának pontos kritériumait is. Nevezetesen a Grassmann törvény szerint a reprezentatív hullámhosszokat úgy kell kiválasztani, hogy a három közül semelyik hullámhossz okozta színérzetet ne lehessen kikeverni a másik kettő kombinációjaként. A reprezentatív hullámhosszok egy megfelelőválasztása az alábbi: red = 645 nm; green =526nm; blue =444nm: (3.1) Ezeket vörös, zöld és kék összetevőknek nevezzük. Tételezzük fel, hogy a szemünk hullámhosszú monokromatikus fényt érzékel. Az ekvivalens vörös, zöld és kék intenzitásokat azaz az (r, g, b) tristimulus értékeket három sz ínillesztő függvénnyel állíthatjuk elő (r( ), g( ) és b( )), amelyeket fiziológiai mérésekkel vettek fel (3.1. ábra). Vegyük észre, hogy az r( ) függvény (és kisebb mértékben a g( ) is) egyes hullámhossztartományokban negatív, azaz az adott monokromatikus fény keltette színérzet nem állítható elő vörös, zöld és kék fények pozítív keverékeként. Ha az érzékelt fény kromatikus (nem monokromatikus), hanem spektruma egy L( ) függvénnyel jellemezhető, a tristimulus koordinátákat azzal a feltételezéssel számíthatjuk ki, hogy a színérzet az elemi monokromatikus komponensek összege: r = L( ) r( ) d ; g = L( ) g( ) d ; b = L( ) b( ) d : (3.2) A számítógépes grafika célja az, hogy a virtuális világ képét a számítógépes monitoron néző felhasználó színérzete közelítőleg a valós világ szemlélésekor keletkező színérzettel egyezzen meg. Mivel színérzeteket (r, g, b) hármasokkal adunk meg, a fenti követelmény a monitor fénykibocsátásából számított illetve a valós világ fénye alapján meghatározott tristimulus értékek megegyezőségét jelenti. Ha két, akár nagyon különböző spektum hasonló tristimulus értékekre vezet, akkor a szem által megkülönböztethetetlenek. Ezeket a spektrumokat metamereknek nevezzük. A számítógépes monitorokban az elektronsugarak három különböző foszforvegyületet bombáznak, amelyek ennek hatására vörös, zöld és kék színű fényt bocsátanak ki. Az elektronsugarakat tehát úgy kell szabályozni, hogy a gerjesztett fény a valós fény metamerjét adja [Sch96, BS95]. A gerjesztést az egyes pixelek (R, G, B) értékeivel szabályozhatjuk, amelyeket a raszter-memória tárol. A 3.1. ábra (r, g, b) színillesztő függvényei függenek a három választott hullámhossztól (ezek a fenti ábrán rendre 645 nm, 526 nm és 444 nm). Előfordulhat, hogy a saját monitorunk más hullámhosszokon sugároz. Ekkor a pixel (R, G, B) értékeit egy járulékos lineáris transzformációval számíthatjuk ki. 19

3.5 3 R=645nm, G=526nm, B=444nm matching functions r(lambda) g(lambda) b(lambda) 2.5 2 r,g,b 1.5 1 0.5 0-0.5 400 450 500 550 600 650 700 lambda[nm] 3.1. ábra. Stiles és Burch 10-fokos látószögben felvett színillesztőfüggvényei: r( ), g( ), b( ). Összefoglalva, a pixel R; G; B értékeinek számítása a következőlépésekből áll. Először a pixelhez tartozó spektrumot határozzuk meg, majd a színillesztő függvények segítségével előállítjuk a három szabványos tristimulus koordinátát. Végül a tristimulus értékeket a monitor valódi színkoordinátáira transzformáljuk figyelembe véve a monitor tulajdonságait. A gyakorlatban a szabványos tristimulus értékeket CIE XY rendszerben adjuk meg [WS82], amelyek olyan három hipotetikus (nem monokromatikus) spektrum kombinálásával fejezik ki a színérzeteket, amelyekre bármely színérzet koordinátái nem negatívak. Az RGB rendszerben ugyanis negatív koordináták a negatív színillesztő függvények miatt minden további nélkül előfordulhatnak, az XY-ben viszont nem.az Y koordinátának speciális jelentése van, ez a szem spektr ális érzékenységi függvénye, tehát ez teremt kapcsolatot a radiometriai és fotometriai mennyiségek között. 3.5 3 X,Y, matching functions X(lambda) Y(lambda) (lambda) 2.5 2 X,Y, 1.5 1 0.5 0-0.5 400 450 500 550 600 650 700 lambda[nm] 3.2. ábra. Stiles és Burch 10 fokos látószögben felvett XY színillesztőfüggvényei: X( ), Y ( ), ( ) Az XY rendszerből a monitor RGB rendszerébe vivő transzformációt a monitor foszforrégetei által kisugárzott fény X; Y; koordinátáinak és a monitor fehér pontjának ismeretében adhatjuk meg. Szabványos NTSC foszfor rétegek és fehér pont esetén a következő transzformációadódik [Gla95]: 2 4 R G B 3 2 5 = 4 1:967 0:548 0:297 0:955 1:938 0:027 0:064 0:130 0:982 3 5 2 4 X Y 3 5 : (3.3)

A számított spektrumhoz tartozó (R, G, B) értékek meghatározását összefoglalóan sz ínleképzésnek nevezzük. A hardver által megengedett (R, G, B) értékek pozitívak, általában a [0...255] tartományba esnek. Nem állítható elő tehát valamennyi valós szín, egyrészt a színillesztő függvények negatív tartományai, másrészt pedig a korlátozott színdinamika miatt. A mai monitorok által létrehozható színek intenzitásainak aránya kb. a százas nagyságrendbe esik, míg az emberi szem akár 10 10 nagyságú tartományt is át tud fogni, úgy, hogy az egyszerre érzékelt fényesség ugyancsak a százas tartományban esik. A színleképzésnek követnie kell a szem adaptációs tulajdonságát és a számított színek alapján egy közelítő színt kell választania a rendelkezésre állókészletből [PP98]. 3.2. Az intenzitás értékek skálázása A következőkben összefoglaljuk a legfontosabb skálázási lehetőségeket [MNP99]. Jelöljük a számított színintenzitást I- vel, amely most a vörös, zöld és kék komponensek bármelyikét jelentheti, a rasztertárba írt és a monitor által ténylegesen megjelenített fizikai értéket pedig D-vel. A feladat tehát olyan I! D leképzést találni, amely a számított színeket hűen visszaadja, de figyelembe veszi a monitor illetve a hardver lehetőségeit és az emberi látórendszer tulajdonságait is. A legegyszerűbb leképzés a lineáris skálázás, amely a maximális számított színintenzitást a hardver által előállítható maximális színintenzitásra képezi le: D = D max I max I: A lineáris skálázás használhatatlan eredményt ad, ha a fényforrás is látszik a képen, hiszen a kép túlságosan sötét lesz. Ezen úgy segíthetünk, hogy az I max értéket a képen levő azon pixelek színértékeinek maximumaként keressük meg, amelyben nem fényforrás látszik. A látható fényforrás értékek színe ennek következtében D max -ot meghaladhatja, amikoris az színértéket D max -ra vágjuk. A közép érték leképzés az átlagos számított intenzitást (I ave )afizikai tartomány felére képezi le, majd a D max -nál nagyobbra adódó értékeket D max -ra vágja: D =minρ Dmax 2I ave I;D max ff : A leképzés során a [2I ave ;I max ] tartományba eső információ elveszik. Másrészt, ha az átlagos színintenzitás alacsony (például szénbánya), a kép túl világos lesz, míg ha az átlagos színintenzitás magas (például havas táj), a kép túl sötétté válik. Ezeket a problémákat a fényképezésben a blende és expozíciós idő beállításával oldják meg. A következő eljárás éppen ezt a módszert szimulálja. Az interaktív kalibráció a leképzést két szabad paraméterrel vezérli, amelyet kontrasztnak és apertúrának nevezünk. A c kontraszt a számított színértékek vágási tartományában a minimum és szélesség értékek arányát adja meg, tehát a túlcsordulás elkerülése végett minden színt az [s; s + s c] tartományra vágunk. Az a apertúrát log 2 -s skálán adjuk meg úgy, hogy 0 apertúra esetén a közép érték leképzéshez hasonlóan 2I ave a felsővágási értékre kerüljön: s (1 + c) =2I ave 2 a =) s = I ave 2 a+1 A vágás után az intenzitások a [s; s + s c]-ben lehetnek, ahonnan egy lineáris leképzéssel átvisszük őket a fizikailag ábrázolható [0;D max ]-ra: D = D max s c (I s) és a 0 alatti illetve D max feletti értékeket 0-val illetve D max -szal cseréljük ki. Ebben a módszerben a kontrasztot és az apertúrát a felhasználónak kell beállítania. A kontrasztot a képernyő paraméterek alapján célszerű kiválasztani (c = 50::100). Az apertúra automatikusan is megkereshető ha minimális információ veszteségre törekszünk. A minimális információ veszteség módszer az intenzitások vágási tartományát úgy állítja be, hogy a vágott színek száma (vagy akár a vágott színeket tartalmazó pixelek száma) minimális legyen. Vegyünk fel egy log-log típusú hisztogramot az intenzitásokról és rögzített c kontraszt érték mellett keressük meg azt az s intervallum kezdetet, amelyre a [s; s + s c] intervallum a legtöbb hisztogram bejegyzést tartalmazza. A Ward skálázó faktora az emberi látórendszer vizsgálatán alapul és figyelembe veszi, hogy mielőtt a felhasználó a monitorra pillantana, a szeme milyen fényességhez szokott. A szem által érzékelt fényességet a fotometriai f ényerő (luminancia) fejezi ki, amelynek mértékegysége a kandela [cd]. A fotometriai fényerőt a fény spektrumának és az érzékenységi függvény szorzatának az integrálja adja meg. A javasolt leképzés: D = D max I d;max» 1:219 + Id;max =2 1:219 + I 0:4 w 1+c 2:5 I; :

ahol I d;max maximális képernyő luminancia, I w pedig az a luminancia, amihez a szem hozzászokott. A monitort figyelő felhasználónál az adaptációs luminancia a képernyőn látható értékek átlaga. A RenderPark program ezt a színleképzést alkalmazza. Ismert tény, hogy az emberi érzékelés nem lineáris, hanem logaritmikus, ami nem lineáris skálázásnak is létjogosultságot ad. Az egyik legegyszerűbb nem-lineáris modell a Schlick lek épzés: D = D max p I p I I + I max ; ahol p egy alkalmasan választott paraméter. Legyen G a legsötétebb nem fekete szürke szín, N pedig a fizikai eszköz által megjeleníthető intenzitások száma (tipikusan 255). Ekkor az ismeretlen p paraméter: p = G I max G I min N I min G I min :

4. fejezet A globális illuminációs feladat megoldásának lehetőségei Mivel az árnyalási- és potenciál egyenlet az ismeretlen radianciát illetve a potenciált az integrálon belül és kívül is egyaránt tartalmazza, ezért a megoldásnál ezt a csatolást kell feloldani. Ebben a projektben a megvalósított módszerek két osztályba sorolhatók: expanzió és iteráció. 4.1. Expanzió Az expanzió oly módon küszöböli ki a csatolást, hogy a megoldást Neumann-sor formájában írja fel. 4.1.1. Az árnyalási egyenlet expanziója: a gyűjtőséta Helyettesítsük be a jobb oldali L függvénybe az L e +T L alakú teljes jobb oldalt, ami az egyenlet szerint nyilván egyenlő L-lel: L = L e + T L = L e + T (L e + T L) =L e + T L e + T 2 L: Ugyanezt ismételjük meg n-szer: L = nx i=0 T i L e + T n+1 L: Ha az integráloperator T kontrakció, akkor lim n!1 T n+1 L =0,ezért L = 1X i=0 T i L e : (4.1) Amért fényteljesítmény pedig: ML = 1X i=0 MT i L e : (4.2) x 2 θ 2 ω 2 p L(x, ω ) ω p p θ 1 ω 1 x 3 x 1 4.1. ábra. A T 2 L e integrandusa egy két lépéses gyüjtőséta során 23

Avégtelen sor egyes tagjainak intuitív jelentése van: T 0 L e = L e afényforrások direkt hozzájárulása a mért fényteljesítményhez, T 1 L e az egyszeres visszaverődésekből származik, T 2 L e akétszeres visszaverődésekből, stb. 4.1.2. Az potenciál egyenlet expanziója: a lövőséta A potenciál egyenlet szintén felírható Neumann-sor segítségével, hasonlóan az árnyalási egyenlethez: ami a következőmért értékhez vezet W = M 0 W = 1X i=0 1X i=0 T 0i W e ; (4.3) M 0 T 0i W e : (4.4) M 0 W e aközvetett emisszióból a kamera által mért teljesítmény, M 0 T 0 W e az egyszeres visszaverődés utáni teljesítmény, M 0 T 02 W e akétszeres visszaverődés utáni teljesítmény, stb. y 2 p ω2 Φ(dy 1, d ω1 ) y 1 ω p θ3 θ 2 ω 1 θ 1 y 3 4.2. ábra. Az T 02 W e integrandusa egy két lépéses lövőséta során 4.1.3. Az expanzió előnyei és hátrányai Az expanzió fő problémája, hogy nagyon magas dimenziójú integrálok kiértékelését teszik szükségessé, amelyek a végtelen sor egyes tagjai. A gyakorlati megvalósítás során gyakorta csonkítják a végtelen Neumann-sort, ami némi torzítást eredményez, vagy a sétát véletlenszerűen fejezik be, amely jelentősen csökkenti a magasabb fokú többszöri sugár-visszaverődés mintapontjainak számát. Másrészt az expanziónak van egy fontos előnye is, nevezetesen, nem igényli a teljes radiancia függvény ideiglenes ábrázolását, ezért nem kívánja meg a véges-elem megközelítést. Ebből következően ezek az algoritmusok a tér eredeti geometriájával dolgozhatnak a felületek háromszöglistával történőközelítése helyett. Az expanzió a véletlen sétákat egymástól függetlenül állítja elő. Ez egyrészt előny jelent, mivel így ezek az algoritmusok könnyen párhuzamosíthatók. Sajnos, ez egyúttal azt is jelenti hogy ezek az módszerek elfelejtik a megelőző séták alatt felhalmozott információkat, így nem hasznosítják a korábbi lépések részeredményeit. 4.2. Iteráció Az iterációs eljárások arra a felismerésre építenek, hogy az árnyalási egyenlet megoldása a következő iterációs séma fixpontja L m = L e + T L m 1 : Valóban, ha ez a séma konvergens, akkor lim L m = lim n!1 n!1 L m 1 = L 1, azaz L 1 kielégíti az árnyalási egyenletet. A mért sugársűrűséget határértékként kaphatjuk meg: ML = lim m!1 ML m: Az iteráció a teljes sugársűrűségfüggényt használja, így annak ideiglenes változatát tárolni kell. Egy folytonos függvényt véges-elem módszerrel adhatunk meg közelítőleg véges mennyiségű adat felhasználásával. Közelítsük tehát a

sugársűrűség függvényt véges függvénysor alakban: L(~x;!) ß L (n) (~x;!) = nx j=1 L j b j (~x;!) =b T (~x;!) L; ahol b j (~x;!)-k előre definiált bázisfüggvények, L j -k pedig ismeretlen együtthatók. A függvénysoros közelítést az árnyalási egyenletbe helyettesítve a következőkhöz jutunk: nx j=1 L j (m) b j (~x;!) ß nx j=1 L e j b j (~x;!)+t nx j=1 L j (m 1) b j (~x;!) = nx j=1 L e j b j (~x;!)+ nx j=1 L j (m 1) T b j (~x;!): (4.5) Vegyük észre, hogy tényleges egyenlőség általában nem áll fenn, hiszen még ha P n j=1 L j b j (~x;!) abázisfüggvények alterében van is, a T integráloperátor kivisz ebből az altérből. Az egyenlőséget ezért csak egy megfelelő altérben követeljük meg, amelyet a ~ b 1 (~x); ~ b 2 (~x);::: ~ b n (~x) adjungált bázisfügvények feszítenek ki. Szorozzuk meg tehát az iterációs képletet külön-külön minden egyes ~ b i adjungált bázisfüggvénnyel, ami egy lineáris egyenletrendszer iterációs megoldására vezet: L i (m) =L e i + n X j=1ht b j ; ~ b i i L j (m 1): (4.6) A lineáris egyenletrendszer mátrixos alakban is kifejezhető: L(m) =L e + R L(m 1); R ij = ht b j ; ~ b i i: (4.7) A szükséges műveletek száma egyetlen lépés műveletigényének és a konvergenciához szükséges lépések számának a szorzata. Egyetlen lépés egy n dimenziós vektor (n a felületelemek száma) és egy n n dimenziós mátrix szorzását jelenti, amely O(n 2 ) műveletet igényel. Aszükséges lépések meghatározásához abból indulhatunk ki, hogy az iteráció geometriai sor szerint konvergál, azaz a hiba m lépés után O(a m ) nagyságrendű, ahol a = krk az operátor normája, lényegében a művelet kontrakciója. A hibát adott szint alá szorító lépések száma tehát független n-től. Javított iterációs technikák, mint a Gauss-Seidel iteráció, túl-relaxáció, Southwell-iteráció egyrészt felgyorsíthatják az iterációs folyamatot, másrészt csökkenthetik annak memóriaigényét, de a négyzetes bonyolultságot nem változtatják meg [SKM95]. 4.2.1. Miért kell Monte-Carlo iterációt használni? Az iterációban két kritikus problémával találkozhatunk. Egyrészt mivel az L n értelmezési tartománya 4 dimenziós és variációja legtöbbször magas, ezért a pontos véges-elem közelítés nagyon sok bázisfüggvényt igényel. Bár a hierarchikus módszerek [HSA91, AH93], hullám vagy wavelet reprezentáció [CSSD96, SGCH94] és a klaszterezés [SDS95, CLSS97, SPS98] segíthet, de a memória szükséglet még mindig óriási összetett terek esetén. Ez a probléma kevésbé okoz gondot diffúz esetben, mivel itt a radiancia értelmezési tartománya csak 2 dimenziós. A másik probléma, hogy amikor véges-elem módszereket alkalmazunk, akkor a T integráloperátort csak közelítőleg számoljuk, ami újabb hibát okoz minden lépés során. Ha az integráloperátor kontrakciós tényezője, akkor a teljes halmozott hiba megközelítőleg 1=(1 )-szerese az egyes lépések hibáinak [SKFNC97]. Erősen visszaverő tereknél tehát, ha megközelítőleg 1 az iteráció nagyon lassú és az eredmény pontatlan. Összehasonlítva az expanzióval, az iteráció mind előnnyel mind pedig hátránnyal rendelkezik. Fontos tulajdonsága, hogy potenciálisan képes az előző lépésekben megszerzett információt újrahasznosítani, és kihasználni a radiancia függvény koherenciáját, ezért az iteráció várhatóan gyorsabb, mint az expanzió. Az iterációt egy végtelen hosszúságú véletlen bolyongásként is értelmezhetjük. Ha megfelelően alkalmazzuk, akkor az iteráció nem csökkenti a becsült értékek számát többszörös visszaverődésekre, ezért az erősen fényvisszaverő terek esetén jóval hatékonyabb, mint az expanzió. Az iteráció azon két tulajdonsága, miszerint tesszellációt és véges-elem közelítést követel meg, általánosan e módszer hátrányai közé sorolható. Az éles árnyékok és világos részek nagyon spekuláris anyagoknál nem tökéletes megjelenítést okozhatnak, és fénylyukak keletkezhetnek. Ennek ellenére a véges elem közelítés a vizualizáció során szűrésnek is megfelel, amely vizuálisan kellemesebb és pont-zaj nélküli képeket eredményez. Összefoglalva, az iteráció jobb választás, ha atér nem nagyon spekuláris. A determinisztikus iterációnak két alapvető hiányossága van. Egyrészről, mivel a sugársűrűség függvény 4 változós és gyorsan változó, a pontos véges elemes közelítéshez nagyon sok bázisfüggvény és együttható szükséges, ami viszont igen sok memóriát igényel. Másrészről, amikor véges-elem módszert használunk, a fényátadás operátort csupán közelítjük, ami minden egyes iterációs lépésben valamekkora számítási hibát okoz. Ezek a hibák az iteráció során elviselhetetlen mértékűre duzzadhatnak fel. Mindkét hiányosságot kiküszöbölhetjük az iteráció randomizálásával, amelyet sztochasztikus iter ációnak nevezünk. Az alapötlet az, hogy T fényátadás operátor determinisztikus közelítése helyett egy lényegesen egyszerűbb véletlen operátort használunk az iteráció során, amely átlagos esetben a valódi operátorhoz hasonlóan működik.

4.2.2. A sztochasztikus iteráció formális definíciója Legyen T Λ véletlen operátor, amelynek hatása várható értékben megegyezik az eredeti fényátadás operátoréval: E[T Λ L]=T L (4.8) bármilyen Riemann integrálható L függvényre. A sztochasztikus iteráció ilyen véletlen operátorok T Λ 1 ; T Λ;:::;T Λ 2 i ;:::sorozatával cseréli fel a fényátadás operátort az iterációs szekvencia során L m = L e + Tm Λ L m 1: (4.9) Természetesen ekkor sem az L m sugársűrűség függvény sem pedig a belőle számított ML m képbecslő nem konvergál, hanem a kívánt határérték körül fluktuál. Ha viszont képezzük a becslések átlagát, az átlag már konvergens lesz és a határérték megfelelő: 4.2.3. A véletlen operátor definíciója ML = mx 1 lim m!1 m i=1 ML i : Egy megfelelővéletlen operátornak több feltételt kell kielégítenie. Az 4.8. egyenlet kielégítésén túl, ilyen feltételek még akönnyűszámíthatóság és a T Λ L függvények egyszerűtárolhatósága. Ezen utóbbi követelmény abból következik, hogy i a sugársűrűség függvény 4 változós, így a teljes megadása igen sok változót igényelne. Célunk tehát, hogy ne kelljen ezen függvényt teljes értelmezési tartományban leírni. Válasszuk a véletlen operátort úgy, hogy a sugársűrűség függvényt csak egyetlen véletlen mintavételezési pontban használja fel. Az operátor randomizálása tehát ezen pont véletlen választásával történik. A véletlen operátor alkalmazása egy pontból egy újabb folytonos függvényt állíthat elő, amit a következő lépésben megint egyetlen pontban mintavételezünk. A folytonos függvény tárolását megtakaríthatjuk, ha a véletlen operátor alkalmazását késleltetjük mindaddig, amíg a következő lépésben a mintavételezési pont ismertté nem válik. Ekkor a fényátadás operátort minden lépésben kétszer, de csak egyetlen pontra kell számítani. Egyrészt számítjuk az aktuális mintavételezési pontban felvett értéket az előző mintavételezési pont értékéből ([T Λ (p i )L(p i )](p i+1 )). Másrészt, meghatározzuk a kamerabecsléshez szükséges értéket a p eye kamerapontban az előző pontból ([T Λ (p i )L(p i )](p eye )). Összefoglalva az iterációs algoritmus: P =0 Find p 1 randomly L(p 1)=L e (p 1) for i =1to M do P new = L e (p eye) +[T Λ (p i)l(pi)](peye) P = MP new 1=i +(1 1=i) P Find p i+1 randomly L(p i+1) =L e (p i+1) +[T Λ (p i)l(pi)](pi+1) endfor Display final image // initialize the measured value to zero // select the randomization point of the first iteration // measure the radiance // average the measured value // select the randomization point of the next iteration // a single step of stochastic iteration

5. fejezet Vélelen bolyongáson alapuló algoritmusok Ebben a fejezetben a megvalósítandó képszintézis algoritmusokat mutatjuk be. A véletlen bolyongáson alapuló algoritmusokat aszerint osztályozhatjuk, hogy azok az árnyalási egyenletet megoldógyűjtősétákat tesznek, vagy pedig a potenciál egyenletet megoldólövősétákat követnek. 5.1. Véletlen bolyongáson alapuló gyűjtőséták: inverz fénykövetés A véletlen bolyongáson alapuló gyűjtőséták az árnyalási egyenlet Monte-Carlo módszerrel történő megoldásának felelnek meg. A kamerából indulnak, és összegyűjtik a meglátogatott pontok emisszióját. szem ablak 5.1. ábra. Véletlen bolyongáson alapuló gyűjtőséták Agyűjtőséták általános formája a következő: for each pixel p do color = 0 for i = 1 to N do ray = sample ray randomly from the eye through pixel p samplecolor = c Trace( ray ) color += samplecolor=n endfor Pixel(p, color) endfor A különböző algoritmusok a Trace függvényt különbözőképpen implementálják. Ez a függvény a sugár által a szembe bevitt radianciát határozza meg. A radianciát ezután a c = (c=s p ) S p értékkel szorozzuk meg, ahol a c=s p skálázás a mérőfüggvény (2.31 egyenlet) miatt szükséges, S p pedig az integrálási tartomány nagysága. A Kajiya [Kaj86] által javasolt inverz fényútkövetés (path tracing) egy Monte-Carlo megközelítés, amely a Neumannsor elemeit több-dimenziós integrálformulaként értelmezi. A szempozícióból indulunk, akár a sugárkövetésnél, de most minden egyes metszéspontnál véletlenszerűen választjuk ki a továbbhaladási irányt, mégpedig olyan t i valószínűség-sűrűségfüggvény szerint, ami arányos a BRDF és a kilépő 27

normál sugár árnyék sugár, amely fényforrást talál árnyék sugár, amely nem talál fényforrást szem szem ablak ablak 5.2. ábra. Inverz fénykövetés: direkt fényforrás számolással (bal oldal) és anélkül (jobb oldal) szög koszinuszának a szorzatával. Minden lépés után az orosz rulett szabályai szerint, az albedónak megfelelő a i = w i =t i valószínűséggel folytatjuk a bolyongást. Egy fényút hatása a kamerában: P = c (L e 1 + Le 2 w 1 t 1 a 1 + L e 3 w 2 t 2 a 2 w 1 t 1 a 1 + :::) ahol L e i ameglátogatott pont emissziója az út i. lépésében w i a visszaverődési sűrűségfüggvénye ebben a pontban, és c amérőműszer skálázó faktora. Ha ideális BRDF mintavételezést használunk, akkor w i a t i -vel arányos és mind a w i =t i, mind pedig az a i az albedóval egyenlő, ami a következő becslést adja: P = c (L e 1 + Le 2 + Le 3 + :::): Ennek a becslésnek nagyon nagy a szórása, ha a fényforrások kicsik. Ez a probléma megoldható, ha a gyűjtősétát a fényforrás mintavételezésével kombináljuk, ami azt jelenti, hogy minden meglátogatott pontban a fényforrás hatását véletlenszerűen megbecsüljük. A inverz fénykövetés Trace függvényének pszeudo-kódja: Trace(ray) (object, ~x) = FirstIntersect(ray) if no intersection then return L sky color = L e (~x, -ray.direction )+ DirectLightsource(~x, -ray.direction ) prob = BRDFSampling(-ray.direction, normal, newray) if prob = 0 then return color color += Trace( newray ) w(newray.direction, normal, -ray.direction) / prob return color end Ebben az algoritmusban az L sky aháttér megvilágítás intenzitása (pl. égbolt), a FirstIntersect függvény a sugár által elsőként metszett testet és a metszési pontot adja vissza. A DirectLightsource függvény a fényforrások fényének egyszeri visszaverődését becsüli meg, és kiszámítja ennek hatását az ~x pontban adott irányban. Például, ha a tér l darab pontforrást tartalmaz az ~y 1 ;:::~y l helyeken és Φ 1 ;:::;Φ l teljesítményekkel, akkor ezek visszaverődése az ~x pontban: L ref (~x;!) = lx i=1 Φ l 4ßj~y i ~xj 2 v(~y i;~x) f r (! ~yi!~x;~x;!) cos 0 i; (5.1) ahol 0 i az! ~y i!~x és a felület normálisa közti szög, és az árnyék sugarakkal számított v(~y i ;~x) akét pont kölcsönös láthatóságát jelzi. A felületi fényforrások L e (~y;!) emissziójának kezelése céljából Monte-Carlo integrált használhatunk, amely N egyenletesen elosztott ~y i mintát választ az A felszínűfényforrás felületén, ésakövetkező becslést alkalmazza: L ref (~x;!) ß A N NX i=1 L e (~y i ;! ~yi!~x) v(~y i ;~x) f r (! ~yi!~x;~x;!) cos 0 i cos ~yi j~x ~y i j 2 : (5.2) Ebben a programban a BRDFSampling vagy új irányt talál vagy nullával tér vissza, ha az orosz rulett miatt a bolyongást be kell fejezni. Vegyük észre, hogy ez az algoritmus az utolsó irány előállításán kívül BRDF mintavételezést használ, míg az utolsó irány a fényforrás mintavételezéséből adódik. Ha a felület a fény visszaverődésénél fényes (közel

5.3. ábra. Inverz fénykövetéssel számított kép: arany Beethoven (n = 4) rézgömbbel (n = 40) rézpiramissal (n = 150) ezüsttálcán (n = 5000) van az ideális tükörhöz vagy ideális törő anyaghoz), akkor a BRDF mintavételezés kritikus lehet. Mivel a fényforráshoz közeli ideális felületek okozzák a kausztikus optikai jelenségeket, ezért az inverz fénykövetés mint más gyűjtőséták rosszak a kausztikus effektusok megjelenítésében.

5.2. Véletlen bolyongáson alapuló lövőséták: Fénykövetés A lövőséták a potenciál egyenletet Monte-Carlo módszerrel oldják meg. A fényforrásból indulnak, és a téren végighaladva a szemet próbálják megtalálni. szem ablak 5.4. ábra. Véletlen bolyongáson alapuló lövőséta Alövőséták általános formája a következő: Clear Image for i = 1 to N do ray = Sample randomly from a lightsource with selection probability p e power = L e cos =p e =N Shoot( ray, power ) endfor A különböző lövőséta algoritmusok a Shoot függvényt különbözőképpen implementálják. Ez a függvény a teljes út által a szembe bevitt energiát határozza meg, valamint azt a pixelt, amelyen keresztül az út a szembe érkezik. A fénykövetésben (light-tracing) [DLW93] a fotonok véletlenszerűen bolyonganak a térben a fényforrások pontjaiból kiindulva. A fénysugár az indítása után ide-oda verődik a térben. Minden visszaverődési pontot összekötünk a szempozícióval, és ellenőrizzük, hogy lehet-e ennek hatása valamely pixelre. Ha lehet, akkor a pixel színéhez hozzáadjuk a visszaverődés hatását. foton út szemhozzájárulás út takarás miatt nincs hozzájárulás szem ablak 5.5. ábra. Fénykövetés Afénykövetés a Monte-Carlo integrálás direkt implementációja a potenciál egyenlet több-dimenziós alakjának megoldásában. A következő irány meghatározása során a BRDF alapú fontosság szerinti mintavételezés használható az orosz rulettel kombinálva. A véletlen irányt a w i -vel megközelítőleg arányos t i sűrűség szerint választjuk ki (fontosság szerinti mintavételezés). A bolyongás az albedót közelítő a i valószínűséggel folytatódik (orosz rulett). Az út egy lépésének mért

értéke: P = Le cos N p e w 1 t 1 a 1 w 2 t 2 a 2 ::: w(eye) g; ha ez a látható a pixelben, egyébként 0. Itt az L e a kezdőpont emissziója, az első irány és a fényforrás felületi normálja közti szög, p e ennek a fényforrás pontnak és a kezdeti iránynak a kiválasztási valószínűsége, w(eye) az adott pont BRDF-je az utolsóirányból a szembe, és g a felületi kamera paraméter (a 5.6. ábra jelöléseivel): g(~y) ß B j~y ~ ahol S p a pixel területe, B pedig a megjelenítéshez használt skálázótényező. f 2 eyej 2 S p cos 3 pix (5.3) ablak Ω p θ p dω p p pixel Ω p θ dω p y eye eye f : fókusz távolság y - eye 5.6. ábra. A kameraparaméter számítása Ha egyidejűleg ideális BRDF mintavételezést használunk azaz w i arányos a t i -vel és mind az w i =t i és mind az a i az albedóval egyenlő, valamint ideális fényforrás-mintavételezést azaz p e arányos az L e cos -val, ezért L e cos =N p e =Φ=N, akkor a következő becslést kapjuk: P = Φ N w(eye) g: Ennek a becslésnek nagy a szórása, ha a kamera rejtett, mivel ha a pont nem látható a kamerából, a fényút hozzájárulása nulla. A fénykövetés Shoot függvénye: Shoot(ray, power) (object, ~x) = FirstIntersect(ray) if no intersection then return if ~x is visible from pixel p then color[p] += power w(ray.direction, ~x, eye direction ) g(~x) endif prob = BRDFSampling(-ray.direction, normal, newray ) if prob = 0 then return newpower = power * w( -ray.direction, normal, newray.direction ) / prob Shoot( newray, newpower ) return end Ez az algoritmus szintén BRDF mintavételezést használ az utolsó lépés kivételével. Az utolsó látható sugár iránya viszont messze eshet a BRDF által előnyben részesített iránytól. Ez csökkenti a fontosság szerinti mintavételezés hatékonyságát, ha a látható felület nagyon spekuláris, azaz ideálishoz közeli. A látható tükrök vagy törő felületek (üveg) tehát nehézségeket jelentenek.

5.3. Kétirányú fényútkövetés A kétirányú fényútkövetés (bi-directional path-tracing) [LW93, VG95] az inverz fényútkövetés és a fénykövetés kombinációja, amely hatékonyan tudja kezelni a kis fényforrásokat és a kis látószögű kamerákat is. Ez a módszer egyszerre indít egy gyűjtősétát és egy lövősétát, majd a két séta végpontjait összeköti. Néhány lépés után vagy egy egyszerű determinisztikus árnyéksugarat alkalmazhatunk a két fajta séta összekapcsolására [VG95], vagy a gyűjtőséta minden pontját összekötjük a lövőséta minden pontjával [LW93]. Ha a determinisztikus árnyék sugár azt észleli, hogy a két pont nem látja egymást, akkor ennek a sétának a hozzájárulása nulla. Tudvalevőleg, a gyűjtő- és lövőséták eltérő integrálváltozókat használnak. A gyűjtőséta a pixel területén lévő ponttal és a bejövő irányok sorozatával adott, míg a lövőséta a fényforráson lévő ponttal és a kimenő irányokkal definiált. Ebből adódóan, amikor a két sétát összekötjük, megfelelő változó transzformációkat kell alkalmazni. d ω 1 θ 1 θ d ω 2 dy r 1 θ out θ in r 2 da d ω 2 5.7. ábra. Összefüggés a bejövő és kimenő irányok térszögei között Először vizsgáljuk meg az egyszeri visszaverődésű bolyongást (5.7. kép). A térszög definíciója szerint a következőt kapjuk: d! 0 1 d! 2 = da cos out=r 2 1 da cos in =r 2 2 A fényforrás felületi integráljának behelyettesítése szerint viszont Ezekből már adódik a transzformációs szabály d! 0 2 cos 0 1 cos in d! 0 1d! 0 2 = cos 0 1 cos out r 2 1 = r2 2 cos out r1 2 : (5.4) cos in d~y cos = r2 2 : (5.5) cos d! 2 d~y; ami azt jelenti, hogy amikor a lövősétát a gyűjtősétára konvertáljuk, akkor a radianciát meg kell szorozni a következő értékkel: cos 0 1 cos out r1 2 : ablak gyüjtõ út θ 1 x 1 x 2 θ 2 θ θ 3 3 θ θ 2 4 y 3 y 2 lövõ út θ 1 y 1 determinisztikus lépés 5.8. ábra. Kétirányú fényútkövetés egy determinisztikus lépéssel

Amikor a lövőséta több mint 1 lépésből áll, akkor a 5.4. képletet minden lépésre alkalmazni kell, de a 5.5. formulát csak az utolsó lépésre. Ez a konverzió kicseréli a bejövő irányokat a kimenő irányokkal, és az egymást követő lépések rk+1 2 =r2 k skálázási tényezői kiegyenlítik egymást. Végeredményként lássuk a teljes képletet, ami hasonló az 1-lépéses esethez: cos 0 k cos 0 k+1 :::cos 0 n d! 0 k :::d! 0 n = cos 0 k cos n k+1 r 2 k cos n k :::cos 1 d! n k :::d! 1 d~y: A 5.8. ábra k =2és n =4értékekre mutat egy példát. Összefoglalva a korábbi fejezetek szabályait alkalmazhatjuk a lövő- és gyűjtőséták előállítására a gyűjtőséta a bejövő szög koszinuszát használja, míg a lövősőta a kimenő szög koszinuszát és a kombinált bolyongást a következőképlettel alakíthatjuk át egyszerűgyűjtősétára: cos k 0 cos n k+1 rk 2 : Formálisan, ha a lövőséta és a gyűjtőséta végpontjai láthatók egymásból, akkor az egyszerű út mért értéke P = Le cos N p e w s 1 t s 1 a s 1 w s 2 t s 2 a s 2 ::: f s r cos s cos 0g r 2 f g r ::: w g 2 t g 2 a g 2 w g 1 t g 1 a g 1 c ahol az s és g felső indexek a lövő- és gyűjtőséta lépéseire vonatkoznak. Ha ideális BRDF mintavételezést használunk, akkor a becslés: P = Φ N f s r cos s cos 0g r 2 f g r c: ablak y2 x1 lövõ út árnyék sugarak x2 fényforrás x0 y0 gyüjtõ út y1 5.9. ábra. Kétirányú fényútkövetés többszörös determinisztikus lépésekkel A kétirányú fényútkövetés Lafortune féle változatában [LW93] nemcsak a lövő- és gyűjtőséták végpontjait kell öszszekötni, hanem az összes meglátogatott pontot (5.9. ábra). A kétirányú fényútkövetésben egy n hosszúságú teljes utat többféleképpen is előállíthatunk. Például az i hosszúságú gyűjtősétát minden i =0;:::;n-re kombinálhatjuk az n i hosszúságú lövősétával. Ez viszont annak veszélyét hordozza magában, hogy egy utat többször is beleszámítunk a képbe. Ennek a kiküszöbölésére az eredményt a különböző utak súlyozott összegeivel becsüljük, a többszörös fontosság szerinti mintavételezés szellemében. A többszörös determinisztikus lépés tovább növeli a lehetséges kombinációk számát (5.10. ábra), hiszen ekkor egy kétirányú fénykövetés egyszerre állít elő egy-hosszú, két-hosszú,... n-hosszú utakat, ráadásul egy i-hosszú útból akár többet is (például egy két-hosszú út előállhat egy gyűjtő lépés és egy determinisztikus lépés kombinációjaként, de egy lövőlépés és egy determinisztikus lépés eredményeként is). 5.3.1. Többszörös fontosság szerinti mintavételezés Akétirányú fénykövetés tehát egy-egy mintát többféleképpen is előállít. Más oldalról úgy is tekinthetjük, mint többféle módszert, amelyek ugyanazt a feladatot oldják meg. Természetesen, ha a módszerek eredményeit egyszerűen összeadnánk, akkor helytelen (a valóságosnál nagyobb) eredményhez jutnánk. Ehelyett az egyes módszerek eredményeit súlyozva kell összegezni, mégpedig úgy, R hogy a súlyok összege 1 legyen. Tételezzük fel, hogy a f (z) dz integrál számítása során n különböző mintavételező technikát használunk fel a z [0;1] s véletlen minták generálására, ahol a minták eloszlása a különböző p 1 ;:::;p n fontosság szerinti mintavételező eloszlásokból áll össze.

5.10. ábra. Többszörös determinisztikus lépés esetén előállított fényutak Az egyes technikák külön-külön f (z)=p 1 (z);f(z)=p 2 (z);:::f(z)=p n (z) értékűre becsülnék az megfelelő integrált. A tényleges becslést tehát egy súlyozott összeggel kapjuk meg: [0;1] s f (z) dz ß nx i=1 w i (z) f (z) p i (z) : A torzítatlan becsléshez minden z vektorra érvényesnek kell lennie, hogy P i w i(z) =1. Természetesen ez még óriási szabadságot ad a súlyok megválasztására. Nyilván olyan súlyokat érdemes alkalmazni, amelyek a kombinált becslő szórását minimalizálják. Az optimalizálási feladatot sajnos csak közelítően lehet elvégezni, ami alapján több heurisztikus súlyozás is lehetséges. 5.3.2. Egyensúly heurisztika Az egyensúly heurisztika a súlyokat úgy állítja be, hogy azok arányosak legyenek azzal a valószínűséggel, hogy egy módszer milyen valószínűséggel (pontosabban valószínűségsűrűséggel) állítja elő az adott mintát. Ez intuitive is elfogadható. Ha például két módszert kombinálunk, ahol az egyik módszer nagy valószínűséggel választ ki, tehát kevés próbálkozással is pontosan használ egy mintát, míg a másik kis valószínűséggel választja ki, azaz sok próbálkozással is pontatlanul használja ugyanazt, akkor az első módszer becslésében jobban bízhatunk. Ekkor a súlyok a következőképpen alakulnak: w i (z) = p i (z) P n k=1 p k(z) : (5.6) Voltaképpen ez az eljárás annak felel meg, mintha az egyes módszerek ^p(z) = nx i=1 1 n p i(z) (5.7) átlagos valószínűségi sűrűségével dolgoznánk. Visszatérve a kétirányú fénykövetés Veach féle változatához, egy k hosszú gyűjtősétát és egy n k hosszú lövősétát kombinálva tehát egy n hosszú utat építünk fel. Az útnak ezzel a technikával történő előállítási valószínűsége a függetlenség miatt a k hosszúgyűjtőséta p g (k) és az n k hosszúlövőséta p s (n k) valószínűségeinek szorzata, azaz p k = p g (k) p s (n k): Ugyanezt az utat, gondolatban a determinisztikus lépést máshová helyezve, még n más módszerrel is elő lehet állítani, mégpedig p i = p g (i) p s (n i); i =0:::n valószínűséggel. Éppen ezeket a valószínűségeket kell a súlyok képletébe behelyettesíteni. Amennyiben nem csak a végpontokat kötjük össze, egyetlen lépésben több egy hosszú, két hosszú, stb. mintákat is előállítunk, amelyeket ugyancsak kombinálni kell egymással. Válasszuk szét a különböző hosszúságú fényutakat becslő mintákat, és ezeket külön kombináljuk, majd a minták számával elosztjuk a becslést.

5.11. ábra. Kétirányú fénykövetéssel, a maximum heurisztika felhasználásával készült kép. 5.3.3. Maximum heurisztika A maximum heurisztika azon módszer eredményét használja, amelyhez a legnagyobb mintavételi valószínűség tartozik, a többi eredményt figyelmen kívül hagyja. Tehát, ha egy út metszületik, akkor ellenőrizni kell, hogy ha ugyanebben az útban a determinisztikus lépés másutt lenne, akkor az út valószínűsége nagyobb lenne-e. Ha más helyen fellépő determinisztikus lépés nagyobb valószínűségű, akkor az adott minta súlya zérus. Ha viszont éppen ilyen determinisztikus lépésnél maximális a minta valószínűsége, akkor a minta súlya egységnyi. A maximum heurisztika első látásra rosszabbnak tűnik az egyensúly heurisztikánál, ugyanis az eredmények jelentős részét eldobja. Kétségtelen, egyszeres determinisztikus lépéseket alkalmazva, az egyensúly heurisztika ajánlott. Többszörös determinisztikus lépéseknél azonban, a maximum heurisztika alkalmazása kecsegtet több sikerrel, ugyanis azt a valószínűséget, hogy egy módszer milyen valószínűséggel állít elő egy eredményt az eredmény tényleges kiszámítása nélkül is megkaphatjuk. Gondoljunk arra, hogy a szállított radiancia számításához el kell dönteni, hogy a determinisztikus sugár beleütközik-e takaró objektumba. A valószínűségek számításához, viszont erre az információra nincs szükség, tehát a módszer választásnál nem kell a determinisztikus sugár láthatóságával foglalkozni, és végül csak arra a sugárra számítunk metszéspontot, amelyet a maximum heurisztika győztesnek hozott ki.

5.4. Metropolis fényterjedés A véletlen bolyongásos metódusok általában a fénysugár útjait egymástól függetlenül állítják elő. Ha egy bonyolult utat megtalálunk, akkor azt a felhasználása után rögtön eldobjuk, ami nem látszik hatékony megoldásnak. Erre gyógyírként a Metropolis eljárás szolgálhat, amely az előző út perturbációjával állítja elő az újabb mintákat, ezért a bonyolultabb fényviszonyok esetén is jó hatásfokkal alkalmazható. A Metropolis módszer [MRR + 53] olyan mintákat generál, melyek valószínűségsűrűség függvénye aszimptotikus értelemben arányos az adott fontossági függvénnyel. Tételezzük fel, hogy ez a I fontossági függvény a fény luminanciája, melyet a fényút a pixelen keresztül a szembe juttat. Ez a választás azzal indokolható, hogy a szem különösen érzékeny a luminancia változására, és a különböző pixelek egyenlő fontossággal bírnak a képben. szem perturbáció szem perturbáció ablak ablak 5.12. ábra. Utak generálása mutációval a Metropolis fényterjedésben Ahhoz, hogy a mintákat a p(z) =I(z)=b szerint generáljuk, egy olyan Markov láncot építünk fel, melynek a stacionárius eloszlása éppen ez (itt z afényutat jelöli). A b skalár a fontossági függvény integrálját jelenti az egész értelmezési tartományon, melyet az előfeldolgozófázisban becsülhetünk. A Metropolis algoritmus egy fényút magból indul és ebből perturbációval állítja elő a fényutak sorozatát. Veach és Guibas kétirányú fényútkövetést [VG97] javasolt a kiinduló mag megtalálásához, habár bármelyik véletlen bolyongásos algoritmus felhasználható erre a célra. Egy új z i+1. útnak a z i útból történőelőállítása két lépésből áll. Először a T (z i! z t ) kísérleti átvivőfüggvény z t kísérleti utat hoz létre a z i. út egy kisebb mutációval. A mutációazirányok megváltoztatását illetve újabb lépések hozzáadását vagy törlését jelentheti. Ezután a kísérleti utat véletlenszerűen vagy elfogadjuk vagy elutasítjuk a a(z i! z t ) = min ρ ff I(zt ) T (z t! z i ) I(z i ) T (z i! z ; t ) 1 elfogadó valószínűséggel, amely a fontosság növekedését fejezi ki. A mutáció definíciója majdnem tetszőleges, az egyetlen követelmény, hogy a Markov folyamatot ergodikussá tegye. Az ergodikus folyamatnak van határeloszlása és ez az eloszlás független a folyamat kezdeti állapotától. A gyakorlatban ez azt jelenti, hogy bármely pozitív energiájú út bármely más útból létrehozható bizonyos számú perturbáció után. Ezért a mutációk szükségképpen megváltoztathatják a fényút összes tulajdonságát, beleértve az irányokat (vagy a meglátogatott pontokat), kezdeti pontot, hosszat, stb. Ezen felül, hogy ne ragadjunk egy olyan tartományban, amely nulla fontosságú területekkel van körülvéve, a kísérleti átvivőfüggvénynek elég nagy lépéseket kell tennie ahhoz, hogy átugorja ezeket a nulla fontosságú területeket. Veach [VG97] például egy teljesen új út generálását javasolta, amikor a kísérleti út hozzájárulása nulla. Összefoglalva, a Metropolis fényterjedés algoritmusa a következő: Generate an initial ray-path z 1 using random walk, e.g. bi-directional path tracing for i =1to N do Based on the actual ray-path, find another, tentative path zt mutating zi with T (zi! zt) if I(zt) =0then Generate a completely new path zi+1 from scratch using random walk a(zi! zt) =(I(zt) T (zt! zi))=(i(zi) T (zi! zt)) Generate uniformly distributed random number r in [0; 1] if r<a(zi! zt) then zi+1 = zt else zi+1 = zi Compute the contribution of the ray-path zi+1 to the affected pixel Multiply this contribution by b=(i(zi+1) N) and accumulate to the pixel endfor // accept with probability a(zi! zt) Veach and Guibas [VG97] észrevette, hogy a Metropolis algoritmust módosítani kell, ha azt a globális illuminációs feladat megoldására akarjuk használni. Egyrészt meg kell oldani azt a problémát, hogy a globális illuminációs feladatban

egyszerre nagyon sok, lényegében minden pixelre egy különálló, integrált kell kiértékelni. Gondot jelent továbbá afelme- legedési hiba (start-up bias), ami abból adódik, hogy a Markov folyamat csupán konvergál az aszimptotikus eloszlásához, eleinte nagyon távol lehet onnan. Végül ki kell térni a zérus fontosságú régiók kérdésére és az eldobott minták esetleges hasznosítására is. Tekintsük ezeket a problémákat egyenként. A globális illuminációs feladat megoldása a képernyő minden egyes pixelén egy integrál kiszámítását igényli. Egyetlen pixelre ez az integrál egy skalárszorzat, amelyben pixel W (z) mérési függvénye és a pixelben látható felületek L(z) sugársűrűsége szerepel: Φ= V W (z) L(z) dz: A sugársűrűség független a pixeltől, így ez a tag minden integrálban közös. Ezt a tényt kihasználhatjuk, ha az I fontosságfüggvényt csak az L(z) sugársűrűséggel próbáljuk meg arányossá tenni. Ekkor az előző egyenlet a j. pixelre a következő alakot veszi fel: Φ j = P W j (z) L(z) I(z) I(z) dz ß b M MX i=1 W j (z) L(z i) I(z i ) : A Metropolis mintavételezési eljárás adaptíve konvergál a kívánt eloszláshoz. Ez azt is jelenti, hogy a folyamat kezdetén a mintákat nem a kívánt eloszlás szerint állítja elő, ami az integrálbecslés torzításához vezet. Ezt a hiba a felmelegedési hiba (start-up bias) [SKDP99]. Veach a következő megoldást javasolta erre a problémára: Az előfeldolgozási időben véletlen mintákat állítunk elő egy szokványos eljárással, például kétirányú fénykövetéssel, majd a Metropolis eljárás kiindulási magját ebből a populációból választjuk, mégpedig a fontossággal arányos valószínűséggel. Mivel ekkor már az első magot is a megfelelő eloszlásból vesszük a felmelegedési hiba látszólag eltűnik. Ez az állítás azonban csak statisztikai értelemben igaz, tehát akkor, ha sok Metropolis eljárást indítunk és az eredményüket átlagoljuk, ez pedig nyilván nem járható út. Akövetkező kritikus pont a zérus fontosságúrészek kezelése. A globális illuminációs feladatban gyakorta előfordul, hogy a fényutak terében egyes régiók jelentős hozzájárulású utakat tartalmaznak, de a régiók közötti fényutak hozzájárulása zérus. Gondoljunk csak két szobára, az egyikben van a kamera, a másikban a fényforrás, és a két szoba között kis lyukak vannak. Mindazon fényútak, amelyek nem bújnak át valamelyik lyukon, zérus teljesítményűek. A Metropolis eljárás ezeket a mintákat tehát mindig visszautasítja. Ha a mutációs méret nem elegendően nagy ahhoz, hogy egyetlen lyukon átmenő fényútból egy másik lyukon átmenő utat csináljon, a Markov folyamat nem lesz ergódikus, azaz a folyamat képtelen lesz az teljes fontos fényútteret feltérképezni. A Metropolis fényterjedés eredeti algoritmusa ezt úgy oldja meg, hogy ha egy út hozzájárulása zérus, akkor a következő kísérleti utat az előkészített mintákból az aktuális állapottól függetlenül veszi elő. Végül, meg kell jegyeznünk, hogy a visszautasított minták ugyancsak hasznos információt hordoznak a megvilágítási viszonyokat illetően, így ezek eldobása pazarló. Vegyük figyelembe, hogy a kírésleti mintát a valószígűséggel fogadjuk el, míg az eredeti mintát 1 a valószínűséggel tartjuk meg. Cseréljük fel ezt a véletlen változót a várható értékével (ez egy jól bevált szóráscsökkentési eljárás), és mind az eredeti, mind pedig a kísérleti mintát építsük be az integrálformulába. Természetesen a kísérleti minta hozamát a-val, az eredetiét 1 a-val kell súlyozni. Összefoglalva a módosított Metropolis algoritmus pszeudo kódja az alábbi: Generate path seeds Approximate b = R I dz from the seeds Find z 1 from the seeds using I(zi) for i =1to M do Based on zi, choose a tentative point zt using T (zi! zt) a(zi! zt) =minn I(z o t) T (zt!zi) (I(zi) T ; (zi!zt) 1 Select pixel j to which zi contributes Φ j += b M Wj(zi) L(z i) I(zi) (1 a(zi! zt)) Select pixel k to which zt contributes Φ k += b M W k(zi) L(z i) I(zi) a(zi! zt)) // Generate random number r in [0; 1]. if r<a(zi! zt) then zi+1 = zt else zi+1 = zi endfor accept with probability a(zi! zt) A program még ezekkel a javításokkal sem lesz tökéletes. A Metropolis módszer egyik kulcseleme a kísérleti átmeneti függvény, amelyet nem lehet úgy definiálni, hogy az minden esetre hatékonyan legyen. A kis, de nem zérus hozzájárulási

fényútrégiók ugyancsak problémákat vethetnek fel. Ezeket nagyon kis valószínűséggel fogadjuk el, így ezeken a Metropolis módszer csak nagyon kis valószínűséggel haladhat át, ami növeli a módszer szórását. A felmelegedési probléma eddig javasolt megoldása és a visszautasított minták felhasználása sem elég hatékony. A következő fejezetekben áttekintjük ezeket a problémákat, és javaslatot teszük olyan mutációs stratégiára, amely megoldja ezeket. 5.4.1. Korrelált minták Más Monte-Carlo algoritmussal szemben a Metropolis eljárás nem független, hanem korrelált mintákat állít elő. A Monte- Carlo módszerek statisztikailag független mintái miatt mondhatjuk azt, hogy ha az F (z)=p(z) elsődleges becslő p sztandard eltérése ff primary, akkor M minta beépítése után a Monte-Carlo kvadratúra sztandard deviációja ff primary = M lesz (a sztandard deviáció jól kifejezi az integrálási hibát). Mivel a Metropolis módszer korrelált mintákkal dolgozik a hibabecsléshez a nagy számok egy speciális törvényét, a Bernstein tételt [Rén62] kell alkalmazni, amely szerint az integrálási becslés sztandard eltérése az alábbi s P M 1+2 k=1 ff primary R(k) (5.8) M ahol ff primary az elsődleges becslő sztandard eltérése R(k) pedig a F (z i )=p(z i ) és F (z i+k )=p(z i+k ) minták közötti korreláció egy tetszőleges felső becslése. A Metropolis fényterjedés speciális körülményeit figyelembe véve Ashikhmin [APSS01] a következő speciális képletet állította fel: s bqi 2R(1) ff» 1+ (5.9) M p(1 p) R(1) ahol Q a pixelek száma, I ezzel a pixellel kapcsolatos fényutak átlagos fontossága, p annak valószínűsége, hogy a generált fényút éppen ezen a pixelen keresztül megy, R(1) pedig azon valószínűségi változók közötti korreláció, hogy két egymás utáni út ugyanahhoz a pixelhez járul hozzá. A fenti képlet szerint az erős korreláció jelentősen növeli az integrálbecslés hibáját. Gondoljuk végig, hogy mit jelent ez a mutációs stratégiák szempontjából. Ha a mutációk kicsik, akkor a következő út erősen függ az aktuálistól, tehát a korreláció erős. Érdekes módon, a nagy mutációk ugyancsak a korreláció erősödéséhez vezethetnek (5.13. ábra). Tegyük fel, hogy a folyamat az integrandus egyik csúcsának közelében van (ami gyakran előfordul). Innen, a nagy perturbációval előállított minták fontossága az eredetinél lényegesen kisebb, tehát a kísérleti mintákat nagy valószínűséggel visszautasítjuk. Az integrandus csúcsának közelében levő pont sokáig jottányit sem változik, amely a korrelációt növekedését eredményezi. visszautasított elfogadott kis perturbációk nagy perturbációk 5.13. ábra. Mind a nagy mind pedig a kis mutációk a korreláció növekedéséhez vezethetnek Ezek alapján egy állandó mutációs stratégia nem vezethez hatékony algoritmushoz. Az eredeti Metropolis fénykövetés [VG97] különböző stratégiák véletlen kombinációját javasolja. Egy-egy elemi stratégia kialakítása azonban körülményes, és sok paraméter hangolását igényli. Ráadásul, csak olyan stratégiák fogadhatók el, amelyekre a kísérleti átmeneti függvény mindkét irányból meghatározható, amely komoly matematikai problémákat és implementációs nehézségeket vet fel. Ha egy véletlenül választott mutáció nem tud elfogadható mintát előállítani, a Metropolis eljárás eldobja, a következő lépésben pedig remélhetőleg más mutációs stratégiát választ a véletlen módszer. A rosszul választott elemi stratégiák azonban növelik a számítási időt és csökkenti a megoldás pontosságát. 5.4.2. Válasszunk megfelelő teret a mutációkhoz! Az előző fejezet tanulságai a következőkérdést vetik fel: lehetséges-e a mutációs stratégiát úgy adaptálni, hogy ha az integrandus csúcsaihoz közeledünk, akkor a mutációk automatikusan kisebbek legyenek. Első pillanatra a válasz nemleges,

hiszen a kísérleti átmeneti valószínűségeket mindkét irányból számítanunk kell, ami ebben az esetben feltételezi, hogy az integrandust explicite ismerjük, ez pedig nem áll fenn. Azonban, ha az integrálási tartományt úgy transzformáljuk, hogy a transzformált térben az integrandus sokkal laposabb legyen (a púpjai elsimuljanak), akkor a visszautasítások számát jelentősen csökkenthetjük. Ez a transzformáció azokat a régiókat tágítja, ahol az integrandus nagy, és azokat sűríti, ahol az integrandus kicsi. Ha a transzformált térben állandó nagyságú perturbációkat használunk, az eredeti fényúttérben ez nagy perturbációnak fog megfelelni, ha a hozzájárulás kicsiny, és finom perturbációnak, ha a hozzájárulás nagy. Ráadásul a transzformáció semmibe sem kerül, ha afényutakat a szokványos fontosság szerinti (BRDF mintavételezési, fényforrás mintavételezési és orosz rulett) eljárás szerint építjük fel és a pszeudo-véletlen számok terét tekintjük transzformált térnek. Emlékezzünk vissza, hogy fontosság szerinti mintavételezés során az egység intervallumba eső véletlen számokból indulunk ki, és ezeket transzformáljuk annak érdekében, hogy irányokat, pontokat megállási feltételeket, stb. kapjunk. Azokat a véletlen számokat, amelyek egy teljes utat meghatároznak, egy nagy-dimenziós egységkocka egyetlen pontjának tekinthetjük. Nevezzük el ezt a kockát elsődleges mintavételi térnek. A fontosság szerinti mintavéletelezés azt jelenti, hogy ezen kocka az egyenletes eloszlású pontjait úgy képezzük le fényutakra, hogy a fontos fényútrégiókba nagyobb kockarész jusson. Éppen erre van szükségünk. Ha tehát a perturbációs stratégia az elsődleges mintavételi térben dolgozik, a fényútak terében a perturbáció éppen az integrandus nagyságához adaptálódik. Egyetlen pixel színe, a fényutak terében (P) kiértékelt integrál: Φ= P W (z) L(z) dz Annak érdekében, hogy a z fényútmintákat az egységkocka pontjaiból felépíthessük, a P fényútteret leképezzük az U egységkockára az u = T (z) transzformáció segítségével. A pixelhozzájárulás a következő: ahol Φ= U W (T 1 (u)) L(T 1 (u)) fi fififi fi dt 1 (u) fi fi du fi = 1 t(u) fi fi fi fi fi fi fi dt 1 (u) du fi du; az inverz leképzés Jacobi determinánsa. A Jacobi determináns a lokális tágítást és sűrítést fejezi ki a két tér között. Eszerint t(u) a minta pontok sűrűséget adja meg a z = T 1 (u) környezetében. Ha u egyenletes eloszlású valószínűségi változó, a z = T 1 (u) valószínűségsűrűsége éppen t(u) lesz. Ha fontosság szerinti mintavételezést használunk, a Jacobi determináns közelítőleg az integrandus pixelfüggetlen részével arányos, azaz L sugársűrűséggel. A mintavételezés tehát oda tesz sűrűbben mintapontokat, ahol L nagy és az eredeti integrandust a fi fi fi L Λ (u) =L(T 1 (u)) fi dt 1 (u) du fi = L(T 1 (u)) t(u) formára transzformálja, amely lényegesen laposabb. A fontosságfüggvény ugyancsak laposabb lesz: fi fi fi I Λ (u) = I(T 1 (u)) : t(u) Annak érdekében, hogy bemutassuk, hogy hogyan működik ez az eljárás a gyakorlatban, vegyünk egy példát (5.14. ábra). ablak gyüjtõ út 1,2 3,4,5 x 1 x 2 6 determinisztikus lépés 11 y 2 7,8, 9,10 lövõ út y1 5.14. ábra. Egy példa

Tételezzük fel, hogy kétirányú fénykövetést használunk a fényutak előállítására. Az első két pszeudo-véletlen szám legyen u 1 ;u 2, amellyel az ablakon egy véletlen pontot definiálunk és egy sugarat indítunk ezen ponton keresztül a térbe. A sugár az ~x 1 pontban találja meg a látható felületet. Az ~x 1 pontban egy újabb u 3 változóval egy elemi BRDF modell választunk azokból, amelyek az anyagmodellt ebben a pontban leírják, illetve eldöntjük, hogy folytatjuk-e a fényutat, vagy sem, az orosz rulett elveinek megfelelően. Tegyük fel, hogy úgy döntöttünk, hogy a fényutat folytatjuk, és ezért két újabb változóval (u 4 ;u 5 ) mintavételezzük a folytatás irányát, mégpedig olyan sűrűségfüggvény alkalmazásával, amely közelítőleg arányos a kiválasztott elemi BRDF-fel. Az előállított irány a ~x 1 kezdőponttal egy új sugarat hoz létre, amelyet követünk az elsőlátható pontig, amely legyen ~x 2. Itt ismét döntünk a folytatásról egy újabb, u 6,valószínűségi változó segítségével. Tegyük fel, hogy most az u 6 véletlen szám és az albedo úgy aránylik egymáshoz, hogy az ~x 2 pontban az orosz rulett a séta befejezését írja elő. A kétirányból épített út lövő részének konstruálásához a fényforráson egy véletlen pontot és innen egy véletlen irányt választunk. Az ~y 1 pont előállításához az u 7 ;u 8 véletlen számok, az irány mintavételezéséhez az u 9 ;u 10 számok szükségesek. A pont és az irány együttesen egy újabb sugarat definiál, amelyet követve egy újabb ~y 2 ponthoz jutunk. Itt a befejezésről az u 11 véletlen szám segítségével döntünk. Tegyük fel, hogy az utat tényleg befejezzük, és végül a gyüjtő- és lövősétákat összekötjük. Ha a két végpontot nem takarja el egymás elől valamelyik objektum, akkor a következő fényutat alkottuk meg: z = (~y 1 ;~y 2 ;~x 2 ;~x 1 ; eye). ~ Ezt az utat az u = (u 1 ;:::;u 11 ) véletlen vektor egyértelműen definiálja. A z = T 1 (u) transzformációt a kétirányú fénykövetés, BRDF mintavételezés, orosz-rulett és fényforrás mintavételezés együttesen határozza meg. ablak fényutak tere elsõdleges mintavételi tér 5.15. ábra. A véletlen vektor és a fényút közötti kapcsolat Perturbáljuk meg most az u =(u 1 ;:::;u 11 ) véletlen vektort. Az u 3 ;u 6 és u 11 paramétereket arra használtuk, hogy az alfényutak befejezéséről döntsünk. Ha ezen értékek perturbációja befelér a lokális albedok által megengedett sávba, akkor a perturbált értékek is hasonló döntésekre vezetnek, tehát a fényút struktúrája nem változik (például, az új út is 5 pontot fog összekötni). Amennyiben a perturbált értékek átlépik az albedohatárokat, az út hátralévő részét esetleg törölni kell, illetve az út építését tovább kell folytatni. A többi paraméter perturbációja az irányokat módosítja a fényúton belül. 5.4.3. Nagy lépések A Markov folyamat ergodicitását biztosítandó, a folyamatnak minden nem zérus fontosságú fényutat pozitív valószínűséggel kell előállítania. Ezt biztosíthatjuk, ha a mintavételi eljárásban nagy, azaz független lépéseket iktatunk be, amelyek bármely pontot javasolhatnak, az aktuális állapottól függetlenül. A nagy lépéseknek több előnyük is van. Mivel minden fényutat pozitív valószínűséggel generálnak, a nagy lépések garantálják a folyamat ergodicitását. Ha a nagy lépést a Metropolis módszer elfogadja, akkor lényegében egy újabb magból újraindítjuk a mintavételezést, ami nagymértékben csökkenti a felmelegedési hibát. Végül, az a valószínűségsűrűség, amellyel a nagy lépések az egyes fényutakat előállítják, ismertek, ami lehetővé teszi, hogy a kísérleti mintákat a többszörös fontosság szerinti mintavételezést alkalmazva közel optimálisan hasznosítsuk. 5.4.4. Mutációs stratégiákavégtelen dimenziós egységkockában: lusta kiértékelés Mindezidáig, figyelmen kívül hagytuk azt a tényt, hogy az elsődleges mintavételi tér, azaz a véletlen számok kockája, végtelen dimenziós, tehát egy pontját nem adhatjuk meg véges adat felhasználásával. Szerencsére, erre nincs is szükség,

ha lusta kiértékelési módszert használunk. Emlékezzünk vissza, hogy az egységkocka egyetlen pontja egyértelműen meghatározza a fényutat a kétirányú fénykövetés, BRDF mintavételezés, orosz-rulett és fényforrás mintavételezés szabályai szerint. A megoldás tehát az, ha csak azokat a koordinátákat tároljuk és perturbáljuk, amelyek az idáig leghosszabb út előállításához kellettek. Amennyiben kiderülne, hogy a jelenlegi út a korábbi leghosszabbnál is hosszabb és ezért újabb koordinátákra van szükségünk, ezen újabb koordinátákra most, lustán az utolsó pillanatig elodázva, végigkövetjük a korábbi élettörténetüket. Addig kell az időben visszamennünk, amikor ezt a koordinátát utoljára perturbáltuk, vagy ha még sohasem használtuk, az utolsó elfogadott nagy lépésig, mivel a nagy lépések minden koordinátát véletlenül, az előző értéktől függetlenül állítanak elő (ilyen értelemben a nagy lépések azok a kritikus pontok, amelyeken túl már nem kell emlékeznünk). Ha a koordinátát még sohasem használtuk, a kezdeti értékét véletlenszerűen állítjuk be, mintha az már a nagy lépésnél megtörtént volna. Az élettörténetet lejátszuk, azaz a koordinátát annyiszor perturbáljuk, ahány elfogadott perturbáció történt az utolsó művelet óta. Csak az elfogadott mutációk számítanak, hiszen a visszautasított mutációk nem befolyásolják a jövőt. u n elhalasztott (lusta) mutációk u k utoljára az u n elfogadott mutációk ismételten az u n 5.16. ábra. A koordináták lusta kiértékelése Az eljárás implementációja néhány változóval lehetséges. Vegyünk fel egy succ mutation számlálót, amely a globális időt mutatja, azaz az elfogadott mutációkat számlálja! Rendeljünk minden követett koordinátához egy last modify időbélyeget, amely azt a globális időt tárolja, amikor ezt a koordinátát utoljára módosítottuk. Az utolsó elfogadott nagy lépés idejét a large step time változóban tartjuk nyilván. Amikor egy új koordinátára van szükségünk, először ellenőrizzük, hogy használtuk-e valaha ezt a koordinátát. Amennyiben nem, a koordinátát egy véletlen értékkel inicializáljuk, és az időbélyegét a large step time idejére állítjuk. Ha a koordinátát már valaha használtuk, a koordináta értéke a koordináta last modify-kori állapotát tükrözi. Mindkét esetben a koordinátát succ mutation last modify számúszor perturbáljuk. 5.4.5. A visszautasított minták felhasználása Az eredeti Metropolis fénykövetés a visszautasított mintákat oly módon hasznosítja, hogy az elfogadásnak megfelelő véletlen változót a várható értékével helyettesíti. Ez azt jelenti, hogy nem csak az elfogadott mintát építi be az integrálképletbe, hanem mind az aktuális mintát mind pedig a kísérleti mintát attól függetlenül, hogy azt végül elfogadjuk-e vagy sem. Az aktuális és a kísérleti minták hozzájárulását viszont súlyozza a visszautasítási illetve az elfogadási valószínűségekkel. A nagy lépésekkel azonban ennél jobbat is tudunk, és felhasználhatjuk a többszörös fontosság szerinti mintavételezés közel optimális módszerét. Atöbbszörös fontosság szerinti mintavételezés szerint, ha két mintavételi módszerünk van, ahol az első M 1 darab u mintát generál p 1 (u) valószínűségsűrűség szerint, míg amásodik M 2 mintát p 2 (u) valószínűségsűrűség szerint, akkor a kvázi-optimális kombináció az első módszer F (u)=p 1 (u) mintáit súllyal, mígamásodik módszer F (u)=p 2 (u) mintáit M 1 p 1 (u) w 1 (u) = M 1 p 1 (u) +M 2 p 2 (u) w 2 (u) = M 2 p 2 (u) M 1 p 1 (u) +M 2 p 2 (u) : súllyal veszi figyelembe. A Metropolis módszer kísérleti minták sorozatát állítja elő, de azok némelyikét eldobja és a korábbi mintát tartja meg és használja fel az integrálközelítő képletben. Várható érték helyettesítést használva, mind az aktuális mintát mind pedig a kísérleti mintát beépítjük az integrálképletbe attól függetlenül, hogy azt végül elfogadjuk-e vagy sem, miután súlyoztuk őket a visszautasítási illetve az elfogadási valószínűségekkel. A kísérleti minták egy további felhasználásához jutunk, ha úgy tekintjük őket, mint egy különálló mintavételi folyamat eredményei, amelyeket a többszörös fontosság szerinti mintavétel szerint kombinálhatunk a Metropolis módszerrel. A kombináció akkor lehetséges,

ha ki tudjuk számítani, hogy egy mintát a két módszer milyen valószínűséggel állítana elő. Ez általában egyáltalán nem könnyű, azonban a nagy lépések független mintáira szerencsére lehetséges. A Metropolis módszer a mintákat a fontossággal arányos valószínűséggel állítja elő: p 1 (u) = I(u) : b A nagy lépésekben egyenletes valószínűségeloszlást használunk: p 2 (u) =1: Ha a nagy lépések választási valószínűsége p large, akkor a második módszer mintaszáma az elsőmódszer mintaszámának és p large -nak a szorzata, így M 2 =M 1 = p large. Végül figyelembe kell vennünk, hogy a várható érték helyettesítés miatt a Metropolis módszer új mintáit a-val, a régi mintákat pedig 1 a-val súlyozzuk. Ezeket összerakva a kísérleti Metropolis minta súlya: Az aktuális Metropolis minta súlya: A nagy lépések súlya: w new a I(u)=b 1 (u) = : I(u)=b + p large w old (1 a) I(u)=b 1 (u) = : I(u)=b + p large w 2 (u) = p large I(u)=b + p large : Tehát, ha nagy lépést teszünk, a kísérleti minta súlyát a két módszer közösen alakítja ki: w new 1 (u) F (u) p 1 (u) + w 2(u) F (u) p 1 (u) = a +1 I(u)=b + p large F (u): A normál, kis lépések, csak a Metropolis módszerből származhatnak, ezért itt a súly: w new 1 (u) F (u) p 1 (u) = a F (u): I(u)=b + p large 5.4.6. A Metropolis módszer teljesítményvizsgálata A javasolt algoritmus képességeinek bemutatására egy Budhát ábrázoló teret választottunk, és a képet különböző nagy lépés valószínűségekkel számítottuk ki (5.17. ábra). Vegyük észre, hogy ha a nagy lépés valószínűsége kicsiny (p large = 0:02), a korrelált hiba okozta hullámok tönkreteszik a képet. Ez a jelenség még 0.1 nagy lépés valószínűségnél is észrevehető, a fölött azonban, a nagy lépéseknek köszönhetően eltűnik. Másrészről, ha a nagy lépés valószínűsége nagyon nagy (például 0.9 vagy 0.98), akkor a mintavételi folyamat nem tud finoman perturbálni, így ponthibák tűnnek fel a képen. Ebből és más kísérletek alapján azt állítjuk, hogy a nagy lépések optimális valószínűsége 0.5 körül van. Az 5.17. ábra a többszörös fontosság szerinti mintavételezés kedvező hatását mutatja. Ez különösen a sötét tükrön észrevezető.

plarge = 0:02 plarge = 0:1 plarge = 0:9 plarge = 0:98 plarge = 0:5 5.17. a bra. A ke peket a javasolt Metropolis mo dszerrel e s to bbszo ro s fontossa g szerinti mintave teleze ssel sza mı tottuk. Az egyes ke peken a nagy le pe sek valo szı nu se ge ku lo nbo zo. A pixelenke nti muta cio k sza ma 20.

5.18. ábra. A bal oldali kép többszörös fontosság szerinti mitavétel nélkül, a jobb oldali többszörös fontosság szerinti mintavételezéssel készült. A pixelenkénti mutációk száma 20.

5.5. Foton térkép Akétirányúfényútkövetés egy gyűjtősétát egyetlen lövősétával köt össze. Milyen jó lenne, ha először a lövősétákat számíthatnánk ki, és a gyűjtősétákat pedig nem csupán egyetlen egy, hanem egyszerre az összes lövősétával megpróbálnánk összekötni. Kívánságunkat a foton térképek [JC95, Jen96, JC98] váltják valóra. A foton t érkép (photon-map) olyan adatstruktúra, amely a sok lövőséta hatását tömören tárolja. sphere containing n photon hits surface intersection of the surface and the sphere A = πr 2 5.19. ábra. Foton térkép A foton térkép a foton találatok gyűjteménye. Egy találatot a foton által a különböző hullámhosszokon szállított energiával (ez nem fizikai foton, ami csak egy hullámhosszon visz energiát), a találat helyével, a foton érkezési irányával és a felületi normálissal együtt tárolunk. A foton találatokat a hatékony előkeresés érdekében egy kiegyensúlyozott kd-fa adatstruktúrába szervezzük. A foton találatok előállítása az algoritmus első lépése. Fényforrásokból induló fényutakat állítunk elő, azokat néhány lépésig követjük, majd az utolsó beérkezést tekintjük valódi foton találatnak, amelyet az adatstruktúrába beépítünk. A fényutak hosszát több módszerrel is vezérelhetjük. Használhatjuk egyrészt itt is az orosz rulettet, azaz az albedonak megfelelő valószínűséggel véletlenszerűen fejezzük be az utakat. Egy másik alternatíva nem ideálisan tükröző vagy törő felületnél mindig befejezi, ideális felületnél viszont mindig folytatja a fényút építését. Az ideális felületek kitüntetett szerepét az indokolja, hogy így szép kausztikus jelenségek állíthatók elő. Az algoritmus második lépése egy egyszerű inverz fénykövetés, amely minden lépésében a környezetben lévő fotonok hatását gyűjti össze. A gyűjtőséták alatt az árnyalási egyenlet következőközelítésével dolgozunk: Ω L(~x;! 0 )= Ω L(h(~x;! 0 );! 0 ) f r (! 0 ;~x;!) cos 0 d! 0 = dφ(! 0 ) da cos 0 d! 0 f r(! 0 ;~x;!) cos 0 d! 0 ß nx i=1 Φ(! i 0 ) A f r(! i 0 ;~x;!); (5.10) ahol Φ(! i 0 ) a A felületre a!0 i irányból érkező foton energiája. A Φ és a A mennyiségeket az ~x pont környezetében található foton találatok tulajdonságaiból approximáljuk a következő eljárással: Az ~x köré egy gömböt teszünk, amelyet addig pumpálunk, amíg azéppen n foton találatot tartalmaz (az n az algoritmus globális paramétere). Ha ekkor a gömb sugara r, akkor a felületelem területe A = ßr 2. 5.6. Láthatóság számítás sugárkövetéssel Az idáig ismertetett algoritmusok alapvető lépése egy félegyenest, ún. sugarat küld a térbe és megkeresi az objektumoknak és a sugárnak a sugár kezdőpontjához legközelebbi metszéspontját. A gyakorlati tapasztalatok szerint a képszintézis programok a futás során az idő 75 96%-t ezzel a feladattal töltik, ezért ennek hatékony implementációja a gyors sugárkövetés kulcsa. Ebben a fejezetben ezen geometriai művelet hatékony megvalósításával foglalkozunk. 5.6.1. Metszéspontszámítás egyszerű felületekre A sugarat általában a következő egyenlettel adjuk meg: ~r(t) =~s + t ~d; (t 2 [0; 1)): (5.11) ahol ~s a kezdőpont, ~ d =! a sugár iránya, a t sugárparaméter pedig kifejezi a kezdőponttól valótávolságot. A következőkben áttekintjük, hogy a különböző primitív típusok hogyan metszhetők el az ily módon megadott sugárral.

Háromszögek metszése A háromszögek metszése két lépésben történik. Először előállítjuk a sugár és a háromszög síkjának a metszéspontját, majd eldöntjük, hogy a metszéspont a háromszög belsejében van-e. Legyen a háromszög három csúcsa ~a, ~ b és ~c. Ekkor aháromszög síkjának normálvektora ~n =( ~ b ~a) (~c ~a), egy helyvektora pedig ~a, tehát a sík p pontjai kielégítik a következő egyenletet: ~n (~p ~a) =0: (5.12) A sugár és a sík közös pontját megkaphatjuk, ha a sugár egyenletét behelyettesítjük a sík egyenletébe, majd a keletkező egyenletet megoldjuk az ismeretlen t paraméterre. Ha a kapott t Λ érték pozitív, akkor visszahelyettesítjük a sugár egyenletébe, ha viszont negatív, akkor a metszéspont a sugár kezdőpontja mögött van. A sík metszése után azt kell ellenőriznünk, hogy a kapott ~p pont vajon a háromszögön kívül vagy belül helyezkedik-e el. A ~p metszéspont akkor van a háromszögön belül, ha a háromszög mind a három oldalegyeneséhez viszonyítva a háromszöget tartalmazó félsíkban van: (( ~ b ~a) (~p ~a)) ~n 0; ((~c ~ b) (~p ~ b)) ~n 0; ((~a ~c) (~p ~c)) ~n 0: (5.13) Implicit felületek metszése A síkmetszéshez hasonlóan egy gömbre úgy kereshetjük a metszéspontot, ha a sugár egyenletét behelyettesítjük a gömb egyenletébe: majd megoldjuk t-re az ebből adódó j(~s + t ~d) ~cj 2 = R 2 (5.14) ( ~ d) 2 t 2 +2 ~d (~s ~c) t +(~s ~c) 2 R 2 =0 (5.15) egyenletet. Csak a pozitív valós gyökök érdekelnek bennünket, ha ilyen nem létezik, az azt jelenti, hogy a sugár nem metszi a gömböt. Ez a módszer bármely más kvadratikus felületre használható. A kvadratikus felületeket különösen azért szeretjük a sugárkövetésben, mert a metszéspontszámítás másodfokú egyenletre vezet, amit a megoldóképlet alkalmazásával könnyen megoldhatunk. Egy F (x; y; z) =0implicit egyenlettel definiált felület metszéséhez a sugáregyenletnek az implicit egyenletbe történő behelyettesítésével előállított f (t) =F (s x + d x t; s y + d y t; s z + d z t) =0 nemlineáris egyenletet kell megoldani, amelyhez numerikus gyökkereső eljárásokat használhatunk [SKe95]. Paraméteres felületek metszése Az ~r = ~r(u; v), (u; v 2 [0; 1]) paraméteres felület és a sugár metszéspontját úgy kereshetjük meg, hogy először az ismeretlen u; v; t paraméterekre megoldjuk a ~r(u; v) =~s + t ~d (5.16) háromváltozós nemlineáris egyenletrendszert, majd ellenőrizzük, hogy a t pozitív és az u; v paraméterek valóban a [0; 1] tartomány belsejében vannak-e. A gyakorlatban a nemlineáris egyenletrendszerek megoldása helyett inkább azt az utat követik, hogy a felületeket poligonhálóval közelítik (emlékezzünk vissza, hogy ez az ún. tesszell ációs folyamat különösen egyszerű paraméteres felületekre), majd ezen poligonhálót próbálják elmetszeni. Ha sikerül metszéspontot találni, az eredményt úgy lehet pontosítani, hogy a metszéspont környezetének megfelelő paramétertartományban egy finomabb tesszellációt végzünk, és a metszéspontszámítást újra elvégezzük. Transzformált objektumok metszése A sugárkövetés egyedülálló tulajdonsága, hogy nem igényel tesszellációt, azaz az objektumokat nem kell poligonhálóval közelíteni, mégis implicit módon elvégzi a nézeti transzformációs, vágási, vetítési és takarási feladatokat. Ha az objektumokat közvetlenül a világ-koordinátarendszerben írjuk le, ezek elegendőek is a teljes képszintézishez. Ha viszont az objektumok különálló modellezési koordinátarendszerben találhatók, a modellezési transzformációt valahogyan meg kell valósítani. Ez ismét csak elvezet minket ahhoz a problémához, hogy hogyan is kell transzformálni például egy gömböt. Szerencsére ezt a kérdést megkerülhetjük, ha nem az objektumot, hanem a sugarat transzformáljuk, hiszen a sugár és egy T transzformációval torzított objektum metszéspontját kiszámíthatjuk úgy is, hogy meghatározzuk a T inverzével transzformált sugár és az objektum metszetét, majd a T alkalmazásával az eredeti sugárra képezzük a pontokat.

5.6.2. A sugárkövetés gyorsítási lehetőségei A sugárkövetést megvalósító algoritmus minden egyes sugarat minden objektummal összevet és eldönti, hogy van-e köztük metszéspont. A módszer jelentősen gyorsítható lenne, ha az objektumok egy részére kapásból meg tudnánk mondani, hogy egy adott sugár biztosan nem metszheti őket (mert például a sugár kezdőpontja mögött, vagy nem a sugár irányában helyezkednek el), illetve miután találunk egy metszéspontot, akkor ki tudnánk zárni az objektumok egy másik körét azzal, hogy ha a sugár metszi is őket, akkor biztosan ezen metszéspont mögött helyezkednek el. Ahhoz, hogy ilyen döntéseket hozhassunk, ismernünk kell az objektumteret. A megismeréshez egy előfeldolgozási fázis szükséges, amelyben egy adatstruktúrát építünk fel. A sugárkövetés végrehajtásakor pedig a kívánt információkat ebből az adatstruktúrából olvassuk ki. Befoglaló keretek A legegyszerűbb gyorsítási módszer a befoglal ó keretek (bounding volume) alkalmazása. A befoglaló keret egy egyszerű geometriájú objektum, tipikusan gömb vagy téglatest, amely egy-egy bonyolultabb objektumot teljes egészében tartalmaz. A sugárkövetés során először a befoglaló keretet próbáljuk a sugárral elmetszeni. Ha nincs metszéspont, akkor nyilván a befoglalt objektummal sem lehet metszéspont, így a bonyolultabb számítást megtakaríthatjuk. A befoglaló keretet úgy kell kiválasztani, hogy a sugárral alkotott metszéspontja könnyen kiszámítható legyen, ráadásul kellően szorosan körbeölelje az objektumot. A könnyű metszéspontszámítás követelménye feltétlenül teljesül a gömbre, hiszen ehhez csak egyetlen másodfokú egyenletet kell megoldani. A Cohen-Sutherland vágási algoritmus bevetésével a koordinátatengelyekkel párhuzamosan felállított befoglaló dobozokra ugyancsak hatékonyan dönthetjük el, hogy a sugár metszi-e őket. A vágási tartománynak a dobozt tekintjük, a vágandó objektumnak pedig a sugár kezdőpontja és a maximális sugárparaméter által kijelölt pontja közötti szakaszt. Ha a vágóalgoritmus azt mondja, hogy a szakasz teljes egészében eldobandó, akkor a doboznak és a sugárnak nincs közös része, következésképpen a sugár nem metszhet semmilyen befoglalt objektumot. A befoglaló keretek hierarchikus rendszerbe is szervezhetők, azaz a kisebb keretek magasabb szinteken nagyobb keretekbe foghatók össze. Ekkor a sugárkövetés során a befoglaló keretek által definiált hierarchiát járjuk be. Az objektumtér szabályos felosztása Tegyünk az objektumtérre egy szabályos 3D rácsot és az előfeldogozás során minden cellára határozzuk meg a cellában lévő, vagy a cellába lógó objektumokat. A sugárkövetés fázisában egy adott sugárra a sugár által metszett cellákat a kezdőponttól való távolságuk sorrendjében látogatjuk meg. Egy cellánál csak azon objektumokat kell tesztelni, amelyeknek van közös része az adott cellával. Ráadásul ha egy cellában az összes ide tartozó objektum tesztelése után megtaláljuk a legközelebbi metszéspontot, be is fejezhetjük a sugár követését, mert a többi cellában esetlegesen előforduló metszéspont biztosan a metszéspontunk mögött van. Az objektumtér szabályos felosztásának előnye, hogy a meglátogatandó cellák könnyen előállíthatók a DDA algoritmus háromdimenziós általánosításának segítségével [FTK86], hátránya pedig az, hogy gyakran feleslegesen sok cellát használ. Két szomszédos cellát ugyanis elég lenne csak akkor szétválasztani, ha azokhoz az objektumok egy más halmaza tartozik. Ezt az elvet követik az adaptív felosztó algoritmusok. Az objektumtér adaptív felosztása Az objektumtér adaptív felosztása rekurzív megközelítéssel lehetséges. Foglaljuk kezdetben az objektumainkat egy koordinátatengelyekkel párhuzamos oldalú dobozba. Vizsgáljuk meg, hogy a dobozunk homogénnek tekinthető-e, azaz legfeljebb 1 (általánosabban legfeljebb adott számú) objektum van-e benne. Ha igen, a felosztással elkészültünk. Ha nem, a dobozt a felezősíkjai mentén 8 egybevágórészre bontjuk és a keletkezőrészdobozokra ugyanezt az eljárást folytatjuk. Az eljárás eredménye egy oktális fa (5.20. ábra). A fa levelei azon elemi cellák, amelyekhez a belógó objektumokat nyilvántartjuk. A felosztás adaptivitását fokozhatjuk, ha egy lépésben nem mind a három felezősík mentén vágunk, hanem egy olyan (általában ugyancsak a koordinátarendszer valamely tengelyére merőleges) síkkal, amely az objektumteret a lehető legigazságosabban felezi meg. Ez a módszer egy bináris fához vezet, amelynek neve bin áris particionáló fa, vagy BSP-fa. A bináris particionáló fa speciális esete KD-fa, amelyben csak koordináta-tengelyekkel párhuzamos felezősíkot használunk. Ez a felezősík természetesen bárhol elhelyezkedhet. A mérések szerint a KD-fa a már említett adatstruktúrák közül a győztes [Hav01]. A KD-fában az információt egyszerű formában tároljuk, azaz a fa egy belső csomópontja egy felezősíkot tartalmaz, ezért az itt lévő gyermekcsomópontok száma kettő, így csak négy eset közül kell választani: csak a bal oldali ágban folytatjuk az utat, csak csak a jobb oldaliban, először a bal oldali ágat járjuk be, majd a jobb oldalit, vagy először a jobb oldalit, azután a bal oldalit. Az adaptív felosztás kétségkívül kevesebb memóriát igényel, mint a tér szabályos felosztása. Azonban egy új problémát vet fel, amivel foglalkoznunk kell. A szabályos felosztás rácsán szakaszrajzoló algoritmusok segítségével kényelmesen sétálhattunk, azaz könnyen eldönthettük, hogy egy cella után melyik lesz a következő, ami a sugár útjába kerül.

I II 1 2 1 3 1 1 2 2 1 3 IV III 5.20. ábra. A síkot felosztó négyes fa. Ennek a 3D változata az oktális fa I 1 2 II 1 2 3 3 5.21. ábra. Bináris particionáló fa Az adaptív felosztásoknál egy cella után következő cella meghatározása már nem ilyen egyszerű. A helyzet azért nem reménytelen, és a következőmódszer elég jól megbirkózik vele. Az aktuális cellában számítsuk ki a sugár kilépési pontját, azaz a sugárnak és a cellának a metszéspontját, majd adjunk hozzá a metszéspont sugárparaméteréhez egy kicsit! A kicsivel továbblendített sugárparamétert visszahelyettesítve a sugáregyenletbe, egy, a következő cellában lévő pontot kapunk. Azt, hogy ez melyik cellához tartozik, az adatstruktúra bejárásával dönthetjük el. Kézbe fogván a pontunkat a fa csúcsán belépünk az adatstruktúrába. A pont koordinátáit a felosztási feltétellel (oktális fánál az aktuális doboz középpontjával, bináris particionáló fánál pedig a sík koordinátájával) összehasonlítva eldönthetjük, hogy melyik úton kell folytatni az adatszerkezet bejárását. Előbb-utóbb eljutunk egy levélig, azaz azonosítjuk a pontot tartalmazó cellát. A továbbiakban a KD-fákkal foglalkozunk részletesebben. A KD-fában a felezősíkot többféleképpen elhelyezhetjük. A t érbeli középvonal módszer a befoglaló keretet mindig két egyforma részre osztja. Mivel a felezés eredménye mindig két egyforma nagyságúrészt eredményez, ezért ezeknek a részeknek a fa mélységével arányosan egyre kisebbeknek kell lennie. Ez a megközelítés kiegyensúlyozza a teret. A a test középvonal módszer úgy osztja fel a teret, hogy annak bal és jobb oldalán egyforma számú test legyen. Néhány test ebben az esetben mind a jobb, mind a bal oldali ágba bekerülhet, hiszen a felezősík akár testeket is metszhet. Ez amegközelítés a testek számát egyensúlyozza ki a felezősík mentén. A harmadik módszer valamilyen költség modellt használ, és a KD-fa felépítése során becsli azt az átlagos időt, melyet egy sugár a KD-fa bejárására során felhasznál és ennek minimalizálására törekszik. Ez a módszer teljesítményben felülmúlja mind a térbeli középvonalat, mind a test középvonalat. Egy megfelelőköltségmodell szerint úgy felezzük a cellát, hogy a két gyermek cellában lévő testek összes felülete megközelítőleg megegyezzen [Hav01]. A felezősík irányának meghatározására használhatjuk azt a megoldást, hogy a fa mélységének növekedésével ciklikusan változtatjuk az irányokat a koordináta-tengelynek megfelelően (x; y; z; x; :::). A KD-fa felépítése során alapvető kérdés, hogy milyen mélységig érdemes építeni azt. A mélység lehet a felhasználó által megadható paraméter, vagy itt is a költség modellre támaszkodhatunk. Ebben az esetben a KD-fát egy bizonyos d max mélységig építjük, és kiszámítjuk a sugárkövetés C(d max ) becsült költségét. Ezután minden levelet egy lépéssel tovább osztunk, és újból kiszámoljuk a költséget. Ha a C(d max+1 ) jelentősen kisebb mint C(d max ), akkor és a KD-fa tovább építendő, immár a d max+2 mélységben. Ellenkező esetben nem folytatjuk tovább a felosztást. A KD-fa felépítése után természetesen egy olyan algoritmusra is szükségünk van, amely segítségével egy adott sugárra nézve meg tudjuk mondani annak útját a fában, és meg tudjuk határozni a sugár által elsőként metszett testet is. A

következőkben 3 algoritmust mutatunk meg ennek az adatstruktúrának a bejárására: a szekvenci ális sugárbejárási algoritmust (sequential ray traversal algorithm), a rekurzív sugárbejárási algoritmust (recursive ray traversal algorithm) és a szomszéd összekapcsolását használó sugárbejárási algoritmust (ray traversal algorithm with neighbour-links). A szekvenciális sugárbejárási algoritmus (sequential ray traversal algorithm) a sugár mentén lévő pontoknak a KDfában történő szekvenciális megkeresésén alapul. Legelső lépésként a kezdőpontot kell meghatározni a sugár mentén, ami vagy a sugár kezdőpontja vagy pedig az a pont, ahol a sugár belép a befoglaló keretbe, attól függően, hogy sugár kezdőpontja a befoglaló dobozon belül van-e vagy sem. A pont helyzetének meghatározása során azt a cellát kell megtalálnunk, amelyben az adott pont van. Kézbe fogván a pontunkat a fa csúcsán belépünk az adatstruktúrába. A pont koordinátáit a sík koordinátájával összehasonlítva eldönthetjük, hogy melyik úton kell folytatni az adatszerkezet bejárását. Előbb-utóbb eljutunk egy levélig, azaz azonosítjuk a pontot tartalmazó cellát. Ha ez a cella nem üres, akkor megkeressük a sugár és a cellában lévő illetve a cellába belógó testek metszéspontját. A metszéspontok közül azt választjuk ki, amely a legközelebb van a sugár kezdőpontjához. Ezután ellenőrizzük, hogy a metszéspont a vizsgált cellában van-e (mivel egy test több cellába is átlóghat, előfordulhat, hogy nem ez a helyzet). Ha a metszéspont az adott cellában van, akkor megtaláltuk az első metszéspontot, így befejezhetjük az algoritmust. Ha a cella üres, vagy nem találtunk metszéspontot, vagy a metszéspont nem a cellán belül van, akkor tovább kell lépnünk a következő cellára. Ehhez a sugár azon pontját határozzuk meg, ahol elhagyja a cellát. Ezután ezt a metszéspontot egy kicsit előre toljuk, hogy a következő cellában lévő pontot kapjunk. Innentől az algoritmus a tárgyalt lépéseket ismételi. Ennek az algoritmusnak a hátránya, hogy mindig a fa gyökerétől indul, pedig nagyban valószínűsíthető, hogy két egymás után következő pont esetén részben ugyanazon cellákat járjuk be. Ebből adódóan egy csomópontot többször is meglátogatunk. A rekurzív sugárbejárási algoritmus (recursive ray traversal algorithm) a szekvenciális sugárbejárási algoritmus hátrányait igyekszik kiküszöbölni, és minden belső pontot és levelet csak egyetlen egyszer látogat meg. A javitott algoritmus, amikor a sugár egy olyan belső csomóponthoz ér, amelynek két gyermekcsomópontja van, eldönti a gyermekeket milyen sorrendben látogassa meg. A gyermekcsomópontokat közeli és távoli gyermekcsomópontként osztályozza aszerint, hogy azok milyen messze helyezkednek el a sugár kezdetétől a felezősíkhoz képest. Ha a sugár csak a közeli gyermekcsomóponton halad keresztül, akkor a sugár ennek a csomópontnak az irányába mozdul el, és az algoritmus rekurzívan folytatódik. Ha a sugárnak mindkét gyermekcsomópontot meg kell látogatnia, akkor az algoritmus egy veremtárban megjegyzi az információkat a távoli gyermekcsomópontról, és a közeli csomópont irányába mozdul el, majd rekurzívan folytatódik az algoritmus. Ha a közeli csomópont irányában nem találunk metszetet, akkor visszakeressük a távoli gyermekcsomópontot, és az algoritmus rekurzívan fut tovább, immár ebben az irányban. A következőkben az ismertetett algoritmust C-pszeudokóddal is megadjuk: enum Axes {X_axis, Y_axis, _axis}; struct KDTreeNode { /* a node of the KD-tree */ Point3d min, max; /* extent of the node */ GeomObjlist *objlist; /* list of objects belonging to this node */ struct KDTreeNode *left; /* left child */ struct KDTreeNode *right; /* right child */ Axis axis; /* orientation of the halfplane */ } struct StackElem { /* an element of the Stack */ KDTreeNode* node; float a; /* signed distance of the entry */ float b; /* signed distance of the exit */ } Object RayTravAlg(KFTreeNode *roornode, Ray ray) { /* Recursive ray traversal */ float a, b; /* signed distances of the entry/exit */ float t; /* signed distance of the halfplane */ StackElem stack[maxdepth]; /* Stack */ int stackptr = 0; /* Stack pointer */ KDTreeNode *farchild, *nearchild, *currnode; /* children and the current node */ RayBoxIntersect(ray, rootnode, &a, &b); /* Intersection with the bounding box */ if ( "there is not intersection" ) return ["No intersection"]; "push (rootnode, a, b) onto the stack" while ( "the stack is not empty" ) { /* while the whole tree is not traversed */ "Pop (currnode, a, b) from the stack" while ("currnode is not a leaf") { float diff = currnode->right.min[axis] - ray.origin[axis] t = diff / ray.dir[axis]; if (diff > 0.0) { nearchild = currnode->left farchild = currnode->right

} } else { nearchild = currnode->right farchild = currnode->left } if ( (t > b) (t < 0.0) ) currnode = nearchild; else { if (t < a) currnode = farchild; else { "Push (farnode, t, b) onto Stack" currnode = nearchild; b = t; } } } /* the currect node is a leaf */ "Intersect the ray with all objects in the list" "Ignore those intersections that are not between a and b" if (any intersection exists) return ["closest intersection"] } return ["No intersection"]; A sugárbejárási algoritmus a szomszéd összekapcsolásával (ray traversal algorithm with neighbour-links)egyújabb módszer a csomópontok ismétlődő meglátogatásának kiküszöbölésére. Ez a megoldás mutatókat használ a szomszédos cellák összekapcsolására.

6. fejezet Sztochasztikus iteráció sugárkötegekkel A klasszikus globális illuminációs módszerek a fényutakat egyenként állítják elő, és minden lépésben egy sugár segítségével határozzák meg az adott pontból, az adott irányban láthatókövetkező felületi pontot. A lokális sugárkövetés azonban pazarlóan csak a legközelebbi metszéspontot használja fel. Érdemes tehát globális sugarakkal dolgozni, amelyek az összes metszéspontot felhasználják, azaz egy lépésben több fényutat is kezelnek [Sbe96, Neu95, SMP98, Sbe97]. Másrészről a sugárkövetés nem hatékony láthatóság számítási algoritmus, mivel képtelen a kép és objektumkoherencia kiaknázására. Más ismert eljárások, mint például a z-buffer, festő, Warnock, stb. módszerek egy lépésben párhuzamos sugarak halmazára oldják meg a láthatósági feladatot, és sokkal hatékonyabban mintha azt a sugarakra egyenként tennénk meg. Nevezzük az egyszerre számítható, szabályos rácsra illeszkedő sugarak gyűjteményét sug ár-kötegnek. Kétféle sugárköteget tekintünk: a párhuzamos sugár-kötegek párhuzamos globális sugarakból állnak, azaz az összes felület radianciáját képesek átvinni, de csak egyetlen irányban. a perspekt ív sugár-kötegek egy pontból indulnak, de minden irányt lefednek, azaz egy felületelem radianciáját képesek átvinni, de minden irányban. Célunk, hogy a sugárkötegeket a globális illuminációs módszerekben is alkalmazzuk, ezáltal a grafikus hardvert és koherencia elvet is kihasználjuk a gyors globális illuminációs számításokban. 6.1. Az árnyalási egyenlet átalakítása a sugárköteg követéshez Dekomponáljuk az L sugársűrűség függvényt egy L e emissziós tagra, egy olyan ~ L visszavert tagra, amelyet véges-elem módszerrel jól közelíthetünk (ún. v éges-elem komponens), és egy L(!) maradék tagra, amelyet Monte-Carlo módszerrel számítunk és amit Monte-Carlo komponensnek nevezünk: L = L e + ~ L + L: (6.1) Annak érdekében, hogy a memóriaigény elfogadható legyen, felületelemenként egyetlen véges-elemet engedünk meg. Ekkor a véges-elem tag, a sugársűrűség irányokra képzett átlagaként adható meg: ~L = 1 ß Ω L(!) cos d!: Ha a felületelemet csak! 0 irányból világítjuk meg és a megvilágitás irradianciája I(! 0 ) az algoritmus számára ez az eset általános akkor az átlagos sugársűrűséget az albedo segítségével határozhatjuk meg: ~L = I(! 0 ) 1 ß Ωj f r (! 0 ;~x;!) cos d!= I(! 0 ) a(~x;!0 ) : ß Az albedot nem szükséges teljesen pontosan számítani, hiszen a véges elem tag hibáját a Monte-Carlo tag úgy is korrigálja. Helyettesítsük be ezt a dekompozíciót a sztochasztikus iterációs képletbe (4.9 egyenlet): L(m) =L e + T Λ f r (L e + ~ L(m 1) + L(m 1)): Az i. felületelem sugársűrűségét a felületelem pontjaiban érvényes sugársűrűségek átlagaként állíthatjuk elő: L(m) i = 1 A i A i T Λ f r L(m 1) d~x (6.2) Minden egyes iterációs lépésben ezt a sugársűrűséget kiszámítjuk és a kép becslését is elvégezzük. Az egyes lépésekben kapott képbecslő és a véges-elem tag, mint a sztochasztikus iteráció általában, nem konvergens, hanem a valódi megoldás körül fluktuál. A valódi képbecslőt és véges-elem tagot tehát az egyes becslések átlagaként állítjuk elő. 51

Ha a sugársűrűség véges-elem közelítése az m. lépésben L ~ 0 (m), akkor a valódi véges-elem tagot a következőképpen számítjuk: ~L(m) = 1 m mx n=1 ~L 0 (n) = 1 m ~L 0 (m) + 1 1 m ~L(m 1): (6.3) A Monte-Carlo tagot, amely az aktuális sugársűrűség becslő és a véges-elem tag különbsége, a véges-elem tag helyesbítésére használjuk. A teljes algoritmus az alábbiakban adható meg: StohasticIteration ~L(0) = 0, L(0) = 0 for m =1to M do L r = T Λ f r (L e + ~ L(m 1) + L(m 1)) ~L 0 (m) =average of L r L(m) =L r ~ L 0 (m) ~L(m) =1=m ~L 0 (m)+(1 1=m) ~L(m 1) C 0 (m) =M(L e + ~ L(m) + L(m)) C(m) =1=m C 0 (m)+(1 1=m) C(m 1) endfor Display C(m) colors end Az algoritmus adatfolyam diagramja a 6.1. ábrán látható. Figyeljük meg, hogy a ~ L(m) + L(m) visszavert radianciát úgy számítjuk, hogy először kivonjuk belőle az véges-elem becslőt, majd hozzáadjuk a valódi, átlagolt véges-elem tagot. Az algoritmus futásának kezdetén, ez a művelet kicseréli a nagy szórásúfő tagot az átlagával, amely gyors kezdeti konvergenciát ad. L(m-1) véges elem komponens Monte-Carlo komponens Ha nagy, finomítsd a véges elem alapot átlagolás T * n L(m) L(m) mérés kivonás új Monte-Carlo komponens összeadás vetítés ~ L (m) ~ L(m) új véges elem komponens átlagolás kép 6.1. ábra. Az algoritmus adatfolyam ábrája Ez egy általános keret, amely alapján különböző speciális verziók készíthetők el a véletlen operátor megfelelő kialakításával. Az algoritmus akkor lesz gyors, ha a fényátadás operátor alkalmazása egy kis szórású T Λ L visszavert tagot eredményez. A visszavert tag nem csupánafényátadás operátortól, hanem az aktuális sugársűrűségtől is függ, tehát más körülmények között más és más operátor lesz a legjobb. A következőkben három különböző eljárást mutatunk be. 6.2. Párhuzamos sugárköteg módszer Ebben a fejezetben egy olyan algoritmust ismertetünk, amely egy ciklusban az összes felületelem sugársűrűségét átviszi egyetlen globális irányban. Legyen a kiválasztott irány! 0.Avéletlen operátor: L r (~x;!) =T Λ f r L =4ß L(h(~x;! 0 );! 0 ) f r (! 0 ;~x;!) cos 0 ~x : Ha a globális irányt egyenletes valószínűségeloszlás szerint mintavételezzük, a valószínűségsűrűség p(! 0 ) =1=4ß, ígyavéletlen operátor alkalmazásának várható értéke visszaadja a valódi fényátadás operátorét (T fr L), ahogyan azt a

sztochasztikus iterációmegköveteli: E[T Λ f r L]= 4ß L(h(~x;! 0 );! 0 ) f r (! 0 ;~x;!) cos 0 d!0 ~x Ω 0 4ß = T f r L: A sugársűrűség átvitelhez azokat a pontokat kell azonosítani, amelyek látják egymást a megadott globális irányban. Ezen láthatósági feladat megoldásához egy ablakot helyezünk el a globális irányra merőlegesen. Az ablakot olyan pixelekre bontjuk, amelyek mindegyike felület azonosítók és mélység értékek listáját képes tárolni. A pixelek gyűjteményét transzilluminációs buffernek nevezzük[neu95]. A felületelemeket egymás után visszük be ebbe a bufferbe egy módosított z-buffer algoritmus segítségével, amely az összes, ebbe az irányba eső pontot nyilvántartja, nem csak a legközelebbit. Az előállított listák bejárásával az összes egymást látó pontpár azonosítható. Ezekre a pontpárokra elvégezzük a sugársűrűség átvitelt és megszorozzuk azt a helyi BRDF-fel, hogy az L r visszavert sugársűrűséghez jussunk. 3 3 1 2 1 3 1 2 3 2 tranzilluminációs buffer globális irány ablak 6.2. ábra. A transzilluminációs buffer szervezése A visszavert sugársűrűségből a felületelem sugársűrűségét egy átlagolási művelettel kapjuk a 6.2 egyenlet szerint. Vegyük észre, hogy ha az integrált nem a felületelemeken, hanem az ablakon számítjuk, akkor a koszinuszos tagot kompenzáljuk: L(m)j i = 1 A i A i Tf Λ 4ß ffip r L(m 1) d~x ß A i X P L in (P ) f r (! 0 ;P;!); ahol P az i. felületelem ablakra képzett vetületén belüli pixeleken fut végig, L in (P ) a P pixelen keresztül látható felületi pont sugársűrűsége, f r (! 0 ;P;!) azon felületelem BRDF-je, amely a P pixelen keresztül a sugársűrűséget megkapja, végül ffip az egyes pixelek területe. A módszer kétirányú kiterjesztése egyszerű. Ekkor nem csak az! 0 irányban adjuk tovább a sugársűrűséget, hanem a! 0 irányban is, az átvitel után pedig a sugársűrűség értékeket felezzük. Ráadásul a kétirányú általánosítás nem is igényel többlet láthatóság számítást. 6.2.1. Perspektív sugárköteg módszer A perspektív sugárköteg módszer egyetlen felületelemet választ, és a felületelem sugársűrűségét annak egyetlen véletlenül választott pontjából minden irányban szétszórja. A fontosság szerinti mintavételezés elvei szerint, úgy érdemes a felületet kiválasztani, hogy a p i választási valószínűség a felületek sugárzási teljesítményével arányos legyen. Ha az i. felületelemet p i valószínűséggel választjuk, és a felületelemen a sugárköteg ~y kezdőpontját egyenletes 1=A j valószínűségsűrűséggel jelöljük ki, akkor a véletlen operátor az alábbi: L r (~x;!) =(T Λ f r L)(~x;!) = A j p j v(~x; ~y) L(~y;! 0 ~y!~x ) f r(! 0 ~y!~x ;~x;!) cos 0 ~x cos ~y j~x ~yj 2 ; ahol v(~x; ~y) akölcsönös láthatóság indikátora, amely 1 ha a két pont látja egymást, egyébként zérus. Avéletlen operátor alkalmazásának várható értéke: E[T Λ f r L]= X i X i p j A j A j A j p j v(~x; ~y) L(~y;! 0 ~y!~x ) f r(! 0 ~y!~x ;~x;!) cos 0 ~x cos ~y j~x ~yj 2 d~y = A j v(~x; ~y) L(~y;! 0 ~y!~x ) f r(! 0 ~y!~x ;~x;!) cos 0 ~x cos ~y j~x ~yj 2 d~y:

Atérszögre érvényes d~y cos ~y =j~x ~yj 2 = d! ~x összefüggés alkalmazásával és feltételezve, hogy megvilágítás csak felületről érkezhet tehát nincs külső égbolt megvilágítás a felületi integrál irányintegrálként írható fel: E[T Λ f r L]= Ω 0 L(h(~x;! 0 );! 0 ) f r (! 0 ;~x;!) cos 0 ~x d!0 ~x = T f rl; ami viszont mutatja, hogy várható értékben valóban visszakaptuk az eredeti fényátadás operátor hatását. A felületelemek sugársűrűsége, a pontjaik sugársűrűségeinek az átlaga: L(m)j i = 1 A i A i T Λ f r L(m 1) d~x = A j p j A i A i v(~x; ~y) L(~y;! 0 ~y!~x ) f r(! 0 ~y!~x ;~x;!) cos 0 ~x cos ~y j~x ~yj 2 d~x (6.4) ω x patch j θ ω θp P j f y windows W 6.3. ábra. Perspektív sugár-kötegek számítása félkockákkal A 6.4 egyenlet integrálját a ~y fölé emelt félkocka 5 oldalán is kiértékelhetjük. Jelöljük ezt a felületet W -vel (6.3. ábra). Ez az elrendezés a diffúz radiozitás feladat félkockás megoldásához hasonlít [CG85]. Aképletek kidolgozásához fejezzük ki azon dω p térszöget, amelyben a d~x differenciális felületelem láthatóad~p pixel területen keresztük: dω p = d~x cos 0 ~x j~y ~xj 2 = d~p cos p j~y ~pj 2 ; (6.5) ahol p az ~y pontból az ~x pontba mutató irány és az ablak normálvektora között szög (6.3. ábra). A j~y ~pj távolság f=cos p -val egyezik meg, ahol f az ~y pont és az ablak síkjának távolsága, amelyet fok ális távolságnak is nevezünk. A 6.5 egyenlet alkalmazásával, a d~x differenciális terület kifejezhető, amit a 6.4 egyenletbe helyettesíthetünk be, és a következőkhöz jutunk: L(m)j i = A j p j A i f 2 W v(~y;~x) L(~y;! 0 ~y!~p ) f r(! 0 ~y!~x;~x;!) cos ~y cos 3 p d~p: Legyen P i azon pixelek halmaza amelyeken keresztül az i. felületelem látszik a sugárzó pontból. A P i halmazt egy a z-buffer/konstans-árnyalás képszintézis lépéssel számíthatjuk, külön-külön minden egyes ablak felületre, az i. felületelem színét i-nek választva, majd a képeket visszaolvasva. Az i. felületelem visszavert sugársűrűségét egy közelítő öszeggel becsüljük: L(m)j i ß A jffip p j A i f X L(~y;! 0 2 ~y!~p ) f r(! ~y!~x 0 ;~x(~p);!) cos ~y cos p; 3 P ahol ffip egyetlen pixel területe. Ha R a kép felbontása azaz a félkocka fedőlapja R R pixelt, míg az oldallapot R R=2 pixelt tartalmaznak akkor ffip =4f 2 =R 2 : 6.2.2. Sugár lövés Ebben a módszerben a véletlen operátor egyetlen sugarat alkalmaz, amely az ~y i pontból indul és az! i irányban halad. A kezdőpontot és irányt a p(~y;!) valószínűségsűrűség függvény segítségével állítjuk elő. A valószínűségsűrűség függvénynek lehetőség szerint a sugársűrűséggel és az irány illetve a felületi normális közötti szög koszinuszának szorzatával kell arányosnak lennie. A kiválasztott sugár a Φ(~y;! 0 )= L(~y;!0 )cos ~y p(~y;! 0 )

teljesítményt abba az ~x pontba viszi, amelyet először eltalál. Az átvitt teljesítményt a fogadó pont visszaveri, amelynek következtében megváltozik a sugársűrűség függvény. Formálisan a véletlen operátor: (T Λ L)(~x; L(~y;!) =!0 )cos ~y p(~y;! 0 ffi(~x h(~y;! 0 )) f r (! 0 ;~x;!); (6.6) ) ahol ffi a Dirac-delta függvény, amely azt fejezi ki, hogy csak az a pont kaphatja meg a teljesítményt, amelyet a sugár eltalál. A térszögre vonatkozóalábbi összefüggés szerint d! ~y = d~x cos ~x 0 =j~y ~xj2 ; egy szimmetriareláció állítható fel d~y d! ~y cos ~y = d~y d~x cos 0 ~x j~y ~xj 2 cos ~y = d~x d~y cos ~y j~y ~xj 2 cos 0 ~x = d~x d!0 ~x cos 0 ~x ; amely alapján könnyen bebizonyítható, hogy a véletlen operátor várható értékben most is visszaadja a valódi fényátadás operátor hatását: E[Tf Λ r L]= S Ω 0 ~y L(~y;! 0 ) cos ~y p(~y;! 0 ) Ω 0 ~x ffi(~x h(~y;! 0 )) f r (! 0 ;~x;!) p(~y;! 0 ) d~yd! 0 = L(h(~x;! 0 );! 0 ) f r (! 0 ;~x;!) d! 0 ~xt fr L: A fontosság szerinti mintavételezés szerint p(~y;!) a lehetőség szerint a kiválasztott pont koszinusszal súlyozott sugársűrűségével arányos. Ezt a mintavételt két lépésben végezzük el. Először a felületelemet választjuk ki, majd a felületelemen a kiindulási pontot egyenletes valószínűségeloszlás szerint jelöljük ki. 6.3. Az ideiglenes sugársűrűség reprezentációja Mindhárom ismertetett módszer a sugársűrűség függvényt mintavételezi az egyes lépésekben. A sugársűrűség teljes megadásához azonban igen sok véges-elemre volna szükség. Szerencsére a tárolási igény jelentős mértékben csökkenthető, ha az új sugársűrűség függvény kiértékelését késleltetjük mindaddig, amígmár ismerjük, hogy arra a következő iterációs ciklusban mely pontokban és irányokban lesz szükség. Emlékezzünk vissza, hogy mindhárom módszer csupán részleges információt használ, a párhuzamos sugárköteg módszernek csupán egy irányban van szüksége a sugársűrűségre, a perspektív sugárköteg módszer pedig beéri egyetlen felületelem visszavert sugársűrűségével. Egy iterációs lépésben tehát csak a felületelemek irradianciáját számítjuk, amely nyilván független a következő ciklus átviteli irányától. Az irradianciával együtt a bejövő irányt is tároljuk. A következő iterációs lépésben, amikor a felület kimeneti radianciájára szükség van, az irradianciát a kimeneti irány ismeretében számított BRDF-fel szorozzuk. A fontosság szerinti mintavételezéshez a felületek teljes sugárzási teljesítményére ugyancsak szükség van. Ez a irradianciák és az albedok szorzataként állítható elő. 6.4. Kombinált stratégiás algoritmus Idáig három különböző módszert ismertettünk. Mindegyik más fajta sugársűrűség eloszlásra hatékony. A párhuzamos sugárköteg akkor jó, ha a térben hasonló radianciájú felületek vannak, míg a másik két módszer akkor, ha egy, vagy néhány felületelem a többinél lényegesen erősebben sugároz. Ezen utóbbi esetben, a perspektív sugárköteg akkor jobb, ha a kiválasztott felület nem nagyon spekuláris. Beláttuk, hogy mindhárom módszer kielégíti a sztochasztikus iteráció feltételeit. Tehát a módszerek véletlen, vagy determinisztikus kombinációja is megfelelő. A véletlen kombináció kiválasztási valószínűségeit úgy választjuk meg, hogy azon módszereket részesítsük előnyben, amelyek az aktuális szituációban a legjobbak. Tegyük fel, hogy az utolsólépésben a felületelemek I 1 (! 1 );I 2 (! 2 );:::;I n (! n ) irradianciát kaptak (az irradianciákhoz tartozó! 1 ;:::;! n irányok megegyeznek a párhuzamos sugárköteg módszernél, de nem a másik kettőnél). Ha minden felületelem ugyanolyan teljesítménnyel bír, a párhuzamos sugárköteg módszert választjuk. A teljesítmények hasonlóságát a Φ max maximális teljesítmény és a Φ total teljes teljesítmény arányával fejezhetjük ki. Ha úgy döntünk, hogy nem párhuzamos átvitelt alkalmazunk, akkor a következő lépésben választanunk kell a perspektív sugárkötegek és a sugár lövés között. Ez a döntés a diffúz és spekuláris visszaverődés arányától és attól függ, hogy a felület spekuláris visszaverődési profilja mennyire hosszú. Definiáljuk a spekularitás erősségét kifejező G függvényt úgy, hogy az a hosszúságot a [0; 1] tartományra képezi le, és az erősen spekuláris anyagokra 0 közeli a közel diffúz anyagokra pedig 1-hez közeli értéket ad. Valójában három lehetőségünk van: a felületet diffúznak tekintjük, vagy enyhén illetve erősen spekulárisnak. A három lehetőségnek megfelelősúlyok a diffuse, G(s) a specular és (1 G(s)) a specular. A sugárlövés valószínűsége: p perspective = (1 G(s)) a specular a diffuse + a specular

Egy megfelelő spekularitás erősség függvény: G(s) = 1 1+ s ahol -t úgy kell beállítani, hogy az s =40exponenssel rendelkező Phong modell határesetnek számítson, tehát például G(40) = 0:5. A teljes algoritmus: foreach patch i do Φ out i = I i(!i) a i(!i) A i Φ max = maxfφ P out j g Φ total = j Φout j p nonparallel =Φ max =Φ total Generate a random number r in [0; 1) if r<p parallel Select i with probability p i =Φ out i =Φ total (1 G(s)) a p perspective = specular a diffuse +a specular Generate a random number s in [0; 1) if r<p perspective then Use perspective ray-bundle tracing else Use ray shooting else Use parallel ray-bundle tracing endif 6.5. Képbecslő számítása Minden egyes iterációs lépés a felületelemek bejövő radianciáját állítja elő egy-egy véletlen irányban. A bejövő radianciát a szem felé kell visszaverni ahhoz, hogy ebből képet kapjunk. A számítást elvégezhetjük felületelemenként egyszer, majd a felületelemek konstans színéből adódó töredezett megjelenítést bi-lineáris interpolációval simíthatjuk ki. Másrészt a visszaverődés számítását elvégezhetjük minden pixelben külön-külön, amely a Phong árnyalás megvalósításához vezet. Bi-lineáris interpoláció A képgenerálás egy egyszerű módja, ha minden felületelemhez egyetlen színt rendelünk a felületelem normálvektora és a felületelem középpontjának megfelelő láthatósági irány alapján. A képbecslő előállítása első lépésben tehát a következő: for each patch p do Calculate viewing direction! from patch p L[p] += L e [p](!)+4ß ~f p(! (m) 1 ;!) I[p] endfor // do it for each patch A töredezett képet bi-lineáris interpolációval, azaz Gouraud árnyalással simíthatjuk ki. Az interpoláció tartópontjai a háromszögek csúcspontjaiban az illeszkedő háromszögek színátlagaként számított értékek lesznek (6.4. ábra): for each vertex v do L v[v] =0 adjacent patches[v] = 0 endfor for each patch p do for each vertex v of patch p do L v[v] += L[p] adjacent patches[v]++ endfor endfor for each vertex v do L v[v] /= adjacent patches[v] for each patch p do Find vertices of patch p: v 1;v 2;v 3 GouraudShading(v 1;v 2;v 3;L v[v1];l v[v2];l v[v3] ) endfor Phong interpoláció A Phong interpoláció a felületi normálist és a nézeti irányt a csúcspontokban érvényes vektorokból interpolálja és a BRDF-t valamint a visszavert radianciát minden egyes pixelben külön kiértékeli. Az eljárást felgyorsíthatjuk, ha az elő-

L 1 L 2 L 4 L 3 L1+ L2+ L3+ L4 L = v 4 6.4. ábra. Bi-lineáris interpoláció feldolgozási fázisban a pixelekben látható felületelemeket azonosítjuk, a normál valamint nézeti vektorukat számítjuk, és az eredményt egy táblázatban eltároljuk. 6.6. Elsőlövés technikák Az árnyalási egyenlet megoldásának Neumann soros alakja a következő integrálokat tartalmazza: T (L e + T (L e + :::) :::)=T (L e + L i )= Ω (L e + L i ) f r cos 0 d! 0 ; ahol L i akövetkező integrál által számított indirekt illumináció. A Monte-Carlo becslés akkor pontos, ha a L r (! 0 )=(L e + L i ) f r cos 0 integrandus lapos, azaz közel konstans, különben a becslő szórása nagy. Vizsgáljuk meg ezt a kérdést formálisan is. Tegyük fel, hogy az integrált Monte-Carlo kvadratúrával becsüljük, azaz az integrált mint várható értéket tekintjük, amit végül átlaggal közelítünk. Legyen az! 0 minták valószínűség sűrűsége p(! 0 ). Az integrál tehát:» L r (! 0 ) NX Ω L r (! 0 ) d! 0 = Ω L r (! 0 ) p(! 0 ) p(!0 ) d! 0 = E Az ^L r szintén véletlen változó, amelynek a szórása ff= p N, ahol ff 2 : ff 2 = Ω 0 @ Lr (! 0 ) p(! 0 ) Ω L r (!) d! p(! 0 ) 1 A 2 ß ^L r = 1 N i=1 L r (! 0 i ) p(! 0 i ) : p(! 0 ) d! 0 : (6.7) Aszórás akkor kicsi, ha L r (! 0 )=p(! 0 ) közel van a R Ω L r (!) d! integrálhoz az értelmezési tartományban. A szórás csökkentésének egy lehetséges módja a fontos ág szerinti mintavételezés [Sob91], amely azt jelenti, hogy p(! 0 ) követi az L r (! 0 ) integrandus változását és így L r (! 0 )=p(! 0 ) közelítőleg konstans. Sajnos az árnyalási egyenlet integrandusa nem áll rendelkezésre explicit formában, így a fontoság szerinti mintavételezés általában csak a lokális BRDF értékeket veszi figyelembe [DLW93, LW93] azaz az f r cos 0 függvényt követi, nem pedig a (L e + L i ) f r cos 0 függvényt. Egy másik lehetséges eljárás a globális illuminációs modell más integrálokkal történő megközelítése. Mivel a gyors változásért a fényforrások közvetlen hatása felelős, ezt a tagot célszerű külön kezelni. 6.6.1. Az első lövés alapötlete Az elsőlövés a pontszerű és kis méretűfényforrások fényét a felületekre lövi, majd megnöveli ezek saját sugárzását a kis fényforrások megvilágításának a visszaverődésével, és eltávolítja a kis fényforrásokat a térből. Formálisan az ismeretlen L sugársűrűséget két tagra bontjuk: L = L ep + L np (6.8) ahol L ep a kis (és pontszerű) fényforrások kibocsátása, L np a nagyobb fényforrások saját sugárzása és a visszavert sugársűrűség összege. Az árnyalási egyenletbe helyettesítve azt kapjuk, hogy L ep + L np = L e + T (L ep + L np ): (6.9)

= + 6.5. ábra. Első lövés Az L np -t kifejezve azt kapjuk, hogy: Vezessük be a módosított saját sugárzást L np =(L e L ep + T L ep )+T L np : (6.10) L eλ = L e L ep + T L ep (6.11) amely a kis fényforrások emisszióját (L ep ) az egyszeres visszaverődésükkel (T L ep )váltja fel. Az L np tagra az eredetihez hasonló egyenletet kapunk: L np = L eλ + T L np : (6.12) Ezen egyenlet megoldásában felbukkanó integrandus lényegesen laposabb az eredeti integrandusénál. A módosított saját sugárzást, legalábbis részben, az előfeldolgozási fázisban határozzuk meg. Pontosabbban a direkt megvilágítás okozta bejövő radianciát számítjuk az előfeldolgozási lépésben, amiből a kilépő irány függvényében menet közben kapjuk a tényleges módosított sugárzást. 6.6.2. Első lövés pontszerű fényforrásokra Tegyük fel, hogy a színtér l db pontszerű fényforrást tartalmaz az ~y 1 ;:::~y l pontokban, amelyek rendre Φ 1 ;:::;Φ l teljesítménnyel sugároznak. A fényforrások fényének visszaverődése az ~x pontban: (T L ep )(~x;!) = lx i=1 Φ i v(~y i ;~x) 4ßj~y i ~xj 2 f r(! 0 i;~x;!) cos 0 i; (6.13) ahol! 0 i az i fényforrás felé mutatóirány, 0 i az!0 i irány és a felületi normális által bezárt szög, és v(~y i;~x) a ~x és ~y i pontok kölcsönös láthatóságának indikátorfüggvénye. Tekintsük a j. felületelemet és jelöljük a területét A j -val. Az átlagos visszavert sugársűrűség: ht L ep i j (!) = 1 A j A j (T L ep )(~x;!) d~x = lx i=1 1 A j A j Φ i v(~y i ;~x) 4ßj~y i ~xj 2 f r(! 0 i;~x;!) cos 0 i d~x: (6.14) A láthatóság indikátor értékének meghatározásához azt kell eldönteni, hogy a fényforrás az adott pontból láthatóe. A számításhoz a grafikus hardvert is felhasználhatjuk. Helyezzük a szempozíciót a fényforrásra, az ablakot pedig rendre a fényforrás köré tett kocka 6 lapjára. Számíttassuk ki a képet konstans árnyalással úgy, hogy a színindexeket a felületelemek sorszáma szerint választjuk. A képek alapján a látható felületelemek és területük számítható. Az 6.4. egyenlet integrálját a fényforrás köré tett kocka lapjain (W ) is kiértékelhetjük, a radiozitás híres félkocka algoritmusához hasonlóan [CG85]. Fejezzük ki azt a dω p térszöget, amelyben d~x differenciális terület láthatóad~p pixel területen keresztül: dω p = d~x cos 0 i j~y i ~xj 2 = d~p cos p j~y i ~pj 2 ; (6.15) ahol p az ~x-t ~y i -vel összekötő irány és az ablak felületi normálisa által bezárt szög (6.6. ábra). Az j~y i ~pj távolság az f=cos p hányadossal egyenlő, ahol f a ~y i pont és az ablak síkja közötti távolság, amelyet fókusztávolságnak is neveznek. A 6.15. egyenlet felhasználásával a d~x differenciális terület kifejezhető, amit a 6.4. egyenletbe helyettesíthetünk be: ht L ep i j (!) = lx i=1 1 A j W Φ i v(~y i ;~x) 4ß f r (! 0 i ;~x;!) cos 3 p f 2 d~p:

y i pont fényforrás θp f P j ω ω θ i x j felületelem ablakok W 6.6. ábra. A fényforrás láthatóságának számítása Legyen P j azon pixelek halmaza, amelyben éppen a j. felületelem látszik a fényforrásból. A P j -t a kocka lapjaira végrehajtott z-buffer/konstans árnyalás alapúképszintézis lépésekkel kaphatjuk meg, amelyben a j. felületelem színét j-nek választjuk. A képek előállítása után a képtartalmakat visszaolvassuk a raszter-memóriából. A j. felületelem visszavert sugársűrűségét a következő összeggel becsüljük: ht L ep i j (!) ß lx i=1 Φ i X 4ßf 2 A j p2p j f r (! 0 i ;~x;!) cos 3 p ffip; ahol ffip egyetlen pixel területe. Ha a kép felbontása R, akkor ffip = 4f 2 =R 2 : A BRDF-t f ~ j (! i 0 ;!)-vel közelítjük a j. felületelem belsejében. Végül a visszavert sugársűrűséget három tényezőre bonthatjuk: a fényforrás Φ i kisugárzott hullámhosszfüggő teljesítményére, a f ~ j (! i 0 ;!) BRDF-re, amely maga is hullámhossz függő, és a következő skaláris tényezőre: r ij = 1 X ßR 2 A j p2p j cos 3 p : Ezeket a skaláris tényezőket az előfeldolgozás során számítjuk ki és az elemi felületelemeken tároljuk őket. A tárolóigény a felületelemek számának és a pontszerűfényforrások számának szorzata. A globális illuminációs számítások alatt, amikor a ht L ep i j (!) visszavert sugársűrűségre van szükség a j. felületelem egy ~x pontjában, ezt menet közben számítjuk az eltárolt r ij skaláris paraméterből, az ~x pontot a fényforrással összekötő irányból és a fényforrás sugárzási teljesítményéből: 6.6.3. Kis területi fényforrások ht L ep i j (!) = lx i=1 Φ i r ij f j r (!0 i;!): (6.16) Ebben a fejezetben a kis területi fényforrások fényének egyszeres viszaverődésének számítását tárgyaljuk. Tekintsük az S területű L e (~y;!) emissziójúfényforrás hatását az ~x pontra: (T L ep )(~x;!) = ΩS L e (h(~x;! 0 );! 0 ) f r (! 0 ;~x;!) cos 0 d! 0 = S L e (~y;! 0 ) cos v(~y;~x) j~y ~xj 2 f r (! 0 ;~x;!) cos 0 d~y; ahol Ω S azon térszög, amelyben az S fényforrás látható, ~y afényforráson futó változó, pedig az! 0 irány és az ~y pontban érvényes felületi normális által bezárt szög. A j. felületelem átlagos visszavert sugársűrűsége ht L ep i j (!) = 1 A j (T L ep )(~x;!) d~x = A j S 1 A j A j L e (~y;! 0 ) cos v(~y;~x) j~y ~xj 2 cos 0 f r (! 0 ;~x;!) d~x d~y: A külső integrált trapéz szabállyal becsüljük. A fényforrás területét háromszögekre (vagy négyszögekre) bontjuk és az integrandust a csúcspontokban számítjuk, a többi pontban pedig lineárisnak tekintjük. Ha a csúcspontok száma l, a kvad-

ratúra a következő alakú: ht L ep i j (!) ß lx i=1 S ti A j A j L e (~y i ;! 0 i ) cos i v(~y i ;~x) 3j~y i ~xj 2 cos i 0 f r (! i 0 ;~x;!) d~x; ahol S ti azon fényforrás háromszögek teljes területe, amelyek az i. csúcspontra illeszkednek és az 1=3 szorzó annak a következménye, hogy minden háromszögnek három csúcsa van. Vegyük észre, hogy a belső integrál a 6.14. egyenlet integráljával megegyező, ha elvégezzük a következő helyettesítést: Φ i 4ß ( Le (~y i ;! i 0 ) cos i Sti : 3 Még egy különbségre kell felhívni a figyelmet. Egy egyoldalú területi fényforrás csak abba a féltérbe sugározhat, amely afényforrás síkja felett van, így az ablak felülete félkocka lesz (6.7. ábra). 6.7. ábra. A félkocka és a fényforrás mintapont elhelyezkedése, valamint az 5 félkocka lapon keresztül látható képek Összefoglalva, a területi fényforrásokra végrehajtott első-lövés a következő lépésekből áll: először fényforrást háromszög hálóval közelítjük, majd egy félkockát helyezünk el a háló minden egyes ~y i csúcspontjára, és a felületek láthatóságát meghatározzuk. A r ij = 4S ti cos i X 3R 2 A j p2p j cos 3 p skaláris tényezőket a felületelemeken tároljuk. A globális illuminációs számítás során a visszavert radianciát a skarális tényezőkből kapjuk a következőmódon: ht L ep i j (!) = 6.6.4. Az első-lövés felhasználása a sugárköteg módszerben X i L e (~y i ;! 0 i ) r ij f j r (!0 i;!): (6.17) Egy iterációs lépésben nem csupán az előző átvitel sugársűrűségét verjük vissza az új irányba, hanem a felületelemből látható fényforrások bejövő sugársűrűségét is. A művelet ára l db BRDF számítás felületelemenként, ahol l a felületelemről látható fényforrások száma. 6.7. Szimulációs eredmények Az algoritmust C++ nyelven OpenGL környezetben implementáltuk. A képeket 500 500 felbontással számítottuk, a transzilluminációs buffer mérete 1000 1000 pixel volt. A futási időket egy 500 MHz-s Pentium III processzoros gépen mértük.

1 Error of rendering the Sierpiensky set With incoming first-shot Without first-shot 1 Error of rendering as a function of time With incoming first-shot Without first-shot L1 error 0.1 L1 error 0.1 0.01 1 10 100 1000 iterations 0.01 0 100 200 300 400 500 600 700 800 900 1000 time (seconds) 6.8. ábra. A sugárköteg módszer hibája és számítási ideje első-lövés nélkül és első-lövés alkalmazásával 0 iteráció, 0 sec 47 iteráció, 70 sec 100 iteráció, 150 sec első-lövés + 0 iteráció, 50 sec első-lövés + 20 iteráció, 70 sec első-lövés + 50 iteráció, 150 sec 6.9. ábra. Első-lövés nélkül (felső sor) és első-lövéssel számított képek

6.10. ábra. Erősen tesszellált hegy (60k háromszög) és gömbi valamint égbolt fényforrás első lövés nélkül 0 iteráció, 0 sec iteráció, 212 sec 200 iteráció, 424 sec első lövéssel első lövés + 0 iteráció, 116 secs első lövés + 50 iteráció, 272 secs első lövés + 100 iteráció, 432 secs 6.11. ábra. Hegyes táj, kb. 60 ezer felületelemmel

első lövés nélkül 0 iteráció, 0 sec 50 iteráció, 68 sec 100 iteráció, 137 sec első lövéssel első lövés + 0 iteráció, 50 sec első lövés + 10 iteráció, 70 sec első lövés + 50 iteráció, 150 sec 6.12. ábra. Az első lövés hatásának vizsgálata

sztochasztikus iteráció 0 iteráció 100 iteráció, 65 sec 200 iteráció, 130 sec véges elem tag 0 iteráció 100 iteráció, 66 sec 200 iteráció, 132 sec véges elem tag és becslés 0 iteráció 100 iteráció, 67 secs 200 iteráció, 134 secs véges elem tag és első lövés first-shot + 0 iteráció, 48 sec first-shot + 10 iteráció, 59 sec first-shot + 70 iteráció, 125 sec 6.13. ábra. Teáskanna és Beethoven (12.7k patches) véges-elem tag nélkül (első sor), véges-elem taggal (második sor), véges-elem taggal és kezdeti sugársűrűségbecsléssel (harmadik sor), véges-elem taggal és első lövéssel (negyedik sor)

L globális illuminációs megolás ~ L r véges elem komponens L direct direkt megvilágitás hatása 6.14. ábra. Sierpinski halmaz 21 sec, első-lövés 36 sec, 20 iteráció 51 sec, 40 iteráció 6.15. ábra. Csirkék Cornell dobozban az első lövés, 20 és 40 iteráció után

6.16. ábra. Egy ArchiCAD-ben modellezett konyha képe az interaktív bejárás során 6.17. ábra. Egy ArchiCAD-ben modellezett ház bejárása

7. fejezet Többmenetes képszintézis A képszintézis feladat megoldásához igen sokféle megközelítést ad az irodalom, amelyek közül többet ebben a dolgozatban is tárgyaltunk. A különbözőmegközelítések között nem hirdethetünk egyértelmű győztest, más-más tulajdonságú terekre más algoritmusok bizonyulnak jobbnak. Erre a felismerésre épít a többmenetes képszintézis, amely ugyanazt a színteret több eljárással is lefényképezi, majd a keletkezőképeket kombinálja, lehetőleg úgy, hogy a különböző eljárások erősségei megmaradjanak. A képszintézis algoritmusokat általában úgy képzelhetjük el, hogy azok valamilyen stratégia szerint megkeresik a fényforrásokat a szemmel összekötő, esetlegesen visszaverődéseket is tartalmazó fényutakat, és azok hatását összegezik. Nyilván különböző algoritmusok más és más fényút típusok előállításában jók. Például az inverz fényút követés hatékonyan kezeli a képen látható ideálisan törő vagy tükröző felületeket, de nagyon gyenge akkor, ha ezek a fényforrásból láthatóak. Ugyanakkor a fénykövetés éppen a fordított esetben jó, így kausztikus jelenetek létrehozására is alkalmas. A többmenetes képszintézis több algoritmust is bevet a végső kép számításához. A módszerek kombinálása több megközelítéssel is lehetséges. A kétmenetes képszintézisben az első, ún. globális lépés nem teljes, a kamerától független fényutakat állít elő. A nem teljes fényutakat a második, ún. lokális lépés fejezi be a kamera hozzájárulás számításával. Ebbe a családba tartozik a klasszikus radiozitás és sugárkövetés egyesítése, és a foton térkép módszer is. Atöbbmenetes képszintézis másik családját azok a módszerek képviselik, amelyekben minden módszer teljes fényutakat állít elő. Ezekben különös gondot kell fordítani arra, hogy egyetlen fényutat se állítsunk elő többször, és ha mégis megtesszük, akkor ennek megfelelően súlyozva vegyük őket figyelembe. Az első megoldáshoz olyan módszerek vezetnek, ahol az egyes algoritmusok csak adott visszaverődés típusokat kezelnek. Számunkra fontosabb a második család, ahol a súlyok számításának feladatával kell megbírkózni, lehetőleg úgy, hogy az egyes módszerek előnyös tulajdonságait ne veszítsük el. Erre kínál megoldást a következő fejezet eljárása, amely feltételezi, hogy a különböző Monte-Carlo módszerek eltérő mintavételi stratégiát alkalmaznak. 7.1. Többszörös fontosság szerinti mintavételezés Tételezzük fel, hogy n különböző mintavételező technikát használunk fel a véletlen utak generálására, ahol a minták eloszlása a különböző p 1 ;:::;p n fontosság szerinti mintavételező eloszlásokból áll össze. A p i eloszlásból vett minták számát jelöljük M i -vel, és az összes minta száma pedig legyen M = P i M i. Az M i értékeket előre meghatározzuk, mielőtt még bármilyen mintát is vennénk. A z minta választásának átlagos valószínűségi sűrűsége ekkor ^p(z) = nx i=1 M i M p i(z): (7.1) Ezért az ezeket a mintákat használó integrálbecslő: f (z) f (z) dz = [0;1] s [0;1] s ^p(z) ^p(z) dz ß 1 M ahol z i;j a j. minta az i. eloszlásból, ésasúlyok nx XM i i=1 j=1 f (z i;j ) ^p(z i;j ) = nx 1 XM i M i=1 i j=1 w i (z i;j ) f (z i;j ) p i (z i;j ) (7.2) w i (z) = M i p i (z) P n k=1 M k p k (z) : (7.3) Nézzük meg ezt abban az esetben, ha az összes módszer egyforma számú mintapontot használ. A p i (z) annak a valószínűségét jelöli, hogy a z mintát az i. módszerrel állítjuk elő. A mintákat a súlyokkal kombináljuk, amelyek garantálják, 67

x 2 θ 2 ω 2 p L(x, ω ) ω p p θ 1 ω 1 x 3 x 1 7.1. ábra. A T 2 L e integrandusa egy két lépéses gyüjtőséta során hogy egyik mintát sem használjuk többször. A torzítatlan becsléshez minden z P vektorra érvényesnek kell lennie, hogy i w i(z) =1. Most vizsgáljuk meg, hogy hogyan alkalmazható ezazáltalános elv különböző globális illuminációs eljárások eredményének kombinálására. A globális illuminációs algoritmusok által szolgáltatott eredmény például a Neumann sor integráljainak kiértékelésével kapható meg ML = 1X i=0 MT i L e : (7.4) Avégtelen sor egyes tagjainak intuitív jelentése van: T 0 L e = L e afényforrások direkt hozzájárulása a mért fényteljesítményhez, T 1 L e az egyszeres visszaverődésekből származik, T 2 L e akétszeres visszaverődésekből, stb. Ebben az esetben tehát nem egyetlen integrált, hanem integrálok sorozatát kell számítani. Az integrálok természetesen nem egyformán fontosak, általában azt mondhatjuk, hogy a j. integrál fontossága j -vel arányos, ahol afényátadás kontrakciója. árt tereknél a kontrakcióatér átlagos albedója. Az egyensúly heurisztika szerint egy módszer egy z mintájának fontosságát a módszer mintaszámának (N) és az előállítás valószínűségének (p(z)) szorzata határozza meg. Terjesszük ki ezt az elvet arra az esetre, amikor egyszerre több integrált számolunk és mondjuk azt, hogy egy minta fontossága az i. módszer szerint v i (z) = X j N (j) i p (j) i (z) j ; ahol N (j) a j. integrálhoz használt minták száma, p (j) pedig a j. integrál mintáinak sűrűségfüggvénye. Az egyes integrálok számításában betöltött szerep súlyát tehát az integrál relatív fontosságával súlyozvan összegeztük. Ha a kontrakciót a lokális albedoval becsüljük, ami az orosz rulettnél célszerűen megegyezik s j -vel, azaz a folytatás valószínűségével, akkor a következő összefüggés állítható fel: Ebből, az egyensúly heurisztika szerinti súlyok: v i (z) =N i kx j=0 w i (z) = s 1 ::: s j p (j) 1 (z) v i (z) P n k=1 v k(z) : (7.5) Kombináljuk tehát a módszereket alkalmasan választott w i (z) súlyozás szerint: hli c = nx 1 XN i N i=1 i j=1 w i (z i;j ) l(z i;j) p i (z i;j ) ; (7.6) ahol l(z) a z út hozzájárulása. A következőkben az inverz fénykövetés és a párhuzamos sugár-köteg módszer kombinálásának lehetőségét vizsgáljuk meg, majd elemezzük a módszer olyan általánosítását, amelyben az inverz fénykövetést kétirányúfénykövetéssel váltjuk fel.

7.1.1. Inverz fénykövetés és párhuzamos sugárköteg módszer kombinációja Az inverz fénykövetés a szemből indítja a fényutakat és az egyes visszaverődéseknél BRDF mintavételezést alkalmazva választja ki a továbbhaladás irányát. Az orosz rulett elvei szerint a visszaverődéseknél véletlenszerűen dönt a fényút befejezéséről. Az inverz fénykövetés jól kezeli a látható ideális fényvisszaverő és fénytörő anyagokat. A párhuzamos sugárköteg módszer egyszerre az összes felületelem sugársűrűségét átviszi egy globális irányban. Különösen akkor hatékony, ha a felületek közel hasonló mértékben fényesek, és nem nagyon spekulárisak. Akét módszer javasolt kombinálásához mindkét módszer által számított fényutakhoz meg kell határozni az előállítás valószínűségét, valamint azt, hogy ugyanezt a fényutat a másik módszer milyen valószínűséggel állította volna elő. Az inverz fénykövetés mintáinak fontossága Az inverz fénykövetés orosz rulettet alkalmaz ahhoz, hogy megtalálja a fényút végét. Egy visszaverődési pontban s i valószínűséggel dönt az út folytatása mellett (az s i általában a lokális albedot közelíti). Ha nem folytatjuk az utat, a maradékból származó hozzájárulást zérusnak tekintjük. Ha folytatjuk, akkor p i a BRDF mintavételezésnek megfelelő. Tegyük föl, hogy összesen N 1 mintát generálunk egyetlen pixelre. Ekkor a direkt megvilágítást N 1 mintával, az egyszeres visszaverődést átlagosan s 1 N 1 mintával, az n-szeres visszaverődést s 1 ::: s n N 1 számú mintával becsüljük mintával becsüljük. Tegyük fel továbbá, hogy az adott fényút éppen k hosszú. A minta fontossága: v 1 (z) = kx j=0 N (j) 1 p (j) A sugárköteg módszer mintáinak fontossága 1 (z) j = N 1 kx j=0 (s 1 ::: s j ) 2 p (j) Tegyük föl, hogy összesen N 2 iterációt végzünk, és minden iterációután kiszámítjuk a kamerahozzájárulást. Ha N 2 elég nagy, akkor azt mondhatjuk, hogy minden visszaverődést N 2 számú mintával becsülünk. Az irányokat egyenletes eloszlás szerint generáljuk, egy vektor mentén mindkét irányban átvisszük a teljesítményt, így p 2 =1=2ß. A minta fontossága: v 2 (z) = 1X j=0 N (j) 2 p (j) 1 (z) j = N 1 kx j=0 (s 1 ::: s j ) 1 (z) j 1 2ß A fenti súlyok számítása az inverz fénykövetésnél triviális, a sugár-köteg módszernél azonban a BRDF-ek és albedok szorzatát a sugársűrűséghez hasonlóan tovább kell adni. 7.2. ábra. Az eredeti inverz fénykövetéssel számított kép,asúlyok ésakép ésasúlyok szorzata 7.1.2. Kétirányú fénykövetés és párhuzamos sugárköteg módszer kombinációja A kétirányú fénykövetés a normál inverz fénykövetésnél lényegesen hatékonyabb, ezért ahelyett ezt célszerű használni. Akétirányú sugárkövetés kombinációja a sugárköteg módszerrel azonban nem olyan egyszerű, hiszen igen körülményes

7.3. ábra. Az eredeti sugárköteg módszerrel számított kép, a súlyok ésasúlyozott kép 7.4. ábra. A sugárkötek módszer és az inverz fénykövetés segítségével számított, kombinált kép

7.5. ábra. Építészeti terek képei, amelyeket a kombinált módszerrel számítottunk annak számítása, hogy egy, a sugárköteg módszerrel előállított utat milyen valószínűséggel állítana elő a kétirányú fénykövetés. Ehelyett az előző fejezet eredményeit alkalmazhatjuk és a kombinációnál csak kvázi-optimális súlyokat keresünk. A kombinációs súlyokhoz szükséges valószínűségeket tehát a kétirányú fénykövetés útjainál az inverz fénykövetés szerint számítjuk.