10.1 Úvod

        Hoci algoritmus sledovania lúča(Ray-tracing) odvádza perfektné výsledky pri modelovaní zrkadlového odrazu a nerozptylovej refraktívnej transparencie, predsa má tento algoritmus jeden nedostatok. A síce, že nezohľadňuje fyzikálne zákony, pre niektoré dôležité vizuálne efekty, napr. zafarbenie tieňa, vplyvom odrazu svetla od iného objektu. Je to kvôli tomu, že Ray-tracing sleduje len konečný počet lúčov, vychádzajúcich z oka pozorovateľa. Tento nedostatok sa snaží odstrániť radiačná metóda.
        Začiatky radiačnej metódy sa datujú od roku 1984, hlavne prispením autorov M.F.Cohena a P.Greenberga. Keďže táto metóda je veľmi náročná na výpočtovú techniku začína sa v praxi presadzovať až v súčasnosti.
        Radiačná metóda (radiosity method) je založená na princípoch šírenia svetelnej energie a na energetickej rovnováhe. Jednotkou intenzity vyžarovania je Wm-2. Táto metóda, na rozdiel od konvenčných renderovacích algoritmov, najskôr determinuje všetky vzájomné svetelné pôsobenia v prostredí z rôznych nezávislých pohľadov. Potom jeden, alebo viac pohľadov je vypočítaný vymedzením viditeľného povrchu a interpolačným tieňovaním. Na lepšie pochopenie si môžeme predstaviť, že nahradíme lokálny Phongov model presnejším globálnym svetelným modelom, zohľadňujúcim len difúzny odraz.

10.2 Radiačná rovnica

        Pri algoritme na tieňovanie sa o svetelných zdrojoch vždy uvažovalo nezávisle od povrchov, ktoré osvetľovali. Na rozdiel od toho, radiačná metóda dovoľuje ľubovoľnému povrchu emitovať svetlo, teda všetky svetelné zdroje sú modelované prirodzene ako aktívna plocha. Predstavme si rozdelenie prostredia na konečný počet n diskrétnych plôšok(patches), z ktorých každá má konečnú veľkosť a emituje a odráža svetlo rovnomerne z celej svojej plochy. Scéna teda pozostáva s plôšok, ktoré pôsobia zároveň ako svetelné zdroje aj ako odrážajúce plochy vytvárajúce uzavretý systém. Ak považujeme každú plochu za nepriehľadný Lambertiánsky difúzny emitor a reflektor, tak potom pre plochu i platí z dôvodu zachovania energie rovnica :

vzorec 10.1

(10.1)

Bi a Bj sú intenzity vyžarovania(radiácie) plôch i a j, merané v jednotkách energia na jednotku plochy(W/m2). Ei je energia svetla vyžiarená z plochy i a má taký istý rozmer ako radiácia. Parameter pi je koeficient odrazu(reflektivita) plochy i a je bezrozmerný. Fj-i je bezrozmerný konfiguračný faktor(form faktor), ktorý špecifikuje energiu opúšťajúcu plochu j a prichádzajúcu na plochu i, berúc do úvahy tvar, relatívnu orientáciu oboch plôch, ako aj prítomnosť akýchkoľvek plôch, ktoré by mohli zavadzať. Konfiguračný faktor nadobúda hodnoty z intervalu <0,1>, pričom pre úplne zakryté plochy nadobúda hodnotu 0. Ai a Aj sú obsahy plôšok i a j.
        Rovnica (10.1) udáva, že energia opúšťajúca jednotkovú časť povrchu, je súčet svetla emitovaného a reflektovaného. Reflektované svetlo sa vypočíta ako súčin koeficientu odrazu a sumy dopadajúceho svetla. Dopadajúce svetlo je naopak súčet svetla opúšťajúceho celú plochu, zmenené o časť svetla, ktoré dosahuje jednotkový obsah prijímajúcej plochy. BjFj-i je množstvo svetla opúšťajúceho jednotkový obsah plochy Aj a dopadajúci na celú plochu Ai. Preto je potrebné násobiť rovnicu pomerom Aj/Ai na určenie svetla, opúšťajúceho celú plôšku Aj a dopadajúceho na plôšku Ai.

    Medzi konfiguračnými faktormi v difúznom prostredí platí jednoduchý vzťah

vzorec 10.2

