Zemvirsmas izkliede

Vikipēdijas lapa
Gaismas zemvirsmas izkliede cilvēka rokas fotoattēlā

Zemvirsmas izkliede (angļu: subsurface scattering) jeb zemvirsmas gaismas pārnese (angļu: subsurface light transport) ir gaismas pārneses mehānisms, kurā gaisma iekļūst caurspīdīga objektā cauri tā virsmai, tad tiek izkliedēta, mijiedarbojoties ar materiālu, un iziet no virsmas citā punktā. Gaisma parasti iekļūst virsmā un tiek atstarota vairākkārt neregulāros leņķos materiāla iekšienē, pirms tā iziet ārā no materiāla leņķī, kas nav vienāds ar to, kādā tā būtu izgājusi, ja tiktu tieši atstarota no virsmas. Zemvirsmas izkliede ir svarīga 3D datorgrafikā, jo nepieciešama reālistiskai materiālu, piemēram, aarmora, ādas, lapu, vaska, piena renderēšanai.

Renderēšanas paņēmieni[labot šo sadaļu | labot pirmkodu]

Lai uzlabotu renderēšanas efektivitāti, daudzi reāllaika datorgrafikas algoritmi aprēķina tikai objekta virsmas atstarojumu. Realitātē daudzi materiāli ir nedaudz caurspīdīgi: gaisma iekļūst virsmā; tiek absorbēta, izkliedēta un atkārtoti izstarota — potenciāli citā punktā. Piemēram, tikai 6% atstarojas tieši no ādas, pārējie 94% tiek izkliedēti zem tās virsmas.[1] Jo tālāk caur materiālu gaisma pārvietojas, jo lielāka tās daļa tiek absorbēta. Lai simulētu šo efektu, ir jāgūst mērījums, kas atspoguļo attālumu, ko gaisma ir veikusi caur materiālu.

Zemvirsmas izkliede, kas balstīta uz dziļuma karti[labot šo sadaļu | labot pirmkodu]

Viens veids, kā aprēķināt šo attālumu, ir izmantot dziļuma kartes,[2] līdzīgi kā ēnu kartēšanā. Aina tiek renderēta no gaismas skatu punkta dziļuma kartē tā, lai attālums līdz tuvākajai virsmai tiktu saglabāts. Pēc tam dziļuma karte tiek projicēta uz tās, izmantojot standarta projektīvo tekstūru kartēšanu, un tad aina tiek atkārtoti renderēta. Šajā posmā, ēnojot noteiktu punktu, attālums no gaismas vietā, kur stars ieiet virsmā, var tikts iegūts, izmantojot tekstūras izpēti. Atņemot šo vērtību no punkta, kurā stars izgājis no objekta, var aprēķināt aptuveno attālumu, ko gaisma ir veikusi objektā. Problēmas var rasties, ja modeļi nav izliekti, bet renderējot dziļumu vairākas reizes, problēmu ir iespējams apiet. Līdzīgi šo metodi var izmantot, lai kompensētu zem virsmas esošos dažādos blīvumus, piemēram, kaulos vai muskuļos, lai iegūtu precīzāku izkliedes modeli.

Tekstūras telpas difūzija[labot šo sadaļu | labot pirmkodu]

Viens no zemvirsmas izkliedes efektiem ir vispārēja izkliedētā apgaismojuma izpludināšana. Tā vietā, lai patvaļīgi mainītu difūzo funkciju, difūziju var precīzāk modelēt, imitējot to tekstūras telpā. Šī tehnika tika izmantota, renderējot sejas filmā "Matrikss atjaunots",[3] bet tā tiek izmantota arī reāllaika renderēšanas metožu jomā.

Metode ievieš objekta tīklojumu, izmantojot virsotņu ēnotāju, vispirms aprēķinot apgaismojumu, pamatojoties uz sākotnējām virsotņu koordinātām. Pēc tam virsotnes tiek pārkārtotas, izmantojot UV tekstūras koordinātas kā virsotnes pozīciju, kas ir pārveidota no [0, 1] tekstūras koordinātu diapazona uz [-1, 1] normalizēto koordinātu diapazonu. Šādā veidā izgaismojot tīklojumu, iegūst 2D attēlu, kas attēlo objekta apgaismojumu, ko pēc tam var apstrādāt un atkārtoti pievienot modelim kā gaismas karti. Lai simulētu difūziju, gaišās kartes tekstūru var vienkārši izpludināt. Apgaismojuma atveidošana zemākas izšķirtspējas tekstūrā pati par sevi jau nodrošina zināmu izplūšanu. Izplūdināšanas apjoms, kas nepieciešams, lai precīzi modelētu zemvirsmas izkliedi ādā, joprojām tiek pētīts, taču tikai viena izplūdināšana slikti modelē patiesos efektus.[4] Lai atdarinātu no viļņa garuma atkarīgo difūzijas raksturu, izpludināšanas laikā izmantotos paraugus var izsvērt pa kanāliem. Šis ir savā ziņā māksliniecisks process. Cilvēka ādai visplašākā izkliede ir sarkanā, pēc tam zaļā krāsā, un zilajā krāsā ir ļoti maza izkliede.

Šīs metodes priekšrocība ir neatkarība no ekrāna izšķirtspējas; ēnojums tiek veikts tikai vienu reizi tekstūras kartē, nevis katram objekta pikselim. Tāpēc nepieciešams, lai objektam būtu laba UV kartēšana, katram tekstūras punktam ir jāatbilst tikai vienam objekta punktam. Turklāt tekstūras telpas difūzijas izmantošana nodrošina vienu no vairākiem faktoriem, kas veicina mīkstas ēnas, mazinot reālisma trūkumu ēnu kartēšanā.

Atsauces[labot šo sadaļu | labot pirmkodu]

  1. «A Biophysically-Based Spectral Model of Light Interaction with Human Skin». web.archive.org. Arhivēts no oriģināla, laiks: 2005. gada 14. oktobrī. Skatīts: 2018. gada 28. jūlijā.
  2. Green, Simon (2004). "Real-time Approximations to Subsurface Scattering". GPU Gems (Addison-Wesley Professional): 263–278.
  3. Borshukov, G; Lewis, J. P. (2005). "Realistic human face rendering for "The Matrix Reloaded"". Computer Graphics (ACM Press).
  4. d’Eon, E (2007). "Advanced Skin Rendering". GDC 2007.

Ārējās saites[labot šo sadaļu | labot pirmkodu]