Phongův osvětlovací model

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Phongův osvětlovací model je empirický (na fyzice nezaložený) osvětlovací model pro výpočet odraženého světla z povrchu nějakého objektu. Využívá se v počítačové grafice k vykreslování trojrozměrných scén. Jeho snahou je vykreslit dané těleso co nejrealističtěji, avšak za rozumnou dobu. Ačkoliv tento model není fyzikálně zcela přesný, výsledky, které podává, jsou natolik zdařilé, že se Phongův model v počítačové grafice široce využívá již několik desítek let, zejména pak pro svou rychlost našel uplatnění v real-time grafice. Jeho nevýhodou je, že nedokáže simulovat některé optické jevy globálního osvětlení, jako např. kaustiky ("prasátka").

Často bývá nesprávně zaměňován s Phongovým stínováním.

...
...
...

Historie

Phongův model byl navržen v roce 1973 vietnamským vědcem Bui Tuong Phongem v rámci jeho disertační práce na univerzitě v Utahu.

Popis

Označení vektorů použitých ve vyhodnocení Phongova osvětlovacího modelu. +more Realistického vzhledu při vykreslování trojrozměrných scén dosáhl Phong stanovením, že se odraz skládá ze tří světelných složek:.

Okolní (ambientní) světlo (Ambient light) C_a

Okolní světlo udává intenzitu té části světla, která na těleso dopadá rovnoměrně ze všech směrů se stejnou intenzitou, jinými slovy označuje všesměrové konstantní osvětlení. Napodobuje tedy sekundární odražené a rozptýlené světlo vznikající mnohonásobnými odrazy od ostatních těles. +more Tomuto osvětlení se říká také globální. Okolní světlo zajišťuje, aby povrchy odvrácené od světelných zdrojů nebyly zcela černé, sama o sobě však nestačí pro vytvoření vzhledu trojrozměrné scény. Čím větší je její hodnota, tím větší je celková světlost scény.

Odraz ambientního světla je určen vztahem C_a = I_a k_a,

kde I_a označuje intenzitu okolního osvětlení scény a k_a\in(0,1) je odrazivý koeficient materiálu objektu určující schopnost povrchu odrážet okolní světlo. Jeho nulová hodnota znamená, že se ambientní složka od povrchu vůbec neodráží a naopak pro hodnotu jedna, že se světlo od povrchu odráží zcela.

Tato veličina bývá v empirických modelech konstantní pro celou scénu a proto přispívá stejným množstvím osvětlení všem objektům ve scéně.

Difúzní světlo (Diffuse light) C_d

Difúzní složka udává intenzitu té části světla, která se od matného povrchu tělesa rovnoměrně odráží do všech směrů a její použití již vytváří trojrozměrný vzhled ve scéně. Je invariantní vůči směru pohledu, protože difúzní povrch odráží světlo rovnoměrně do všech směrů. +more Množství odraženého světla C_d závisí na směru dopadu světla L. Čím více se směr dopadu blíží normále povrchu N, tím větší je množství odraženého světla. Tento jev popisuje Lambertův zákon.

Difúzní složku vypočítáme podle vztahu C_d = I_d k_d (N \cdot L),

kde I_d označuje intenzitu difúzního osvětlení scény, k_d\in(0,1) je podobně jako u okolního světla odrazivý koeficient materiálu, N je normála povrchu v místě dopadu paprsku a L je příchozí směr, odkud dopadá na povrch světlo. Operátor \cdot značí skalární součin vektorů. +more Jestliže (N \cdot L)\leq 0, znamená to, že je povrch odvrácený od světla a difúzní složka C_d je tudíž nulová.

Lesklé světlo (Specular light) C_s

Lesklá složka udává intenzitu té části světla, která se od tělesa odráží převážně v jednom směru podle zákona odrazu.

Lesklou složku vypočítáme podle vztahu C_s = I_s k_s (V \cdot R)^n,

kde I_s označuje intenzitu odlesků, k_s\in(0,1) je odrazivý koeficient určující míru zastoupení odražené lesklé složky v celkovém odraženém světle, V je směr, odkud povrch pozorujeme a R je světlo odražené na povrchu podle zákona odrazu. Je určeno vztahem R=2(N\cdot L)N-L Operátor \cdot opět značí skalární součin vektorů a Phongův exponent n \in (0, \infty) určuje ostrost zrcadlového odrazu (jinými slovy míru lesklosti). +more Čím je n vyšší, tím jsou odlesky na povrchu tělesa menší, ale intenzivnější.

