• Keine Ergebnisse gefunden

Computer-Graphik II

N/A
N/A
Protected

Academic year: 2021

Aktie "Computer-Graphik II "

Copied!
21
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Clausthal

C G C C G C

Computer-Graphik II

Ray-Tracing

G. Zachmann

Clausthal University, Germany cg.in.tu-clausthal.de

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 2

C G C C G

Effekte für eine realistische Darstellung

C

  Das lokale Beleuchtungsmodell (CG1) versagt bei folgenden Effekten:

  (Soft) Shadows (Halbschatten)

  Reflexionen (reflection, z.B. Spiegel)

  Brechung (refraction, z.B. Wasser, Glas)

  Indirekte Beleuchtung ("color bleeding")

  Beugung (dispersion)

  …

(2)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 3

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 10 Ray-Tracing 4

C G C C G

Die Erfindung des Ray-Tracings

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

(3)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 5

C G C C G

Albrecht Dürers "Ray-Casting-Maschinen" [16. Jhrdt.]

C

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 6

C G C C G C

(4)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 7

C G C C G

Rekursives Ray-Tracing

C

  Algorithmus zur Approximation der Rendering-Gleichung

  Modelliert werden nur:

  Reflexion

  Brechung

  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 10 Ray-Tracing 8

C G C C G

Funktionsweise

C

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

(5)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 9

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 10 Ray-Tracing 10

C G C C G

Die antike Erklärung des Sehens: Sehstrahlen

C

(6)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 11

C G C C G C

  Visualisierung eines Strahlbaumes (eignet sich hervorragend zum Debugging)

incoming reflected ray shadow ray

transmitted (refracted) ray

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 12

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

(7)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 13

C G C C G

Demo

C

http://www.siggraph.org/education/materials/HyperGraph/raytrace/rt_java/raytrace.html

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 14

C G C C G

Eines der ersten Ray-Tracing-Bilder

C

Turner Whitted 1980

(8)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 15

C G C C G

Beispiele

C

Jensen, Lightscape

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 16

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/ ].

(9)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 17

C G C C G C

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 18

C G C C G C

(10)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 19

C G C C G

Fake or Real?

C

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 20

C G C C G

Die Kamera (ideale Lochkamera)

C

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

(11)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 21

C G C C G

Älteste Abbildung einer Lochkamera

C

Von R. Gemma Frisius, 1545

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 22

C G C C G

Camera Obscura

C

(12)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 23

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 10 Ray-Tracing 24

C G C C G C

(13)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 25

C G C C G

Sekundärstrahlen

C

  Annahme: Hit zwischen

Primärstrahl und Szene gefunden

  Reflektierter Strahl:

n

d r

r = �

(− d · n)· n − (− d) �

·2 + (− d)

= d − 2(d · n) · n

wobei � n � = 1

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 26

C G C C G

Gebrochener Strahl

C

  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

(14)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 27

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 10 Ray-Tracing 28

C G C C G C

  Totalreflexion:

wenn Radikand < 0 ⇔ sin θ 1 ≥ n 2

n 1

(15)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 29

C 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 10 Ray-Tracing 30

C G C C G

Wirkung des Brechungsindex

C

n=1.0 n=1.1 n=1.2 n=1.3

n=1.4 n=1.5 n=1.6 n=1.7

(16)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 31

C G C C G

Welches ist die "richtige" Normale?

C

  Klappt die korrekte Berechnung des reflektierten und des gebrochenen Strahls auch, wenn die Normale in die "falsche"

Richtung zeigt?

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 32

C G C C G

Was können wir hier noch nicht simulieren?

C

(17)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 33

C G C C G

Fresnel-Terme

C

  Beim Wechsel von einer Materie in eine andere wird immer ein Anteil Licht reflektiert, der restliche Anteil gebrochen

  Der Reflexionskoeffizient ρ hängt ab vom Brechungsindex der beiden Materialien und vom Einfallswinkel:

ρ = n 2 cos θ 1 − n 1 cos θ 2 n 2 cos θ 1 + n 1 cos θ 2

ρ = n 1 cos θ 1 − n 2 cos θ 2

n 2 cos θ 1 + n 1 cos θ 2

ρ = 1 2 · �

ρ 2 + ρ 2

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 34

C G C C G C

  Beispiel:

  Luft (n = 1.0) nach Glas (n = 1.5), senkrechter Lichteinfall:

  D.h., beim Übergang von Luft nach Glas wird 4% des Lichtes reflektiert, der Rest gebrochen

  Approximation der Fresnel-Terme [Schlick 1994]:

wobei ρ 0 der Fresnel-Term des senkrechten Lichteinfalls ist und θ der Winkel im dünneren Medium (also der größere).

  1-ρ ergibt dann den transmittierten Anteil

ρ = 1.5 − 1 1.5 + 1 = 1

5 ρ = 1 − 1.5 1.5 + 1 = 1

5 ρ = 1 2 · 2

25 = 4%

