Phongův osvětlovací model

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 [1][2] na univerzitě v Utahu.

Popis

Označení vektorů použitých ve vyhodnocení Phongova osvětlovacího modelu.

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 {\displaystyle 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. 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 {\displaystyle C_{a}=I_{a}k_{a}} ,

kde I a {\displaystyle I_{a}} označuje intenzitu okolního osvětlení scény a k a ( 0 , 1 ) {\displaystyle 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 {\displaystyle 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ů. Množství odraženého světla C d {\displaystyle C_{d}} závisí na směru dopadu světla L {\displaystyle L} . Čím více se směr dopadu blíží normále povrchu N {\displaystyle 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 L ) {\displaystyle C_{d}=I_{d}k_{d}(N\cdot L)} ,

kde I d {\displaystyle I_{d}} označuje intenzitu difúzního osvětlení scény, k d ( 0 , 1 ) {\displaystyle 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 {\displaystyle L} je příchozí směr, odkud dopadá na povrch světlo. Operátor {\displaystyle \cdot } značí skalární součin vektorů. Jestliže ( N L ) 0 {\displaystyle (N\cdot L)\leq 0} , znamená to, že je povrch odvrácený od světla a difúzní složka C d {\displaystyle C_{d}} je tudíž nulová.

Lesklé světlo (Specular light) C s {\displaystyle 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 R ) n {\displaystyle C_{s}=I_{s}k_{s}(V\cdot R)^{n}} ,

kde I s {\displaystyle I_{s}} označuje intenzitu odlesků, k s ( 0 , 1 ) {\displaystyle 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 {\displaystyle V} je směr, odkud povrch pozorujeme a R {\displaystyle R} je světlo odražené na povrchu podle zákona odrazu. Je určeno vztahem R = 2 ( N L ) N L {\displaystyle R=2(N\cdot L)N-L} Operátor {\displaystyle \cdot } opět značí skalární součin vektorů a Phongův exponent n ( 0 , ) {\displaystyle n\in (0,\infty )} určuje ostrost zrcadlového odrazu (jinými slovy míru lesklosti). Čím je n {\displaystyle 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 {\displaystyle C} je pak dána vzorcem C = C a + C d + C s {\displaystyle 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.

Potřeba vykreslovat počítačovou grafiku nejenom hezky, ale také fyzikálně korektně, vedla k výzkumu [3], 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. 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 ( ω o ) = L i ( ω i ) ( k d c o s θ i + k s c o s n θ r ) {\displaystyle L_{o}(\omega _{o})=L_{i}(\omega _{i})(k_{d}\,cos\,\theta _{i}+k_{s}\,cos^{n}\,\theta _{r})}

Přehled změny pojmenování jednotlivých prvků
Radiometrické názvosloví Původní Phongův model Význam
L o ( ω o ) {\displaystyle L_{o}(\omega _{o})} C {\displaystyle C} odpovídá celkové vyzářené záři (radianci) L o {\displaystyle L_{o}} v odchozím směru ω o {\displaystyle \omega _{o}}
L i ( ω i ) {\displaystyle L_{i}(\omega _{i})} I d = I s {\displaystyle I_{d}=I_{s}} značí jednotnou intenzitu příchozího světla ze směru ω i {\displaystyle \omega _{i}}
c o s θ i {\displaystyle cos\,\theta _{i}} N L {\displaystyle N\cdot L} skalární součin normálového vektoru a vektoru určující směr přicházejícího světla
c o s n θ r {\displaystyle cos^{n}\,\theta _{r}} ( V R ) n {\displaystyle (V\cdot R)^{n}} skalární součin vektoru odraženého paprsku a vektoru určující směr k pozorovateli, n {\displaystyle n} značí Phongův exponent


Podělením rovnice L o ( ω o ) = L i ( ω i ) ( k d c o s θ i + k s c o s n θ r ) {\displaystyle L_{o}(\omega _{o})=L_{i}(\omega _{i})(k_{d}\,cos\,\theta _{i}+k_{s}\,cos^{n}\,\theta _{r})} faktory c o s θ i {\displaystyle cos\,\theta _{i}} a L i ( ω i ) {\displaystyle 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 P h o n g O r i g {\displaystyle f_{r}^{PhongOrig}} [4]

f r P h o n g O r i g = k d + k s c o s n θ r c o s θ i {\displaystyle 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 ω i {\displaystyle \omega _{i}} a ω o {\displaystyle \omega _{o}} a rovněž pro ni neplatí ani zákon zachování energie (např. pro k d > π {\displaystyle 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 1 c o s θ i {\displaystyle {\frac {1}{cos\,\theta _{i}}}} , což je jediný člen, který není symetrický vůči záměně příchozí a odchozího směru ω i {\displaystyle \omega _{i}} a ω o {\displaystyle \omega _{o}} . Máme tedy f r P h o n g = k d + k s c o s n θ r {\displaystyle 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 P h o n g {\displaystyle f_{r}^{Phong}} (za předpokladu, že odchozí směr je roven normále povrchu, tj. ω o = n {\displaystyle \omega _{o}=n} )

ρ ( ω o ) | ω o = n = Ω ( k d + k s c o s n θ r ) c o s θ i d ω i = k d π + k s 2 π n + 2 {\displaystyle \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 ρ d = k d π {\displaystyle \rho _{d}=k_{d}\pi } a lesklá ρ s = k s 2 π n + 2 {\displaystyle \rho _{s}=k_{s}{\frac {2\pi }{n+2}}} . Pro zachování energie stačí přidat podmínku, že ρ d + ρ s 1 {\displaystyle \rho _{d}+\rho _{s}\leq 1} .

Nyní z předchozích vzorců vyjádříme k d {\displaystyle k_{d}} a k s {\displaystyle k_{s}}

k d = ρ d π {\displaystyle k_{d}={\frac {\rho _{d}}{\pi }}}

k s = ρ s n + 2 2 π {\displaystyle k_{s}=\rho _{s}{\frac {n+2}{2\pi }}}

a po dosazení do f r P h o n g {\displaystyle f_{r}^{Phong}} získáváme fyzikálně korektní BRDF Phongova modelu f r P h o n g C o r r e c t {\displaystyle f_{r}^{PhongCorrect}}

f r P h o n g C o r r e c t = ρ d π + ρ s ( n + 2 ) c o s n θ r 2 π {\displaystyle 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.

Reference

  1. Bui Tuong Phong, Illumination of Computer-Generated Images, Department of Computer Science, University of Utah, UTEC-CSs-73-129, July 1973.
  2. Bui Tuong Phong, "Illumination for Computer Generated Pictures," Comm. ACM, Vol 18(6): 311–317, June 1975.
  3. Making Shaders More Physically Plausible – Robert R. Lewis (1993)
  4. Poznámky z předmětu Počítačová grafika III – 4. přednáška, Čestmír Houška