Photon Mapping

Werbung
Photon Mapping
Projektpraktikum:
Augmentierte Bildsynthese
mit
Photon Mapping
Jörg Hedrich
Lena Kohl
Ruth Recker
Anke Schneider
Pascal Sproedt
Benjamin Zapilko
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Inhalt
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Einleitung
Photon Mapping Algorithmus wurde 1995 von
HENRIK WANN JENSEN
zum ersten Mal veröffentlicht.
Kurzbiographie:
1996-1998 arbeitete er an einer kommerziellen
Rendering- Software
1998-1999 Massachusetts Institute of Technology
1999-2002 forschte er an der University Stanford
seit 2002 ist er Prof. an der University of
California in
San Diego
Für seinen Photon Mapping Algorithmus erhielt er von der
technische Uni Dänemarks seinen M.Sc. und Dr. Inf.
Auszeichnungen:
- 2004 Academy Award
- 2003 Best Paper Award
- einer von der ersten 10 Wissenschaftlern 2004
- Sloan Fellow Auszeichnung
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
Einleitung
Warum Photon Mapping?
Photon Mapping ist eine Erweiterung des Ray Tracings.
3. Photon Scattering
4. Kd-Tree
5. Rendering
Ray Tracing ist einfach und elegant, aber diffuse
Intereflections und Kaustiken können damit nicht
gut oder gar nicht dargestellt werden.
Photon
Photon Mapping
Mapping
1. Einleitung
Einleitung
Photon Mapping
2. Photon Emission
Photon Mapping ist eine praktikable Technik, die fähig ist
3. Photon Scattering
globale Beleuchtung einschließlich Color Bleeding, Motion
Blur, Cautics,… zu simulieren.
4. Kd-Tree
Und stellt die gleiche Flexibilität wie Monte Carlo zur
5. Rendering
Verfügung, braucht aber nur ein Bruchteil der
Berechnungszeit.
Heutzutage wird Photon Mapping meist in high- end
Rendering Software eingesetzt und für architektonische
Simulationen, Computerspiele und Filme verwendet.
Photon
Photon Mapping
Mapping
Einleitung
1. Einleitung
Photon Mapping
2. Photon Emission
2 Pass Methode:
3. Photon Scattering
4. Kd-Tree
1. - Photon Emission
- Photon Scattering
- Photon Storing in Photon Maps
5. Rendering
Photon Map: + können in Szenen von Mio von
Objekten und komplexen
Materialien
verwendet werden
+ Unabhängig von der Geometrie der
Szene
+
Speichern pro Photon den Lichtstrom, den
Einfallswinkel und die Treffer-Position
+ Organisiert als kd-trees
SCHLÜSSELCHARAKTERISTIK
2. - Rendering
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
Aussenden von Photonen
●
Gewinn der photometrischen Energie aus HDRI
●
Möglichst homogene Energieverteilung
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
HDRI als beleuchtende Umgebung
●
Projektion der Bounding-Sphere des Objekts
●
Setzen der Photonen
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
LatLong-2D-Mapping
●
Bestimmen der Beleuchtung
●
Energiehomogenität
●
Gleichverteilung der Photonen eines Pixels auf
projizierter Kreisscheibe
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
●
HDR-Shop
Mappen des Light-Probe-HDRI auf eine Latitude/
Longitude-2D-Repräsentation
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
●
Ges.: Pixelspezifische Anzahl an Photonen
Lichtstrom/Pixel= Leuchtdichte * Raumwinkel *
Empfängerfläche
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
●
Farbiger Lichtstrom/Pixel aus Lichtstrom und
Leuchdichte des Pixels sowie Leuchtdichte
der einzelnen Kanäle
Skalieren der Pixel-Farbe durch
Photonenanzahl auf Photonen-Farbe
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
Richtung entlang z˜-Achse
●
Achsen x˜, y˜ in Tangentialebene an Einheitskugel
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
Position
●
Energie
●
Herkunftsrichtung
●
kd-Tree-Flag
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
Projektion der Szene aus Sicht des beleuchtenden Pixels
●
Rückprojektion der Photonen auf BS des Objekts
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
●
●
●
3. Photon Scattering
4. Kd-Tree
5. Rendering
“Zielen” des Photons an
tatsächlicher Pixelposition
auf Objektzentrum
Verteilen der Photonen
über gleichverteilten Wert
Simulation eines
entfernten directional
Lights
Photon
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
Zu verhindern: Direktes Treffen realer Objekte
●
Vorraussetzung: keine realen Objekte in der BS
●
Projektion des Kreispunktes p auf die BS
Photon
Photon Emission
Emission
Photon
Photon Mapping
Mapping
1. Einleitung
Emission
2. Photon Emission
2.1. HDRI-Environment
2.1.1. LatLong-Mapping
2.1.2. Beleuchtung
2.1.3. Photonenfarbe
2.1.4. Photonenkoordinaten
2.1.5. Photon-Datenstruktur
2.2. Projektion der BS
2.2.1. Verteilung auf Scheibe
2.2.2. Rückprojektion auf BS
2.3. Klassendiagramm
Photon
float x,y,z;
char p[4];
char theta, phi;
short flag;
5. Rendering
Photon *ph;
HDRI env;
BVH bs;
Projection
3. Photon Scattering
4. Kd-Tree
Lighting
BSProjection
BVH bs;
Photon *ph;
BackProjection
BVH bs;
Photon *ph;
Photon
Scattering
Photon Mapping
Photon Mapping
1. Einleitung
Scattering:
2. Photon Emission
Nach der Emission werden die Photonen durch die
3. Photon Scattering
Szene geschickt. --> Photonenpfade
4. Kd-Tree
5. Rendering
Wenn ein Photon auf ein Objekt trifft, kann es reflektieren,
absorbieren, oder transmittieren.
--> Verwendung von Russian Roulette
Photon
Scattering
Photon
Photon Mapping
Mapping
1. Einleitung
Photonenpfade:
2. Photon Emission
Photonen werden gleichverteilt von der 'Kreisscheibe' in
3. Photon Scattering
Richtung der Bounding Sphere geschickt
4. Kd-Tree
5. Rendering
real
virtuell
Vorsicht vor eventuellen Schnittpunkten mit realer Szene,
bevor Photon auf Bounding Sphere trifft
Photon
Scattering
Photon
Photon Mapping
Mapping
1. Einleitung
Photonenpfade (1.Schnittpunkt):
2. Photon Emission
- Photon trifft auf virtuelles Objekt:
3. Photon Scattering
4. Kd-Tree
5. Rendering
- Objekt hat diffuse Oberfläche:
- Photon speichern
- Zufälliges Photon weiterverfolgen
- Schattenphoton speichern
- Objekt hat spekulare Oberfläche:
- Photon nicht speichern
- reflektiertes/gebrochenes Photon
weiterverfolgen (Fresnel Reflexion)
- Schattenphoton speichern
Photon
Scattering
Photon
Photon Mapping
Mapping
1. Einleitung
Photonenpfade:
2. Photon Emission
Schattenphotonen:
3. Photon Scattering
Wenn ein Photon auf ein virtuelles Objekt trifft,
4. Kd-Tree
wird
5. Rendering
berechnet, wo es auftreffen würde, wenn das
virtuelle
Objekt nicht da wäre. Der negative Lichtstrom
wird für diese Stelle gespeichert.
real
virtuell
Photon
Scattering
Photon
Photon Mapping
Mapping
1. Einleitung
Photonenpfade (1.Schnittpunkt):
2. Photon Emission
- Photon trifft auf reales Objekt:
3. Photon Scattering
- Photon wird verworfen
4. Kd-Tree
5. Rendering
- Photon trifft auf gar kein Objekt:
- Photon wird verworfen
Photon
Scattering
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
Photonenpfade nach dem 1. Schnittpunkt:
- Photon trifft auf virtuelles Objekt:
- Diffuse Oberfläche:
3. Photon Scattering
- Photon speichern
4. Kd-Tree
- Strahl weiterverfolgen
5. Rendering
- Spekulare Oberfläche:
- Reflektieren oder transmittieren
- Strahl weiterverfolgen
- Photon trifft auf reales Objekt:
- Photon speichern
- Color Bleeding berücksichtigen
- Photon trifft auf gar kein Objekt:
- Photon wird ignoriert
Photon
Scattering
Photon Mapping
1. Einleitung
Russisches Roulette
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
●
Stochastische Technik
●
Entscheidung, ob ein Photon diffus oder spekular
reflektiert oder absorbiert wird
5. Rendering
●
Nur „wichtige“ Photonen werden weitergeleitet
●
Dadurch: Alle Photonen tragen ungefähr den
gleichen Anteil vom Lichtstrom
Photon
Scattering
Photon Mapping
1. Einleitung
Zunächst für monochromatisches Licht:
2. Photon Emission
●
3. Photon Scattering
4. Kd-Tree
Gegeben: Oberfläche mit sowohl diffuser als auch
spekularer Reflexion
●
Ob ein Photon nun diffus oder spekular reflektiert
oder absorbiert wird, hängt von den
5. Rendering
Materialeigenschaften ab:
d
●
Diffuser Reflexionskoeffizient:
s
●
Spekularer Reflexionskoeffizient:
Photon
Scattering
Photon Mapping
1. Einleitung
Trifft ein Photon auf eine Oberfläche, so verwenden
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
wir eine gleichmäßig verteilte Zufallsvariable
0,1
und treffen so die Entscheidung über die Art der
Reflexion:
0,
d
s
diffuse Reflexion
d
,
s
d
d
,1
spekulare Reflexion
Absorption
Photon
Scattering
Photon Mapping
1. Einleitung
Farbiges Licht:
2. Photon Emission
●
3. Photon Scattering
●
Wahrscheinlichkeit für Reflexion wird z.B. anhängig
von der totalen reflektierten Energie berechnet
Wahrscheinlichkeit für diffuse Reflexion
4. Kd-Tree
d ,r
5. Rendering
d , avg
●
●
d ,g
d ,b
3
Mit d , r = als Reflexionskoeffizient für den roten
Farbkanal usw.
Die durchschnittliche Wahrscheinlichkeit für
spekulare Reflexion kann analog berechnet werden
Photon
Scattering
Photon Mapping
1. Einleitung
●
Wahrscheinlichkeit für Absorption:
2. Photon Emission
a, avg
1
d , avg
s, avg
3. Photon Scattering
4. Kd-Tree
5. Rendering
Entscheidung wird getroffen über:
0,
diffuse Reflexion
d , avg
d ,avg
,
s, avg
Reflexion
s ,avg
d , avg
d , avg
spekulare
,1
Absorption
Photon
Scattering
Photon Mapping
1. Einleitung
●
2. Photon Emission
3. Photon Scattering
●
4. Kd-Tree
5. Rendering
●
Die Energie des reflektierten Photons muss jetzt
noch skaliert werden:
Bei spekularer Reflexion erhalten wir:
s, r
i ,r
s ,r
s, g
i,g
s ,g
s, avg
s, b
i,b
s ,b
s, avg
Wobei
s, r
,
Photons und
s ,g
s , avg
,
i ,r
die Energie des reflektierten
s ,b
,
i ,g
,
i,b
eintreffenden Photons ist
die Energie des
Photon
Scattering
Photon
Photon Mapping
Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Klassendiagramm:
Kd-Tree
PhotonMapping
Mapping
Photon
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
Klassendiagramm:
PMkdTree
PMkdTree(PhotonMap: array)
search(x: int, d²: int): heap h
getRadianceEstimateAt(x: int, w: vector): Lr
getfilteredREAt(x: int, w: vector): Lrf
5. Rendering
PhotonMap
m_Photons: Photon*
Kd-Tree
PhotonMapping
Mapping
Photon
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Radiance Estimate:
• Berechnung der reflektierten Leuchtdichte an
Schnittpunkt x
• Zu Punkt x werden in Radius r die maximal n nächsten
Photonen gesucht
• Durch Aufspannung einer Kugel können evtl. in Ecken
und an Kanten Fehler auftreten
 Verwendung eines Filters
