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 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 Einleitung Photon Mapping 1. Einleitung 2. Photon Emission 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. Einleitung Photon Mapping 1. 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. Einleitung Photon Mapping 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 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 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 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 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 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 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 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 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 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 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 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 Emission Photon 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 PhotonMapping Mapping 1. Einleitung Scattering: 2. Photon Emission Nach der Emission werden die Photonen durch die Szene 3. Photon Scattering 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 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 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 Mapping 1. Einleitung Photonenpfade: 2. Photon Emission Schattenphotonen: 3. Photon Scattering Wenn ein Photon auf ein virtuelles Objekt trifft, wird 4. Kd-Tree berechnet, wo es auftreffen würde, wenn das virtuelle 5. Rendering Objekt nicht da wäre. Der negative Lichtstrom wird für diese Stelle gespeichert. real virtuell Photon Scattering Photon 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 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 Gegeben: Oberfläche mit sowohl diffuser als auch spekularer Reflexion 4. Kd-Tree ● Ob ein Photon nun diffus oder spekular reflektiert oder absorbiert wird, hängt von den Materialeigenschaften ab: 5. Rendering ● Diffuser Reflexionskoeffizient: ● Spekularer Reflexionskoeffizient: d s Photon Scattering Photon Mapping 1. Einleitung Trifft ein Photon auf eine Oberfläche, so verwenden wir 2. Photon Emission 3. Photon Scattering 4. Kd-Tree 5. Rendering eine gleichmäßig verteilte Zufallsvariable 0,1 und treffen so die Entscheidung über die Art der Reflexion: 0, d d , s diffuse Reflexion 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 , s, avg d , avg d , avg ,1 spekulare Reflexion 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 Mapping 1. Einleitung 2. Photon Emission 3. Photon Scattering 4. Kd-Tree 5. Rendering Klassendiagramm: Kd-Tree Photon PhotonMapping Mapping 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 Photon PhotonMapping Mapping 1. Einleitung Radiance Estimate: 2. Photon Emission • Berechnung der reflektierten Leuchtdichte an Schnittpunkt x 3. Photon Scattering 4. Kd-Tree • Zu Punkt x werden in Radius r die maximal n nächsten Photonen gesucht 5. Rendering • 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( – 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 scene : Scene*, filename : char*) 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: – Radiance Estimate auf Pixel von Bild aufrechnen 2. Photon Emission 3. Photon Scattering 4. Kd-Tree 5. Rendering virtuell real real Rendering Photon Mapping 1. Einleitung Virtuell: Diffus – Radiance Estimate darstellen 2. Photon Emission 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: