29
Fotorealistick Fotorealistick é é zobrazenie zobrazenie

Fotorealistick é zobrazenie

  • Upload
    adriel

  • View
    24

  • Download
    0

Embed Size (px)

DESCRIPTION

Fotorealistick é zobrazenie. Fotorealistické zobrazenie. Ak máme v scéne viacero objektov, neovplyvňujú sa len z hľadiska viditeľnosti, ale aj z hľadiska osvetlenia. 1. Objekty vrhajú tiene a polotiene, ktoré môžu zatieniť ostatné objekty - PowerPoint PPT Presentation

Citation preview

Page 1: Fotorealistick é zobrazenie

FotorealistickFotorealistické zobrazenieé zobrazenie

Page 2: Fotorealistick é zobrazenie

Fotorealistické zobrazenieFotorealistické zobrazenie Ak máme v scéne viacero objektov, neovplyvňujú sa len z hľadiska viditeľnosti, ale aj z hľadiska osvetlenia.

1. Objekty vrhajú tiene a polotiene, ktoré môžu zatieniť ostatné objekty 2. Svetlo odrazené od nejakého objektu môže osvetliť iný objekt 3. Ak majú objekty zrkadlový povrch, ostatné objekty sa na tomto povrchu môžu odrážať 4. Svetlo môže objektom prechádzať a pri tom sa lámať – cez objekt budú viditeľné ďalšie objekty

Metóda, ktorá pri osvetľovaní berie do úvahy aj vzájomné vplyvy telies, sa nazýva globálna zobrazovacia metóda alebo fotorealistické zobrazenie.

Page 3: Fotorealistick é zobrazenie

Vrhanie lúčaVrhanie lúča Vrhanie lúča (ray casting) je najjednoduchšia zobrazovacia metóda Cez každý pixel obrazu vyšleme smerom do scény lúč a hľadáme jeho prvý priesečník s nejakým telesom v scéne. V tomto bode potom vyhodnotíme osvetľovací model. Takéto zobrazenie ešte nie je fotorealistické, neuvažuje tiene ani vzájomné vplyvy telies.

pixel obrazu

vrhnutý lúč

Page 4: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúča Vyslaný lúč v skutočnosti nekončí pri prvom dopade na teleso. V bode dopadu sa môže lámať alebo odrážať a postupovať ďalej. Pri sledovaní lúča (ray tracing) sledujeme ďalší postup lúča, až kým lúč neopustí scénu. Takto môžeme zachytiť rôzne odrazy, lomy a tiene. Pri sledovaní lúča rozlišujeme niekoľko typov lúčov:

1. Primárny lúč – je to lúč vyslaný cez pixel obrazu smerom do scény. Celkový počet primárnych lúčov sa rovná počtu pixelov obrazu.

pixel obrazu

primárny lúč

Page 5: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúča 2. Sekundárny lúč – tento lúč sa vytvára po dopade lúča na teleso. Po dopade sa lúč môže od telesa odraziť, alebo ním prechádza a môže sa lámať, prípadne oboje naraz. Z jedného lúča môžu teda vzniknúť až dva sekundárne lúče – odrazený lúč a lomený lúč. Sekundárne lúče vznikajú z primárnych aj sekundárnych lúčov. Počet sekundárnych lúčov môže teda časom dosť narásť.

pixel obrazu

primárny lúč

odrazený lúčodrazený lúč

lomený lúč

lomený lúč

Page 6: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúča 3. Tieňový lúč – tento lúč sa vysiela po dopade primárneho alebo sekundárneho lúča z bodu dopadu k svetelnému zdroju. Ak lúč k svetelnému zdroju priamo dorazí, tak je daný bod týmto zdrojom osvetlený a zdroj sa zahrnie do osvetľovacieho modelu. Ak lúč narazí na nejaké teleso, potom je tento zdroj zatienený a daný bod leží v tieni.

pixel obrazu

primárny lúč

tieňový lúč

tieňový lúč

tieňový lúč

Page 7: Fotorealistick é zobrazenie

