In der Computergrafik ist das Photon Mapping ein von Henrik Wann Jensen entwickelter Zwei-Pass-Algorithmus für globale Illumination, der die Rendering-Gleichung annähernd löst. Strahlen von der Lichtquelle und Strahlen der Kamera werden unabhängig voneinander verfolgt, bis ein Abschlusskriterium erfüllt ist, dann werden sie in einem zweiten Schritt verbunden, um einen Strahlungswert zu erzeugen.
Es wird verwendet, um die Wechselwirkung von Licht mit verschiedenen Objekten realistisch zu simulieren.
Insbesondere ist es in der Lage, die Refraktion von Licht durch eine transparente Substanz wie Glas oder Wasser, die diffuse Interreflexion zwischen beleuchteten Objekten, die unterirdische Lichtstreuung in lichtdurchlässigen Materialien und einige der Effekte durch Partikel wie Rauch oder Wasserdampf zu simulieren. Es kann auch auf genauere Simulationen von Licht wie die spektrale Darstellung erweitert werden.
Im Gegensatz zum bidirektionalem Path Tracing, volumetrischen Path Tracing und Metropolis-Lichttransport ist das Photonen Mapping ein „biased“ Rendering-Algorithmus, was bedeutet, dass die Mittelung vieler Renderer mit dieser Methode nicht zu einer korrekten Lösung der Rendergleichung konvergiert. Da es sich jedoch um ein einheitliches Verfahren handelt, kann jede gewünschte Genauigkeit durch Erhöhung der Anzahl der Photonen erreicht werden.
Effekte.
Caustics.
Ein Modell eines Weinglasstrahls, das mit Photonen-Mapping verfolgt wird, um Caustics zu zeigen. Licht, das refraktiert oder reflektiert wird, verursacht Muster, die als Caustics bezeichnet werden und meistens als konzentrierte Lichtflecken auf nahegelegenen Oberflächen sichtbar sind. Wenn Lichtstrahlen zum Beispiel durch ein Weinglas auf einem Tisch gehen, werden sie gebrochen und Lichtmuster auf dem Tisch sichtbar. Das Photon Mapping kann die Pfade einzelner Photonen verfolgen, um zu modellieren, wo die konzentrierten Lichtpunkte erscheinen.
Diffuse Interreflexion.
Diffuse Interreflexion ist sichtbar, wenn Licht von einem diffusen Objekt auf ein anderes reflektiert wird. Das Photonen-Mapping ist besonders geschickt im Umgang mit diesem Effekt, da der Algorithmus Photonen von einer Oberfläche zur anderen reflektiert, basierend auf der bidirektionalen Reflexionsverteilungsfunktion (BRDF) dieser Oberfläche, und somit ist Licht von einem Objekt, das auf ein anderes trifft, ein natürliches Ergebnis des Verfahrens. Die diffuse Interreflexion wurde zunächst mit Radiositätslösungen modelliert. Das Photonen Mapping unterscheidet sich jedoch dadurch, dass es den Lichttransport von der Art der Geometrie in der Szene trennt. Farbabweichungen sind ein Beispiel für diffuse Interreflexion.
Subsurface Scattering ist der Effekt, der sich zeigt, wenn Licht in ein Material eintritt und gestreut wird, bevor es absorbiert oder in eine andere Richtung reflektiert wird. Subsurface Scattering kann mittels Photonen Mapping genau modelliert werden. Dies war die ursprüngliche Art und Weise, wie Jensen es implementierte. Bei stark streuenden Materialien wird die Methode jedoch langsam, und bidirektionale Surface Scattering Reflectance Distribution Funktionen (BSSRDFs) sind in diesen Situationen effizienter.
Anwendung.
Aufbau der Photonen Map.
Beim Photonen Mapping werden von den Lichtquellen Lichtpakete, sogenannte Photonen, in die Szene geschickt. Wann immer sich ein Photon in einer Fläche überschneidet, werden Schnittpunkt und Einfallsrichtung in einem Cache gespeichert, der als Photonen Map gespeichert wird.
Typischerweise werden zwei Photonen Maps für eine Szene erstellt. Eine speziell für die Caustics und eine globale für das andere Licht. Nach dem Durchschneiden der Oberfläche wird durch das Material eine Wahrscheinlichkeit für Reflexion, Absorption oder Transmission/Refraktion gegeben. Eine Monte-Carlo-Methode mit der Bezeichnung „russisches Roulette“ wird verwendet, um eine dieser Aktionen auszuwählen. Wenn das Photon absorbiert wird, wird keine neue Richtung vorgegeben, und die Suche nach diesem Photon endet. Wenn das Photon reflektiert wird, wird die birektionale Reflection Distribution Funktion verwendet, um das Verhältnis der reflektierten Strahlung zu bestimmen. Schließlich, wenn das Photon sendet, wird eine Funktion für seine Richtung gegeben, abhängig von der Art der Übertragung.
Sobald die Photonen Map erstellt wurde (oder während der Konstruktion), ist sie typischerweise so angeordnet, dass sie optimal für den k-nearest Neighbor Algorithmus ist, da die Photonen Look-Up Zeit von der räumlichen Verteilung der Photonen abhängt. Jensen befürwortet die Verwendung von KD-Trees. Die Photonen-Map wird anschließend auf der Festplatte oder im Speicher für die spätere Verwendung gespeichert.
Rendering (2. Durchgang).
In diesem Schritt des Algorithmus wird die im ersten Durchgang erstellte Photonen Map verwendet, um die Strahldichte jedes Pixels des Ausgangsbildes zu schätzen. Für jedes Pixel wird die Szene verfolgt, bis die nächstgelegene Schnittfläche gefunden wird.
An diesem Punkt wird die Rendering-Gleichung verwendet, um die Oberflächenstrahlung zu berechnen, die den Schnittpunkt in Richtung des Strahls verlässt, der auf sie trifft. Um die Effizienz zu erhöhen, wird die Gleichung in vier verschiedene Faktoren zerlegt: direkte Beleuchtung, Spiegelreflexion, Caustics und weiche indirekte Beleuchtung.
Für eine genauere Schätzung der direkten Beleuchtung wird ein Strahl vom Schnittpunkt zu jeder Lichtquelle verfolgt. Solange ein Strahl kein anderes Objekt schneidet, wird die Lichtquelle zur Berechnung der direkten Beleuchtung verwendet. Für eine ungefähre Schätzung der indirekten Beleuchtung wird die Photonen Map zur Berechnung des Strahlungsbeitrags verwendet.
Die Spiegelreflexion kann in den meisten Fällen mit Hilfe von Raytracing-Verfahren berechnet werden (da sie gut mit Reflexionen umgehen kann).
Der Beitrag der Caustics zur Oberflächenstrahlung wird direkt mit Hilfe der Caustics Photonen-Map berechnet. Die Anzahl der Photonen in dieser Map muss ausreichend groß sein, da die Map die einzige Quelle für Caustics-Informationen in der Szene ist.
Für eine weiche indirekte Beleuchtung wird die Strahldichte direkt über die Photonen-Map berechnet. Dieser Beitrag muss jedoch nicht so genau sein wir der Caustics-Beitrag und nutzt daher die globale Photonen-Map.
Berechnung der Strahldichte mit Hilfe der Photonen-Map.
Um die Oberflächenstrahlung an einem Schnittpunkt zu berechnen, wird eine der zwischengespeicherten Photonen-Maps verwendet. Die Schritte sind:
- Sammeln Sie die n nächstgelegenen Photonen mit der Suchfunktion für die nächstgelegenen Nachbar auf der Photonen-Map.
- S sei die Kugel, die diese n-Photonen enthält.
- Teilen Sie für jedes Photon die Flussmenge (reale Photonen), die das Photon darstellt, durch die Fläche von S und multiplizieren Sie sie mit der auf dieses Photon aufgebrachten BRDF.
- Die Summe dieser Ergebnisse für jedes Photon stellt die gesamte Oberflächenstrahlung dar, die vom Oberflächenschnittpunkt in Richtung des Strahls zurückgegeben wird, auf die es trifft.
Optimierungen.
- Um zu vermeiden, dass nicht benötigte Photonen emittiert werden, ist die Ausgangsrichtung der ausgehenden Photonen oft eingeschränkt. Anstatt einfach nur Photonen in zufällige Richtungen zu senden, werden sie in die Richtung eines bekannten Objekts geschickt, das ein gewünschter Photonen-Manipulator ist, um das Licht entweder zu fokussieren oder zu streuen. Es gibt viele weitere Verbesserungen, die an dem Algorithmus vorgenommen werden können: zum Beispiel die Wahl der Anzahl der zu sendenden Photonen und wo und in welchem Muster sie gesendet werden sollen. Es scheint, dass eine höhere Dichte von Photonen in der Photonen Map um die Position, an der die Photonen auftreffen, gespeichert wird, und somit die Messung dieser Dichte einen ungenauen Wert für die Bestrahlungsstärke ergeben würde. Dies ist wahr, jedoch ist der Algorithmus zur Berechnung der Strahldichte nicht von den Schätzungen der Bestrahlungsstärke abhängig.
- Für weiche indirekte Beleuchtung, wenn die Oberfläche Lambertian ist, kann eine Technik verwendet werden, die als Bestrahlungsstärke-Caching bekannt ist, um Werte aus früheren Berechnungen zu interpolieren.
- Um unnötige Kollisionsprüfungen bei direkter Beleuchtung zu vermeiden, können Shadow-Photonen verwendet werden. Während des Photonen-Mapping-Prozesses, wenn ein Photon auf eine Oberfläche trifft, wird zusätzlich zu den üblichen Operationen ein Shadow-Photon in die gleiche Richtung emittiert, aus der das ursprüngliche Photon stammt, das den ganzen Weg durch das Objekt verläuft. Das nächste Objekt, mit dem es kollidiert, bewirkt, dass ein Shadow-Photon in der Photonen-Map gespeichert wird. Dann wird bei der direkten Beleuchtungsberechnung, anstatt einen Strahl von der Oberfläche an das Licht zu senden, das Kollisionen mit Objekten testet, die Photonen-Map nach Shadow-Photonen durchsucht. Wenn keine vorhanden sind, hat das Objekt eine klare Sichtlinie zur Lichtquelle und zusätzliche Berechnungen können vermieden werden.
- Um die Bildqualität, insbesondere der Caustics, zu optimieren, empfiehlt Jensen den Einsatz eines Konusfilters. Im Wesentlichen gewichtet der Filter den Beitrag der Photonen zur Strahldichte, je nachdem, wie weit sie von den Schnittpunkten der Strahloberfläche entfernt sind. Dies kann zu schärferen Bildern führen.
- Das Image-Space Photonen-Mapping erreicht Echtzeitleistung, indem es die erste und letzte Streuung mit einem GPU-Rasterizer berechnet.
Variationen.
Obwohl das Photonen-Mapping hauptsächlich für die Arbeit mit Raytracern entwickelt wurde, kann es auch für die Verwendung mit Scanline-Renderern erweitert werden.
Vielen Dank für Ihren Besuch.