Phong-Beleuchtungsmodell

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Die drei Einzelkomponenten des Phong-Beleuchtungsmodelles

Das Phong-Beleuchtungsmodell ist ein Beleuchtungsmodell in der 3D-Computergrafik, das dazu verwendet wird, die Beleuchtung von Objekten zu berechnen. Das Modell wurde nach seinem Entwickler Bùi Tường Phong benannt und erstmals 1975 vorgestellt (Illumination for Computer Generated Pictures, Juni 1975).

Das Phong-Modell ist zur Darstellung von glatten, plastikähnlichen Oberflächen geeignet. Dabei wird das Glanzlicht der Oberfläche durch den Term \cos^n(\theta) beschrieben, wobei der Parameter n die „Rauhigkeit“ der Oberfläche bestimmt.

Es handelt sich um ein vollständig empirisches Modell, das auf keinerlei physikalischer Grundlage aufbaut. Das bedeutet, dass es dem Energieerhaltungssatz widerspricht, der vorschreibt, dass eine Oberfläche höchstens so viele Photonen reflektieren kann, wie auftreffen. Andere Beleuchtungsmodelle wie das Schlick [1] oder Cook-Torrance-Modell sind hingegen vollständig oder zumindest annähernd physikalisch plausibel. Zudem ist das Phong-Beleuchtungsmodell im Vergleich etwa zum Blinn-Beleuchtungsmodell, das eine vergleichbare Bildqualität ermöglicht, langsam zu berechnen. Trotz seiner Mängel findet das Phong-Beleuchtungsmodell aber auf Grund seiner Einfachheit noch häufig Verwendung.

Formel[Bearbeiten]

Vereinfachungen des Phong-Beleuchtungsmodelles[Bearbeiten]

  • Lichtquellen sind punktförmig
  • die Geometrie der Oberflächen, außer den Oberflächennormalen, wird ignoriert
  • diffuse und spiegelnde Reflexion wird nur lokal modelliert
  • ambiente Reflexion wird global modelliert

Zusammensetzung des reflektierten Lichtes[Bearbeiten]

Im Phong-Beleuchtungsmodell wird die Reflexion von Licht als Kombination aus ambienter, ideal diffuser und ideal spiegelnder Reflexion beschrieben.


I_{\text{out}} = I_{\text{ambient}} + I_{\text{diffus}} + I_{\text{specular}} \quad

Die einzelnen Komponenten werden nachfolgend beschrieben.

Ambiente Komponente des reflektierten Lichtes[Bearbeiten]

Die ambiente Komponente des reflektierten Lichts ist unabhängig vom Einfallswinkel des Lichtstrahls der Punktlichtquelle und vom Blickwinkel des Beobachters der Szene. Sie ist abhängig von dem für alle Punkte auf allen Oberflächen konstanten Umgebungslicht und einem empirisch bestimmten Reflexionsfaktor (Materialkonstante).


I_{\text{ambient}} = I_{\text{a}} \, k_{\text{ambient}}

mit

  •  I_{\text{a}} ... Intensität des Umgebungslichts
  •  k_{\text{ambient}} ... Materialkonstante

Diffuse Komponente des reflektierten Lichtes[Bearbeiten]

Bei diffuser Reflexion wird das Licht unabhängig vom Standpunkt des Betrachters in alle Richtungen reflektiert (Lambertsches Gesetz). Die Lichtstärke des reflektierten Lichts der Punktlichtquelle hängt dennoch vom Einfallswinkel ab, da sich die Beleuchtungsstärke der Oberfläche mit dem Einfallswinkel ändert. Somit ist die Lichtstärke der diffusen Komponente vom Einfallswinkel des Lichtstrahls der Punktlichtquelle und von einem empirisch bestimmten Reflexionsfaktor (Materialkonstante) abhängig, jedoch vom Blickwinkel des Beobachters der Szene unabhängig.


\begin{matrix}
I_{\text{diffus}} & = & I_{\text{in}} \, k_{\text{diffus}} \, \cos \varphi \\
           & = & I_{\text{in}} \, k_{\text{diffus}} \, (\vec{L} \cdot \vec{N})
\end{matrix}