Rozšírený osvetľovací Rozšírený osvetľovací modelmodel

Vo Phongovom osvetľovacom modeli vystupovali tri zložky svetla: 1. Zrkadlová zložka IS – svetlo, ktoré prichádza od svetelného zdroja a v danom bode sa od povrchu telesa zrkadlovo odrazí 2. Difúzna zložka ID – svetlo, ktoré prichádza od svetelného zdroja a na povrchu telesa je rozptýlené (určuje farbu telesa) 3. Ambientná zložka IA – svetlo, ktoré pochádza od všetkých svetelných zdrojov, vzniká viacnásobnými odrazmi a je prítomné rovnako v celej scéne

Ak uvažujeme vplyvy ostatných telies, musíme do modelu zahrnúť ďalšie zložky:

4. Odrazová (reflected) zložka IR – je to svetlo, ktoré prichádza do daného bodu zo smeru odrazu. Toto svetlo je prítomné, ak je daný bod osvetlený svetlom, ktoré nepochádza zo zdroja, ale vznikne odrazom od nejakého iného telesa (mesačné svetlo). 5. Lomová (transmitted) zložka IT – je to svetlo, ktoré do daného bodu prichádza zo smeru lomu a pochádza tiež od iných telies, nie od zdroja.

Celkové osvetlenie je dané súčtom všetkých zložiek: I=IS+ID+IA+IR+IT

Page 8: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúča Algoritmus sledovania lúča môžeme zapísať nasledujúcim spôsobom:

Funkcia SledujLúč(lúč R) Nájdi priesečník P lúča R s najbližším telesom v scéne. Ak priesečník neexistuje, teda lúč opustil scénu, pripaď mu farbu pozadia a skonči. Z bodu P vyšli ku každému svetelnému zdroju tieňový lúč. Ak lúč k zdroju priamo dorazí, zdroj je nezakrytý. Určí príspevky osvetlenia od všetkých nezakrytých zdrojov. Vyšli odrazený lúč RR, SledujLúč(RR) Vyšli lomený lúč RT, SledujLúč(RT) Urči výslednú farbu lúča sčítaním príspevkov od jednotlivých zdrojov a od lúčov RR a RT (I=IS+ID+IA+IR+IT)

Pre každý pixel obrazu opakuj Vyšli cez pixel primárny lúč RP, SledujLúč(RP) Zafarbi pixel farbou lúča RP

Page 9: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúčaPríklad: Určime farbu pixelu X, ak máme tri zdroje bieleho svetla a biele pozadie scény. Sledujeme primárny lúč RP:

Lúč dorazí do bodu A Vyšleme tri tieňové lúče S1, S2, S3. Bod je priamo osvetlený zdrojmi L1, L3, vyhodnotíme osvetľovací model vzhľadom na ne (ak je ambientné svetlo biele, vyjde odtieň modrej).

Sledujeme odrazený lúč RR1: Lúč dorazí do bodu C Vyšleme tieňové lúče S4, S5, S6. Bod C je osvetlený zdrojom L1. Vyhodnotíme osvetľovací model vzhľadom na L1 (odtieň fialovej). Sledujeme odrazený lúč RR2:

Lúč opustí scénu, má farbu pozadia RR2 prispeje k farbe RR1 bielou farbou, výsledná farba RR1 bude teda o niečo svetlejší odtieň fialovej

X

RP

S2

S1

S3

RR1

RR2

RT1

RT2

S4

S5

S6

L3

L2

L1

A

B

CS7

S8

S9

Page 10: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúča Sledujeme lomený lúč RT1:

Lúč dorazí do bodu B Bod B je osvetlený zdrojmi L1, L3, vyhodnotením osvetľovacieho modelu odstaneme odtieň modrej Sledujeme lomený lúč RT2:

Lúč opustí scénu, má bielu farbu

RT2 prispeje k farbe RT1 bielou farbou, RT1 bude svetlomodrý