Světelné složky Phongova osvětlovacího modelu

Celková intenzita odrazu C je pak dána vzorcem C = C_a + C_d + C_s, který slovy říká, že celkový odraz se skládá z ambientní, difúzní a lesklé složky.

Takto definovaný Phongův model ale není fyzikálně korektní, protože nesplňuje základní požadavky na vlastnosti BRDF. Porušuje symetrii a taktéž pro něj neplatí zákon zachování energie.

Fyzikálně korektní Phongův osvětlovací model

Schéma v radiometrickém názvosloví ilustrující chování světla po dopadu světla na nějaký povrch. +more Potřeba vykreslovat počítačovou grafiku nejenom hezky, ale také fyzikálně korektně, vedla k výzkumu , jak na tom stávající světelné modely jsou, zaměříme-li se na ně z radiometrického pohledu. Fyzikálně korektní model by měl splňovat vlastnosti dvousměrové distribuční funkce odrazu (BRDF), která slouží k matematickému popisu odrazivých vlastností povrchu v určitém bodě.

Model nejprve uvedeme v radiometrickém názvosloví. Jak je patrné z následující rovnice, vynechali jsme ambientní složku odrazu. +more Ta se v původním modelu snaží napodobovat globální osvětlení konstantním osvětlením scény, což ale není fyzikálně korektní.

L_o(\omega_o)=L_i(\omega_i)(k_d\, cos\,\theta_i + k_s\, cos^n\,\theta_r)

L_o(\omega_o)Codpovídá celkové vyzářené záři (radianci) L_o v odchozím směru \omega_o
L_i(\omega_i)I_d = I_sznačí jednotnou intenzitu příchozího světla ze směru \omega_i
cos\,\theta_iN\cdot Lskalární součin normálového vektoru a vektoru určující směr přicházejícího světla
cos^n\,\theta_r(V\cdot R)^nskalární součin vektoru odraženého paprsku a vektoru určující směr k pozorovateli, n značí Phongův exponent

Podělením rovnice L_o(\omega_o)=L_i(\omega_i)(k_d\, cos\,\theta_i + k_s\, cos^n\,\theta_r) faktory cos\,\theta_i a L_i(\omega_i) (které jsou součástí integrandu rovnice odrazu a tudíž by se neměly vyskytovat v BRDF) získáme analytické vyjádření BRDF, jež odpovídá původnímu osvětlovacímu Phongovu modelu, které označíme f_r^{PhongOrig}

f_r^{PhongOrig} = k_d + k_s \frac{cos^n \,\theta_r}{cos \theta_i}

Můžeme si povšimnout, že rovnice nesplňuje základní požadavky na vlastnosti BRDF - není symetrická (nesplňuje podmínku reciprocity) vůči svým parametrům \omega_i a \omega_o a rovněž pro ni neplatí ani zákon zachování energie (např. pro k_d > \pi by takto definovaná BRDF odpovídala povrchu, který odráží více světelné energie, než na něj dopadá).

Podmínku reciprocity splníme odstraněním \frac{1}{cos\, \theta_i}, což je jediný člen, který není symetrický vůči záměně příchozí a odchozího směru \omega_i a \omega_o. Máme tedy f_r^{Phong} = k_d + k_s\, cos^n\, \theta_r

Aby BRDF zachovávala energii, musí být její hemisféricko-směrová odrazivost ≤ 1. Spočítáme-li hemisféricko-směrovou odrazivost pro f_r^{Phong} (za předpokladu, že odchozí směr je roven normále povrchu, tj. +more \omega_o = n).

\rho(\omega_o) |_{\omega_o=n} = \int_{\Omega} (k_d + k_s\, cos^n\, \theta_r) cos\, \theta_i \, d \omega_i = k_d\pi + k_s \frac{2\pi}{n+2}

vidíme, že difúzní složka má odrazivost \rho_d = k_d\pi a lesklá \rho_s = k_s \frac{2\pi}{n+2}. Pro zachování energie stačí přidat podmínku, že \rho_d + \rho_s \leq 1.

Nyní z předchozích vzorců vyjádříme k_d a k_s

k_d = \frac {\rho_d}{\pi}

k_s =\rho_s \frac {n+2}{2\pi}

a po dosazení do f_r^{Phong} získáváme fyzikálně korektní BRDF Phongova modelu f_r^{PhongCorrect}

f_r^{PhongCorrect} = \frac {\rho_d}{\pi} + \frac {\rho_s(n+2)cos^n\, \theta_r}{2\pi}

Stále se však jedná o empirickou BRDF funkci.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top