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.Začiatky radiačnej metódy sa datujú od roku 1984, hlavne prispením autorov M.F.Cohena a P.Greenberga. Kedž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účastnosti.
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 tieňovom algoritme 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 r
ozdelenie prostredia na konečný počet n disktré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. B
jFj-i je množstvo svetla opúšťajúceho jednotkový obsah plochyAj 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 ploôš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) |
(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á, vypuklá). 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 p
i 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 B
e= (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ázku XX. 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.2.
Obr. 10.2
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 integovať cez celú plochu Aj,
(10.7) |
čo je vlastne energetický príspevok dodaný celou plochou A
j. 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.
10.3.1 Výpočet form faktoru 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).(10.11) |
10.3.2 Výpočet form faktoru 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.3) 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 cosq i a deleniu plochou jednotkového kruhu zodpovedá p v menovateli.
Obr. 10.3
10.3.3 Výpočet form faktoru pomocou polkocky
Radšej ako analyticky projektovať každú plochu A
j do hemisféry, Cohen a Greenberg vymysleli praktickejší algoritmus. Zostrojíme nad plôškou dAi polkocku (hemicube), znázornenú na obrázku (obr. 10.4). 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.4
Nasledujúci obrázok (obr. 10.5) ilustruje výpočet delta faktorov na bočnej a hornej strane.
Obr. 10.5
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 polokocky.
Určenie konfiguračných faktorov vyžaduje riešiť problém vidiťeľ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 bufra, 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
Cieľom tejto metódy, ktorej autorom je Cohen, je zobraziť výsledok po každej iterácii. 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 energiuou, 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 nneznámu radiositu 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.
10.5 Adaptívne delenie plôch
Keď scéna obsahuje veľké rozdiely B
i 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 riadka vznikne menšia podsústava so známimi 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.6.Pretože konfiguračné faktory vyjadrujú globálny geometryický 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 lin
eárnych rovníc (10.5) pre výpočet intenzity vyžarovania.
10.6 Zhodnotenie radiačnej metódy
Velmi 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ľa
de 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ú.