Vrátime sa k lúču RP. K jeho farbe prispieva osvetlenie svetelnými zdrojomi L1, L3 (odtieň modrej), svetlo prinesené lúčom RR1 (odtieň fialovej, ak nie je povrch v bode A dokonale matný) a svetlo prinesené lúčom RT1 (svetlomodrá). Výsledná farba RP bude teda modrofialová. Pixel X zafarbíme farbou lúča RP.

X

RP

S2

S1

S3

RR1

RR2

RT1

RT2

S4

S5

S6

L3

L2

L1

A

B

CS7

S8

S9

Page 11: Fotorealistick é zobrazenie

Sledovanie lúčaSledovanie lúča Metóda sledovania lúča poskytuje veľmi realistické výsledky, ale má svoje nedostatky:

Metóda narába len s bodovými zdrojmi svetla, v scénach môžu byť však rôzne typy zdrojov. Všetky vrhnuté tiene sú ostré, pričom skutočné tiene sú skôr neostré a vyskytujú sa polotiene. Väčšinou sa zanedbáva lom tieňových lúčov, čo celkom nezodpovedá realite. Ak sú v scéne zrkadlá, pri dopade svetla na ne sa sami stávajú svetelnými zdrojmi, čo v metóde nie je zahrnuté.

Metóda je výpočtovo veľmi náročná a pri každej zmene (zmena pozície pozorovateľa, zmena niektorého telesa) treba celý výpočet vykonať odznova. Preto sa v praxi nejde s rekurziou do veľkej hĺbky (hĺbka býva obyčajne 3 až 5).

Page 12: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu1. Využitie hierarchie obálok Keďže podstatnú časť algoritmu sledovania lúča tvorí hľadanie priesečníkov lúčov s telesami, urýchlenie tohto hľadania prinesie významné urýchlenie celej procedúry. Na rýchlejšie vyhodnotenie priesečníkov sa môže využiť tzv. hierarchia obálok. Obálka (bounding volume) telesa je teleso s jednoduchou geometriou, ktoré v sebe obsahuje celý daný objekt a pritom má najmenší možný objem. V praxi sa používa napr. kváder alebo guľa.

Page 13: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu Výhoda obálky spočíva v tom, že pri hľadaní priesečníka lúča (priamky) a telesa sa najskôr hľadá priesečník lúča s obálkou. Keďže obálka je jednoduchý útvar, takýto test je jednoduchý. Ak lúč nepretína obálku, určite nepretína ani teleso. Až keď lúč obálku pretína, hľadáme priesečník so samotným telesom. Ak máme v scéne objekty, ktoré väčšina lúčov nepretína, znamená to podstatné urýchlenie výpočtov. Výpočty sa dajú ďalej urýchliť pomocou hierarchie obálok, ktorá združuje do celkov blízko ležiace telesá.

Page 14: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu Hierarchia obálok sa ukladá pomocou stromu – koreň stromu je obálka celej scény a listy sú potom menšie obálky, ktoré združujú niektoré blízke objekty.

A B

C

D

E

obálka scény

obálka A+B+C obálka D+E

obálka A+B obálka C obálka D obálka E

obálka A obálka B

Page 15: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu

Príklad: Zistime, či priamky p,q,r,s pretínajú nejaké teleso v scéne priamka p:

nepretína obálku A+B+C pretína obálku D+E

nepretína obálku D pretína obálku E

pretína teleso E priamka q:

nepretína obálku A+B+C nepretína obálku D+E

priamka r: pretína obálku A+B+C

pretína obálku A+B nepretína obálku A nepretína obálku B

nepretína obálku C

A B

C

D

E

p q r s

Page 16: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu

A B

C

D

E

p q r s

priamka s: pretína obálku A+B+C

pretína obálku A+B nepretína obálku A pretína obálku B

pretína teleso B pretína obálku C, ale A+B je bližšie

