Photon Mapping Zusammenfassung
Transcription
Photon Mapping Zusammenfassung
Photon Mapping Thorsten Grosch Einleitung Lichtsimulationsverfahren – Ray Tracing [Whitted 1980] Nur Spiegel & Glas – Radiosity [Goral 1984] Nur diffuse Materialien – Path Tracing [Kajiya 1986] Alle Materialien, aber langsam & verrauscht – Photon Mapping [Jensen 1994] Auch alle wichtigen Lichteffekte Schneller für spezielle Effekte wie z.B. Kaustiken T. Grosch - 2 - 1 Was sieht das Auge ? Licht = elektromagnetische Welle Lichtquelle versendet permanent kleine Wellenzüge (Photonen) Die Photonen werden (mehrfach) auf den Oberflächen der Objekte reflektiert und nehmen dabei die Objektfarbe an Gelangt ein Photon ins Auge, so wird i d ein i R Rezeptor t auff d der Netzhaut aktiviert Dieses Signal wird ans Gehirn weitergeleitet Æ Das Bild entsteht Lichtmenge Q Vorstellung – Eine Lichtquelle sendet permanent Photonen in alle Richtungen aus Ep = h ⋅ f = h⋅c λ – Jedes Photon hat die Energie Ep h: Planck Konstante h = 6.626 ⋅10 −34 Js c: Lichtgeschwindigkeit – Die Lichtmenge Q ist die Summe aller PhotonenEnergien g Selten verwendete (zeitabhängige) Größe… – Wird aber zur Definition wichtigerer Größen benötigt Einheit der Lichtmenge ist Lumen · Sekunde (lm · s) 2 Lichtstrom φ φ= Interessanter ist, wieviele Photonen pro Zeit von der Lichtquelle emittiert werden ΔQ ΔQ Δt Diese Größe wird als Lichtstrom bezeichnet Lichtstrom = Lichtmenge pro Zeit Δt – Summe der PhotonenEnergien, die pro Zeitraum Δt emittiert werden Die Einheit des Lichtstroms ist das Lumen (lm) Radiometrische Einheit: Watt Raumwinkel ω Der Raumwinkel ω ist eine räumliche Erweiterung des zweidimensionalen Winkels im Bogenmaß Er ist definiert durch Bogenmaß. das Verhältnis der bedeckten Kugeloberfläche (Kugelkalotte) zum Quadrat des Kugelradius. ω= Ak r2 – Größe der „Tüte“ Hilfsgröße zur Definition richtungsabhängiger Lichtverteilungen Die Einheit des Raumwinkels ist Steradiant (sr) 3 Winkel, Raumwinkel Steradiant Radiant Winkel: Wi k l B Bogenlänge lä auff Einheitskreis Beispiel: Winkel Halbkreis = π, voller Kreis = 2π Raumwinkel: R i k l Flä Fläche h auff Einheitskugel Beispiel: Raumwinkel Halbkugel = 2π sr, volle Kugel = 4π sr Lichtstärke I Δω Lichtquellen geben den Lichtstrom typischerweise nicht gleichmäßig in alle Richtungen ab I= Δφ Δφ Δω – z.B. Spotlicht Um festzulegen, wieviel Lichtstrom in eine „Richtung“ fliegt, wird die Lichtstärke als Lichtstrom pro Raumwinkel definiert I =0 Vorstellung – Wieviele Photonen sind in der Tüte Die Einheit der Lichtstärke ist die Candela (cd) 1 cd = 1 lm / sr 4 Beleuchtungsstärke E Wieviel Licht kommt beim Empfänger an E= Definition: – Beleuchtungsstärke = Ankommender Lichtstrom φ pro Empfängerfläche ΔA Der Lichtstrom kommt dabei aus allen Richtungen E ist unabhängig vom Empfängermaterial Vorstellung – Wieviele Photonen kommen (pro Zeit) auf der Fläche an Δφin Δφin ΔA ΔA Die Einheit der Beleuchtungsstärke ist das Lux (lx) 1 lx = 1 lm / m² Radiosity B Wieviel Licht sendet eine Fläche ab B= Definition: – Radiosity = Versendeter Lichtstrom φ pro Senderfläche ΔA Der Lichtstrom geht dabei in alle Richtungen Gleiche Definition wie E, E aber B ist eine Sendergröße Δφout Δφout ΔA ΔA Die Einheit der Radiosity ist lm / m² Vorstellung – Wieviele Photonen werden (pro Zeit) von der Fläche versendet 5 Leuchtdichte L L= Alle bisherigen Größen sind unsichtbar und sagen i.A. nichts über die Helligkeit von Fläche bzw. Lichtquelle q aus Δφ ΔA ⋅ cos θ ⋅ Δω Δω Δφout Definition der Leuchtdichte – Versendeter Lichtstrom Δφ pro (sichtbarer) Empfängerfläche ΔAcosθ und Raumwinkel Δω – entspricht der gesehenen Helligkeit – Lichtstrom Li ht t d dabei b i nur iin Richtung Auge – schwierigste Größe… θ ΔA ΔA ⋅ cos θ : Gesehene Fläche Vorstellung Die Einheit der Leuchtdichte ist cd / m² – Wieviele Photonen fliegen ins Auge (pro Zeit und pro gesehener Fläche) Zusammenfassung Photometrische Bezeichnung Einheit Radiometrische Bezeichnung Einheit Vereinfachter Zusammenhang Q Lichtmenge (luminous energy) Strahlungsmenge (radiant energy) φ Lichtstrom (luminous flux) lm Strahlungsfluß (radiant flux) W φ= ΔQ Δt I Lichtstärke (luminous intensity) cd Strahlstärke (radiant intensity) W / sr I= Δφ Δω E Beleuchtungsstärke (illuminance) lx Bestrahlungsstärke (irradiance) W / m² E= Δφ ΔAe B Radiosity lm / m² Radiosity W / m² B= Δφ ΔAs L Leuchtdichte (luminance) cd / m² Strahldichte (radiance) W / m²sr L= Δφ ΔA ⋅ cos θ ⋅ Δω 6 Materialien Spiegel Glänzend Diffus Materialien: Spiegel Beobachtung – Einfallsrichtung = Ausfallsrichtung – In alle anderen Richtungen wird kein Licht reflektiert (!) 0 L 7 Materialien: Diffuse Fläche Beobachtung: – Die Helligkeit (Leuchtdichte) einer diffusen Fläche hängt nicht von der Richtung des Betrachters ab (Lambert) L L – Beispiel: Kreide, Papier L Einfache Erklärung – Die Oberfläche besteht aus vielen kleinen Spiegeln, die in einer zufälligen Richtung orientiert sind – Die reflektierte Richtung ist Zufall Æ Gleich viele Lichtstrahlen in alle Richtungen Materialien: Glänzende Fläche Beobachtung – Verschwommenes Spiegelbild L Lmax Einfache Erklärung – Vorzugsrichtung bei der Reflexion L – Kleinere Variation der Orientierung der Spiegel Æ“Reflexions-Keule“ (Lobe) 8 Wie misst/beschreibt man Reflexion? Messung für alle Einfalls- und Ausfallswinkel Für einfallendes Licht misst man Beleuchtungsstärke – Andere Größe praktisch kaum messbar, da man sonst in den Objektmittelpunkt einen Sensor integrieren müsste. Ausfallendes Licht: Leuchtdichte Resultat: Angenäherte BRDF des Materials [Nicodemus 1977] – Bi-direktionale ReflexionsVerteilungsfunktion (Bidirectional Reflectance Distribution Function) v ωi v ωo i: incoming o: outgoing v dLo (ωo ) v v f r (ωi , ωo ) = v dEi (ωi ) v dLo (ωo ) = v dLi (ωi ) ⋅ cosθi ⋅ dωi Reflexionsgrad (Reflectance) Anstatt der Werte der BRDF im Bereich [0,∞[ ist der Reflexionsgrad im Bereich (0 (0,1) 1) oft hilfreich (speziell in diffusen Umgebungen) φi Er ist definiert als der gesamte ausfallende Lichtstrom im Verhältnis zum gesamten eingestrahlten Lichtstrom v ∫π L (ω )⋅ cosθ o o ⋅ dωo φo B 2 ρ= = = φi E ∫ Li (ωvi ) ⋅ cosθi ⋅ dωi o φo 2π 9 Die Rendering Equation • Das Licht an einem Punkt x ergibt sich aus dem gesamten einfallenden Licht, das in Richtung des Betrachters reflektiert wird • Für das einfallende Licht an jedem Punkt y entsteht wieder das gleiche Problem • y Lo Li v ωi v ωo Dies führt zu einer Integralgleichung: v v Lo ( x, ωo ) = Le ( x, ωo ) + [Kajiya 1986] x v v fr v v ∫ f ( x, ω , ω ) ⋅ cosθ ⋅ L ( x, ω ) ⋅ dω π r i o i i i 2 sr Lösung der Rendering Equation durch Photon Mapping Photon Mapping wurde 1993/94 von Henrik Wann Jensen entwickelt Dieser Ansatz ermöglicht die effiziente Berechnung aller wichtigen visuellen globalen Beleuchtungseffekte, z.B. – spekulare Reflektionen, diffuse Reflexion (color bleeding), transluzente Materialien, Volumen Simulation, Dispersion und insbesondere auch sog. Kaustiken geometrieunabhängig Basiert auf Particle Tracing [Arvo 1988] T. Grosch - 20 - 10 Die Idee: two-pass Algorithmus In einem ersten Schritt werden von allen Lichtemittern Photonen ausgesendet (sogenanntes Particle Tracing) Auf diffusen Oberflächen werden “Treffer” gespeichert und falls das Photon nicht absorbiert wird, wird es weiterverfolgt. In einem zweiten Schritt wird die Szene durch einen Raytracer gerendert, wobei an entsprechenden p Stellen kein Monte Carlo Sampling oder ähnliches durchgeführt wird, sondern die Photon Map abgefragt wird Zur Bildentstehung gehen wir also aus zwei Richtungen vor: vom Auge (Ray Tracing) und von den Lichtquellen (Particle Tracing) T. Grosch - 21 - First Pass Aufbau der Photon Map T. Grosch - 22 - 11 Sampling der Lichtquelle Zunächst einmal müssen die Lichtquellen Photonen emittieren Wenn eine Lichtquelle N Photonen entsendet entsendet, dann trägt jedes Photon genau den 1/N Teil des Lichtstroms An dieser Stelle muss man sich eine Sampling Strategie für Position und Richtung der Photonen überlegen. Die Basis für die Sampling-Strategie ist die Verteilung des Lichtstroms über die Raumwinkel – … also die Lichtstärkeverteilung T. Grosch - 23 - LVK-Sampling Bsp.: Lambert Emitter I= Lichtstärke ist definiert als Lichtstrom pro Raumwinkel In den Halbraum werden N Photonen verschossen, die alle den gleichen Lichtstrom Φ/N transportieren sollen dΦ dω Φ = 1000lm Um das zu erreichen, müssen in die Raumwinkel mit hohen Lichtstärken auch entsprechend mehr Photonen verschickt hi kt werden. d Die LVK muss daher als Dichtefunktion verwendet werden. T. Grosch - 24 - 12 Photonenverteilung Für einen (kleinen) Lambert Emitter ergibt sich etwa folgende Photonenverteilung – Anzahl Photonen pro Raumwinkel ~ cosθ Δφout Mehr Photonen in Richtung Normale Weniger Photonen in seitliche Richtungen ΔA Für andere Lichtquellen – Punktlicht: Zufällige Richtung – Spot: ~ (cosθ)^n T. Grosch - 25 - Photon Scattering Trifft das Photon auf eine Oberfläche, dann werden folgende Fälle unterschieden Diffuse Fläche: – das Photon wird mit der aktuellen Position in der Photon-Map abgespeichert. – eine neue Richtung wird durch Importance Sampling (Dichte ähnlich der BDRF des Materials) zufällig erzeugt und ein i ((neues)) Ph Photon t wird i d iin diese Richtung versendet Spekulare Reflexion/Transmission: – das Photon wird in der entsprechenden Richtung weiterverfolgt und nicht abgespeichert Absorption – das Photon wird mit der aktuellen Position in der Photon-Map abgespeichert. – Es wird nichts weiterverfolgt. g Als Abbruch wird eine maximale Rekursionstiefe verwendet Diffus Spekular Spiegel T. Grosch - 26 - 13 Kombinierte Materialien Man kann auch Materialien kombinieren – z.B. 80% diffus, 10% spiegelnd, 10% transmittierend Um die exponentielle Anzahl von Strahlen zu vermeiden, wird auch hier nur ein Strahl weiterverfolgt Die Entscheidung, welcher Pfad das ist, erfolgt durch „Russisches Roulette“ – Wähle Zufallszahl ξ ks = 10% kd = 80% kt = 10% ξ ∈ [0, k d ] → diffus ξ ∈ [k d , k d + k s ] → reflexion f 0 ξ ∈ [k d + k s , k d + k s + kt ] → transmission ξ 1 Funktioniert nur, wenn k d + k s + kt ≤ 1 T. Grosch - 27 - Beispiel Φ Material ist 50% diffus und 25% spiegelnd (also 25% absorbierend) – 50% der auftreffenden Photonen werden gespeichert und weiterverfolgt – 25% der auftreffenden Photonen werden – ohne Speicherung – reflektiert – 25% der auftreffenden Photonen werden absorbiert – Entscheidung über Russisches Roulette a d r d Beispiel: 4 Photonen mit Rekursionstiefe 2 Absorption (a), diffus (d) und spiegelnd (r). Die blauen Punkte sind Photonen, die in der Photon-Map mit jeweils 1/4Φ gespeichert werden. T. Grosch - 28 - 14 Diffuse Reflexion Der Lichtstrom des Photons wird bei der Reflexion nicht verändert Mit Russischem Roulette wird entschieden, ob ein Photon reflektiert oder absorbiert wird z.B. B ρ = 0.33 0 33 – Aus drei Photonen mit Δφ = 1 werden nicht drei Photonen mit Δφ´= 0.33 sondern nur ein Photon mit Δφ´= 1 Δφ 3 Δφ Δφ Δφ 3 Δφ 3 Δφ Δφ Δφ Ohne RR Δφ Mit RR Δφ T. Grosch - 29 - Spekulare Reflexion Der Grad der Reflexion ist abhängig vom Einfallswinkel des Lichts (z.B. Glas) und wird am besten mit Hilfe der Fresnel Gleichungen durch den Brechungsindex automatisch berechnet. ρ|| = n2 cos θ1 − n1 cos θ 2 n2 cos θ1 + n1 cos θ 2 ρ⊥ = n1 cos θ1 − n2 cos θ 2 n2 cos θ1 + n1 cos θ 2 1 f r (θ ) = ⋅ (ρ||2 + ρ ⊥2 ) 2 Eine gute Approximation liefert Schlick: f r (θ ) ≈ f 0 + (1 − f 0 )(1 − cos θ ) 5 Mit 2 ⎛n −n ⎞ f0 = ⎜ 1 2 ⎟ ⎝ n1 + n2 ⎠ Über Russisches Roulette mit fr wird entschieden, ob das Photon den gespiegelten oder den gebrochenen Pfad weiterverfolgt Das Photon wird nicht gespeichert f r (θ ) 1 − f r (θ ) Auch hier wird der Lichtstrom unverändert gelassen, beim farbigem Glas kann man umfärben T. Grosch - 30 - 15 Absorption Ein Photon speichert immer den einfallenden Lichtstrom Daher werden auch die absorbierten Photonen gespeichert Die Gewichtung mit der BRDF kommt später bei der Darstellung – Günstiger für die Darstellung (siehe später) T. Grosch - 31 - Speicherung der Photonen In der Photon Map werden alle Photonen gespeichert Während des Photon Tracings werden nur diejenigen Photonen gespeichert, gespeichert die auf diffuse Oberflächen treffen Zur Berechnung der Leuchtdichte an einem Punkt muß praktisch die “Dichte” der Photonen bestimmt werden – Daher werden Nachbarschaftsbeziehungen zwischen den Photonen benötigt. Eine effiziente Speicherung ist daher sehr wichtig! – Auch der Speicherplatzverbrauch sollte Berücksichtigung finden T. Grosch - 32 - 16 Datenorganisation Wir haben zwei wichtige Anforderungen an die Datenstruktur Eine der besten Datenstrukturen für unsere Zwecke ist ein kd-Tree – Die n-nächstgelegenen Photonen müssen schnell gefunden werden können – Ein bestimmtes Photon wird im Durchschnitt in O(log n) gefunden – Sie muss speichereffizient sein – Die k nächsten werden dann in O(k+log n) gefunden! Übliche Datenstrukturen wie z.B. ein Octree sind nicht gut geeignet da die Photonen geeignet, hochgradig ungleichmäßig verteilt sind T. Grosch - 33 - kd Tree Im Prinzip ist dies ein binärer Suchbaum in k Dimensionen Die Erzeugung eines solchen Baumes ist relativ einfach – Man sucht die Raumachse mit der größten Ausdehnung – Entlang dieser Achse werden alle Photonen sortiert – Das “mittlere” Photon wird ein neuer Knoten im Baum – Alle “kleineren Photonen” kommen in den linken Teilbaum, alle größeren entsprechend in der rechten – Dieses Verfahren wird nun rekursiv auf beide Teilbäume angewendet Der so erzeugte Baum ist nicht vollständig, aber die Höhe ist log(n) T. Grosch - 34 - 17 Kd Tree Beispiel 1 1. Achse mit maximaler Ausdehnung finden 2. Median finden 3 Datenmenge aufsplitten 3. 4. Rekursiv die Operationen 1 bis 3 mit den beiden neuen Teilmengen durchführen 6 2 3 4 2 5 6 3 X-Achse 5 1 4 Das alles funktioniert fast genauso im k-dimensionalen Raum T. Grosch - 35 - Kd Tree für Photonen in Cornell Box n Photonen Top n/4 Photonen Top-Left-Left n/2 Photonen Top-Left n/8 Photonen Top-Left-Left-Right T. Grosch - 36 - 18 Speicherplatz Ein Photon wird repräsentiert durch float position[3] unsigned char theta, phi float power[3] short plane – // // // // Position Einfallsrichtung* Lichtstrom supp. plane kd => insgesamt 28 byte pro Photon Die Winkel Theta and Phi werden mit Hilfe einer look-up table komprimiert gespeichert Keine Child-Pointer, da kd Tree als Heap organisiert werden kann (siehe H.W. Jensen: Realistic Image Synthesis using Photon Mapping) (* für nicht-diffuse Materialien und Ausschluß „falscher“ Photonen (siehe Bias Folie)) T. Grosch - 37 - Zwei sind besser als eine Es ist sehr sinnvoll zwei getrennte Photon Maps zu verwenden: eine globale Photon Map und eine Caustic Map p – Die globale Photon Map enthält relativ wenige Photonen und wird so erzeugt wie beschrieben – Die Caustic Map allerdings sollte extrem viele Photonen enthalten, aber nur diejenigen, deren Pfad die Form LS*D hat, also mindestens einmal spekular reflektiert wurden Zusätzlich sollten diese Photonen auch nur in Richtung spekularer Flächen versendet werden, um Rechenzeit zu sparen – T. Grosch - 38 - 19 Caustic-Map Φ Glaskugel Normales Photon d Caustic-Photonen werden ebenfalls auf diffusen Objekten abgespeichert. T. Grosch - 39 - Second Pass Rendern des Bildes Auswertung der Photon Map T. Grosch - 40 - 20 Radiance Estimate Durch die Photonen auf einer Oberfläche können wir die einfallende Beleuchtungsstärke - bzw. bzw gewichtet mit der BRDF die ausfallende Leuchtdichte schätzen Die Photonen haben alle diskrete Lichtstromwerte Hierzu wird um den untersuchten Punkt eine Kugel mit Radius r aufgespannt und alle Photonen eingesammelt Oder: die Anzahl der Photonen N wird vorgegeben und der dazugehörige Radius r ermittelt. Sie sind über die Flächen unterschiedlich t hi dli h di dicht ht verteilt. t ilt 1 N Lr (x,ω o ) ≈ 2 ∑ f r (x,ω p ,ω o )Δφ p (x,ω p ) πr p=1 T. Grosch - 41 - Radiance Estimate Um die reflektierte Leuchtdichte zu ermitteln, müssten wir folgende Gleichung lösen Lr (x,ω o ) = ∫ f r (x,ω i ,ω o )Li (x,ω i )cos θdω i Ω Dies wird mit Hilfe der Photon Map bestimmt durch: Lr (x,ω o ) ≈ 1 N ∑ f (x,ω p ,ω o )Δφ p (x,ω p ) πr 2 p=1 r Zu einem beliebigen g Punkt x suchen wir die maximal n nächsten Photonen (und damit den Radius r) Der Lichtstrom aller gefundener Photonen wird aufsummiert und durch die Fläche in der sie liegen geteilt T. Grosch - 42 - 21 Radiance Estimate Nur direktes Licht, ca. 30 ca 30.000 000 Photonen 1 diffuse Reflexion, ca. 40 ca 40.000 000 Photonen 2 diffuse Reflexionen, ca 45 ca. 45.000 000 Photonen T. Grosch - 43 - Suchradius r=1 r=2 r=4 r=8 Rauschen Detailverlust T. Grosch - 44 - 22 Darstellung des Bildes Es wäre möglich die Photon Map direkt zur Darstellung zu verwenden, das würde aber sehr fleckige/verrauschte Bilder liefern. Wozu dann eigentlich die Photonen? – – Wir verwenden die Photon Map für Kaustiken und für die Approximation des (einfallenden) indirektens Lichts Für das direkte Licht und Spiegelungen greifen wir auf Path Tracing oder Final Gathering zurück Path-Tracing T. Grosch - 45 - Die Rendering Equation Eigentlich wollen wir diese Gleichung lösen v Lr ( x,ω ) = v v v v v v ∫π f ( x,ω',ω) ⋅ L ( x,ω') ⋅ (ω'on) ⋅ dω' r i 2 wir i kö können di diese iin d dreii T Teile il trennen, di die wir i einzeln lösen können (direktes Licht) = v v v v v v ∫π f ( x,ω',ω) ⋅ L ( x,ω') ⋅ (ω'on) ⋅ dω' r i ,l 2 (caustics) v v v v v v + ∫ f r ( x, ω' ,ω ) ⋅ Li ,c ( x, ω') ⋅ (ω'on ) ⋅ dω' (mult. diffus) v v v v v v + ∫ f r ( x, ω' ,ω ) ⋅ Li ,d ( x,ω') ⋅ (ω'on ) ⋅ dω' 2π r Li ,l ( x, ω ') r Li ,c ( x, ω ') r Li ,d ( x, ω ') 2π Direktes Licht der Lichtquelle Caustic – indirekte Beleuchtung der Lichtquellen über Spiegelung/Transmission Indirekte Beleuchtung der Lichtquellen, mindestens einmal diffus reflektiert. T. Grosch - 46 - 23 Rendern aber wie? Es gibt sehr viele Möglichkeiten wie man das Bild rendern kann, aber eine der effizientesten ist es einen leicht modifizierten Path Tracer zu verwenden. Die Vorgehensweise ist zu Beginn ganz “normal”. Wir schießen n Strahlen durch jedes Pixel und mitteln danach die Ergebnisse Wir unterscheiden fortan zwischen einer exakten und einer ungefähren Berechnung. Eine ungefähre Berechnung reicht immer dann dann, wenn der aktuelle Strahl nicht mehr viel zum Gesamtergebnis beiträgt! T. Grosch - 47 - Wie wird berechnet? Exakt Approximation Direktes Licht Monte Carlo Global Map Spekular Monte Carlo Monte Carlo Kaustik Caustic Map Global Map Mehrfach diffus Monte Carlo Global Map T. Grosch - 48 - 24 Schnellste Variante Durch das Pixel wird ein Strahl verschossen Die globale Photon Map wird ausgewertet Falls eine Caustic Map verwendet wird – Die Caustic Map wird ausgewertet und addiert Keine rekursiven Aufrufe oder Strahlen (nur bei nicht-diffusen Flächen) Schnelles Preview T. Grosch - 49 - Beispiel: Final Gathering Durch das Pixel werden wenige Strahlen verschossen Für jeden Schnittpunkt wird: – D Das di direkte kt Li Licht ht b berechnet h t (viele Samples) – Die Caustic Map ausgewertet – Der Halbraum durch viele Strahlen abgetastet, wobei die Photon Maps an den Trefferpunkten ausgewertet werden. – Spiegelung wird rekursiv weiterverfolgt – Alle Anteile werden summiert und gem. der BRDF gewichtet. T. Grosch - 50 - 25 Beispiel (Path Tracing) Durch das Pixel werden viele Strahlen verschossen Für jeden Schnittpunkt wird: – Das direkte Licht berechnet (z.B. 1 Sample) – Die Caustic Map ausgewertet ein transparentes Objekt beim Schattenfühler muss dann als Schatten interpretiert werden – Per Russischem Roulette diffus (importance sampl sampl.)) oder spiegelnd weiterverfolgt Beim indirekten Licht werden dann die Photon Maps ausgewertet T. Grosch - 51 - Vergleich mit/ohne Final Gather Direkte Visualisierung der Photon Map, einige Sekunden Final Gathering mit 150 Strahlen, mehrere Minuten (gleiche Anzahl Photonen!) T. Grosch - 52 - 26 Direkte Visualisierung mit Caustic Map Kein K i Fi Finall G Gathering, th i aber b viele i l Photonen, daher Flecken nicht mehr so deutlich sichtbar Neues Problem: Fehler an den Ecken T. Grosch - 53 - Verbesserungsmöglichkeiten Durch das Verwenden einer Kugel zum Einsammeln der Photonen werden an den Ecken viele “ungültige Photonen” mitgenommen. mitgenommen – Die Leuchtdichte wird somit evtl. überschätzt Stattdessen kann man die Kugel entlang der Normalen stauchen um die Anzahl der falschen Photonen zu reduzieren – Jetzt bekommt man nur “gültige” Photonen – Allerdings überschätzt man die Fläche, auf der Photonen liegen – Kanten können somit zu dunkel werden T. Grosch - 54 - 27 Bias Typen Proximity Boundary Topological Occlusion • Proximity Bias: Details werden gefiltert • Verbesserung: Filterung mit höherem Gewicht für nähere Photonen • B Boundary d Bi Bias: Fläche Flä h wird i d überschätzt üb hät t Æ Kanten K t werden d zu dunkel d k l • Topological Bias: Fläche wird unterschätzt • Occlusion Bias: Light leaks • Nur Photonen mit ähnlichen Normalen mit einbeziehen; Photonen die in Richtung Oberflächennormale fliegen, können ausgeschlossen werden Abschließende Bewertung Photon Mapping ermöglicht komplizierte Effekte wie Kaustiken und transparente Materialien qualitativ hochwertig g und schnell zu berechnen Photon Mapping ist relativ einfach zu implementieren da ein vorhandener Ray- oder Pathtracer erweitert werden kann Photon Mapping liefert bessere Ergebnisse und diese schneller als ein Path Tracer – Dafür Bias durch Radiance Estimate Photon Mapping wird zunehmend von kommerziellen Produkten verwendet. – Auch PovRay beherrscht Photon Mapping T. Grosch - 56 - 28 Termin Raum G29 – 224 Fr, 11.6., 11 – 15 Uhr T. Grosch - 57 - 29