Rendering
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4.. Kd-Tree
5. Rendering
Klassendiagramme:
Rendering
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4.. Kd-Tree
5. Rendering
Klassendiagramme:
Rendering
Photon Mapping
1. Einleitung
2. Photon Emission
●
Erweiterung des Raytracers
●
überschreiben der entsprechenden Methoden
–
Raytracer::renderToFile( scene : Scene*,
filename : char*)
–
Raytracer::trace(ray : const Ray&, depth : int)
–
Raytracer::shade(hit : Intersection&, depth int)
3. Photon Scattering
4. Kd-Tree
5. Rendering
●
radiance estimate aus kd-Tree
Rendering
Photon Mapping
1. Einleitung
2. Photon Emission
●
•
Für jedes Pixel Strahl aus Kameraursprung und
Pixel bilden und weiterverfolgen
Fallunterscheidung je nach Schnittpunkt
3. Photon Scattering
4. Kd-Tree
5. Rendering
Bildschirmpixel
virtuell
real
real
Rendering
Photon Mapping
1. Einleitung
Real:
–
2. Photon Emission
Radiance Estimate auf Pixel von Bild
aufrechnen
3. Photon Scattering
4. Kd-Tree
5. Rendering
virtuell
real
real
Rendering
Photon Mapping
1. Einleitung
Virtuell: Diffus
–
2. Photon Emission
Radiance Estimate darstellen
3. Photon Scattering
4. Kd-Tree
5. Rendering
virtuell
real
real
Rendering
Photon Mapping
1. Einleitung
Virtuell: Spiegelnd/Transparent
–
2. Photon Emission
Rekursive Strahlverfolgung bis diffuses Objekt oder
maximale Rekursionstiefe:
●
3. Photon Scattering
●
4. Kd-Tree
●
Kein Schnittpunkt: Pixel aus EnvMap darstellen
Real: Radiance Estimate Foto Pixel
aufrechenen und Ergebins darstellen
Virtuell: Radiance Estimate darstellen
5. Rendering
real
virtuell
real
Rendering
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4.. Kd-Tree
5. Rendering
Superklasse:
Herunterladen