Mathematische Grundlagen des Raytracing-Verfahrens


Raytracing ("Strahlverfolgung") ist die gebräuchlichste Methode zur Erstellung fotorealistischer 3D-Grafiken. Das Raytracing-Verfahren orientiert sich an der Ausbreitung von Lichtstrahlen und der Beleuchtung von Körpern in der realen Natur.

In der Realität nimmt unser Auge Lichtstrahlen wahr, die von Lichtquellen ausgehen und das Auge auf direktem, vor allem aber auf indirektem Wege - nach oft mehreren Reflexionen an verschiedenen Gegenständen - erreichen. Nun sind jedoch Verläufe von Lichtstrahlen generell umkehrbar. Genau dies macht man sich bei Raytracing (übersetzt: Strahl-Verfolgung) zunutze. Von der virtuellen Kamera aus werden die Verläufe der Lichtstrahlen über ihren langen Weg (mit mehrfachen Reflexionen) bis hin zu den Lichtquellen verfolgt. Ray-Tracing-Programme berechnen dadurch automatisch Schatten und Spiegelungen (siehe Bild auf der Startseite).

Die Zahl der zu verfolgenden Lichtstrahlen hängt von der gewünschten Auflösung des Bildes ab, bei 800x600 Bildpunkten müssen 480000 Lichtstrahlen verfolgt werden. Bedenkt man, dass für jeden Lichtstrahl u.U. mehrere Spiegelungen zu berechnen sind, so wird verständlich, dass die Berechnung eines Bildes eine gewisse Zeit in Anspruch nehmen kann.

Um die Intensität des gespiegelten Lichtes für jeden Punkt einer Oberfläche zu ermitteln, müssen jeweils die Winkel zwischen dem Normaleneinheitsvektor und dem einfallenden Lichtstrahl sowie dem Normaleneinheitsvektor und dem "Sichtstrahl" zum "Auge des Beobachters" berechnet und verglichen werden. Nach dem Reflexionsgesetz ist die wahrgenommene Helligkeit eines Punktes maximal, wenn beide Winkel gleich sind; je größer der Unterschied zwischen den beiden Winkeln ist, desto dunkler erscheint der Punkt.

Komponenten des Lichtes, das in einem Oberflächenpunkt wahrgenommen wird

Für jeden Punkt, in dem einer der betrachteten Strahlen an einer Oberfläche auftrifft, muss die Intensität des Lichtes berechnet werden. Dabei sind verschiedene Lichtanteile zu berücksichtigen, durch die in der Realität Körper beleuchtet werden. Die wichtigsten dieser Beleuchtungsanteile werden im Folgenden beschrieben.

Ambiente Beleuchtung (Umgebungslicht)

Die ambiente (richtungsunabhängige) Beleuchtung wird in der Natur durch vielfältige Lichtstreuungen hervorgerufen und tritt insbesondere bei Nebel stark auf. Sie ist völlig unabhängig von der gegenseitigen Lage von Objekt, Kamera und Lichtquellen. Die IntensitätI der ambienten Beleuchtung hängt nur von der globalen IntensitätIa des ambienten Lichtes und einem Faktorka ab, der angibt, wie stark die Oberfläche des betrachteten Körper ambientes Licht wiedergibt:

Ein räumlicher Eindruck entsteht bei ausschließlich ambienter Beleuchtung nicht (siehe dieses Bild).

Diffuse Reflexion (Streulicht)

Der diffuse Anteil des von einer Lichtquelle auf die Oberfläche fallenden Lichtes ist abhängig von der Lichteinfallsrichtung, aber unabhängig von der Richtung zum Betrachter. Dieser Ansatz ist dadurch gerechtfertigt, dass bei rauen Oberflächen die Lichtstrahlen unterschiedlich weit eindringen und in verschiedene Richtungen reflektiert werden (siehe Abbildung).
Nach dem Lambertschen Kosinusgesetz ist der Anteil des diffus reflektierten Lichts, das von einer Lichtquelle der IntensitätIj ausgeht, proportional zum Skalarprodukt des (normierten) Lichteinfallsvektors mit dem Normaleneinheitsvektor im betrachteten Flächenpunkt:

Dabei istkd eine Materialkonstante, die angibt, wie stark der Anteil des diffus reflektierten Lichts für eine Oberfläche ist. Die Berücksichtigung der diffusen Beleuchtung erzeugt bereits einen gewissen räumlichen Eindruck (Abbildung).

Direkte (spiegelnde) Reflexion

