![]() |
|||||
| |
|||||
|
|
|||||
6.1 Raytracing
|
![]() |
(6.1)
|
Trifft der Sehstrahl
auf ein Objekt im Punkt P, so wird die Intensität an diesem Punkt
durch die Gleichung 6.1 berechnet (Abbildung
3). Die ersten beiden Terme entsprechen der Schattierungsfunktion
des Lambertreflektierers
.
Die anderen zwei Terme bestimmen den spiegelnden und den durch Transmission
einwirkenden Intensitätsbeitrag.
Zur Darstellung eines Grauwertbildes auf dem Bildschirm, werden die berechneten
Intensitäten auf ganzzahlige Werte zwischen 0 und 255 abgebildet.
Sollen Farbbilder berechnet werden, muss die Gleichung 6.1 auf die drei
Primärfarben Rot, Grün und Blau angewendet werden.
Tabelle 1 zeigt die verwendeten Parameter im Detail :
|
|
Intensität im Oberflächenpunkt P in Richtung des Sehstrahls |
|
|
Intensität des reflektierten Lichtes in P |
|
|
Intensität des transmittierten Lichts in P |
|
|
Normalvektor im Punkt P |
|
|
Intensität der Lichtquelle Lq |
|
|
Richtung von P zur Lichtquelle Lq |
|
|
Intensität des ambienten Lichtes |
|
|
ambienter Reflexionskoeffizient |
|
|
diffuser Reflexionskoeffizient |
|
|
spiegelnder Reflexionskoeffizient |
|
|
Transmissionskoeffizient |
Das Resultat dieser Berechnung lässt sich noch verbessern, indem der Spiegelungsterm um das Beleuchtungsmodell von Phong erweitert wird. Die folgende Gleichung berücksichtigt die Spiegelung nach Phong mit dem lokalen Reflexionsvektor R und dem Vektor A zum Betrachter.

Der Strahlenverfolgungsalgorithmus
ist in seiner bis jetzt beschriebenen Form sehr anfällig für
Diskretisierungsfehler, da kleine Objekte möglicherweise nicht erfasst
werde, bzw. Objektkanten ungenau dargestellt werden. Um diesen Effekt
zu reduzieren, werden mehrere Sehstrahlen durch ein Pixel (z.B. 3 x 3
Strahlen) geschickt (super sampling). Die Farbe des Pixels wird durch
anschließende Mittelwertbildung der Sehstrahlen bestimmt.
Whitted hat seinen Algorithmus dadurch verbessert, dass er die Sehstrahlen
durch die Eckpunkte des Pixelquadrates schickt und die Intensität
durch Mittelwertbildung der vier Sehstrahlen berechnet. Der Mehraufwand
für diese Methode beläuft sich bei einer Pixelanzahl von s*z
Pixeln auf einen linearen Zuwachs von s+z+1 Sehstrahlen.