Potrebovali sme 16 testov prieniku s obálkami, ktoré sú veľmi jednoduché, a len dva testy prieniku s telesami. Bez hierarchie obálok by sme potrebovali 4.5=20 testov prieniku s telesami. Zostrojenie hierarchie obálok samozrejme nie je jednoduchá záležitosť, sú potrebné špeciálne algoritmy. V skutočnosti sa jej vytvorenie oplatí až keď sa počet objektov v scéne pohybuje rádovo aspoň v stovkách.

Page 17: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu2. Pamäť prekážok Pamäť prekážok (light buffer) slúži na urýchlenie práce s tieňovými lúčmi, keďže ich môže byť veľké množstvo. Pamäť prekážok svetelného zdroja je kocka obklopujúca zdroj, ktorej povrch je rozdelený na bunky. Pre každú bunku sa uloží zoznam objektov, ktorých priemet bunku aspoň čiatočne pokrýva.

Page 18: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu Zoznam objektov, ktorých priemet zasahuje do bunky, sa usporiada vzostupne podľa vzdialenosti od svetelného zdroja. Ak je v zozname len jeden objekt, zoznam sa môže vyprázdniť – toto teleso nemôže zatieniť svetelný zdroj inému telesu, keďže žiadne iné teleso v zozname nie je. Ak priemet niektorého telesa pokrýva celú bunku, všetky vzdialenejšie telesá sa môžu zo zoznamu vymazať – určite nebudú zdrojom osvetlené.

Page 19: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu

Ak vyšleme z nejakého bodu telesa T tieňový lúč smerom k svetelnému zdroju, postupujeme takto:

Nájdeme bunku v pamäti prekážok, ktorú tento lúč pretína Skúmame zoznam prekážok pre danú bunku:

Ak je zoznam prázdny, znamená to, že pôvodne v ňom bolo len samotné teleso T a preto bol zoznam vyprázdnený. Žiadne iné teleso teda nestojí telesu T v ceste k zdroju a T je osvetlené. Ak T v zozname nie je a zoznam nie je prázdny, znamená to, že T bolo odstránené, lebo niektoré predchádzajúce teleso zakrylo celú bunku. T teda nie je zdrojom osvetlené. Ak je T v zozname, musíme zistiť, či lúč pretína nejaké teleso, ktoré je v zozname pred T.

Zostrojenie pamäti prekážok je tiež časovo náročné, preto sa oplatí až pri väčšom počte telies a svetelných zdrojov.

Page 20: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu3. Adaptívny antialiasing Keďže v obraze sa môžu vyskytovať veľké plochy rovnakej farby alebo naopak susedné pixely veľmi odlišnej farby, je výhodné robiť raytracing adaptívne. Na začiatku si vytvoríme v obraze riedku sieť – obraz rozdelíme na rovnaké obdĺžnikové oblasti veľkosti MN pixelov. Vyšleme lúče len cez rohové body týchto oblastí Ak zistíme, že vo všetkých rohových pixeloch niektorej oblasti dostaneme rovnakú (takmer rovnakú) farbu, môžeme celú oblasť zafarbiť rovnako. Ak farby v rohoch vyjdú odlišné, túto oblasť ďalej rozdelíme na menšie oblasti a vyšleme lúče cez rohové pixely týchto menších podoblastí.

Page 21: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu S touto technikou môžeme postupovať ďalej, aj keď sa už dostaneme na úroveň jedného pixelu. Ak sa farby v susedných pixeloch veľmi líšia, môžeme zobrazenie ešte spresniť tým, že si pixel predstavíme ako štvorcovú plochu, ktorá sa dá ďalej deliť. Rozdelíme pixel na podoblasti a každou podoblasťou vedieme do scény primárny lúč. Každá podoblasť pixelu bude mať potom svoju farbu a výslednú farbu získame ako priemer týchto farieb.

Page 22: Fotorealistick é zobrazenie

Urýchlenie raytracinguUrýchlenie raytracingu4. Riadenie hĺbky rekurzie

V scéne sú väčšinou objekty z rôznych materiálov, niektoré môžu mať zrkadlový povrch, iné naopak veľmi matný. Ak ideme s rekurziou do hĺbky, nové sekundárne lúče stále menej prispievajú k výslednej farbe skúmaného bodu. Takisto ak máme objekty z priehľadných materiálov, v ktorých sa svetlo láme, pri prechode každým takýmto telesom väčšinou nastáva útlm, pretože časť svetla je pohltená telesom.