(10.2)   

Zjednodušením rovnice (10.1) pomocou rovnice (10.2) získame rovnicu

vzorec 10.3

(10.3)   

Následnou úpravou dostaneme rovnicu v tvare

vzorec004.gif (392 bytes)

(10.4)   

Vzájomné pôsobenie svetla medzi plochami môžeme vyjadriť v maticovom tvare ako:

vzorec005.gif (2256 bytes)

(10.5)   

        Všimnite si, že musí byť braný do úvahy aj príspevok časti plochy ku svojej vlastnej odrazenej energii (môže byť dutá, konkávna). Teda vo všeobecnosti každý výraz na diagonále nemusí byť nutne rovný 1. Rovnica (10.5) musí byť riešená pre každú skupinu vlnových dĺžok v svetelnom modeli, pretože pi a Ei závisia od vlnovej dĺžky. Form faktory sú nezávislé od vlnovej dĺžky a sú výhradne funkciou geometrie, teda nemusia byť prepočítavané ak sa reflektivita povrchu, alebo osvetlenie zmení.
        Rovnica (10.5) môže byť vyriešená použitím Gauss-Seidelovej metódy, získajúc radiáciu pre každú plochu. Plôšky potom môžu byť počítané z ľubovolného bodu pohľadu pomocou konvenčného algoritmu viditeľného povrchu. Namiesto použitia plošného tieňovania, môžeme počítať vrcholové radiácie z radiácií plôšok, aby sme mohli použiť interpolačné tieňovanie. Cohen a Greenberg navrhujú nasledujúci spôsob na rozdelenie intenzít vyžarovania vrcholov. Ak je bod vnútorný ku povrchu, je mu priradená priemerná radiácia z radiácií plôšok, ktoré sa o tento bod delia. Ak je tento bod na okraji, potom hľadáme najbližší vnútorný bod v. Radiácia okrajového vrcholu, keď je spriemerovaná s Bv, by mala byť priemerom radiácií plôšok, ktoré sa delia o tento okrajový vrchol.

obrazok001.gif (639 bytes)

Obr.10.1

        Uvažujme o plôškach na obr.10.1. Radiácia pre vnútorný vrchol e je Be= (B1+B2+B3+B4) /4. Radiácia pre okrajový vrchol b je počítaná nájdením najbližšieho vnútorného vrcholu e zohľadňujúc, že b je zdieľané plochami 1 a 2. Preto na výpočet Bb použijeme nasledujúcu definíciu

(Bb+Be)/2 = (B1+B2)/2

        Riešením pre Bb dostaneme Bb= B1+B2-Be. Vnútorný vrchol najbližšie ku vrcholu a je tiež vrchol e a samotný vrchol a je časť plochy 1. Preto, keďže (Ba+Be) /2 = B1, dostaneme pre Ba=2B1-Be. Radiácie pre ďalšie vrcholy sa počítajú obdobne.

        Prvá radiačná metóda bola použitá Goralom, ktorý používal obrysové integrály na výpočet form faktora pre konvexné prostredie bez pohltených povrchov, ako je ukázané na obr.10.2a-c.

 

kocka1.jpg (19874 bytes)

kocka2.jpg (17242 bytes)

kocka3.jpg (16691 bytes)

a)

b)

c)

Obr.10.2

  Na obr.10.2a je pôvodná kocka so šiestimi stranami (predná biela nie je zobrazená), ktorú chceme modelovať. Na obr.10.2b je renderovaý obraz so 49 plôškami na stranu s použitím konštantného tieňovania a na obr.10.2c je renderovaný obraz so 49 plôškami na stranu s použitím interpolačného tieňovania. Všimnite si efekty “krvácajúcej farby”, spôsobené difúznym odrazom medzi priľahlými povrchmi, viditeľnými v modeli aj v renderovanom obraze. Difúzne povrchy majú prímesy farieb, ktoré sú odrážané ďalšími difúznymi povrchmi. Aby sa radiačné metódy stali parciálnymi, museli sa začať počítať form faktory pre pohltené povrchy.

10.3 Výpočet form faktorov

        Cohen a Greenberg prispôsobili algoritmus presného obrazu a viditeľného povrchu, na efektívne aproximovanie form faktoru jednotlivých plôšok. Uvažujme o 2 plochách, ako je znázornené na obr.10.3.

