photon mapping
DESCRIPTION
Photon Mapping. Projektpraktikum: Augmentierte Bildsynthese mit Photon Mapping. Jörg Hedrich Lena Kohl Ruth Recker Anke Schneider Pascal Sproedt Benjamin Zapilko. Photon Mapping. Inhalt. 1. Einleitung 2. Photon Emission 3. Photon Scattering 4. Kd-Tree 5. Rendering. - PowerPoint PPT PresentationTRANSCRIPT
Photon Mapping Photon Mapping
Jörg HedrichLena KohlRuth ReckerAnke SchneiderPascal SproedtBenjamin Zapilko
Projektpraktikum:
Augmentierte Bildsynthese mitPhoton Mapping
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Inhalt Photon Mapping
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Mapping Algorithmus wurde 1995 vonHENRIK WANN JENSEN
zum ersten Mal veröffentlicht.
Einleitung
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 Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Warum Photon Mapping?
Photon Mapping ist eine Erweiterung des Ray Tracings.
Einleitung
Ray Tracing ist einfach und elegant, aber
diffuse Intereflections und Kaustiken
können damit nicht gut oder gar nicht
dargestellt werden.
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Mapping
Photon Mapping ist eine praktikable Technik, die
fähig ist globale Beleuchtung einschließlich Color
Bleeding, Motion Blur, Cautics,… zu simulieren.
Und stellt die gleiche Flexibilität wie Monte Carlo zur
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.
Einleitung
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Mapping
2 Pass Methode:
1. - Photon Emission
- Photon Scattering
- Photon Storing in Photon Maps
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
Einleitung
Photon Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.2.2. Rückprojektion auf BS
3. Photon Scattering
4. Kd-Tree
5. Rendering
● Position
● Energie
● Herkunftsrichtung
● kd-Tree-Flag
Photon Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.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 Mapping Photon Mapping
Photon Emission Photon Mapping
1. Einleitung
2. Photon Emission2.1. HDRI-Environment2.1.1. LatLong-Mapping2.1.2. Beleuchtung2.1.3. Photonenfarbe2.1.4. Photonenkoordinaten2.1.5. Photon-Datenstruktur2.2. Projektion der BS2.2.1. Verteilung auf Scheibe2.2.2. Rückprojektion auf BS2.3. Klassendiagramm
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Emission
Emission
Photon Lighting
Projection
BSProjection BackProjection
float x,y,z;
char p[4];
char theta, phi;
short flag;
Photon *ph;
HDRI env;
BVH bs;
BVH bs;
Photon *ph;
BVH bs;
Photon *ph;
Photon MappingPhoton Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Scattering:
Nach der Emission werden die Photonen durch die
Szene geschickt. --> Photonenpfade
Wenn ein Photon auf ein Objekt trifft, kann es
reflektieren, absorbieren, oder transmittieren.
--> Verwendung von Russian Roulette
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Photonenpfade:
Photonen werden gleichverteilt von der
'Kreisscheibe' in Richtung der Bounding Sphere
geschickt
real virtuell
Vorsicht vor eventuellen Schnittpunkten mit realer Szene, bevor Photon auf Bounding Sphere trifft
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Photonenpfade (1.Schnittpunkt):
- Photon trifft auf virtuelles Objekt:
- 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 Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Photonenpfade:
Schattenphotonen:
Wenn ein Photon auf ein virtuelles Objekt
trifft, wird
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 Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Photonenpfade (1.Schnittpunkt):
- Photon trifft auf reales Objekt:
- Photon wird verworfen
- Photon trifft auf gar kein Objekt:
- Photon wird verworfen
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Photonenpfade nach dem 1. Schnittpunkt:
- Photon trifft auf virtuelles Objekt:
- Diffuse Oberfläche:
- Photon speichern
- Strahl weiterverfolgen
- Spekulare Oberfläche:
- Reflektieren oder transmittieren
- Strahl weiterverfolgen
- Photon trifft auf gar kein Objekt:
- Photon wird ignoriert
- Photon trifft auf reales Objekt:
- Photon speichern
- Color Bleeding berücksichtigen
Photon Mapping
Russisches Roulette
● Stochastische Technik
● Entscheidung, ob ein Photon diffus oder
spekular reflektiert oder absorbiert wird
● Nur „wichtige“ Photonen werden
weitergeleitet
● Dadurch: Alle Photonen tragen ungefähr den
gleichen Anteil vom Lichtstrom
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Photon Mapping
Zunächst für monochromatisches Licht:
● 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 Materialeigenschaften ab:
● Diffuser Reflexionskoeffizient:
● Spekularer Reflexionskoeffizient:
Photon Scattering
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
d
s
Photon Mapping
Trifft ein Photon auf eine Oberfläche, so
verwenden wir eine gleichmäßig verteilte
Zufallsvariable und treffen so
die Entscheidung über die Art der Reflexion:
diffuse Reflexion
spekulare
Reflexion
Absorption
Photon Scattering
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
0,1
0, d
d , s d
s d ,1
Photon Mapping
Farbiges Licht:
● Wahrscheinlichkeit für Reflexion wird z.B. anhängig von der totalen reflektierten Energie berechnet
● Wahrscheinlichkeit für diffuse Reflexion
● Mit = als Reflexionskoeffizient für den roten Farbkanal usw.
● Die durchschnittliche Wahrscheinlichkeit für spekulare Reflexion kann analog berechnet werden
Photon Scattering
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering d , avgd , r d , g d ,b
3
d , r
Photon Mapping
● Wahrscheinlichkeit für Absorption:
Entscheidung wird getroffen über:
diffuse Reflexion
spekulare
Reflexion
Absorption
Photon Scattering
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
a , avg 1 d , avg s , avg
0, d , avg
d ,avg , s , avg d , avg
s ,avg d , avg ,1
Photon Mapping
● Die Energie des reflektierten Photons muss jetzt noch skaliert werden:
● Bei spekularer Reflexion erhalten wir:
● Wobei die Energie des
reflektierten Photons und die
Energie des eintreffenden Photons ist
Photon Scattering
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
s , r i ,r s ,r s , avg
s , g i , g s , g s , avg
s , b i , b s ,b s , avg
s , r , s , g , s ,b
i ,r , i , g , i , b
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Photon Scattering
Klassendiagramm:
Photon MappingPhoton Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Kd-Tree
PMkdTreePMkdTree(PhotonMap: array)search(x: int, d²: int): heap hgetRadianceEstimateAt(x: int, w: vector): LrgetfilteredREAt(x: int, w: vector): Lrf
PhotonMapm_Photons: Photon*
Klassendiagramm:
Photon MappingPhoton Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Kd-Tree
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
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4.. Kd-Tree
5. Rendering
Rendering
Klassendiagramme:
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4.. Kd-Tree
5. Rendering
Rendering
Klassendiagramme:
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Rendering
● 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)
● radiance estimate aus kd-Tree
Photon Mapping
Photon Mapping
● Für jedes Pixel Strahl aus Kameraursprung und Pixel bilden und weiterverfolgen
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Rendering Photon Mapping
real
real
Bildschirmpixel
virtuell
• Fallunterscheidung je nach Schnittpunkt
Photon Mapping
Real:
– Radiance Estimate auf Pixel von Bild aufrechnen
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Rendering Photon Mapping
realvirtuell
real
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Rendering
realvirtuell
real
Virtuell: Diffus
– Radiance Estimate darstellen
Photon Mapping
Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4. Kd-Tree
5. Rendering
Rendering Photon Mapping
real
real
virtuell
Virtuell: Spiegelnd/Transparent
– Rekursive Strahlverfolgung bis diffuses Objekt oder maximale Rekursionstiefe:
● Kein Schnittpunkt: Pixel aus EnvMap darstellen
● Real: Radiance Estimate Foto Pixel aufrechenen und Ergebins darstellen
● Virtuell: Radiance Estimate darstellen
Photon Mapping Photon Mapping
1. Einleitung
2. Photon Emission
3. Photon Scattering
4.. Kd-Tree
5. Rendering
Rendering
Superklasse: