Fonga atstarošanas modelis

Skaties arī jēdzienu ar līdzīgu nosaukumu: Fonga ēnojums.

Fonga atstarošanas modelis (tiek saukts arī par Fonga izgaismojumu vai Fonga apgaismojumu) ir empīrisks modelis lokālai virsmas punktu izgaismošanai. 3D datorgrafikā to dažreiz sauc par "Fonga ēnojumu", ja modelis tiek izmantots ar tāda paša nosaukuma interpolācijas metodi, kā arī pikseļu ēnotājos vai citviet, kur apgaismošanas aprēķinu var nodēvēt par "ēnošanu".

Fonga atstarošanas modeli izstrādāja Bujs Tongs Fongs Jūtas universitātē, kas to publicēja 1975. gadā savā doktora disertācijā.[1][2] Modelis tika publicēts kopā ar metodi, ar kuru aprēķināt interpolāciju katram atsevišķam pikselim, kas ticis rasterizēts no daudzstūru virsmas modeļa; interpolācijas metodi sauc par Fonga ēnojumu. Fonga metodes tika uzskatītas par radikālām, kad viņš ar tām nāca klajā, taču kopš tā laika tās ir kļuvušas par de facto pamata ēnošanas metodēm daudzām renderēšanas lietotnēm. Fonga metodes ir kļuvušas populāras, pateicoties iedarbīgam skaitļošanas laikam, renderējot katru pikseli.

Fonga atstarojums ir empīrisks modelis lokālai izgaismošanai. Tas apraksta veidu, kā virsma atstaro gaismu kā rupju virsmu izkliedētu atstarojumu kombinācijā ar spīdīgu virsmu spoguļatstarojumu. Modelis ir balstīts uz Fonga novērojumu, ka spīdīgām virsmām ir neliela izmēra, spēcīgs spīdums, kamēr matētām virsmām ir lieli spīdumi, kas izkliedējas daudz pakāpeniskāk. Modelī ir arī ambientas gaismas termins, kas raksturo gaismu, kura ir izkliedēta pa visu ainu.

 
Fonga[novecojusi saite] vienādojuma vizuālā ilustrācija: gaisma ir balta, ambientā un izkliedētā krāsa ir zila, un spoguļatstarojuma krāsa ir balta, kas ļoti šauros spīdumos atstaro mazu daļu no gaismas, kas krīt pret virsmu. Izkliedētās komponentes intensitāte ir atkarīga no tās virsmas virziena attiecībā pret gaismu, bet ambientā komponente ir vienveidīga (nav atkarīga no virziena).

Katram gaismas avotam ainā ir definētas divas intensitātes kompenentes (kas bieži tiek izteiktas kā RGB vērtības),   un  , kas respektīvi atbilst gaismas avota spoguļatstarojumam un izkliedētajam atstarojumam. Apzīmējums   regulē ambiento apgaismojumu; to mēdz aprēķināt kā visu gaismas avotu izstarojumu summu.

Katram ainas materiālam tiek definēti sekojošie parametri:

 , kas ir spoguļatstarojuma konstante, ienākošās gaismas spoguļatstarojuma attiecība,
 , kas ir izkliedētā atstarojuma konstante, ienākošās gaismas izkliedētā atstarojuma attiecība (Lamberta atstarojums),
 , kas ir ambientā atstarojuma konstante, visu ainā norenderēto punktu ambientā atstarojuma attiecība, un
 , kas ir spīdīguma konstante attiecīgajam materiālam, kura ir lielāka gludām un spoguļveidīgām virsmām. Kad šī konstante ir liela, tad spoguļatstarojuma spīdums ir neliels.
 
Vektori[novecojusi saite], lai aprēķinātu Fonga un Blina-Fonga ēnošanu.

Turklāt ir arī šādi parametri:

 , kas ir visu gaismas avotu kopa,
 , kas ir virziena vektors no punkta uz virsmas pret gaismas avotu (  apzīmē gaismas avotu),
 , kas ir virsmas normāle punktam uz virsmas,
 , kas ir virziens tādam gaismas staram, kurš perfekti atstarotu gaismu no attiecīgā punkta uz virsmas, un
 , kas ir virziens, kurš ir pavērsts pret skatītāju (piemērs varētu būt virtuālā kamera).

Fonga modelis arī nodrošina vienādojumu, lai aprēķinātu izgaismojumu katram virsmas punktam  :

 

kur virziena vektors  tiek aprēķināts kā   atstarojums uz virsmas, kura tiek aprakstīta ar virsmas normāli   , izmantojot

 

un kur jumtiņi apzīmē, ka vektori ir normalizēti. Skatītāja virziens ( ) neietekmē izkliedētā atstarojuma intensitāti ( ). Spoguļatstarojuma intensitāte ( ) ir liela tikai tad, kad skatītāja virziens ( ) ir līdzens ar atstarojuma virzienam  . To līdzenumu mēra izrēķinot kosīnusu pakāpē   no leņķa starp virzieniem. Kosīnuss leņķim starp normalizētajiem vektoriem   un   ir vienāds ar to vektoru skalāro reizinājumu. Kad   ir liels, jeb gandrīz spoguļveida atstarojumos, tad spoguļatstarojuma spīdums būs mazs, jo jebkuram skatupunktam, kas nav līdzens ar atstarojumu, kosīnuss būs mazāks par to, kurš strauji pietuvojas nullei, kad tā pakāpe tiek palielināta.

Lai gan augstākesošā formula ir pieņemts veids, kā atspoguļot Fonga atstarojuma modeli, katru no virsmu veidiem būtu jāiekļauj tikai tad, ja tās vektoru skalārais reizinājums ir pozitīvs. (Kā arī, spoguļatstarojumu jāiekļauj tikai tad, ja izkliedētā atstarojuma skalārais reizinājums ir pozitīvs.)

Kad krāsu atspoguļo kā RGB vērtības, kā to mēdz darīt datorgrafikā, šis vienādojums parasti tiek modelēts atsevišķi katrai krāsas kanāla intensitātei, izmantojot dažādas atstarojuma konstantes     and   katram krāsas kanālam.

Fonga atstarošanas modeli bieži lieto kopā ar Fonga ēnotāju, lai ēnotu virsmas 3D datorgrafikas programmās. Tam ir arī citi pielietojumi, piemēram, tas ir ticis pielietots, lai modelētu siltuma starojumu Pioneer zondēs, tādā veidā mēģinot izskaidrot Pioniera anomāliju.[3]

  1. Bui Tuong Phong, Illumination for computer generated pictures, Communications of ACM 18 (1975), no. 6, 311–317.
  2. University of Utah School of Computing, http://www.cs.utah.edu/school/history/#phong-ref
  3. F. Francisco; O. Bertolami; P. J. S. Gil; J. Páramos (2012). "Modelling the reflective thermal contribution to the acceleration of the Pioneer spacecraft". Advances in Space Research 49 (3): 579. arXiv:1103.5222. doi:10.1016/j.asr.2011.10.016.