Preto pri raytracingu zisťujeme, aký veľký je príspevok aktuálneho sekundárneho lúča k výslednej farbe skúmaného bodu. Ak zistíme, že tento príspevok je už pod istou hranicou, rekurziu zastavíme. Pri takomto postupe budú lúče, ktoré dopadajú na zrkadlové plochy, postupovať dlhšie a tie, ktoré dopadajú na matné plochy, alebo prechádzajú prostrediami, ktoré pohlcujú svetlo, sa po niekoľkých krokoch zastavia.

Page 23: Fotorealistick é zobrazenie

RadiozitaRadiozita Radiozita je metóda založená na fyzikálnych zákonoch, ktorá sa snaží fyzikálne korektne simulovať šírenie svetla v scéne. Týmto spôsobom odstraňuje niektoré nedostatky metódy sledovania lúča.

Základná radiozita na rozdiel od raytracingu pracuje len s plošnými svetelnými zdrojmi a berie do úvahy len difúznu zložku svetla a nepriehľadné telesá. Pre zjednodušenie výpočtov sa predpokladá, že objekty v scéne sú aproximované rovinnými plôškami.

Radiozita ako fyzikálna veličina je svetelná energia vyžiarená jednotkovou plochou. Jej hodnotu v bode x označujeme B(x). Platí B(x)0.

Keďže berieme do úvahy difúznu zložku svetla, dôležitou veličinou v metóde je tzv. difúzna odrazivosť plochy. Udáva, aká časť zo svetelnej energie, ktorá do daného bodu dopadá, je opäť vyžiarená do priestoru. Označujeme ju (x) a platí 0 (x) 1.

Page 24: Fotorealistick é zobrazenie

RadiozitaRadiozita Radiozita je metóda, ktorej podstatou je riešenie tzv. radiozitnej rovnice. Táto rovnica hovorí, že svetelná energia vyžiarená z nejakého bodu na povrchu telesa je rovná súčtu vlastnej svetelnej energie bodu a svetelnej energie, ktorá do tohto bodu dopadá zo všetkých ostatných telies a ďalej sa odráža do priestoru.

Zaveďme označenia: B(x) – radiozita v bode x E(x) – vlastná svetelná energia bodu x (majú ju len zdroje svetla) (x) – difúzna odrazivosť v danom bode G(x,x’) – geometrický člen, ktorý vyjadruje vzájomnú polohu bodov x a x’ – zahŕňa ich vzájomnú viditeľnosť, uhol medzi normálami a vzdialenosť. Tento člen má vyššiu hodnotu, ak sú body navzájom viditeľné, normály v nich sú orientované tak, že body žiaria priamo na seba a ich vzdialenosť nie je veľká. Ak vzdialenosť stúpa a normály sú navzájom pootočené, hodnota geometrického člena klesá.

Page 25: Fotorealistick é zobrazenie

RadiozitaRadiozita Matematická formulácia radiozitnej rovnice:

S

dxxxGxBxxExB ')',()'()()()(

kde S je zjednotenie všetkých plôch v scéne.

Integrál v rovnici vyjadruje svetelnú energiu, ktorá dopadá do bodu x zo všetkých ostatných bodov v scéne a je ďalej vyžiarená do priestoru. Vidíme, že hodnota tejto energie závisí od:

radiozity B(x’) všetkých ostatných bodov - čím je radiozita ostatných bodov väčšia, tým viac svetelnej energie do bodu x dopadá difúznej odrazivosti v bode x - čím je odrazivosť väčšia, tým viac energie sa z bodu x vyžiari späť do priestoru geometrického člena - započíta sa len energia z bodov, ktoré sú pre daný bod viditeľné a najviac prispieva energia tých bodov, ktoré nie sú príliš vzdialené a žiaria priamo na bod x

x

