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.
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 :
(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
(10.2) |
Zjednodušením rovnice (10.1) pomocou rovnice (10.2) získame rovnicu
(10.3) |
Následnou úpravou dostaneme rovnicu v tvare
(10.4) |
Vzájomné pôsobenie svetla medzi plochami môžeme vyjadriť v maticovom tvare ako:
(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.
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.
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.
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.
Obr.10.3
Nech plôška dAj žiari na dAi, potom v diferenciálnom tvare vyjadríme form faktor takto:
(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,
(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
(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ý,
(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ť,
(10.10) |
kde K je spomenutá konštantná funkcia. Tento vonkajší integrál je
spriemerovanie konštantnej funkcie a preto je rovný K.
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).
(10.11) |
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.
Obr.10.4
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.
Obr.10.5
Nasledujúci obrázok (obr.10.6) ilustruje výpočet delta faktorov na bočnej a hornej strane.
Obr.10.6
Po jednoduchých úpravách dostávame rovnice pre výpočet delta faktorov:
(10.12) |
(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.
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:
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;
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.
a) |
b) |
c) |
d) |
Obr.10.7
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).
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.
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.
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).
a) |
b) |
Obr.10.10
Na záver je tu ukážka použitia radiačnej metódy, pri renderovaní pohyblivých scén.