Phongskyggelegging

Fra Wikipedia, den frie encyklopedi
Hopp til navigering Hopp til søk

Phongskyggelegging er en interpoleringsteknikk for skyggelegging av overflater i 3D datagrafikk. Det kalles også for Phonginterpolering[1] eller normalvektor interpolering.[2] Helt konkret interpolerer den overflatenormaler over rasteriserte polygoner, og regner ut pikselfarger basert på interpolerte normaler og en refleksjonsmodell. Phongskyggelegging kan også referere til den spesifikke kombinasjonen av Phonginterpolering og Phongs refleksjonsmodell.

Historie[rediger | rediger kilde]

Phongskyggelegging og Phongs refleksjonsmodell ble utviklet ved Universitetet i Utah av Bui Tuong Phong, som publiserte dem i 1973 i sin doktorgradavhandling.[3][4] Phongs metoder ble sett på som radikale da de ble introdusert, men har siden blitt selve basisen hva gjelder skyggelegging i renderingsapplikasjoner. Phongs metoder har blitt populære på grunn av deres effektive bruk av regnekraft per tegnede piksel.

Phonginterpolasjon[rediger | rediger kilde]

Eksempel på Phongskyggelegging

Phongskyggelegging forbedrer Gouraudskyggelegging og gir en bedre approksimasjon av skyggelegging av glatte overflater. Phongskyggelegging baserer seg på å interpolere normalvektorer overen glatt varierende overflate. Phonginterpolering virker bedre enn Gouraudskyggelegging når den brukes med en refleksjonsmodell som har små områder med spekularrefleksjon, som ved bruk av Phongs refleksjonsmodell.

Det største problemet med Gouraudskyggelegging oppstår når spekularrefleksjon finnes midt på et stort polygon. Siden disse refleksjonene ikke fanges opp av polygonets vertekser og Gouraudskyggelegging interpolerer basert på verteksenes farger, vil man ikke se noe til refleksjonen i det hele tatt. Dette problemet blir løst med Phongskyggelegging.

Til forskjell fra Gouraudskyggelegging, som interpolerer farge over polygoner, vil man med Phongskyggelegging lineærinterpolere overflatenormalen over overflaten av polygonet, fra polygonets vertekser. Overflatenormalen blir interpolert og normalisert for hver piksel, og deretter brukt i en refleksjonsmodell, for eksempel Phongs refleksjonsmodell, for å beregne den endelige fargen til pikselen. Phongskyggelegging krever mer regnekraft enn Gouraudskyggelegging siden refleksjonsmodellen må regnes ut for hver piksel isteden for hver verteks.

I moderne grafikkmaskinvare finner man varianter av denne algoritmer implementert som piksel eller fragmentshadere.

Phongs refleksjonsmodell[rediger | rediger kilde]

Phongskyggelegging kan også referere til kombinasjonen av Phonginterpolering og Phongs refleksjonsmodell, som er en modell for lokal belysning. Den beskriver en måte for en overflate å reflektere lys som en kombinasjon av diffus refleksjon man finner på matte overflater, og spekularrefleksjon man finner på blanke overflater. Den er basert på Bui Tuong Phongs uformelle observasjon av at blanke overflater har små, intense, spekulare høylys, mens matte overflater har større lyse områder, som avtar mer gradvis. Refleksjonsmodellen inkluderer også et ledd for ambient (generell bakgrunnsbelysning), for å imitere de små mengder lys som spres jevnt rundt i våre omgivelser.

Visuell illustrasjon av Phonglikningen: her er lyset hvitt, mens bakrgunnsbelysningen og det diffuse lyset er blått, og det spekulare lyset er hvitt. Intensiteten til den diffuse komponenten varierer med retningen til overflaten, og den generelle bakgrunnsbelysningen er uniform (uavhengig av retning).

Se også[rediger | rediger kilde]

Referanser[rediger | rediger kilde]

  1. ^ Watt, Alan H. (1992). Advanced Animation and Rendering Techniques: Theory and Practice. Addison-Wesley Professional. s. 21–26. ISBN 978-0-201-54412-1. 
  2. ^ Foley, James D. (1996). Computer Graphics: Principles and Practice. (2nd ed. in C). Addison-Wesley Publishing Company. s. 738-739. ISBN 0-201-84840-6. 
  3. ^ B. T. Phong, Illumination for computer generated pictures, Communications of ACM 18 (1975), no. 6, 311–317.
  4. ^ University of Utah School of Computing, http://www.cs.utah.edu/school/history/#phong-ref