E(x)

B(x)

Page 26: Fotorealistick é zobrazenie

RadiozitaRadiozita Analytické riešenie radiozitnej rovnice vo väčšine prípadov nie je možné. Preto potrebujeme nejakú numerickú metódu. Plochy v scéne môžu byť vo všeobecnosti ľubovoľného tvaru. Aby sme si problém zjednodušili, aproximujeme ich rovinnými plôškami, o ktorých predpokladáme, že majú v každom bode konštantnú radiozitu. To nám umožní integrál v rovnici nahradiť konečnou sumou. Ak radiozitu i-tej plôšky označíme Bi, dostaneme diskrétnu rovnicu:

Koeficienty Fij v tejto rovnici sú tzv. konfiguračné faktory (form factors). Sú obdobou geometrických členov G(x,x’), nepočítajú sa však pre každú dvojicu bodov, ale pre každú dvojicu plôšok. Opäť platí, že konfiguračný faktor je tým väčší, čím je menšia vzdialenosť plôšok, čím je lepšia ich vzájomná viditeľnosť, čím je väčšia ich veľkosť a čím viac sú otočené smerom k sebe.

n

jijjiii FBEB

1

Page 27: Fotorealistick é zobrazenie

RadiozitaRadiozita Pre každú plôšku v scéne dostaneme teda jednu rovnicu uvedeného tvaru. Ak máme v scéne n plôšok, dostaneme nakoniec systém n rovníc o n neznámych Bi, i=1...n. Keďže tento systém je spravidla veľký a nie je riedky, použijeme na riešenie nejakú iteračnú metódu. Matica systému je diagonálne dominantná a pozitívne definitná, preto nebude problém s konvergenciou iteračných metód. Systém má nasledujúci tvar:

nnnnnnnnn

n

n

E

E

E

B

B

B

FFF

FFF

FFF

2

1

2

1

21

22222212

11121111

.

1...

....1

....1

Page 28: Fotorealistick é zobrazenie

RadiozitaRadiozita Metódu radiozity môžeme teda zhrnúť do niekoľkých krokov:

1. Aproximácia útvarov v ploche rovinnými plôškami 2. Výpočet konfiguračných faktorov pre všetky dvojice plôšok 3. Riešenie radiozitnej rovnice 4. Zobrazenie scény

Ak sa zmení pozícia pozorovateľa, stačí, ak znovu urobíme krok 4. Ostatné kroky s pozíciou pozorovateľa nesúvisia. Ak sa zmenia materiálové vlastnosti nejakého telesa, treba znovu urobiť kroky 3 a 4, ostatné kroky súvisia len s geometriou telies. Ak sa zmení tvar nejakého telesa, musíme celú procedúru urobiť znovu.

Radiozitnú rovnicu riešime zvlášť pre všetky tri farebné zložky R, G, B. Výslednú farbu získame zložením týchto zložiek. Keďže hodnoty radiozít nemusia byť v rozmedzí 0...1, resp. 0...255, musíme vypočítané hodnoty preškálovať tak, aby v tomto rozmedzí boli.

Page 29: Fotorealistick é zobrazenie

Radiozita a raytracingRadiozita a raytracing Porovnanie radiozity a raytracingu:

1. Raytracing pracuje s ľubovoľnými útvarmi, radiozita potrebuje aproximáciu pomocou rovinných plôšok 2. Raytracing pracuje s bodovými zdrojmi, radiozita s plošnými 3. Raytracing vie zostrojiť len ostré tiene, radiozita aj neostré 4. Raytracing vie zobraziť zrkadlové odrazy, radiozita nie 5. Raytracing berie do úvahy aj priehľadnosť objektov, radiozita nie 6. Raytracing nie je založený na fyzikálnych zákonoch, radiozita áno

Vo všeobecnosti sa nedá povedať, ktorá metóda je lepšia, závisí to aj od scény, ktorú chceme zobraziť. Ideálne by bolo skombinovať výhody oboch metód, o čo sa profesionálne softvéry väčšinou snažia.