obrazok002.gif (2950 bytes)

Obr.10.3

        Nech plôška dAj žiari na dAi, potom v diferenciálnom tvare vyjadríme form faktor takto:

vzorec006.gif (547 bytes)

(10.6)   

qi je uhol, ktorý zviera lúč s normálou plochy Ai, q j je uhol, ktorý zviera lúč s normálou plochy Aj, a r je dĺžka lúča. Hij nadobúda hodnoty 1 alebo 0, v závislosti od toho či je, alebo nie je dAj viditeľné z dAi. Z tohto dôvodu analytický výpočet je často nemožný a dá sa realizovať len v špeciálnych prípadoch. Na výpočet form faktoru z diferenciálnej plôšky dAi na konečnú plochu Aj potrebujeme integrovať cez celú plochu Aj,

vzorec007.gif (598 bytes)

(10.7)   

čo je vlastne energetický príspevok dodaný celou plochou Aj. Nakoniec, form faktor z Ai na Aj je priemerná hodnota rovnice (10.7) cez plochu Ai

vzorec008.gif (738 bytes)

(10.8)   

V prípade, že vzdialenosť r je podstatne väčšia ako rozmery plôšok Ai a Aj, potom parametre qj, qj a r sú skoro konštantné v podintegrálnej funkcii a preto často považujeme nasledujúci integrál (10.9) za konštantný,

vzorec009.gif (502 bytes)

(10.9)   

čím sa výpočet výrazne zjednoduší.

        Pokiaľ nedochádza k zakrytiu inými plochami medzi plôškami, potom môžeme približne počítať,

vzorec010.gif (520 bytes)

(10.10)   

kde K je spomenutá konštantná funkcia. Tento vonkajší integrál je spriemerovanie konštantnej funkcie a preto je rovný K.

10.3.1 Výpočet form faktorov pomocou sledovania lúča

        Jedným z možných metód riešenia integrálu (10.7) je metóda Monte Carlo. Náhodne vyberáme body na plochách Ai a Aj a príslušný integrál nahradíme súčtom form faktorov pre diferenciálne plôšky. Iný spôsob riešenia integrálu spočíva vo vzorkovaní. Predpokladajme, že plochu Aj najprv rozložíme na menšie plôšky a pre každú z nich určíme vzorkovací bod, ktorý bude zastupovať danú plôšku. Wallace navrhol pre obdĺžnikové plochy rozdelenie po riadkoch a stĺpcoch a vybral stred menšieho obdĺžnika za vzorkovaný bod. Potom sa integrál (10.7) nahradí súčtom (10.11).

vzorec011.gif (812 bytes)

(10.11)   


10.3.2 Výpočet form faktorov pomocou polgule

        Iný spôsob výpočtu form faktora je postavený na geometrickej analógii. Zostrojíme nad plôškou dAi jednotkovú polguľu(hemisphere), ktorá vlastne vyjadruje priestorový uhol, cez ktorý plôška dAi prijíma energiu.(obr.10.4) Priemet plochy dAj na túto polguľu priamo určuje priestorový uhol, pod ktorým plôška dAi vidí plochu dAj. Kolmý priemet tejto časti polgule do základnej roviny dAi je v priamom vzťahu s form faktorom. Presnejšie je rovný tejto ploche delenej plochou kruhu. Projekciu do jednotkovej hemisféry vyjadruje v rovnici (10.7) člen cosq j/r2, projekcia na základňu hemisféry zodpovedá násobeniu členom cosqi a deleniu plochou jednotkového kruhu zodpovedá p v menovateli.

obrazok003.gif (3989 bytes)

Obr.10.4


10.3.3 Výpočet form faktorov pomocou polkocky

        Radšej ako analyticky projektovať každú plochu Aj do hemisféry, Cohen a Greenberg vymysleli praktickejší algoritmus. Zostrojíme nad plôškou dAi polkocku (hemicube), znázornenú na obr.10.5. Polkocku pokryjeme pravidelnou mriežkou a každý štvorec tejto mriežky je charakteristický určitou hodnotou nazývanou delta faktor D F. Hodnota delta faktora vyjadruje veľkosť energetického príspevku plochy premietnutej do tohto štvorca. Sčítaním delta faktorov zo štvorcov, na ktoré sa plocha dAj premieta, získame konfiguračný faktor Fij.