Direkte Reflexion tritt auf, wenn die Flächennormale im betrachteten Punkt mit den Verbindungsvektoren zur Lichtquelle und zum Auge gleiche Winkel einschließt und alle drei Vektoren in einer Ebene liegen. Diese Bedingungen lassen sich durch die Gleichung

ausdrücken. Dabei gibtks an, wie stark ein Körper Lichtstrahlen direkt reflektiert.

Für die Berechnung der direkten Reflexion werden auch von anderen Objekten der Szene reflektierte Lichtstrahlen berücksichtigt; auf dieser Abbildung ist deutlich erkennbar, wie sich die Schachbrettebene in der Kugel spiegelt.

Das Phongsche Beleuchtungsmodell

Da reale Oberflächen keine idealen Spiegel sind, entspricht das einfache Modell der spiegelnden Reflexion nicht der Realität. Vielmehr werden Leuchtflecken ("Highlights") auf Körperoberflächen wahrgenommen, die mit der Position des Betrachters "wandern". Da aber Lichtquellen i. Allg. als punktförmig betrachtet werden, würden derartige Leuchtflecken durch die bisher beschriebenen Komponenten nicht erzeugt werden. Durch das Phongsche Reflexionsmodell werden nun mehr oder weniger scharf abgegrenzte Leuchtbereiche in der Nähe der Punkte, in denen die Lichtquellen (mit der LichtintensitätIj) reflektiert werden, hinzugefügt:

mit und dem Highlight-Vektor .

Der Highlight-Vektor gibt also die Richtung der Winkelhalbierenden der Verbindungsvektoren des Punktes zur Lichtquelle und zum Beobachter an. Je geringer der Winkel dieses Vektors zum Normaleneinheitsvektor ist, desto stärker wird die Lichtquelle in dem betrachteten Punkt "gespiegelt". Die Stärke der Abnahme der Lichtintensität bei wachsendem Winkel zwischen und wird durch den Exponentenm (Rauigkeits-Index) bestimmt. Je geringerm ist, desto größer sind die Leuchtflecken (Bild für Rauigkeits-Index 12, Rauigkeits-Index 50).

Zusammenfassung der Lichtkomponenten

Die vier Beleuchtungskomponenten lassen sich (unter Hinzunahme einer Komponente für transmittiertes Licht bei transparenten Körpern) zu folgender Gleichung für die GesamtlichtintensitätI in einem Punkt zusammenfassen:

Dabei wird davon ausgegangen, dass die Szenen Lichtquellen (mit den IntensitätenIj,j=1...n) enthält.Ia ist die Intensität des in der ganzen Szene auftretenden ambienten Lichtes, Is undIt sind die Intensitäten der auf den betrachteten Punkt aus direkter Reflexions- bzw. Transmissions (Durchdringungs-)richtung einfallenden Lichtstrahlen. In der folgenden Tabelle sind die Koeffizienten und Vektoren der obigen Gleichung zusammengefasst. Außerdem sind die Namen enthalten, unter denen die Koeffizienten in der 3D-Grafiksoftware POV-Ray eingegeben werden.

Variable Bedeutung In POV-Ray
Normaleneinheitsvektor im betrachteten Flächenpunkt  
(normierter) Verbindungsvektor zur Kamera  
(normierter) Verbindungsvektor zur j-ten Lichtquelle  
Highlight-Vektor in Bezug auf die j-te Lichtquelle  
O Farbe der Oberfläche (3 Farbkomponenten: Rot, Grün, Blau) color rgbt
kt Transparenz color rgbt
ka Faktor für die Wiedergabe des ambienten Lichtes ambient
kd Stärke der diffusen Reflexion diffuse
ks Stärke der direkten Reflexion reflection
kp Stärke der Phongschen Reflexion phong
m Rauigkeitsindex phong_size


Durch das Verhältnis der beschriebenen Beleuchtungskomponenten lässt sich das Aussehen der Oberfläche eines Körpers in weiten Grenzen bestimmen. In POV-Ray wird dazu dem entsprechenden Körper durch die folgende Anweisung eine Oberfläche (Textur) zugewiesen:

texture { pigment { color rgbt <r, g, b,kt> } }
finish {ambient
ka diffusekd phongkp phong_sizem reflectionks } } .

Die Bedeutung der Farbbeschreibung color rgb können Sie auf der Seite "Farbmodelle" nachlesen.

Die folgenden Bilder zeigen jeweils eine Kugel, deren Oberfläche mit dieser Definition und den angegebenen Werten für die Parameter in POV-Ray erzeugt wurde.

Klicken Sie auf die Miniaturen, um die entsprechenden Bilder anzuzeigen.


Andreas Filler, 1996-2006