ρ(θ) ≈ ρ 0 + (1 − ρ 0 ) (1 − cos θ) 5 ρ 0 =

� n 2 − 1 n 2 + 1

� 2

(18)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 35

C G C C G

Beispiel für Brechung unter Berücksichtigung der Fresnel-Terme

C

n=1.0 n=1.1 n=1.2 n=1.3

n=1.4 n=1.5 n=1.6 n=1.7

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 36

C G C C G

Dämpfung im Medium

C

  Die durch ein Medium transportierte Lichtintensität schwächt sich mit zunehmender Entfernung gemäß dem Lambert-Beer'schen Gesetz ab:

wobei α eine Materialkonstante ist und s der im Medium zurückgelegte Weg.

 α kann auch von der Wellenlänge abhängen

I (s ) = I 0 e αs

(19)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 37

C G C C G

Dispersion

C

  Brechungsindex ist abhängig von der Wellenlänge

  Diese Effekte lassen sich allerdings in RGB nicht mehr abbilden;

hierzu wäre ein „spektraler“ Ray-Tracer nötig

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 38

C G C C G C

Gio v anni Battis ta Pitt oni , 1 7 25, "An Alleg or ical Monument t o Sir Isaac Ne wt on"

Pink Floyd, The Dark Side of the Moon

(20)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 39

C G C C G

Beispiel mit Fresnel-Term und Dispersion

C

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 40

C G C C G

Schnittberechnungen

C

  Der wesentliche Bestandteil der Rechenzeit

  Gegeben: Menge von Objekten (Polygone, Kugeln, …) und ein Strahl

  Gesucht: Linien- parameter t des ersten Schnitt-

punktes P = P(t) mit der Szene P(t) = O + t · d

d

t O

P

(21)

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 41

C G C C G

Schnitt Strahl—Polygon

C

  Schneide Strahl (parametrisch) gegen Ebene des Polygons (implizit) → Punkt

  Teste "Punkt in Polygon"

  Dieser Test findet ausschließlich in der Ebene statt

  3D-Punkt in 3D-Polygon ⇔ 2D-Punkt in 2D-Pgon

  Projiziere Punkt & Polygon

  Entlang der Normale: zu teuer

  Auf Koord.ebene: einfach eine der 3 Koord fallenlassen

  Test "Punkt in Polygon":

  Zähle Anzahl Schnitte zwischen Strahl und Rand; oder

  Bestimme "Winding Number"

G. Zachmann Computer-Graphik 2 — SS 10 Ray-Tracing 42

C G C C G

Interludium: die vollständige Ray-Tracing-Routine

C

traceRay( ray ):

hit = intersect( ray ) if no hit:

return no color

reflected_ray = reflect( ray, hit )

reflected_color = traceRay( reflected_ray ) refracted_ray = refract( ray, hit )

refracted_color = traceRay( refracted_ray ) for each lightsource[i]:

shadow_ray = calcLightFeeler( hit, lightsource[i] ) if intersect(shadow_ray):

light_color[i] = 0 overall_color = shade( hit,

reflected_color, refracted_color, light_color ) return overall_color

hit ist eine Datenstruktur,

die alle Infos über einen Schnitt zwischen Strahl und Szene enthält, u.a.

Schnittpunkt, Objekt, Normale, …

Diese intersect-Funktion kann deutlich optimiert werden gegenüber der obigen; außerdem interessiert nur ein Schnitt

vor der Lichtquelle.

Wertet die Beleuchtungsgleichung für das getroffene Obj aus.

Referenzen

ÄHNLICHE DOKUMENTE

4.  Was macht man, falls das Gebiet nicht durch Polygonzug (stückweise lineare Kurve) beschränkt ist, sondern durch eine glatte, geschlossene (konvexe) Kurve?.?.

  globale Variable, nur im Vertex-Shader, kann sich pro Vertex ändern.  

  Der Dynamikbereich (dynamic range) eines Bildes ist das Kontrastverhältnis zwischen dem hellsten und dunkelsten Teil..   Der Dynamikbereich eines

  Falls Strahl zur Laufzeit Zelle trifft, die Abbruchkriterium nicht erfüllt, erzeuge dann weitere Levels.

  Man kann innerhalb eines Frames zwischen fixed functionality und eigenem Programm umschalten (aber natürlich nicht innerhalb eines Primitives, also nicht zwischen

  Mittels Texturen können Daten an Shader übergeben werden.  Interpretation bleibt

 Es gibt zu jeder Farbe genau 1 Band um die Mandelbrot-Menge, d.h., es gibt genau 1 Band mit Werten c, deren Folgenglieder schon nach 1 Iteration &gt; 2 wurden, genau 1 Band nach

 Es gibt zu jeder Farbe genau 1 Band um die Mandelbrot-Menge, d.h., es gibt genau 1 Band mit Werten c, deren Folgenglieder schon nach 1 Iteration &gt; 2 wurden, genau 1 Band nach