Photon Mapping Proseminar How to make a P I X A R movie Andreas Schmidt 2011 Inhaltsverzeichnis Zusammenfassung................................................................................................................................2 Motivation............................................................................................................................................2 Photon Tracing Pass.............................................................................................................................3 Aussenden der Photonen..................................................................................................................3 Russisches Roulette.........................................................................................................................3 Speicherung der Photonen...............................................................................................................4 Rendering Pass.....................................................................................................................................4 Die Rendergleichung.......................................................................................................................4 Abschätzen der Strahldichte............................................................................................................5 Filtering............................................................................................................................................6 Fazit......................................................................................................................................................6 Abb 1: Simulierte globale Beleuchtung Abb 2: Direkte Beleuchtung Abb 3: Kaustik Zusammenfassung Das Photon Mapping ist eine Erweiterung des Raytracing-Verfahrens die es ermöglicht, die diffuse Komponente der globalen Beleuchtung auch in komplexen Szenen effizient zu berechnen. Mithilfe dieses Algorithmuses lassen sich besonders auch Effekte wie Kaustiken und diffuse Mehrfachreflektionen mit einem akzeptablen Rechenaufwand simulieren. Motivation Für eine möglichst realistische Bildsynthese ist die Globale Beleuchtung von entscheidender Bedeutung. Unter Globaler Beleuchtung versteht man die Simulation der kompletten Interaktion von Licht mit Objekten in der Szene. Der auffallendste Effekt hierbei ist die diffuse Mehrfachreflektion von Licht zwischen einzelnen Objekten. Fällt ein Lichtstrahl beispielsweise durch ein Fenster in einen Raum, spiegelt er sich diffus an allen Flächen und erhellt so die ganze Szene (Abb 1) und nicht nur die Bereiche, die direkt vom Lichtstrahl getroffen werden wie dies bei einer rein direkten Beleuchtung der Fall ist (Abb 2). Ein weiterer prominenter Effekt sind sogenannte Kaustiken (Abb 3), also Muster aus konzentrierten Lichtbündeln, wie sie entstehen, wenn Lichtstrahlen in einem transparenten Material gebrochen werden. Die vor der Entwicklung des Photon Mappings bekannten Algorithmen zur Simulation von Globaler Beleuchtung fordern jedoch einen sehr hohen Rechenaufwand. Als Beispiel wollen wir hier kurz das Path-Tracing oder auch Monte-Carlo-Tracing genannte Verfahren betrachten. Beim Path-Tracing sendet man Strahlen vom Betrachter aus in die Szene bis zum ersten Schnittpunkt und verfolgt ihn von dort aus rekursiv weiter, um aus den erhaltenen Informationen anschließend die Beleuchtung zu berechnen. Durch die zufällige Weiterverfolgung des Strahls entsteht jedoch eine große Varianz im Ergebnis, das sich durch Bildrauschen bemerkbar macht. Um dies zu verhindern benötigt man eine sehr hohe Anzahl an Sample-Rays, was sich auf die Rechenzeit auswirkt. Das Photon Mapping benutzt einen gänzlich anderen Ansatz. Statt eines sogenannten BackwardTracings, bei der Strahlen vom Betrachter aus, durch die Szene zu den Lichtquellen verfolgt werden, startet man beim Photon Mapping bei den Lichtquellen selbst (Forward Tracing). Hierzu schickt man Licht in Form von Energieteilchen, sogenannten Photonen, aus jeder Lichtquelle der Szene und speichert die Interaktion der Photonen mit der Geometrie in einer Photonmap um sie später zu einer effizienten Berechnung der Globalen Beleuchtung zu verwenden. Dies wird im Algorithmus in zwei Abschnitten realisiert. Dem Photon-Tracing Pass und dem Rendering Pass. Photon Tracing Pass Der Photon Tracing Pass dient dem Aufbau der Photonmap. Hierbei werden Photonen rekursiv durch die Szene verfolgt und Photonenereignisse gespeichert. Aussenden der Photonen Wir betrachten nun zunächst für verschiedene Typen von Lichtquellen, wie die Photonen in die Szene gesendet werden. Bei einer Punktförmigen Lichtquelle, die keine Ausdehnung besitzt, ist die Position auch der Startpunkt der Photonen und die Richtung beliebig. Bei direktionalen Lichtquellen wählt man einen zufälligen Punkt außerhalb der zu rendernden Szene und schickt alle Photonen in die selbe Richtung. Auf einer 2-dimensionalen Lichtquelle sucht man sich einen beliebigen Punkt in der Ebene innerhalb der Lichtquelle und sendet Photonen in die gewünschte Hemisphäre. Bei Lichtquellen mit einer freien 3-dimensionalen Form wählt man zufällige Startpunkte auf der Oberfläche der Lichtquelle und sendet dann die Photonen in eine Richtung abhängig von der Oberflächennormalen an diesem Punkt. Eine Optimierungsmöglichkeit, die das Photon Mapping schon an dieser Stelle bietet ist die Verwendung einer sogenannten Projection Map. Hierbei wird die Szene aus der Sicht der jeweiligen Lichtquelle abgebildet und das Bild mit einem Raster in verschiedene Bereiche unterteilt. Nur wenn sich in einem Bereich auch wirklich ein Objekt befindet, lohnt es sich in diese Richtung Photonen auszusenden. Russisches Roulette Bei der Kollision eines Photons mit der Geometrie der Szene wendet man ein Verfahren namens "Russisches Roulette" an, um zu entscheiden, was weiter mit dem Photon geschehen soll. Trifft ein Photon auf eine Oberfläche, so wird es entweder 1. diffus reflektiert 2. spiegelnd reflektiert 3. absorbiert In welchem Maße dies passiert wird durch die Materialeigenschaften des Objekts k d k sk a =1 festgelegt, wobei k d für die diffuse Reflektion steht, k s für die spekulare Reflektion und k a für die Absorption. Generiert man nun eine Zufallszahl ∈[0,1] wird folgendermaßen entschieden: ∈[0, k d ] Þ diffuse Reflektion ∈[k d , k sk d ] Þ spiegelnde Reflektion ∈[k sk d ,1] Þ Absorption Wird ein Photon diffus reflektiert, so speichert man Position und Eigenschaften des Photons für diese Stelle ab und schickt ein neues Photon von diesem Punkt in die Szene. Bei einer spiegelnden Reflektion verzichtet man auf das abspeichern und schickt sofort ein neues Photon aus, da die Wahrscheinlichkeit, dass ein gespiegeltes Photon auf den jeweiligen Pixel des Betrachters fällt gegen Null geht. Für die Simulation von spiegelnden Oberflächen eignet sich die herkömmliche Raytracing Methode besser. Eine Besonderheit ist, dass die Energieabnahme des Lichts bei jeder diffusen Spiegelung nicht durch eine Veränderung der Photonenenergie, sondern durch die Veränderung der Anzahl der Photonen simuliert wird. In einem konkreten Beispiel heißt das, dass bei einer zu 33% diffus reflektierenden Oberfläche, drei eintreffende Photonen nicht mit 33% der Energie , sondern nur ein Photon mit 100% der Energie reflektiert wird. Ein Vorteil des russischen Roulettes ist dadurch, dass die abgespeicherten Photonenereignisse immer die gleiche Energie haben, was die Abschätzung der Strahldichte später sehr erleichtert. Speicherung der Photonen Wie bereits zuvor erwähnt, wird jedes Photonenereignis in einer Photonmap gespeichert. An diese Datenstruktur werden sehr hohe Anforderungen gestellt, da es schnell zu einer großen Anzahl von Photonenereignissen kommt und die Daten effizient durchsucht werden müssen. Besonders die Suche nach den nächsten Nachbarn (Nearest Neighbour Search) ist beim Photonmapping von zentraler Bedeutung. Als gute Lösung hat sich dabei die Verwendung eines kd-Baumes herausgestellt. Ein balanzierter kd-Baum besitzt folgende Eigenschaften: Abb 4: Visualisierung einer Caustic Photon Map Operation Laufzeit Einfügen eines Knotens O(log n) Suchen eines Knotens O(log n) Suche nach den k nächsten Nachbarn O(log n) Weiterhin berücksichtigt man die Tatsache, dass für die genaue Berechnung von Kaustiken eine sehr große Anzahl von Photonen nötig ist. Man generiert sich deshalb zusätzlich zu einer Global Photon Map eine Caustic Photon Map (Abb 4), bei der nur Photonen enthalten sind die spekular reflektiert oder transmittiert wurden. Auf solche Oberflächen wird dafür von den Lichtquellen eine erhöhte Anzahl von Photonen emittiert (beispielsweise realisiert durch eine weitere Projection Map). Rendering Pass Die Szene wird mithilfe eines modifiziertem Distribution Raytracing Algorithmus, wie dem MonteCarlo-Raytracing, unter Zuhilfenahme der Informationen aus der Photonmap berechnet. Hierbei wird unterschieden zwischen einer exakten Berechnung und einer Abschätzung. Abgeschätzt wird immer dann, wenn der aktuelle Strahl nur wenig zum Gesamtergebnis beiträgt. Die Strahldichte an einem Punkt x und damit auch die Helligkeit des gerenderten Pixels wird mithilfe der Rendergleichung berechnet. Die Rendergleichung Die Strahldichte an einem Punkt x für die Richtung w lässt sich durch die Formel L0 x , w =Le x , w L r x , w (Die Rendergleichung) ausdrücken, wobei L e das selbst emittierte Licht , falls das Objekt eine Lichtquelle ist und L r den Anteil des reflektierten Lichtes darstellt. L r lässt sich in 4 Terme aufspalten: Lr = ∫ f r Li ,l cos i d wi Direkte Beleuchtung Spekulare Reflektion Kaustiken Diffuse Reflektion ∫ f r ,S Li ,cL i ,d cos i d w i ∫ f r ,d L i ,c cosi d wi ∫ f r ,d L i ,d cosi d w i Die Berechnung von L r nach Jensen [Jen 96]: Direkte Beleuchtung: Entweder genaue Berechnung durch Monte-Carlo Raytracing, oder Abschätzung mithilfe der Photonmap. Spekulare Reflektion: Berechnung durch Standard Monte Carlo Raytracing. Kaustiken: Berechnung mithilfe der Informationen in der Photonmap. Genaues Berechnen mit der Caustic Map, Abschätzen mit der Global Map. Eine Berechnung durch Monte-Carlo-Raytracing ist meist unmöglich. Diffuse Reflektion: Einkommendes Licht, das vorher mindestens einmal diffus reflektiert wurde. Abschätzung mithilfe der Photon Map. Genaue Berechnung mit Importance Sampling wie in [Jen 95] beschrieben. Abb 5: Abschätzen der Strahldichte Abschätzen der Strahldichte Die Strahldichte Lr an einem Punkt x kann man mithilfe der, in der Photonmap gespeicherten Informationen abschätzen. Sie entspricht der Dichte der Photonenereignisse in der Umgebung von x . Es gibt hier zwei Strategien zur Auswertung: 1. Spanne eine Kugel mit Radius befinden r auf, und berücksichtige alle Photonen die sich innerhalb 2. Spanne eine Kugel auf und vergrößere sie, bis sie n Photonen umschließt Um nun die Strahldichte abzuschätzen, teilt man die Summe der Photonen durch die Fläche, auf die sich diese verteilen. Da die Oberfläche am Punkt x (in Näherung) eben ist, kann man als Fläche A=r 2 annehmen. Man erhält so als Näherung der Strahldichte: N 1 p x , w Lr x , w ≈ 2 ∑ f r x , wp , W r p=1 Ein Problem bei dieser Vorgehensweise ist, dass die Annahme jede Fläche sei um den Punkt x lokal eben, schlicht falsch ist, was besonders bei Ecken und Kanten ersichtlich wird und sich dort durch fehlerhafte Farbverläufe zeigt. Abhilfe kann für diese Fälle die Verwendung eines Ellipsoids anstatt einer Kugel schaffen. Dies vergrößert jedoch auch den Rechenaufwand. Abb 6: Fehlerquelle bei der Abschätzung und ein Lösungsansatz Filtering Durch die Abschätzung der Strahldichte kann es je nach verwendeter Photonenzahl zu weichen und unscharfen Kanten kommen. Besonders bei Kaustiken ist dies jedoch unerwünscht. Eine Abhilfe dafür sind 2-Dimensionale Filter, die Photonen stärker gewichten, je näher sie dem Punkt x liegen. Ein Beispiel für einen solchen Filter ist der Cone Filter: w pc =1− dp kr normalisiert: 1− 2 3k Wobei dp der Abstand des Photons zu x ist, r der Kreisradius und k 1 eine Filterkonstante. Die gefilterte Abschätzung der Strahdichte ist somit: L r , w ≈ ∑ f r x , wp , w p x , wp w pc 1− 2 r 2 3k Fazit Das Photonmapping ist ein zweistufiger Algorithmus zur effizienten Berechnung der Globalen Beleuchtung, bestehend aus einem Photon Tracing Pass und einem Rendering Pass. Er besitzt folgende besonders wünschenswerte Eigenschaften: 1. Er kann mit sämtlichen Kombinationen von spekularer Reflektion, diffuser Reflektion und Transmission umgehen (einschließlich Kaustiken) 2. Da die Photonmap unabhängig von der Representation der Geometrie ist, verursachen auch sehr komplexe Szenen, oder prozedural generierte Geometrie keine Probleme 3. Er ist relativ schnell 4. Er ist einfach parallelisierbar Literatur: HENRIK WANN JENSEN, Realistic Image Synthesis Using Photon Mapping , A K Peters Ltd, 2001, [Jen 01] HENRIK WANN JENSEN, Global Illumination using Photon Maps, Rendering Techniques '96 (Proceedings of the Seventh Eurographics Workshop on Rendering), 1996, [Jen 96] HENRIK WANN JENSEN, Importance Driven Path Tracing using the Photon Map,Rendering Techniques '95 . Eds. P.M. Hanrahan and W. Purgathofer, SpringerVerlag, 1995 [Jen 95] PETER SHIRLEY und R.KEITH MORLEY, Realistic Ray Tracing – Second Edition, A K Peters Ltd, 2003 ,[ShKei] HENRIK WANN JENSEN und PER H. CHRISTENSEN, High-Quality Rendering using Ray Tracing and Photon Mapping, SIGGRAPH'2007 Course 8, San Diego, August 2007 ,[JenChr] PER H. CHRISTENSEN, Faster Photon Map Global Illumination , Journal of Graphics Tools, ACM, 1999, [Chr 99] SUSANNE KRÖMER, Computergraphik II - Kapitel IV, Vorlesungsskript Uni Heidelberg, 2008