Guro ēnojums

Vikipēdijas lapa
Pārlēkt uz: navigācija, meklēt
Guro ēnots no trīsstūriem veidots objekts izmantojot Phonga modeli

Guro ēnojums, nosaukts franču datorgrafiķa Anrī Guro (Henri Gouraud) vārdā, ir interpolācijas metode, ko izmanto datorgrafikā, lai izveidotu pastāvīgu virsmas ēnojumu uz daudzstūra tīkla. Praksē, Guro ēnojumu visbiežāk izmanto, lai nodrošinātu nepārtrauktu apgaismojumu uz trīsstūra veida virsmām. To panāk, aprēķinot gaismu uz katra no trīsstūra stūriem un lineāri interpolējot rezultējošo krāsu katram trīsstūra pikselim. Guro pirmo reizi publicēja šo tehniku 1971. gadā.[1][2][3]

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

Guro ēnojuma darbošanās princips: virsmas normāles novērtējums katrai virsotnei daudzstūru 3D modelī ir vai nu atšķirīgs katrai virsotnei, vai arī atrasts daudzstūra virsmas normāļu vidējais aritmētiksais no daudzstūriem, kas satiekas katrā virsotnē. Izmantojot šos aprēķinus, apgaismojuma aprēķina pamatā ir atspīduma modelis, t.i. Phonga atspīduma modelis, kas tiek izmantots, lai veidotu krāsu intensitāti uz virsotnēm. Katram ekrāna pikselim, kas ir klāts ar daudzstūra tīklu, krāsu intensitāte var būt interpolēta no krāsu vērtības, kas aprēķināta virsotnē.

Salīdzinājums ar citām ēnojuma tehnikām[labot šo sadaļu | labot pirmkodu]

Plakanā un Guro ēnojuma salīdzinājums
Lode ar Guro ēnojumu
Lode, kas renderēta ar ļoti lielu daudzstūru skaitu

Guro ēnojums tiek uzskatīts par labāku nekā plakanas virsmas ēnojums (flat shading) un prasa ievērojami mazāk procesu nekā Phonga ēnojums, bet parasti rezultātā rada šķautņainu izskatu.

Salīdzinājumā ar Phonga ēnojumu, Guro ēnojuma stiprums un vājums slēpjas tā interpolācijā. Ja tīkls aptver vairāk pikseļu uz ekrāna virsmas nekā tam ir virsotņu, interpolēt krāsu vērtības no svarīgiem gaismes aprēķiniem virsotnēs, tiek izmantots mazāk procesora jaudas nekā veicot gaismas aprēķinus katram pikselim kā tas ir Phonga ēnojumā. Tomēr ļoti lokalizētus gaismojuma efektus (piemēram, atspīduma imitācijas) korekti nerenderēs, un, ja gaišākā vieta būs daudzstūra vidū, un nebūs redzama uz daudzstūra virsotnes, tā nebūs redzama Guro renderēšanā. Savukārt, ja gaišākā vieta būs uz daudzstūra virsotnes, tā tiks renderēta pareizi uz šīs virsotnes, bet būs nedabiski sadalīta uz blakus daudzstūriem, izmantojot interpolācijas medoti.

Problēma ir viegli pamanāma renderēšanā, kurā vajadzētu būt atspīdumam, kas kustas vienmērīgi pa visu virsmas modeli, kad tas rotē. Guro ēnojums tā vietā nepārtraukti producēs gaišākās vietas pakāpenisku izgaišanu un parādīšanos pa blakus esošajām modeļa daļām, sasniedzot intensitātes maksimumu, kad paredzētā atspīduma gaišākā vieta pārslīd pāri modeļa virsotnei. Skaidrības labad jāatzīmē, ka iepriekš aprakstīto problēmu var uzlabot, palielinot virsotņu blīvumu objektā, bet, protams, šis risinājums attiecas uz ikvienu ēnojuma paradigmu — ar "ārkārtīgi lielu" virsotņu skaitu, nebūtu vispār nepieciešams jēdziens par ēnošanu.

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

  1. Gouraud, Henri (1971). Computer Display of Curved Surfaces, Doctoral Thesis. University of Utah.
  2. Gouraud, Henri (1971). "Continuous shading of curved surfaces". IEEE Transactions on Computers C—20 (6): 623—629. doi:10.1109/T-C.1971.223313
  3. Gouraud, Henri (1998). "Continuous shading of curved surfaces". In Rosalee Wolfe (ed.). Seminal Graphics: Pioneering efforts that shaped the field. ACM Press. ISBN 1-58113-052-X.