mit

  •  I_{\text{in}} ... Lichtstärke des einfallenden Lichtstrahls der Punktlichtquelle
  •  k_{\text{diffus}} ... empirisch bestimmter Reflexionsfaktor für diffuse Komponente der Reflexion
  •  \varphi ... Winkel zwischen Normalenvektor der Oberfläche  \vec{N} und Einheitsvektor in Richtung des einfallenden Lichtstrahls  \vec{L}

Spiegelnde Komponente des reflektierten Lichtes[Bearbeiten]

Bei spiegelnder Reflexion wird das Licht in einer gewissen Umgebung der idealen Reflexionsrichtung reflektiert. Die Lichtstärke des reflektierten Lichtes ist vom Einfallswinkel des Lichtstrahls der Punktlichtquelle, von einem empirisch bestimmten Reflexionsfaktor (Materialkonstante) sowie der Oberflächenbeschaffenheit und vom Blickwinkel des Beobachters der Szene abhängig.


\begin{matrix}
I_{\text{specular}} & = & I_{\text{in}} \, k_{\text{specular}} \, \cos^n \theta \\
             & = & I_{\text{in}} \, k_{\text{specular}} \, (\vec{R} \cdot \vec{V}) ^n
\end{matrix}

mit

  •  I_{\text{in}} ... Lichtstärke des einfallenden Lichtstrahls der Punktlichtquelle
  •  k_{\text{specular}} ... empirisch bestimmter Reflexionsfaktor für spiegelnde Komponente der Reflexion
  •  \theta ... Winkel zwischen idealer Reflexionsrichtung des ausfallenden Lichtstrahls  \vec{R} und Blickrichtung des Betrachters  \vec{V}
  •  n ... konstanter Faktor zur Beschreibung der Oberflächenbeschaffenheit (rau kleiner 32, glatt größer 32, n=\infty wäre ein perfekter Spiegel)

Des Weiteren sollte ein Normalisierungsfaktor verwendet werden, der dafür sorgt, dass die Helligkeit bei großen Spiegelexponenten ( n ) nicht abnimmt.

Als sinnvoller Faktor wird meistens  \frac{n+2}{2 \, \pi} genommen.

Somit ergibt sich folgende Formel zur Berechnung der spiegelnden Reflexion:


\begin{matrix}
I_{\text{specular}} & = & I_{\text{in}} \, k_{\text{specular}} \, \frac{n+2}{2 \, \pi} \, \cos^n \theta \\
             & = & I_{\text{in}} \, k_{\text{specular}} \, \frac{n+2}{2 \, \pi} \, (\vec{R} \cdot \vec{V}) ^n
\end{matrix}

Vollständige Formel[Bearbeiten]

Und hier die zusammengesetzte Formel für das Phong-Beleuchtungsmodell:


\begin{matrix}
I_{\text{out}} & = & I_{\text{a}} \, k_{\text{ambient}} + I_{\text{in}} \, k_{\text{diffus}} \, \cos \varphi + I_{\text{in}} \, k_{\text{specular}} \, \frac{n+2}{2 \, \pi} \, \cos^n \theta \\
        & = & I_{\text{a}} \, k_{\text{ambient}} + I_{\text{in}} \, ( k_{\text{diffus}} \, \cos \varphi + k_{\text{specular}} \, \frac{n+2}{2 \, \pi} \, \cos^n \theta ) \\
        & = & I_{\text{a}} \, k_{\text{ambient}} + I_{\text{in}} \, \left[ k_{\text{diffus}} \, (\vec{L} \cdot \vec{N}) + k_{\text{specular}} \, \frac{n+2}{2 \, \pi} \, (\vec{R} \cdot \vec{V})^n \right]
\end{matrix}

mit

 k_{\text{diffus}} + k_{\text{specular}} <=1

 k_{\text{ambient}} <= 1

Mehrere Lichtquellen[Bearbeiten]

Sind mehrere Lichtquellen vorhanden, so werden zunächst die jeweiligen Komponenten für jede Lichtquelle separat berechnet und diese anschließend aufsummiert.

Siehe auch[Bearbeiten]

Referenzen[Bearbeiten]

  1. http://dept-info.labri.fr/~schlick/DOC/ewr3.html A Customizable Reflectance Model for Everyday Rendering