obrazok004.gif (4467 bytes)

Obr.10.5

Nasledujúci obrázok (obr.10.6) ilustruje výpočet delta faktorov na bočnej a hornej strane.

obrazok005.gif (3795 bytes)

Obr.10.6

Po jednoduchých úpravách dostávame rovnice pre výpočet delta faktorov:

vzorec012.gif (919 bytes)

(10.12)   

vzorec013.gif (890 bytes)

(10.13)   

Kde DAj, DAl sú plochy štvorčekov mriežky polkocky.

        Určenie konfiguračných faktorov vyžaduje riešiť problém viditeľnosti, aby sme určili najbližšiu plochu, ktorá sa premietne na príslušný pixel. Na tento účel sa používa modifikovaný algoritmus z-buffer. Pre každú stenu riešime vlastný z-buffer. Scénu transformujeme tak, aby stred plochy ležal v rovine xy. Veľkosť pamäti pre z-buffer zodpovedá hustote mriežky polokocky. V praktických riešeniach sa pohybuje tento počet od 50x50 až do 100x100. Do druhého buffera, ktorý sa používa pre farbu, budeme ukladať poradové číslo plochy. Form faktory dostaneme sčítaním delta faktorov všetkých štvorcov mriešky polokocky, ktoré majú rovnaké poradové číslo plochy.

10.4 Progresívne zlepšenie

        Pretože radiačná metóda je veľmi náročná na výpočtový čas, naskytá sa otázka, či by nebolo možné zobrazovať výsledky postupne a teda či by nebolo možné zobraziť výsledok výpočtu po určitých krokoch, aj keby tento výsledok bol trochu nepresný, a v prípade nespokojnosti ho použiť pre výpočet presnejšieho výsledku. Tento postup ako prvý použil Cohen, ktorý zobrazoval výsledok po každej iterácii. Výhodou tohoto algoritmu je, že výpočet môžeme pomerne skoro prerušiť a pustiť od znova pri zistení prípadnej chyby. Pseudokód algoritmu vyzerá nasledovne:

Ciara.gif (8823 bytes)
	function progressive-refinement_radiosity;
	begin
	    for i=1 to n do
	    begin
	        Bi=Ei;				{začiatok iterácie vektora riešenia}
	        dBi= Ei;
	    end;
	    while( not converged)
	    begin
	        pick(i);			{vyber i tak, aby dBi*Ai bolo maximálne}
	            for j=1 to n do
	            begin
	                drad=dBi*pj*Fji;
	                dBi+=drad;
	                Bj+=drad;
	            end;
	        dBi=0;
	        plot(scene)			{zobraz scénu s aktuálnym Bi}
	    end;
	output B;
	end;

Ciara.gif (8823 bytes)

        V tomto algoritme majú všetky plôšky okrem hodnôt intenzity vyžarovania Bi ešte nastavené hodnoty dBi, ktoré znamenajú časť ešte nevyžiarenej energie. V každej iterácii sa vyberie plôška z najväčšou nevyžiarenou energiou, ktorá sa nechá vyžiariť. Dôsledkom tejto akcie, j-ta plôška dostane príspevok novej intenzity vyžarovania drad, ktorá sa pripočíta k Bj, ale aj k dBj, pretože táto nová prijatá energia nie je vyžiarená. Prirodzene, že vyžiarená i-ta plôška nemá čo viac vyžiariť a preto dBi=0.

        Lineárnu sústavu (10.5) pre neznámu radiozitu Bi riešime v prípade farebných modelov trikrát, t.j. pre každú základnú farbu RGB, pretože parametre pi a Ei sú závislé od farby. Jedine konfiguračné faktory ostávajú rovnaké, pretože sú nezávislé od farby. Vypočítané hodnoty Bi používame na zobrazenie scény. Farby budú zodpovedať hodnotám intenzity vyžarovania Bi. Pri výpočte form faktorov často zjednodušíme výpočet konštantnými hodnotami na plôške. Preto na záver na zobrazenie využívame Gourardovu interpoláciu intenzít, čím dosiahneme spojitý prechod farieb medzi susednými plôškami.

        Na nasledujúcich obrázkoch (obr.10.7a-d) môžeme vidieť použitie progresívneho zlepšenia, kde pre výpočet form faktorov bola použitá polkocka. Model kancelárie sa skladá s 500 plôšok a 7000 podplôšok. Na obrázku 10.7a vidíme výsledok renderovania už po jednej iterácii. Na obrázku 10.7b po 2 iteráciách 10.7c po 24 iteráciách a na obrázku 10.7d po 100 iteráciách. Vidíme, že už po 24 iteráciách dostávame pekný výsledok, ktorý ešte ďalšími iteráciami naberá na reálnosti.

