Staru izsekošana

Vikipēdijas lapa
Jump to navigation Jump to search
Šis rekursīvās staru izsekošanas renderējums parāda lodu asuma zudumu, apgabala apgaismojuma un difūzas starpatstarošanās (izplūduši citu lodu atspulgi) efektus.

Staru izsekošana ir datorgrafikas renderēšanas metode, kas veido attēlus, izsekojot atsevišķu gaismas staru ceļam cauri 3D modeļa ainai līdz konkrētam pikselim iegūtajā attēlā. Tā spēj nodrošināt ļoti augstu attēla fotoreālisma pakāpi, taču prasa ievērojamus skaitļošanas resursus, tādēļ to parasti izmanto situācijās, kad attēli nav jārenderē reāllaikā, piemēram, kino specefektiem.

Staru izsekošana spēj simulēt daudzus optiskos efektus kā staru atstarošanos un laušanu, gaismas izkliedi un dispersiju, šīs īpašības ļauj triviāli un ar labu kvalitāti iegūt efektus, ko ar citām renderēšanas metodēm ir speciāli jāpievieno, piemēram, ēnas vai atspulgus. Tāpat staru izsekošanu ir ļoti viegli vienlaikus izpildīt vairākos pavedienos, jo katrs kameras stars ir neatkarīgs no citiem stariem.

Algoritma pārskats[labot šo sadaļu | labot pirmkodu]

Parasti tiek izmantots rekursīvais staru izsekošanas algoritms. Tajā no gala attēla katra pikseļa tiek raidīts stars cauri kamerai iekšā ainā. Tajā daļa no tās objektiem tiek pārbaudīti, vai stars ar konkrēto objektu sadursies vai nē, un no tiem, ar kuriem stars saduras, tiek izvēlēts kamerai tuvākais. Pēc tam tiek prognozēts gaismas stiprums, kas no šī objekta un stara sadursmes vietas nonāk atpakaļ kamerā, un to tiek izmanto, lai kopā ar objekta materiāla īpašībām atrastu pikseļa gala vērtību. Atkarībā no objekta materiāla īpašībām un ēnojuma metodes var raidīt papildu starus, lai simulētu materiālus, kas atstaro vai lauž gaismu, vai uz kuriem krīt ēna.

Stari tiek raidīti pretējā virzienā kā dabā, jo intuitīvi sagaidāms, ka lielākā daļa no gaismas avotu raidītajiem stariem (dabā fotoniem), ja tie tiktu rēķināti no gaismas avotiem visos virzienos, kuros tie spīd, nevis no kameras, nekad netrāpītu kameras uztveres laukumā un vēl jo mazāka daļa piedalītos gala attēla pikseļa vērtības noteikšanā (jo pikselis ir bezgalīgi mazs punkts), tādēļ tie nebūtu novērojami un līdz ar to neietekmētu iegūto attēlu, lieki izniekojot skaitļošanas resursus.

Nepilnības[labot šo sadaļu | labot pirmkodu]

Staru izsekošanā katram gala attēla pikselim atbilst stars ar vienu konkrētu galapunktu, kas šādi ģenerētiem attēliem piešķir tiem raksturīgo un parasti ne līdz galam foto reālistisko formu noteiktību un asumu, jo katrs stars vienmēr trāpa vienā noteiktā vietā, tādējādi nosakot katra pikseļa vērtību tādu, kāda tā ir attiecīgajā stara un objekta krustpunktā, un salīdzinoši nelielā staru skaita dēļ veidojas izteiktas robežas starp redzamajām virsmām. Staru skaita palielināšana, piemēram, renderējot augstākā izšķirtspējā, šo nepilnību mazinātu, taču prasītu nesamērīgi daudz resursu, tādēļ tā vietā izmanto citas renderēšanas metodes, piemēram, ceļu izsekošanu (angļu: path tracing).

Korektāks skaidrojums ir, ka staru izsekošana nepietiekoši precīzi veic renderēšanas vienādojumu, tādēļ gala attēls nav foto reālistisks.

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