Phong Shade

Uttrykket Phong skyggelegging refererer til både Phong belysning modellen og den Phong interpolasjon , to 3D prosesseringsalgoritmer datagrafikk . Begge ble utviklet av Bui Tuong Phong og utgitt i 1973.

Phong opplysningsmodell

Beskrivelse av modellen

Belysningen til Phong er en lokal modell, det vil si at beregningen gjøres på hvert punkt. Denne empiriske modellen er ikke eksakt, men gjør det mulig å troverdig beregne lyset som reflekteres av det studerte punktet, for dette kombinerer det tre elementer: omgivende lys, diffust lys ( lambertiansk modell ) og speillys (se Optisk refleksjon ).

Målet er å beregne lysintensiteten som vil sendes ut av refleksjon av det studerte punktet, belyst av en antatt punktkilde, i en presis retning (observatørens). For dette skilles lyset i tre komponenter:

  1. Den omgivende komponenten representerer parasittene som kommer fra noe annet enn den betraktede kilden, for eksempel lyset som reflekteres av andre punkter. Omgivelseslys antas å være likt på alle punkter i rommet;
  2. Hendelseslys reflekteres i alle retninger. Den diffuse komponenten indikerer intensiteten som begynner på nytt med tanke på hellingen som det innfallende lyset kommer til overflaten med, men antar at intensiteten er den samme uavhengig av retningen den reflekterte strålen tar;
  3. Til tross for alt er det mer lys som returneres i retning av den geometriske refleksjonen (den der strålen ville forlate når den ankom et speil). Rollen til den spekulære komponenten er å ta hensyn til dette.

Innstillinger

(Verdiene som vises er bare i størrelsesorden.)

Alle disse vektorene må normaliseres slik at prikkproduktene ganske enkelt gir cosinus for vinkelen mellom vektorene.

Formler

Omgivelseskomponenten er ganske enkelt gitt av:

Den diffuse komponenten er gitt av:

På samme måte som solen varmer mer på seniten, er maksimum når lyset kommer til overflaten i normal retning, det vil si

Den spekulære komponenten er gitt av:

Hvis , er maksimalt. Jo større jo mindre lyspunktene.

Den totale reflekterte intensiteten er således:

For flere lyskilder får vi som en komplett formel:

Søknad til datagrafikk

Når vi vil bruke denne algoritmen i datagrafikk, skiller vi de røde / grønne / blå komponentene i fargen på teksturen for det aktuelle punktet. Deretter bruker vi formelen for de omgivende og diffuse komponentene.

Feilene ved Phong-modellen

Den spekulære komponenten er basert på to retningsvektorer, observatøren og lyset, og forbyr enhver radiositet i modellen. Denne modellen er empirisk og er ikke basert på noen fysisk teori, men bare på Phongs observasjoner. Denne modellen sørger ikke for diffusjon av lys med avstand.

Phong interpolasjon

Denne metoden, som kan sammenlignes med Gouraud-interpolasjonen , gir gode gjengivelsesresultater, ofte mer realistiske enn forgjengeren.

Hovedproblemet med Gourauds skyggelegging er at den bare beregner hjørner av polygoner: en speillyskilde plassert i midten av en trekant vises ikke. Dette problemet er løst med interpolering av Phong.

Det skal bemerkes at, i en trekant, har de tre toppunktene samme normale, så vel som på ethvert punkt i trekanten. For jevnere gjengivelse kan det normale for hvert toppunkt i en trekant beregnes ved å beregne gjennomsnittet av alle overflater som bruker det toppunktet. Vi ender opp med tre normaler som kan være forskjellige.

Tenk på tre forskjellige hjørner: v 1 , v 2 og v 3 , som har normale enhetsvektorer n 1 , n 2 og n 3 . Når det gjelder Gouraud-interpolasjonen, gjøres dette lineært over hele overflaten av trekanten , bare det gjøres fra de tre normale vektorene i toppunktene, det vil si at vi faktisk interpolerer de normale vektorene i stedet for farger.

I motsetning til Gouraud-interpolering, blir beregningen imidlertid ikke gjort på tre punkter per overflate, men for alle punktene på en overflate - eller rimeligere, på flere underinndelinger av punkter. Denne mye langsommere metoden håndteres noen ganger direkte av maskinvaren, via shaders .

Se også

Bibliografi

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">