room1.jpg (23258 bytes)

room2.jpg (25416 bytes)

a)

b)

room3.jpg (25335 bytes)

room4.jpg (21978 bytes)

c)

d)

Obr.10.7

10.5 Adaptívne delenie plôch

        Keď scéna obsahuje veľké rozdiely Bi pre blízke plochy, potom je vhodné urobiť rozdelenie na menšie plochy. Ak zjemníme delenie, potom nemusíme počítať form-faktory pre všetky plochy, pretože celková energia jednej plochy sa iba rozdelí na ich súčet. Z jedného pôvodného riadku vznikne menšia podsústava so známymi parametrami.

        V praxi často delíme plochy adaptívne podľa vypočítaných jasových úrovní. Táto situácia je zobrazená na obr.10.8, kde si môžeme všimnúť rozdiely pri nohách stola. Na obrázku 10.8a je použité hrubé rozdelenie(145 plôšok). Na obrázku 10.8b je použité jemnejšie delenie (1021 plôšok) a na obrázku 10.8c je použité delenie ako na obrázku 10.8b a navyše je použité adaptívne delenie plôch (1306 plôšok).

 

stolfar1.jpg (24231 bytes)

stolfar2.jpg (23572 bytes)

stolfar3.jpg (22281 bytes)

a)

b)

c)

 Obr.10.8

       Pretože konfiguračné faktory vyjadrujú globálny geometrický vzťah prenosu energie medzi plochami, je prirodzené, že sú nezávislé na polohe pozorovateľa v scéne a môžu sa znovu použiť pri zmene pohľadu. Pri zmene osvetlenia a farieb objektov sa musíme vrátiť k sústave lineárnych rovníc (10.5) pre výpočet intenzity vyžarovania.

10.6 Zhodnotenie radiačnej metódy

        Veľmi príjemnou vlastnosťou radiačnej metódy je predovšetkým nezávislosť smerov pohľadov. Hodnoty osvetlenia jednotlivých plôch v scéne majú globálne vlastnosti pri pohľade zo všetkých smerov (štandardná radiačná metóda počíta iba z difúznym svetlom, nie zo zrkadlovou zložkou). Pôvodná radiačná metóda zobrazuje vlastne správne osvetlené plochy scény bez textúr, odrazov a lomov lúča. Rôzne implementácie radiačnej metódy sa líšia predovšetkým spôsobom optimalizácie, ktorá má znateľný vplyv na rýchlosť výpočtu, čo je veľmi dôležité kritérium. Nejde ani tak o absolútne riešenie osvetlenia, ako skôr o rýchlosť akou je obraz vytvorený. Pri výpočte reálnych scén totiž algoritmus vyžarovania končí po veľmi dlhej dobe a preto býva zastavený skôr, keď už obraz nevykazuje postrehnuteľné zmeny. Algoritmy preto v dnešnej dobe kombinujú vyžarovaciu metódu s ďalšími metódami, ktoré ale sú závislé na smere pohľadu, najčastejšie s metódou sledovania lúča(Ray-tracing). Výsledok tejto kombinácie patrí v dnešnej dobe k tomu najkvalitnejšiemu výstupu, ktorý dnešné komerčné systémy poskytujú. Príklad takejto kombinácie je na obr.10.9.

boiled.jpg (68001 bytes)

Obr.10.9

        Na obr.10.10 vidíme rozdiel medzi obrázkom na renderovanie ktorého sme použili iba  radiačnú metódu (obr.10.10a) a   obrázkom na renderovanie ktorého sme použili najprv radiačnú metódu a potom metódu sledovania lúča (Ray-tracing) (obr.10.10b).

zrkadlo1.jpg (20244 bytes)

zrkadlo2.jpg (21541 bytes)

a)

b)

Obr.10.10

        Na záver je tu ukážka použitia radiačnej metódy, pri renderovaní pohyblivých scén.