Photon Mapping Zusammenfassung

Transcription

Photon Mapping Zusammenfassung
Photon Mapping
Thorsten Grosch
Einleitung
ƒ Lichtsimulationsverfahren
– Ray Tracing [Whitted 1980]
ƒ Nur Spiegel & Glas
– Radiosity [Goral 1984]
ƒ Nur diffuse Materialien
– Path Tracing [Kajiya 1986]
ƒ Alle Materialien, aber langsam &
verrauscht
– Photon Mapping [Jensen 1994]
ƒ Auch alle wichtigen Lichteffekte
ƒ Schneller für spezielle Effekte wie
z.B. Kaustiken
T. Grosch - 2 -
1
Was sieht das Auge ?
ƒ Licht = elektromagnetische
Welle
ƒ Lichtquelle versendet
permanent kleine Wellenzüge
(Photonen)
ƒ Die Photonen werden
(mehrfach) auf den Oberflächen
der Objekte reflektiert und
nehmen dabei die Objektfarbe
an
ƒ Gelangt ein Photon ins Auge,
so wird
i d ein
i R
Rezeptor
t auff d
der
Netzhaut aktiviert
ƒ Dieses Signal wird ans Gehirn
weitergeleitet Æ Das Bild
entsteht
Lichtmenge Q
ƒ Vorstellung
– Eine Lichtquelle sendet
permanent Photonen in alle
Richtungen aus
Ep = h ⋅ f =
h⋅c
λ
– Jedes Photon hat die Energie
Ep
ƒ h: Planck Konstante h = 6.626 ⋅10 −34 Js
ƒ c: Lichtgeschwindigkeit
– Die Lichtmenge Q ist die
Summe aller PhotonenEnergien
g
ƒ Selten verwendete
(zeitabhängige) Größe…
– Wird aber zur Definition
wichtigerer Größen benötigt
Einheit der Lichtmenge ist
Lumen · Sekunde (lm · s)
2
Lichtstrom φ
φ=
ƒ Interessanter ist, wieviele
Photonen pro Zeit von der
Lichtquelle emittiert werden
ΔQ
ΔQ
Δt
ƒ Diese Größe wird als
Lichtstrom bezeichnet
ƒ Lichtstrom = Lichtmenge pro
Zeit
Δt
– Summe der PhotonenEnergien, die pro Zeitraum Δt
emittiert werden
Die Einheit des Lichtstroms
ist das Lumen (lm)
Radiometrische Einheit: Watt
Raumwinkel ω
ƒ Der Raumwinkel ω ist eine
räumliche Erweiterung des
zweidimensionalen Winkels im
Bogenmaß Er ist definiert durch
Bogenmaß.
das Verhältnis der bedeckten
Kugeloberfläche (Kugelkalotte)
zum Quadrat des Kugelradius.
ω=
Ak
r2
– Größe der „Tüte“
ƒ Hilfsgröße zur Definition
richtungsabhängiger
Lichtverteilungen
Die Einheit des
Raumwinkels ist
Steradiant (sr)
3
Winkel, Raumwinkel
Steradiant
Radiant
Winkel:
Wi
k l B
Bogenlänge
lä
auff
Einheitskreis
Beispiel: Winkel Halbkreis = π,
voller Kreis = 2π
Raumwinkel:
R
i k l Flä
Fläche
h auff
Einheitskugel
Beispiel: Raumwinkel Halbkugel = 2π sr,
volle Kugel = 4π sr
Lichtstärke I
Δω
ƒ Lichtquellen geben den
Lichtstrom typischerweise nicht
gleichmäßig in alle Richtungen
ab
I=
Δφ
Δφ
Δω
– z.B. Spotlicht
ƒ Um festzulegen, wieviel
Lichtstrom in eine „Richtung“
fliegt, wird die Lichtstärke als
Lichtstrom pro Raumwinkel
definiert
I =0
ƒ Vorstellung
– Wieviele Photonen sind in der
Tüte
Die Einheit der Lichtstärke ist die
Candela (cd)
1 cd = 1 lm / sr
4
Beleuchtungsstärke E
ƒ Wieviel Licht kommt beim
Empfänger an
E=
ƒ Definition:
– Beleuchtungsstärke =
Ankommender Lichtstrom φ pro
Empfängerfläche ΔA
ƒ Der Lichtstrom kommt dabei
aus allen Richtungen
ƒ E ist unabhängig vom
Empfängermaterial
ƒ Vorstellung
– Wieviele Photonen kommen
(pro Zeit) auf der Fläche an
Δφin
Δφin
ΔA
ΔA
Die Einheit der
Beleuchtungsstärke ist das
Lux (lx)
1 lx = 1 lm / m²
Radiosity B
ƒ Wieviel Licht sendet eine
Fläche ab
B=
ƒ Definition:
– Radiosity = Versendeter
Lichtstrom φ pro Senderfläche
ΔA
ƒ Der Lichtstrom geht dabei in
alle Richtungen
ƒ Gleiche Definition wie E,
E aber B
ist eine Sendergröße
Δφout
Δφout
ΔA
ΔA
Die Einheit der Radiosity
ist lm / m²
ƒ Vorstellung
– Wieviele Photonen werden (pro
Zeit) von der Fläche versendet
5
Leuchtdichte L
L=
ƒ Alle bisherigen Größen sind
unsichtbar und sagen i.A.
nichts über die Helligkeit von
Fläche bzw. Lichtquelle
q
aus
Δφ
ΔA ⋅ cos θ ⋅ Δω
Δω
Δφout
ƒ Definition der Leuchtdichte
– Versendeter Lichtstrom Δφ pro
(sichtbarer) Empfängerfläche
ΔAcosθ und Raumwinkel Δω
– entspricht der gesehenen
Helligkeit
– Lichtstrom
Li ht t
d
dabei
b i nur iin
Richtung Auge
– schwierigste Größe…
θ
ΔA
ΔA ⋅ cos θ : Gesehene Fläche
ƒ Vorstellung
Die Einheit der
Leuchtdichte ist cd / m²
– Wieviele Photonen fliegen ins
Auge (pro Zeit und pro
gesehener Fläche)
Zusammenfassung
Photometrische
Bezeichnung
Einheit
Radiometrische
Bezeichnung
Einheit
Vereinfachter
Zusammenhang
Q
Lichtmenge
(luminous energy)
Strahlungsmenge
(radiant energy)
φ
Lichtstrom
(luminous flux)
lm
Strahlungsfluß
(radiant flux)
W
φ=
ΔQ
Δt
I
Lichtstärke
(luminous intensity)
cd
Strahlstärke
(radiant intensity)
W / sr
I=
Δφ
Δω
E
Beleuchtungsstärke
(illuminance)
lx
Bestrahlungsstärke
(irradiance)
W / m²
E=
Δφ
ΔAe
B
Radiosity
lm / m²
Radiosity
W / m²
B=
Δφ
ΔAs
L
Leuchtdichte
(luminance)
cd / m²
Strahldichte
(radiance)
W / m²sr
L=
Δφ
ΔA ⋅ cos θ ⋅ Δω
6
Materialien
Spiegel
Glänzend
Diffus
Materialien: Spiegel
ƒ Beobachtung
– Einfallsrichtung = Ausfallsrichtung
– In alle anderen Richtungen wird
kein Licht reflektiert (!)
0
L
7
Materialien: Diffuse Fläche
ƒ Beobachtung:
– Die Helligkeit (Leuchtdichte) einer
diffusen Fläche hängt nicht von der
Richtung des Betrachters ab (Lambert)
L
L
– Beispiel: Kreide, Papier
L
ƒ Einfache Erklärung
– Die Oberfläche besteht aus vielen
kleinen Spiegeln, die in einer zufälligen
Richtung orientiert sind
– Die reflektierte Richtung ist Zufall Æ
Gleich viele Lichtstrahlen in alle
Richtungen
Materialien: Glänzende Fläche
ƒ Beobachtung
– Verschwommenes Spiegelbild
L
Lmax
ƒ Einfache Erklärung
– Vorzugsrichtung bei der
Reflexion
L
– Kleinere Variation der
Orientierung der Spiegel
Æ“Reflexions-Keule“ (Lobe)
8
Wie misst/beschreibt man
Reflexion?
ƒ Messung für alle Einfalls- und
Ausfallswinkel
ƒ Für einfallendes Licht misst man
Beleuchtungsstärke
– Andere Größe praktisch kaum
messbar, da man sonst in den
Objektmittelpunkt einen Sensor
integrieren müsste.
ƒ Ausfallendes Licht: Leuchtdichte
ƒ Resultat: Angenäherte BRDF des
Materials [Nicodemus 1977]
– Bi-direktionale ReflexionsVerteilungsfunktion (Bidirectional
Reflectance Distribution Function)
v
ωi
v
ωo
i: incoming
o: outgoing
v
dLo (ωo )
v v
f r (ωi , ωo ) =
v
dEi (ωi )
v
dLo (ωo )
=
v
dLi (ωi ) ⋅ cosθi ⋅ dωi
Reflexionsgrad (Reflectance)
ƒ Anstatt der Werte der BRDF im
Bereich [0,∞[ ist der
Reflexionsgrad im Bereich (0
(0,1)
1)
oft hilfreich (speziell in diffusen
Umgebungen)
φi
ƒ Er ist definiert als der gesamte
ausfallende Lichtstrom im
Verhältnis zum gesamten
eingestrahlten Lichtstrom
v
∫π L (ω )⋅ cosθ
o
o ⋅ dωo
φo B 2
ρ= = =
φi E ∫ Li (ωvi ) ⋅ cosθi ⋅ dωi
o
φo
2π
9
Die Rendering Equation
•
Das Licht an einem Punkt x
ergibt sich aus dem
gesamten einfallenden Licht,
das in Richtung des
Betrachters reflektiert wird
•
Für das einfallende Licht an
jedem Punkt y entsteht
wieder das gleiche Problem
•
y
Lo
Li
v
ωi
v
ωo
Dies führt zu einer
Integralgleichung:
v
v
Lo ( x, ωo ) = Le ( x, ωo ) +
[Kajiya 1986]
x
v v
fr
v
v
∫ f ( x, ω , ω ) ⋅ cosθ ⋅ L ( x, ω ) ⋅ dω
π
r
i
o
i
i
i
2 sr
Lösung der Rendering Equation
durch Photon Mapping
ƒ Photon Mapping wurde 1993/94
von Henrik Wann Jensen entwickelt
ƒ Dieser Ansatz ermöglicht die effiziente
Berechnung aller wichtigen visuellen globalen
Beleuchtungseffekte, z.B.
– spekulare Reflektionen, diffuse Reflexion
(color bleeding), transluzente Materialien,
Volumen Simulation, Dispersion und
insbesondere auch sog. Kaustiken
ƒ geometrieunabhängig
ƒ Basiert auf Particle Tracing [Arvo 1988]
T. Grosch - 20 -
10
Die Idee: two-pass Algorithmus
ƒ In einem ersten Schritt werden
von allen Lichtemittern
Photonen ausgesendet
(sogenanntes Particle Tracing)
ƒ Auf diffusen Oberflächen
werden “Treffer” gespeichert
und falls das Photon nicht
absorbiert wird, wird es
weiterverfolgt.
ƒ In einem zweiten Schritt wird
die Szene durch einen
Raytracer gerendert, wobei an
entsprechenden
p
Stellen kein
Monte Carlo Sampling oder
ähnliches durchgeführt wird,
sondern die Photon Map
abgefragt wird
ƒ Zur Bildentstehung gehen wir
also aus zwei Richtungen vor:
vom Auge (Ray Tracing) und
von den Lichtquellen (Particle
Tracing)
T. Grosch - 21 -
First Pass
Aufbau der Photon Map
T. Grosch - 22 -
11
Sampling der Lichtquelle
ƒ Zunächst einmal müssen die Lichtquellen Photonen
emittieren
ƒ Wenn eine Lichtquelle N Photonen entsendet
entsendet, dann trägt
jedes Photon genau den 1/N Teil des Lichtstroms
ƒ An dieser Stelle muss man sich eine Sampling Strategie
für Position und Richtung der Photonen überlegen.
ƒ Die Basis für die Sampling-Strategie ist die Verteilung
des Lichtstroms über die Raumwinkel
– … also die Lichtstärkeverteilung
T. Grosch - 23 -
LVK-Sampling
Bsp.: Lambert Emitter
I=
ƒ Lichtstärke ist definiert als
Lichtstrom pro Raumwinkel
ƒ In den Halbraum werden N
Photonen verschossen, die
alle den gleichen Lichtstrom
Φ/N transportieren sollen
dΦ
dω
Φ = 1000lm
ƒ Um das zu erreichen, müssen
in die Raumwinkel mit hohen
Lichtstärken auch
entsprechend mehr Photonen
verschickt
hi kt werden.
d
ƒ Die LVK muss daher als
Dichtefunktion verwendet
werden.
T. Grosch - 24 -
12
Photonenverteilung
ƒ Für einen (kleinen) Lambert
Emitter ergibt sich etwa folgende
Photonenverteilung
– Anzahl Photonen pro
Raumwinkel ~ cosθ
Δφout
ƒ Mehr Photonen in Richtung
Normale
ƒ Weniger Photonen in
seitliche Richtungen
ΔA
ƒ Für andere Lichtquellen
– Punktlicht: Zufällige Richtung
– Spot: ~ (cosθ)^n
T. Grosch - 25 -
Photon Scattering
ƒ
Trifft das Photon auf eine
Oberfläche, dann werden folgende
Fälle unterschieden
ƒ
Diffuse Fläche:
– das Photon wird mit der
aktuellen Position in der
Photon-Map abgespeichert.
– eine neue Richtung wird durch
Importance Sampling (Dichte
ähnlich der BDRF des
Materials) zufällig erzeugt und
ein
i ((neues)) Ph
Photon
t wird
i d iin
diese Richtung versendet
ƒ
Spekulare
Reflexion/Transmission:
– das Photon wird in der
entsprechenden Richtung
weiterverfolgt und nicht
abgespeichert
ƒ
Absorption
– das Photon wird mit der
aktuellen Position in der
Photon-Map abgespeichert.
– Es wird nichts weiterverfolgt.
g
ƒ
Als Abbruch wird eine maximale
Rekursionstiefe verwendet
Diffus
Spekular
Spiegel
T. Grosch - 26 -
13
Kombinierte Materialien
ƒ
ƒ
ƒ
Man kann auch Materialien kombinieren
– z.B. 80% diffus, 10% spiegelnd,
10% transmittierend
Um die exponentielle Anzahl von
Strahlen zu vermeiden, wird auch hier
nur ein Strahl weiterverfolgt
Die Entscheidung, welcher Pfad das ist,
erfolgt durch „Russisches Roulette“
– Wähle Zufallszahl ξ
ks = 10%
kd = 80%
kt = 10%
ξ ∈ [0, k d ] → diffus
ξ ∈ [k d , k d + k s ] → reflexion
f
0
ξ ∈ [k d + k s , k d + k s + kt ] → transmission
ƒ
ξ
1
Funktioniert nur, wenn k d + k s + kt ≤ 1
T. Grosch - 27 -
Beispiel
Φ
ƒ Material ist 50% diffus und
25% spiegelnd (also 25%
absorbierend)
– 50% der auftreffenden
Photonen werden gespeichert
und weiterverfolgt
– 25% der auftreffenden
Photonen werden – ohne
Speicherung – reflektiert
– 25% der auftreffenden
Photonen werden absorbiert
– Entscheidung über
Russisches Roulette
a
d
r
d
Beispiel: 4 Photonen mit Rekursionstiefe 2
Absorption (a), diffus (d) und spiegelnd (r).
Die blauen Punkte sind Photonen, die in der
Photon-Map mit jeweils 1/4Φ gespeichert werden.
T. Grosch - 28 -
14
Diffuse Reflexion
ƒ Der Lichtstrom des Photons wird bei der Reflexion nicht verändert
ƒ Mit Russischem Roulette wird entschieden, ob ein Photon reflektiert
oder absorbiert wird
ƒ z.B.
B ρ = 0.33
0 33
– Aus drei Photonen mit Δφ = 1 werden nicht drei Photonen mit
Δφ´= 0.33 sondern nur ein Photon mit Δφ´= 1
Δφ
3
Δφ
Δφ
Δφ
3
Δφ
3
Δφ
Δφ
Δφ
Ohne RR
Δφ
Mit RR
Δφ
T. Grosch - 29 -
Spekulare Reflexion
ƒ Der Grad der Reflexion ist
abhängig vom Einfallswinkel
des Lichts (z.B. Glas) und wird
am besten mit Hilfe der
Fresnel Gleichungen durch
den Brechungsindex
automatisch berechnet.
ρ|| =
n2 cos θ1 − n1 cos θ 2
n2 cos θ1 + n1 cos θ 2
ρ⊥ =
n1 cos θ1 − n2 cos θ 2
n2 cos θ1 + n1 cos θ 2
1
f r (θ ) = ⋅ (ρ||2 + ρ ⊥2 )
2
ƒ
Eine gute Approximation liefert
Schlick:
f r (θ ) ≈ f 0 + (1 − f 0 )(1 − cos θ )
5
ƒ
Mit
2
ƒ
⎛n −n ⎞
f0 = ⎜ 1 2 ⎟
⎝ n1 + n2 ⎠
Über Russisches Roulette mit fr
wird entschieden, ob das Photon
den gespiegelten oder den
gebrochenen Pfad weiterverfolgt
ƒ
Das Photon wird nicht gespeichert
f r (θ )
1 − f r (θ )
Auch hier wird der Lichtstrom unverändert gelassen, beim farbigem Glas kann man umfärben
T. Grosch - 30 -
15
Absorption
ƒ Ein Photon speichert immer den einfallenden Lichtstrom
ƒ Daher werden auch die absorbierten Photonen
gespeichert
ƒ Die Gewichtung mit der BRDF kommt später bei der
Darstellung
– Günstiger für die Darstellung (siehe später)
T. Grosch - 31 -
Speicherung der Photonen
ƒ In der Photon Map werden alle Photonen gespeichert
ƒ Während des Photon Tracings werden nur diejenigen
Photonen gespeichert,
gespeichert die auf diffuse Oberflächen
treffen
ƒ Zur Berechnung der Leuchtdichte an einem Punkt muß
praktisch die “Dichte” der Photonen bestimmt werden
– Daher werden Nachbarschaftsbeziehungen zwischen den
Photonen benötigt. Eine effiziente Speicherung ist daher
sehr wichtig!
– Auch der Speicherplatzverbrauch sollte Berücksichtigung
finden
T. Grosch - 32 -
16
Datenorganisation
ƒ Wir haben zwei wichtige
Anforderungen an die
Datenstruktur
ƒ Eine der besten
Datenstrukturen für unsere
Zwecke ist ein kd-Tree
–
Die n-nächstgelegenen
Photonen müssen schnell
gefunden werden können
–
Ein bestimmtes Photon wird
im Durchschnitt in O(log n)
gefunden
–
Sie muss speichereffizient
sein
–
Die k nächsten werden dann
in O(k+log n) gefunden!
ƒ Übliche Datenstrukturen wie
z.B. ein Octree sind nicht gut
geeignet da die Photonen
geeignet,
hochgradig ungleichmäßig
verteilt sind
T. Grosch - 33 -
kd Tree
ƒ Im Prinzip ist dies ein binärer
Suchbaum in k Dimensionen
ƒ Die Erzeugung eines solchen
Baumes ist relativ einfach
–
Man sucht die Raumachse mit
der größten Ausdehnung
–
Entlang dieser Achse werden
alle Photonen sortiert
–
Das “mittlere” Photon wird ein
neuer Knoten im Baum
–
Alle “kleineren Photonen”
kommen in den linken
Teilbaum, alle größeren
entsprechend in der rechten
–
Dieses Verfahren wird nun
rekursiv auf beide Teilbäume
angewendet
ƒ Der so erzeugte Baum ist nicht
vollständig, aber die Höhe ist
log(n)
T. Grosch - 34 -
17
Kd Tree Beispiel
1
1. Achse mit maximaler Ausdehnung finden
2. Median finden
3 Datenmenge aufsplitten
3.
4. Rekursiv die Operationen 1 bis 3 mit
den beiden neuen Teilmengen durchführen
6
2
3
4
2
5
6
3
X-Achse
5
1
4
Das alles funktioniert fast genauso im k-dimensionalen Raum
T. Grosch - 35 -
Kd Tree für Photonen in Cornell Box
n Photonen
Top
n/4 Photonen
Top-Left-Left
n/2 Photonen
Top-Left
n/8 Photonen
Top-Left-Left-Right
T. Grosch - 36 -
18
Speicherplatz
ƒ Ein Photon wird repräsentiert durch
float position[3]
unsigned char theta, phi
float power[3]
short plane
–
//
//
//
//
Position
Einfallsrichtung*
Lichtstrom
supp. plane kd
=> insgesamt 28 byte pro Photon
ƒ Die Winkel Theta and Phi werden mit Hilfe einer look-up
table komprimiert gespeichert
ƒ Keine Child-Pointer, da kd Tree als Heap organisiert
werden kann (siehe H.W. Jensen: Realistic Image Synthesis using Photon Mapping)
(* für nicht-diffuse Materialien und Ausschluß „falscher“ Photonen (siehe Bias Folie))
T. Grosch - 37 -
Zwei sind besser als eine
ƒ Es ist sehr sinnvoll zwei getrennte Photon Maps zu
verwenden: eine globale Photon Map und eine Caustic
Map
p
–
Die globale Photon Map enthält relativ wenige Photonen
und wird so erzeugt wie beschrieben
–
Die Caustic Map allerdings sollte extrem viele Photonen
enthalten, aber nur diejenigen, deren Pfad die Form LS*D
hat, also mindestens einmal spekular reflektiert wurden
Zusätzlich sollten diese Photonen auch nur in Richtung
spekularer Flächen versendet werden, um Rechenzeit zu
sparen
–
T. Grosch - 38 -
19
Caustic-Map
Φ
Glaskugel
Normales Photon
ƒ
d
Caustic-Photonen werden ebenfalls auf diffusen Objekten
abgespeichert.
T. Grosch - 39 -
Second Pass
Rendern des Bildes
Auswertung der Photon Map
T. Grosch - 40 -
20
Radiance Estimate
ƒ Durch die Photonen auf einer
Oberfläche können wir die
einfallende
Beleuchtungsstärke - bzw.
bzw
gewichtet mit der BRDF die
ausfallende Leuchtdichte schätzen
ƒ Die Photonen haben alle
diskrete Lichtstromwerte
ƒ Hierzu wird um den
untersuchten Punkt eine Kugel
mit Radius r aufgespannt und
alle Photonen eingesammelt
ƒ Oder: die Anzahl der Photonen
N wird vorgegeben und der
dazugehörige Radius r
ermittelt.
ƒ Sie sind über die Flächen
unterschiedlich
t
hi dli h di
dicht
ht verteilt.
t ilt
1 N
Lr (x,ω o ) ≈ 2 ∑ f r (x,ω p ,ω o )Δφ p (x,ω p )
πr p=1
T. Grosch - 41 -
Radiance Estimate
ƒ Um die reflektierte Leuchtdichte zu ermitteln, müssten wir folgende
Gleichung lösen
Lr (x,ω o ) =
∫
f r (x,ω i ,ω o )Li (x,ω i )cos θdω i
Ω
ƒ Dies wird mit Hilfe der Photon Map bestimmt durch:
Lr (x,ω o ) ≈
1 N
∑ f (x,ω p ,ω o )Δφ p (x,ω p )
πr 2 p=1 r
ƒ Zu einem beliebigen
g Punkt x suchen wir die maximal n nächsten
Photonen (und damit den Radius r)
ƒ Der Lichtstrom aller gefundener Photonen wird aufsummiert und
durch die Fläche in der sie liegen geteilt
T. Grosch - 42 -
21
Radiance Estimate
Nur direktes Licht,
ca. 30
ca
30.000
000 Photonen
1 diffuse Reflexion,
ca. 40
ca
40.000
000 Photonen
2 diffuse Reflexionen,
ca 45
ca.
45.000
000 Photonen
T. Grosch - 43 -
Suchradius
r=1
r=2
r=4
r=8
Rauschen
Detailverlust
T. Grosch - 44 -
22
Darstellung des Bildes
ƒ Es wäre möglich die Photon Map direkt zur Darstellung
zu verwenden, das würde aber sehr fleckige/verrauschte
Bilder liefern.
ƒ Wozu dann eigentlich die Photonen?
–
–
Wir verwenden die Photon Map für Kaustiken und für die
Approximation des (einfallenden) indirektens Lichts
Für das direkte Licht und Spiegelungen greifen wir auf
Path Tracing oder Final Gathering zurück
Path-Tracing
T. Grosch - 45 -
Die Rendering Equation
ƒ Eigentlich wollen wir diese Gleichung lösen
v
Lr ( x,ω ) =
v v
v
v v
v
∫π f ( x,ω',ω) ⋅ L ( x,ω') ⋅ (ω'on) ⋅ dω'
r
i
2
ƒ wir
i kö
können di
diese iin d
dreii T
Teile
il trennen, di
die wir
i
einzeln lösen können
(direktes Licht)
=
v v
v v v v
∫π f ( x,ω',ω) ⋅ L ( x,ω') ⋅ (ω'on) ⋅ dω'
r
i ,l
2
(caustics)
v v
v v v v
+ ∫ f r ( x, ω' ,ω ) ⋅ Li ,c ( x, ω') ⋅ (ω'on ) ⋅ dω'
(mult. diffus)
v v
v v v v
+ ∫ f r ( x, ω' ,ω ) ⋅ Li ,d ( x,ω') ⋅ (ω'on ) ⋅ dω'
2π
r
Li ,l ( x, ω ')
r
Li ,c ( x, ω ')
r
Li ,d ( x, ω ')
2π
Direktes Licht der Lichtquelle
Caustic – indirekte Beleuchtung der Lichtquellen über Spiegelung/Transmission
Indirekte Beleuchtung der Lichtquellen, mindestens einmal diffus reflektiert.
T. Grosch - 46 -
23
Rendern aber wie?
ƒ Es gibt sehr viele Möglichkeiten wie man das Bild
rendern kann, aber eine der effizientesten ist es einen
leicht modifizierten Path Tracer zu verwenden.
ƒ Die Vorgehensweise ist zu Beginn ganz “normal”. Wir
schießen n Strahlen durch jedes Pixel und mitteln
danach die Ergebnisse
ƒ Wir unterscheiden fortan zwischen einer exakten und
einer ungefähren Berechnung. Eine ungefähre
Berechnung reicht immer dann
dann, wenn der aktuelle Strahl
nicht mehr viel zum Gesamtergebnis beiträgt!
T. Grosch - 47 -
Wie wird berechnet?
Exakt
Approximation
Direktes Licht
Monte Carlo
Global Map
Spekular
Monte Carlo
Monte Carlo
Kaustik
Caustic Map
Global Map
Mehrfach
diffus
Monte Carlo
Global Map
T. Grosch - 48 -
24
Schnellste Variante
ƒ Durch das Pixel wird ein Strahl
verschossen
ƒ Die globale Photon Map wird
ausgewertet
ƒ Falls eine Caustic Map verwendet
wird
– Die Caustic Map wird ausgewertet
und addiert
ƒ Keine rekursiven Aufrufe oder
Strahlen (nur bei nicht-diffusen
Flächen)
ƒ Schnelles Preview
T. Grosch - 49 -
Beispiel: Final Gathering
ƒ Durch das Pixel werden
wenige Strahlen verschossen
ƒ Für jeden Schnittpunkt wird:
– D
Das di
direkte
kt Li
Licht
ht b
berechnet
h t
(viele Samples)
– Die Caustic Map ausgewertet
– Der Halbraum durch viele
Strahlen abgetastet, wobei die
Photon Maps an den
Trefferpunkten ausgewertet
werden.
– Spiegelung wird rekursiv
weiterverfolgt
– Alle Anteile werden summiert
und gem. der BRDF
gewichtet.
T. Grosch - 50 -
25
Beispiel (Path Tracing)
ƒ Durch das Pixel werden viele
Strahlen verschossen
ƒ Für jeden Schnittpunkt wird:
– Das direkte Licht berechnet (z.B. 1
Sample)
– Die Caustic Map ausgewertet
ƒ ein transparentes Objekt beim
Schattenfühler muss dann als
Schatten interpretiert werden
– Per Russischem Roulette
ƒ diffus (importance sampl
sampl.))
ƒ oder spiegelnd weiterverfolgt
ƒ Beim indirekten Licht werden dann
die Photon Maps ausgewertet
T. Grosch - 51 -
Vergleich mit/ohne Final Gather
Direkte Visualisierung der Photon Map,
einige Sekunden
Final Gathering mit 150 Strahlen,
mehrere Minuten (gleiche Anzahl Photonen!)
T. Grosch - 52 -
26
Direkte Visualisierung mit Caustic Map
Kein
K
i Fi
Finall G
Gathering,
th i
aber
b viele
i l
Photonen, daher Flecken nicht
mehr so deutlich sichtbar
Neues Problem:
Fehler an den Ecken
T. Grosch - 53 -
Verbesserungsmöglichkeiten
ƒ
ƒ
Durch das Verwenden einer Kugel
zum Einsammeln der Photonen
werden an den Ecken viele
“ungültige Photonen”
mitgenommen.
mitgenommen
– Die Leuchtdichte wird somit
evtl. überschätzt
Stattdessen kann man die Kugel
entlang der Normalen stauchen
um die Anzahl der falschen
Photonen zu reduzieren
– Jetzt bekommt man nur
“gültige” Photonen
– Allerdings überschätzt man
die Fläche, auf der Photonen
liegen
– Kanten können somit zu
dunkel werden
T. Grosch - 54 -
27
Bias Typen
Proximity
Boundary
Topological
Occlusion
• Proximity Bias: Details werden gefiltert
•
Verbesserung: Filterung mit höherem Gewicht für nähere Photonen
• B
Boundary
d
Bi
Bias: Fläche
Flä h wird
i d überschätzt
üb
hät t Æ Kanten
K t werden
d zu dunkel
d k l
• Topological Bias: Fläche wird unterschätzt
• Occlusion Bias: Light leaks
•
Nur Photonen mit ähnlichen Normalen mit einbeziehen; Photonen die in
Richtung Oberflächennormale fliegen, können ausgeschlossen werden
Abschließende Bewertung
ƒ Photon Mapping ermöglicht komplizierte Effekte wie
Kaustiken und transparente Materialien qualitativ
hochwertig
g und schnell zu berechnen
ƒ Photon Mapping ist relativ einfach zu implementieren da
ein vorhandener Ray- oder Pathtracer erweitert werden
kann
ƒ Photon Mapping liefert bessere Ergebnisse und diese
schneller als ein Path Tracer
– Dafür Bias durch Radiance Estimate
ƒ Photon Mapping wird zunehmend von kommerziellen
Produkten verwendet.
–
Auch PovRay beherrscht Photon Mapping
T. Grosch - 56 -
28
Termin
ƒ Raum G29 – 224
ƒ Fr, 11.6., 11 – 15 Uhr
T. Grosch - 57 -
29

Documents pareils