Kapitel 4 Photon Mapping

Werbung
Kapitel 4
Photon Mapping
Die größten Schwächen des Raytracing bestehen darin, dass es KEINE diffusen Abstrahlungen und
KEINE Kaustik wiedergeben kann. Während man für die diffusen Abstrahlungen, dem sogenannten
Color bleeding oder Ausbluten von Farbe auf benachbarte Flächen, mit Radiosity Abhilfe schaffen
kann, indem man mit finite Elementmethoden Strahlungsgleichgewichte zwischen einzelnen Flächenstücken berechnet, hatte man für die Kaustik, also das Bündeln oder Fokussieren von Lichtstrahlen
keine wirklich gute Methode. Lichtreflexe auf dem Boden eines Schwimmbeckens oder am Fuß eines
Cognacglases, eine Lupe, die als Brennglas dient, konnten nicht wirklich wiedergegeben werden.
Das Photon Mapping ist eine Methode, die als Ergänzung zum Raytracing zu sehen ist. Sie wurde in
den Jahren 1993/94 in der Dissertation von Henrik Wann Jensen entwickelt und 1995 veröffentlicht.
Beide oben genannten Probleme, das Ausbluten und die Kaustik, können mit Photon Mapping gelöst
werden: es sind indirekte Beleuchtungen diffuser Oberflächen. Außerdem können auch Streuungen an
Volumen in ähnlicher Weise in diese Technik einbezogen werden und so Nebel und Rauch realistisch
erscheinen lassen (Participating Media). Zudem ist sie einfach parallelisierbar. Dieses Skript lehnt
sich eng an die Ausführungen im SIGGRAPH Course 38 von 2001 an (siehe [JCS01]).
Die Idee ist denkbar einfach: man stelle sich Licht in Form von Teilchen vor, die von der Lichtquelle
in zufällige Richtungen emittiert werden und dabei Energie nach Farbkanälen aufgespalten transportieren. In einem ersten Schritt wird eine Photon Map erstellt, die alle Ereignisse des Aufpralls eines
zufällig gestreuten Photons auf ein nichtreflektierendes Objekt registriert. Der zweite Schritt besteht
im Rendering Pass, der mit statistischen Techniken die Informationen über hereinkommenden Fluss
und reflektierte Strahlung an jedem Punkt berechnet.
Die Photon Map ist von der geometrischen Repräsentation entkoppelt. Dadurch ist sie bei komplexen
Szenen der Methode des Radiosity klar überlegen, denn Photon Mapping benötigt kein Gitter und
skaliert daher besser, wenn die Anzahl der Objekte groß ist. Außerdem ist noch anzumerken, dass das
Verfahren nicht patentiert ist und daher bereits in viele gängige Raytracingalgorithmen übernommen
wurde (beispielsweise in Povray und Renderpark).
69
70
KAPITEL 4. PHOTON MAPPING
Abbildung 4.1. Henrik Wann Jensen
4.1
Die Spur der Photonen
Ziel des Photonenverfolgens ist die Berechnung von indirekter Beleuchtung auf diffusen Oberflächen,
die beispielsweise auch durch die Bündelung von Licht an spiegelnden oder transparent fokussierenden Objekten entsteht.
4.1.1
Photonemission
Photonen werden von einer Lichtquelle über eine Verteilungsfunktion emittiert, die von der emissiven
Lichtstärke bestimmt wird. Hier muss zwischen der Lichtstärke und dem Photonenfluss vermittelt
werden.
Man unterscheidet (a) punktförmige und (b) gerichtete Lichtquellen, (c) Schlaglichter oder (d) generelle Lichtobjekte (für die man über goniometrische Diagramme die Emission bestimmt). Während
man für die Photonen bei (a) gleichmäßig verteilte zufällige Richtungen von einem Punkt aus wählt,
haben die Photonen im Fall (b) alle dieselbe Richtung, nämlich die aus der das Licht einstrahlt (mit
vierten Koordinate w = 0, also unendlich weit entfernt). Im Fall (c) eines Schlaglichts (z.B. ein
rechteckiges Fenster), nimmt man zufällig verteilte Positionen innerhalb der ausgedehnten Fläche des
Schlaglichts an und ermittelt zufällige Richtungen mit einer über den Kosinus verteilten Wahrschein-
4.1. DIE SPUR DER PHOTONEN
71
lichkeit (die Null ist, für parallel zur Fläche emittierte Photonen und höchste Wahrscheinlichkeit für
senkrecht abgestrahlte Photonen hat). Im allgemeinen Fall (d) variiert man die Wahrscheinlichkeit der
Position auf der Lichtquelle und die Richtung des Photons.
Die Stärke des Lichts (in Watt, [w]) muss von den emittierten Photonen reproduziert werden. In einer
Formel ausgedrückt muss gelten
Pphoton =
Plight
ne
(4.1)
mit der Lichtstärke Pphoton für ein einzelnes Photon, während Plight die gesamte Lichtstärke der Quelle
und ne die Anzahl der emittierten Photonen ist.
Abbildung 4.2. Mögliche Lichtquellen von links nach rechts: (a) Punktförmige Lichtquelle, (b) gerichtete Lichtquelle, (c) Schlaglicht, (d) generelles Lichtobjekt
Pseudocode für das Aussenden von Photonen:
emit_photons_from_diffuse_point_light(){
ne = 0;
// number of emitted photons
while (not enough photons) {
do {
x = random number between -1 and 1;
y = random number between -1 and 1;
z = random number between -1 and 1;
}
d = <x,y,z>;
p = light source position;
trace_photon_from_p_in_direction_d();
ne= ne + 1;
}
scale power of stored photons with 1/ne
}
72
KAPITEL 4. PHOTON MAPPING
Bemerkung 4.1 Szenen mit vielen Lichtquellen benötigen nicht mehr Photonen als Szenen mit nur
einer Lichtquelle, da jede Lichtquelle zur gesamten Beleuchtung weniger beiträgt. Wenn nur wenige
Lichtquellen für die gesamte Beleuchtung von Bedeutung sind, kann man die Bedeutung in einer
Abbildung festhalten (Importance sampling map), um danach die Photonen zu konzentrieren.
Bemerkung 4.2 Statt Photonen unterschiedlicher Energieniveaus für schwächere und stärkere Lichtquellen zu speichern, kann man auch einfach die Anzahl der emittierten Photonen bei schwächeren
Quellen reduzieren. Tausend Photonen mit halber Energie entsprechen fünfhundert Photonen mit voller Energie.
In Szenen mit wenigen Objekten treffen viele der emittierten Photonen auf gar kein Objekt. Um
diese Verschwendung von Rechenleistung zu reduzieren, optimiert man die Emission über sogenannte
Projection maps.
Definition 4.1 Eine Projection map ist eine Abbildung der Geometrie aus Sicht einer Lichtquelle.
Sie besteht aus vielen einzelnen Zellen, die angeschaltet sind, falls geometrische Objekte in dieser
Richtung liegen, und ausgeschaltet sind, falls das nicht der Fall ist.
In der Praxis hat sich das Clustern von Objekten und ein Arbeiten mit Bounding spheres oder Bounding boxes als nützlich erwiesen.
Mit der Projection map erhält man eine konservative Abschätzung für die Richtung, in der es nötig
ist, Photonen zu emittieren. Das generelle Vorgehen sieht bei dünn besetzten Szenen eine Schleife über alle angeschalteten Zellen vor. Es werden zufällig Photonen in den Bereich dieser Zellen
emittiert. Das kann allerdings zu verzerrten Ergebnissen führen, wenn die Anzahl angestrebter Photonenereignisse bereits erreicht ist, bevor alle Zellrichtungen abgearbeitet sind. Daher wird man bei
dicht besetzten Szenen zunächst eine zufällige Richtung generieren, dann testen, ob die Zelle in dieser
Richtung angeschaltet ist. Andernfalls generiert man eine neue Richtung. Dieses Testen ist für dünn
besetzte Szenen zu kostspielig und bringt im dicht besetzten Fall nur dann einen Vorteil gegenüber
dem Arbeiten ohne Projection map, wenn man die Objekte in Clustern und begrenzenden Volumina
organisiert.
Jedenfalls aber muss man die Gleichung 4.1 mit dem Verhältnis aus angeschalteten Zellen zur Gesamtzahl der Zellen wichten.
Pphoton =
Plight # of cells with objects
ne
total # of cells
(4.2)
Ein weiterer Vorteil von Projection maps besteht darin, dass man Objekte mit spiegelnden Eigenschaften leicht identifizieren kann. Diese meist wenigen Objekte sind wichtig für das Erzeugen von
Kaustiken.
4.1. DIE SPUR DER PHOTONEN
4.1.2
73
Photonenverfolgung mit russischem Roulette
Die Photonenverfolgung basiert auf dem Raytracing ganz ähnlichen Verfahren, mit dem Unterschied,
dass hier die emittierten Photonen in die Szene verfolgt werden. Dieses Verfahren wird von den verschiedenen Autoren meist als Light ray tracing oder Forward ray tracing manchmal auch Backward
path tracing bezeichnet. Beim Verfolgen des Strahls müssen im Wesentlichen Schnittpunkte mit Objekten berechnet werden, an denen ein Richtungswechsel des Strahls geschieht. Dabei transportieren
Photonen Energie in Form eines Energieflusses, während Sichtstrahlen, die durch jeweils alle Pixel in
eine Szene verfolgt werden, eine Strahlungsdichte an den jeweiligen Schnittpunkten einsammeln.
Beispiel 4.1 Die Wechselwirkung eines Photons mit einem Material ist anders als bei einem Sichtstrahl:
Für den Strahl existiert ein Brechungsindex, für das Photonenteilchen nicht.
Wenn ein Photon auf ein Objekt trifft, wird es entweder
(a) diffus oder spiegelnd reflektiert,
(b) diffus oder spiegelnd transmittiert oder
(c) absorbiert (ausgelöscht).
Die Wahrscheinlichkeit für die drei Fälle hängt von den jeweiligen Materialeigenschaften ab. Wenn
wir zunächst den monochromatischen reflektierenden Fall betrachten, so gilt
kd + ks ≤ 1.
Dabei ist kd der diffuse und ks der spiegelnde Reflexionskoeffizient. Sei nun ξ ∈ [0, 1] eine gleichmäßig
verteilte Zufallsvariable (die man z.B. mit drand48() berechnet). Man unterscheidet
ξ ∈ [0, kd ]
ξ ∈ [kd , kd + ks ]
ξ ∈ [kd + ks , 1]
→
→
→
diffuse Reflexion
spiegelnde Reflexion
Absorption.
Diese Methode ist bekannt als Russisches Roulette. Die Energie eines Photons muss dabei nicht modifiziert werden!
Beispiel 4.2 Ein Material, dessen Oberfläche 50 % des eingestrahlten Lichts reflektiert, wird auch
nur die Hälfte der ankommenden Photonen reflektieren (mit voller Energie). Die restlichen 50 %
werden absorbiert.
74
KAPITEL 4. PHOTON MAPPING
Im chromatischen Fall (z.B. mit drei Farbkanälen RGB) bestimmt man jeweils eine Wahrscheinlichkeit für diffuse und spiegelnde Reflexion, statt einfach kd und ks einzusetzen. Daher erhält man für
den
diffusen Fall:
Pd =
max(kdr Pr , kdg Pg , kdb Pb )
max(Pr , Pg , Pb )
spiegelnden Fall:
Ps =
max(ksr Pr , ksg Pg , ksb Pb )
,
max(Pr , Pg , Pb )
und den
wobei (kdr , kdg , kdb ) die diffusen, (ksr , ksg , ksb ) die spiegelnden Reflexionskoeffizienten sind und das
Tupel (Pr , Pg , Pb ) die Energie des einfallenden Photons nach Farbkanälen aufgespalten darstellt. Die
Wahrscheinlichkeit der Absorption bei reflektierenden (nicht transmittierenden) Oberflächen beträgt
P a = 1 − Pd − Ps
mit einer Zufallsvariablen ξ ∈ [0, 1] und
ξ ∈ [0, Pd ]
ξ ∈ [Pd , Pd + Ps ]
ξ ∈ [Pd + Ps , 1]
→
→
→
diffuse Reflexion
spiegelnde Reflexion
Absorption.
Jetzt muss allerdings die Energie des reflektierten Photons angepasst werden, denn entweder wird
das Photon mit voller Energie gespiegelt oder mit voller Energie diffus gestreut. Sollte spiegelnde
Reflexion ausgewählt worden sein, ergibt sich:
Prefl,r = Pin,r /Ps
Prefl,g = Pin,g /Ps
Prefl,b = Pin,b /Ps
Diese Vorgehensweise ist natürlich auf transmittierte Strahlung erweiterbar. Auch das Aufspalten in
nur drei Farbkanäle kann auf generelle Wellenlängenabhängigkeit erweitert werden. Für spezielle
Reflexionseigenschaften wie glänzende oder richtungsabhängige diffuse Reflexion wurden ebenfalls
geeignete Modelle auf Basis von Wahrscheinlichkeiten entwickelt.
Vorteil von Russischem Roulette: Die gespeicherten Photonenereignisse haben immer vergleichbare Energie. Damit wird die Abschätzung der Strahldichte einfacher und selbst bei wenigen Photonen
erzielt man eine bessere Qualität, als würde man auch die Energie der Photonen je Ereignis abnehmen
4.1. DIE SPUR DER PHOTONEN
75
lassen und schließlich viel Rechenleistung in das Verfolgen von energetisch geringwertigen Photonen
verschwenden. Würde man nämlich ein Photon beim Auftreffen auf eine Fläche beispielsweise in ein
diffuses und ein spekulares Photon aufspalten, wobei die Energie jeweils in gleicher Weise aufgespalten wird, würde man für jedes Photon einen binären Baum erzeugen, dessen Einzelereignisse in jeder
Stufe entsprechende Anteile der Energie verlieren würden.
Nachteil von Russischem Roulette: Allerdings wird über den Wahrscheinlichkeitsansatz eine Varianz in die Lösung eingebracht, da zur Skalierung der Photonenenergie anstelle von exakten Werten
für Reflexion und Transmission eine Wahrscheinlichkeit eingesetzt wird, die erst bei großer Anzahl
von Ereignissen gegen den korrekten Wert konvergiert.
4.1.3
Speichern von Photonen
Das Auftreffen eines Photons auf eine diffuse Oberfläche wird als Photonenereignis oder als Spur des
Photons bezeichnet. Diese Photonen, oder besser: Photonenereignisse, werden in einer sogenannten
Photon Map gespeichert. Photon Maps zeichnen sich also NUR an DIFFUSEN Oberflächen ab, nicht
aber an spiegelnden Flächen, denn die Wahrscheinlichkeit dafür, dass ein Photon von einer spiegelnden Fläche direkt durch ein Pixel den Betrachter erreicht, ist identisch null.
Bemerkung 4.3 Um korrekte spiegelnde Reflexion zu erzielen, verfolgt man einen Strahl vom Pixel
in die Spiegelrichtung (Backward Raytracing). Photon Mapping spielt hier praktisch keine Rolle.
Die Wechselwirkung eines Photons mit einer diffusen Oberfläche wird in einer globalen Datenstruktur, der Photon Map gespeichert. Für das emittierte Photon können mehrfache Ereignisse entlang eines
Pfades gespeichert werden. Auch Absorption an einer diffusen Oberfläche wird aufgezeichnet. Die
Anzahl der Photonen in einer Photon Map bezieht sich auf die Anzahl sämtlicher solcher Ereignisse.
Definition 4.2 Eine Photon Map ist eine globale Datenstruktur, die die Position, die eingestrahlte
Photonenenergie und die einfallende Richtung einer Wechselwirkung mit einer diffusen Oberfläche
speichert. Zudem ergänzt man häufig eine Flag zum Sortieren innerhalb eines kd-trees.
Die Struktur einer Photon Map hat folgende Gestalt:
struct photon{
float x, y, z;
// Position
char p[4];
// Power packed in Ward’s RGB-format
char phi, theta;
// compressend incident direction
short flag;
// used in kd-tree
}
76
KAPITEL 4. PHOTON MAPPING
Abbildung 4.3. Photonenpfade: (a) LDDD mit anschließender Absorption, (b) LSR DR DR und Verlassen der Box,
(c) LST ST D mit anschließender Absorption.
Dabei sind die Raumwinkel φ und θ jeweils in die Länge eines char gepackt.
phi = 255 * (atan2(dx, dy) + PI) / 2 * PI;
theta = 255 * acos(dx) / PI;
Man unterscheidet aus Effizienzgründen drei verschiedene Photon Maps, die in abkürzender Schreibweise die folgenden Ereignisse verzeichnen:
• Kaustische Photon Map: LS + D
• Globale Photon Map: L{S|D|V }∗ D
• Volumenbezogene Photon Map: L{S|D|V }+ V
Die Schreibweise zählt dabei jeweils die Art und Häufigkeit des Ereignisses auf, das in der jeweiligen
Photon Map gespeichert ist. Dabei ist
L = Emission von einer Lichtquelle
S = Spiegelnde Reflexion oder Transmission
D = Diffuse Reflexion oder Transmission
V = Streuung an einem Volumenelement
4.2. PHOTONEN IM RENDERING PASS
77
{x|y|z} eines der Ereignisse
x+ mindestens ein x oder mehrfache Wiederholung von x
x∗ kein x oder mehrfache Wiederholung von x.
In der kaustischen Photon Map sind gezielt Photonen in die Richtung von spiegelnden Objekten verfolgt worden, um das Phänomen der Lichtbündelung möglichst präzise wiederzugeben. Die globale
Photon Map streut die Photonen völlig zufällig in alle Raumrichtungen und würde die Lichtbündelung
nur unzureichend oder erst bei sehr hoher Anzahl von Photonen abbilden können. Streuung an Volumenelementen ist sehr aufwändig und wird nur in den wenigsten Fällen in die Strahlungsabschätzung
im Rendering Pass eingehen.
Abbildung 4.4. Links: Darstellung des Raums mit farbigen Wänden und einer Kugel aus Chrom, einer aus Glas
mit Raytracing ohne Auswertung der Photon Map, rechts: Darstellung der Photonenereignisse als entsprechende
farbige Punkte. Man erkennt in der Photon Map sehr gut die Kaustik als Bündelung weißer Photonenereignise
unter der Glaskugel. Außerdem sind die Ereignisse an der Decke und in den Schatten der Kugeln je nach Nähe
zu einer der farbigen Wände unterschiedlich gefärbt. Spiegelnde Objekte verzeichnen keine Photonenereignisse,
daher wurden sie hier schwarz dargestellt. Wie sich die Photon Map beim Rendern auswirkt, zeigt Abb. 4.5.
Hiermit ist der Photon Tracing Pass abgeschlossen, die Photon Maps sind vorbereitet und der zweite
Schritt, das Rendern mithilfe der Photon Maps beginnt.
4.2
Photonen im Rendering Pass
Die Idee im Rendering Pass besteht darin, die Strahlung unter Berücksichtigung von jeweils n nächsten
Photonen zum Punkt x abzuschätzen.
78
KAPITEL 4. PHOTON MAPPING
Abbildung 4.5. Bezieht man die globale Photon Map und die kaustische Photon Map in die Berechnungen des
Raytracing ein, ist sowohl die Decke beleuchtet, die Schatten unterschiedlich farbig als auch ein durch Kaustik
hervorgerufenes Glanzlicht unter der Glaskugel zu sehen. Der helle Punkt an der blauen Wand resultiert aus
der Spiegelung der Kaustik an der Glaskugel und dem Transport dieses Lichtpunktes durch die Photonen der
kaustischen Photon Map durch die Glaskugel auf die Wand.
4.2.1
Abschätzung der Strahlung an einer Oberfläche
Die Photon Map stellt eine Repräsentation des eingestrahlten Energieflusses dar. Die Formel für reflektierte Strahlung
Z
Lr (x, ω) =
fr (x, ω 0 , ω)Li (x, ω 0 )|Nx · ω 0 |dω 0
Ωx
berechnet die Abstrahlung in einem Punkt x und in eine Raumrichtung ω aus dem Integral über die
Hemisphäre Ωx aller einstrahlenden Raumrichtungen um x. Der Ausdruck unter dem Integral ergibt
sich aus der einstrahlenden Energie Li je festem Raumwinkel ω 0 , die von der BRDF fr umgelenkt
und mit dem Einstrahlwinkel |Nx · ω 0 | gewichtet wird.
Mit der Beziehung zwischen der Einstrahlung Li und dem hereinkommenden Photonenfluss
Li (x, ω 0 ) =
erhält man
d2 Φi (x, ω 0 )
cos θi dωi0 dAi
4.2. PHOTONEN IM RENDERING PASS
79
Z
fr (x, ω 0 , ω)
Lr (x, ω) =
Ωx
d2 Φi (x, ω 0 )
dAi
und daraus schätzt man jetzt die reflektierte Strahlung mit den n nächsten Photonen zum Punkt x ab.
Jedes dieser Photonen hat dabei die Energie ∆Φp (ωp ) und es wird angenommen, dass es die Fläche
in x trifft. Dazu dehnt man eine Kugel um x solange aus, bis sie n Photonen enthält.
Lr (x, ω) ≈
n
X
fr (x, ωp , ω)
p=1
∆Φp (x, ωp )
∆A
Abbildung 4.6. Die nächsten n Photonenereignisse in der Nähe des Punktes x gehen in die Abschätzung ein.
Bemerkung 4.4 Unter der Annahme, dass Oberflächen lokal eben sind, kann man sich auf die Projektion der Kugel in die Ebene, also einen Kreis beschränken. Damit ist
∆A = πr2
und r der Radius der Kugel. Daher gilt verkürzt:
n
1 X
fr (x, ωp , ω)∆Φp (x, ωp )
Lr (x, ω) ≈ 2
πr p=1
Mögliche Fehlerquellen oder die Beeinträchtigung der Genauigkeit hängen von
(a) der Gesamtanzahl der Photonen in der Photon Map oder von
(b) der Anzahl n der Photonen ab, die in die Abschätzung einbezogen werden.
80
KAPITEL 4. PHOTON MAPPING
Zudem ist die Annahme, dass Oberflächen lokal eben sind, in Ecken und an scharfen Kanten einfach
falsch. Hier werden Photonenereignisse an Wänden für die Berechnung des Bodens einbezogen und
umgekehrt, was zu fehlerhaft weichen Kanten und Farbverläufen führt. Eine Abhilfe für all diese Fehlerquellen besteht über das Gesetz der großen Zahl: Je mehr Photonen in die Abschätzung einbezogen
werden und je mehr Photonen in der Photon Map vorhanden sind, um so genauer ist das Ergebnis der
Näherungsformel.
Im Limes gilt sogar
α
bN c
1 X
lim
fr (x, ωp , ω)∆Φp (x, ωp ) = Lr (x, ω),
N →∞ πr 2
p=1
α ∈]0, 1[
mit der Gesamtanzahl N Photonen in der Photon Map. Im Beweis geht ein, dass x lokal eine zweidimensionale Umgebung hat und die BRDF keine Diracsche Deltafunktion ist (das schließt den perfekten Spiegel aus). Die verschiedenen Grade von unendlich werden über N α kontrolliert, womit garantiert wird, dass die Gesamtanzahl der Photonen der Photon Map schneller gegen unendlich geht, als
die Anzahl der in die Abschätzung einbezogenen. Insgesamt folgert man, dass man hinreichend gute
Ergebnisse erzielen kann, wenn man nur genügend Photonen benutzt.
Bemerkung 4.5 Vergleicht man die Fehlerquellen mit denen aus der Radiosityberechnung (siehe voriges Kapitel), so fällt auf, dass es in finite Elementmethoden komplizierter ist, hinreichende Genauigkeit zu erzielen. Der Fehler hängt dann nämlich (1) von der Auflösung des Gitters, (2) von der
Auflösung der gerichteten Strahlungsenergie und (3) von der Genauigkeit der Simulationsgleichungen ab.
Bemerkung 4.6 Anstelle einer Kugel um x kann man auch ein Ellipsoid oder eine Box oder eine
Scheibe nehmen, um die Photonen für die Abschätzung zu finden. Dadurch kann man zum einen den
Suchalgorithmus beschleunigen, zum anderen erzielt man bessere Ergebnisse in Ecken und Kanten.
Allerdings muss ∆A an die neue Geometrie angepasst werden und man verliert die Vorteile der
Kugelgeometrie, nämlich die einfache Distanzbestimmung und die einfache Projektion.
4.2.2
Filter für die Abschätzung
Wenn die Anzahl der Photonen in der Photon Map zu niedrig ist, wird die Abschätzung an den Kanten
verschwommen. Das ist durchaus manchmal wünschenswert, da es weniger sterile Computerbilder
generiert, aber bei Kaustiken mit scharfen Abgrenzungen ist es unerwünscht. Eine Abhilfe besteht
im Einsatz von Filtern, um näher am Auswertungspunkt x liegende Photonen stärker zu wichten. Da
Photonen auf Oberflächen registriert werden, benötigt man 2D-Filter, wie sie aus der Bildverarbeitung
bekannt sind.
4.2. PHOTONEN IM RENDERING PASS
81
Beim Cone-Filter wird jedes Photon in der Abschätzung mit einem Gewicht
wpc = 1 −
dp
kr
multipliziert, wobei dp die Distanz zwischen dem Punkt x und dem Photonenereignis p ist. Der Parameter k ≥ 1 stellt eine charakteristische Filterkonstante und r eine maximale Entfernung dar. Aus
2
im Nenner der Abschätzung:
der 2D-Verteilung ergibt sich ein Normalisierungsfaktor 1 − 3k
Pn
Lr (x, ω) ≈
p=1
fr (x, ωp , ω)∆Φp (x, ωp )wpc
(1 −
2
)πr2
3k
Die Wichtungsfunktion wpg des Gauß-Filters schreibt sich mit den gleichen Termen aber etwas komplizierter, nämlich

wpg = α 1 −
−β
d2
p
2r 2

1−e
,
1 − e−β
wobei die Parameter α, β beispielsweise die Werte α = 0.918 und β = 1.953 annehmen können.
Dieser Filter ist bereits normalisiert und ergibt die Abschätzung
Lr (x, ω) ≈
n
X
fr (x, ωp , ω)∆Φp (x, ωp )wpg .
p=1
Der Variationsansatz (Differential checking) hat sich speziell bei Kaustiken bewährt. Er beruht auf der
Beobachtung, dass sich das Monotonieverhalten der Helligkeit je nach Ort x nahe einer Kante (der
Kaustik) ändert, wenn man den Radius vergrößert und damit die Anzahl der Photonen erhöht, die in
die Abschätzung einbezogen werden:
x außerhalb der Kaustik →
x innerhalb der Kaustik →
monoton wachsend
monoton fallend
Der Grund liegt für einen Punkt außerhalb der Kaustik in einer unproportional erhöhten Anzahl Photonen beim Eintritt des Radius in den Bereich der Kaustik. Umgekehrt wird für einen Punkt innerhalb
der Kaustik die Anzahl der Photonen bei einem Austritt des Radius aus dem Bereich der Kaustik
unproportional erniedrigt.
82
KAPITEL 4. PHOTON MAPPING
Abbildung 4.7. Das bekannte Cognacglas von Henrik Wann Jensen besteht aus 12000 Dreiecken, die kaustische
Photon Map besteht aus 200000 Photonen und 40 Photonen wurden in der Abschätzung verwendet.
Auf Basis dieser Beobachtung bricht man das Vergrößern des Radius (= Einbeziehung weiterer Photonen in die Abschätzung) ab und nimmt lieber erhöhtes Rauschen im Grenzbereich der Kanten/Kaustik
in Kauf.
4.2.3
Strahlungsabschätzung im Volumenfall
Nebel oder Rauch brechen das Licht je nach Dichte in ganz unterschiedlicher Weise. Hierdurch wird
erst der Lichtkegel auch im Raum sichtbar, der sich sonst nur an einer 2D-Oberfläche zeigt. Der
Qualm einer Zigarette in einem Spotlight oder Bodennebel im Autoscheinwerfer benötigen daher
3D Berechnungen mit sogenannten Participating media. Dazu muss zunächst die Gleichung für die
Strahlungsabschätzung abgeändert werden.
4.2. PHOTONEN IM RENDERING PASS
83
Abbildung 4.8. Diese Berechnung der Cornell Box mit Nebel benötigte 100000 Photonen in der globalen Photon
Map, 150000 Photonen in der Volumenmap und 44 Minuten für den Renderprozess.
Z
Lins (x, ω) =
f (x, ω 0 , ω)L(x, ω 0 )dω 0
ZΩ
d2 Φ(x, ω 0 )
dω 0
f (x, ω 0 , ω)
0 dV
σ
(x)
dω
s
Ω
Z
d2 Φ(x, ω 0 )
1
f (x, ω 0 , ω)
=
σs (x) Ω
dV
n
∆Φp (x, ωp0 )
1 X
≈
f (x, ωp0 , ω)
4
σs (x) p=1
πr3
3
=
Dabei bezeichnet Lins (x, ω) die in die Umgebung gestreute (in-scattered) Abstrahlung und σs (x)
den Streukoeffizienten, der anstelle des Produkts aus Einfallswinkels und abstrahlender Fläche im
2D-Oberflächenfall in die Gleichung eingeht.
Der Rechenaufwand, der beim Rendern mit einer solchen Volumenabschätzung nötig wird, ist extrem
groß. Daher versucht man ihn nach Möglichkeit zu vermeiden und nur für spezielle Effekte einzusetzen.
4.2.4
Auffinden der n nächsten Photonen
Um eine Photon Map effizient auszuwerten, sind effektive Strategien nötig:
84
KAPITEL 4. PHOTON MAPPING
• Durchsuchen von kd-trees (k-dimensionale Bäume)
• Balancieren von kd-trees über Median (= Zentralwert) Ansatz
• max-heap (oder priority queue) Ansatz: Das am weitesten entfernte Photon wird am ehesten
wieder herausgeschmissen, wenn der max-heap erreicht ist.
Bemerkung 4.7 Es empfiehlt sich hierbei immer mit quadrierten Distanzen zu rechnen, das erspart
teures Wurzelziehen. Außerdem kann man den maximal nötigen Suchradius nach oben abschätzen.
Wenn man sich einen Schwellwert Lt für die Abstrahlung vorgibt, erhält man
1
rm =
π
r
n Pmax
Lt
für den ebenen Fall und
r
rm =
3
3 n Pmax
.
16 π 2 σ Lt
im Fall isotrop streuender Volumenelemente.
4.2.5
Auswertung der Strahlungsabschätzung: Rendering
Das Photon Mapping ist eine Erweiterung des Raytracing. Daher wird für das eigentliche Rendern
ein verteiltes Raytracing (Distributed Raytracing) vorgenommen. Die Pixelstrahlung ist dabei das
arithmetische Mittel über verschiedene Einzelabschätzungen.
Bemerkung 4.8 Die Photon Map ist unabhängig von der Betrachterposition! Eine einmal berechnete
Photon Map kann für das Rendern einer Szene aus (a) jeder möglichen Blickrichtung hergenommen
werden und kann (b) für verschiedenste Rendertechniken benutzt werden, z.B. für die Berechnung von
Radiositywerten in Gitterpunkten.
Allgemein gilt, dass für jedes Pixel vom Auge des Betrachters ein Strahl durch das Pixel in die Szene
verfolgt wird (sogenanntes backward raytracing). Die abstrahlende Energie wird hier mit dem Index
o für outgoing bezeichnet. Dann ergibt sich
Lo (x, ω) = Le (x, ω) + Lr (x, ω)
4.2. PHOTONEN IM RENDERING PASS
85
die von einem Pixel ausgehende Strahlung als Summe der emittierten Le (x, ω) und der reflektierten
Lr (x, ω) Strahlung. Die reflektierte Strahlung kann jetzt nach der bewährten Formel als Integral aus
der einstrahlenden Energie berechnet werden:
Z
Lr (x, ω) =
fr (x, ω 0 , ω)Li (x, ω 0 )|Nx · ω 0 |dω 0
Ωx
Die BRDF fr wird dabei in einen spekularen und einen diffusen Anteil zerlegt.
fr (x, ω 0 , ω) = fr,s (x, ω 0 , ω) + fr,d (x, ω 0 , ω)
Auch die Einstrahlung Li = Li,l +Li,c +Li,d wird in drei Terme aufgespalten, die direkte Beleuchtung
Li,l (x, ω) durch eine Lichtquelle, die kaustische Beleuchtung Li,c (x, ω), also indirekte Beleuchtung
durch spiegelnde Reflexion, und die indirekte Beleuchtung Li,d (x, ω), bei der wenigstens einmal diffus reflektierte Photonenereignisse berücksichtigt werden.
In der Kombination ergeben sich vier Terme:
Z
fr (x, ω 0 , ω)Li (x, ω 0 )cos θi dω 0
Lr (x, ω) =
Ωx
Z
fr (x, ω 0 , ω)Li,l (x, ω 0 )cos θi dω 0
=
(I)
Ωx
Z
+ fr,s (x, ω 0 , ω)(Li,c (x, ω 0 ) + Li,d (x, ω 0 ))cos θi dω 0
(II)
Ωx
Z
+ fr,d (x, ω 0 , ω)Li,c (x, ω 0 )cos θi dω 0
(III)
Ωx
Z
+ fr,d (x, ω 0 , ω)Li,d (x, ω 0 )cos θi dω 0
(IV)
Ωx
Der erste Term (I) besteht aus der direkten Illumination. Hier geht der direkte Anteil der Lichtquelle
ein. Das sogenannte Raycasting, das nur einen einfachen Strahl von der Lichtquelle auf den betrachteten Punkt wirft, bestimmt die Lokalfarbe an dieser Stelle. Verdeckt ein anderes Objekt diese Lichtquelle aus Sicht dieses Punktes, wird dieser Punkt nicht direkt von dieser Lichtquelle erreicht und der
Term entfällt. Das motiviert das Aussenden sogenannter Schattenstrahlen Shadowcasting von einem
Punkt in Richtung sämtlicher Lichtquellen. Treffen sie auf ein Objekt, das nicht die Lichtquelle ist,
erhalten diese Punkte kein Licht von dieser Quelle. Diesen Ansatz kann man weiter verfolgen und
Shadowphotons berechnen.
Der zweite Term (II) stellt das spekulare oder Glanzlicht dar. Hier wird das Photon Mapping NICHT
eingesetzt!!! Dieses Integral wird mit den Standard Monte Carlo Methoden des Raytracing berechnet.
86
KAPITEL 4. PHOTON MAPPING
Abbildung 4.9. Skizzen zu den Strahlen des Raytracing und der Auswertung der Photon Map an diesen Stellen,
links die direkte Beleuchtung/Verdeckung (I), rechts die spiegelnde Reflexion OHNE Photon Mapping (II).
Die Funktion fr,s erzeugt dabei einen engen Peak in Spiegelrichtung.
Der dritte Term (III) betrifft das kaustische Integral. Wenn die Anzahl der Photonen in der Caustic
map hoch ist, erzielt man hiermit eine gute Qualität der Abschätzung.
Der vierte Term (IV) berechnet sich aus der vielfach diffusen Reflexion. Eine ungefähre Abschätzung
erfolgt mit der globalen Photon Map, eine genauere Abschätzung bezieht Monte Carlo Methoden des
Raytracing ein.
Abbildung 4.10. Links die Skizze für das kaustische Integral (III), rechts das globale diffuse Photon Mapping (IV).
4.3
Übungsaufgaben
Aufgabe 4.1 Russisches Roulette
Berechnen Sie für eine einfache Szene mit einer Glaskugel und einer Lichtquelle in einer Raumecke
(z.B. die Cornell Box) eine (globale) Photon Map, wobei Sie einzig die einzelnen Photonenereignisse
mit ihren Farbwerten als Punkte in einem OpenGL Programm darstellen.
4.3. ÜBUNGSAUFGABEN
87
Aufgabe 4.2 BRDF
Eine Bidirectional Reflectance Distribution Function (BRDF) ist die Funktion fr (θi , φi ; θr , φr ), die
sich aus dem Quotienten der reflektierten differentiellen Strahldichte dLr in Betrachterrichtung und
der differentiellen Bestrahlungsstärke dEi aus der Lichtrichtung ergibt. Sie kann mit Gonioreflektometern gemessen oder aufgrund ideller Annahmen für ein Material modelliert werden.
(a) Ein Lambert-Strahler ist das Modell für einen diffus reflektierenden Körper und zeichnet sich
durch folgende Eigenschaften aus:
1. Der Körper absorbiert kein Licht. Das auf den Körper einfallende Licht wird komplett reflektiert.
2. Der Körper erscheint von allen Betrachtungsrichtungen aus gleich hell.
Leiten Sie daraus die BRDF eines Lambert-Strahlers her.
(b) Das Ward Modell von 1992 sieht für isotrope spiegelnde Reflexion die BRDF
tan2 δ
−
1
e α2
fiso (θi , φi ; θr , φr ) = √
cosθi cosθr 4πα2
vor. Anders als das Phong-Modell ist es physikalisch gültig aber trotzdem einfach. Dabei ist α der
Rauhigkeitskoeffizient der isotropen Fläche, δ der Winkel zwischen der Normale N und dem HalfwayVektor H. Leiten Sie daraus eine Formel für faniso (θi , φi ; θr , φr ) mit Rauhigkeitskoeffizienten αx und
αy ab.
(c) Die Faktorisierung einer BRDF lautet
fiso (θi , φi ; θr , φr ) =
n
X
pj (θi , φi )qj (θr , φr )
j=1
Welche Vorteile kann man daraus ziehen? Hinweis: Denken Sie an GPU-Programmierung und Environment-Mapping.
88
KAPITEL 4. PHOTON MAPPING
Aufgabe 4.3 Maximalradius
Bestimmen Sie für die Rendergleichung mit Photon Mapping einen maximalen Radius rm . Schätzen
Sie dazu die Formel für Lr (x, ω) mit der BRDF eines perfekt diffusen Strahlers und bekannten Maximalwerten (wie maximaler Photonenenergie) sowie einem vorgegebenen Schwellwert von Lt (x, ω)
ab.
(a) Wie lautet die Formel für rm ?
(b) Es sei σ(x) das Streuereignis in einem beteiligten Medium (participating medium). Wie lautet eine
entsprechende Formel für rm bei Streuung an einem Volumen?
Herunterladen