C G C C G C
Computer-Graphik II
Ray-Tracing
G. Zachmann
Clausthal University, Germany cg.in.tu-clausthal.de
C G C C G
Die antike Erklärung des Sehens: Sehstrahlen
CG. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 3
C C
Effekte für eine realistische Darstellung
Das lokale Beleuchtungsmodell versagt bei folgenden Effekten
(Soft) Shadows (Halbschatten)
Reflexion (Spiegel und Glanz)
Transparenz (Wasser, Glas)
Interreflexion ("color bleeding")
…
C G C C G
Globale Beleuchtungsrechnung
C Ziel: Photorealistisches Rendering
Die "Lösung": die Rendering-Gleichung [Kajiya, Siggraph 1986]
L i = aus Richtung ω i inzidentes "Licht"
L e = emittiertes Licht
L r = in Richtung ω r reflektiertes Licht ρ = Reflexionskoeffizientenfunktion (BRDF) Ω = Halbkugel um Normale
L i
L r θ i
x
ρ
L r (x, ω r ) = L e (x, ω r ) +
!
Ω
ρ(x, ω r , ω i )L i (x, ω i ) cos(θ i )dω i
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 5
C C
Analytische Lösung ist unmöglich!
Die Rendering Gleichung kann als rekursive Funktion aufgefaßt werden
Daraus folgen praktische Approximations-Verfahren, die auf der Verfolgung des Lichts entlang Strahlen beruhen
Ray tracing [Whitted, Siggraph 1980,
"An Improved Illumination Model for Shaded Display"]
Radiosity [Goral et. al, Siggraph 1984,
"Modeling the Interaction of Light between diffuse Surface"]
Monte Carlo Verfahren
Turner Whitted, Microsoft Research
C G C C G
Rekursives Ray-Tracing
C Algorithmus zur Approximation der Rendering-Gleichung
Modelliert werde nur:
Reflektion
Beugung
Verdeckungsrechnung
Schatten
Strahlen werden nur in Richtung des reflektierten bzw.
gebrochenen Strahls verfolgt
Annahmen:
Punktlichtquellen
Phong-Modell
keine Halbschatten
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 7
C C
Funktionsweise
1. Synthetische Kamera = Augpunkt + Bildebene in Weltkoordinaten 2. Schieße Strahlen vom Augpunkt aus durch die Pixel in die Szene
3. Falls der Strahl mehr als ein Objekt schneidet, betrachte nur den ersten Schnittpunkt 4. Schieße weitere Strahlen vom dort zu allen Lichtquellen (Schattenstrahlen; "shadow feelers") 5. Treffen diese Schattenstrahlen auf ein Objekt, so liegt der betrachtete Flächenpunkt im Schatten.
Ansonsten wird das Phong-Beleuchtungsmodell ausgewertet
6. Ist das sichtbare Objekt spiegelnd, dann schieße weiteren reflektierten Strahl in die Szene 7. Ist das Objekt transparent, so wird zusätzlich ein gebrochener Strahl weiterverfolgt
C G C C G
Der Strahlbaum
C Grundidee des Raytracing: Strahlengänge von den Lichtquellen bis zum Auge konstruieren, aber dabei beim Auge starten und diese Strahlengänge rückwärts "suchen"
Ergibt (konzeptionell!) einen Strahlenbaum:
E1 = Primärstrahl Si = Schattenstrahl Ri = reflektierter Strahl
Ti = transmittierter Strahl
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 9
C C
Visualisierung eines Strahlbaumes (eignet sich hervorragend zum Debugging)
incoming reflected ray shadow ray
transmitted (refracted) ray
C G C C G
Das Beleuchtungsmodell
C Beleuchtung auf der Fläche
r s = Reflexionskoeffizient für das reflektierte Licht L s r t = Transmissionskoeffizient für das transmittierte Licht L t
Abbruch der Rekursion:
Falls maximale Rekursionstiefe erreicht; oder/und,
falls Beitrag zur Beleuchtung zu klein (schrumpft wie r t n )
Rek. Tiefe: 3 Rek. Tiefe: 5 Rek. Tiefe: 100
l r
e n
Wiederholung Phong
L ges = L Phong + r s L s + r t L t
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 11
C C
Demo
http://www.siggraph.org/education/materials/HyperGraph/raytrace/rt_java/raytrace.html
C G C C G
Eines der ersten Ray-Tracing-Bilder
CTurner Whitted 1980
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 13
C C
Albrecht Dürers "Ray-Casting-Maschinen" [16. Jhrdt.]
C G C C G C
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 15
C C
Beispiele
Jensen, Lightscape
C G C C G C
Objekt "sphere flake" aus der "Standard Procedural Databases" (SPD) von Eric Haines
[http://www.acm.org/tog/resources/SPD/ ].
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 17
C C
C G C C G C
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 19
C C
Die Kamera (ideale Lochkamera)
A
O
for ( t = 0; t < h; t ++ ) for ( s = 0; s < b; s ++ ) ray.from = A
ray.at = O + s
.x + t
.y trace( 0, ray, &color );
putPixel( x, y, color );
near h/2
θ
Die Main-Loop eines Ray-Tracers
h = 2 · near · tan θ 2 O = A − near · z − b
2 x − h 2 y
C G C C G
Älteste Abbildung einer Lochkamera
CVon R. Gemma Frisius, 1545
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 21
C C
Camera Obscura
C G C C G
Andere sonderbare Kameras
C Mit Ray-Tracing sind andere Projektionen sehr einfach
Z.B. Fischauge, Omnimax, Panorama
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 23
C C
C G C C G
Sekundärstrahlen
C Annahme: Hit zwischen
Primärstrahl und Szene gefunden
Reflektierter Strahl:
! ( − d · n) · n − ( − d) "
· 2 + ( − d) = d − 2(d · n) · n
! n ! = 1
n
d r
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 25
C C
Gebrochener Strahl
Brechungsgesetz [Snell ~1600] :
Der transmittierte Strahl:
Brechungsindizes: Luft Wasser Glas Diamant
1.0 1.33 1.5 - 1.7 2.4
n 1 sin θ 1 = n 2 sin θ 2
t = n 1
n 2 (d + n cos θ 1 ) − n cos θ 2
cos θ 1 = − dn cos 2 θ 2 = 1 − n 2 1
n 2 2
! 1 − (dn) 2 "
n d
t
C G C C G C
| n | = | b | = 1
t = cos θ 2 · ( − n) + sin θ 2 · b d = cos θ 1 · ( − n) + sin θ 1 · b
b = d + n · cos θ 1
sin θ 1
t = − n · cos θ 2 + sin θ 2
sin θ 1
(d + n · cos θ 1 ) sin θ 2
sin θ 1
= n 1
n 2
cos θ 1 = n · ( − d)
n
t
b d
d r θ 1
θ 1 θ 2
cos θ 2 ausrechnen:
sin θ 2 = n 1 n 2 sin θ 1
sin 2 + cos 2 = 1 cos 2 θ 2 = 1 − ( u 1
u 2 sin θ 1 ) 2
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 27
C C
Totalreflexion:
wenn Radikand < 0 ⇔ sin θ 2 ≤ n n
12C G C C G
Refraction and the Lifeguard Problem
C Running is faster than swimming
Beach
Person in trouble
Lifeguard Water
Run
Swim
G. Zachmann Computer-Graphik 2 - SS 08 Ray-Tracing 29
C C