Richtiger Umgang mit diffusen + Brechungs- + Reflexionsstrahlen bei der Pfadverfolgung?


7

Nehmen wir an, wir verfolgen den Pfad und es gibt ein Objekt, das eine gewisse diffuse Reflexion und eine gewisse spiegelnde Reflexion aufweist.

Was ist der beste oder richtige Weg, um damit im Pfad-Tracer umzugehen?

Bei Betrachtung von smallpt ( http://www.kevinbeason.com/smallpt/ ) ist es nicht möglich, dass Objekte beides haben, sondern dass Materialien entweder diffus oder spiegelnd sind.

Ich habe einen anderen Pfadverfolgungscode gesehen, der eine Zufallszahl würfelt, um den Weg zu wählen, wobei die Luminanz des diffusen und spiegelnden Reflexionsvermögens als Gewichtung in der Zufallsrolle verwendet wird.

Ich habe auch Code gesehen, der in beiden Fällen beiden Pfaden folgt und divergiert und die Ergebnisse summiert, wobei jeder rekursive Strahl mit seinem entsprechenden Reflexionsvermögen multipliziert wurde.

Ich habe gesehen, wie die Brechung ähnlich wie oben behandelt wurde.

Gibt es eine physikalisch korrekte Möglichkeit, mit diesen Situationen umzugehen?



Die Lichtanteile, die brechen und reflektieren, hängen vom Einfallswinkel ab. Möchten Sie dies berücksichtigen? Zum Beispiel die Fresnel-Gleichungen oder die Schlick-Näherung, wenn Sie die Polarisation ignorieren möchten.
Trichoplax

Antworten:


7

Machen wir einen Schritt zurück. Wenn Sie die Pfadverfolgung durchführen, führen Sie eine Monte-Carlo-Integration durch. Was bedeutet das? Sie versuchen zu lösenf(x)dxdurch Probenahme. Die Monte-Carlo-Integration spricht für eine ausreichend großen:: 1ni=0nf(xi)f(x)p(x)dx

Wenn wir stattdessen summieren f(xi)p(xi) wir bekommen 1ni=0nf(xi)p(xi)f(x)dx. Nun deinf(x) ist die Rendering-Gleichung und Sie haben eine Möglichkeit, die Rendering-Gleichung zu approximieren.

Nachdem wir uns nun auf derselben Seite mit den Grundlagen befinden, wollen wir uns überlegen, was Sie tun. Sie erzeugen einen Lichtweg, der zu einer der Proben wirdf(xi)p(xi). Dazu modellieren Sie die Wechselwirkung des Lichts mit der Oberfläche bei jedem Schritt entlang des Pfades. Und Sie aktualisieren immer Ihre aktuelle Pfadwahrscheinlichkeitp(xi).

Was ist nun der richtige Weg, um mit einem Material umzugehen, das mehrere verschiedene Möglichkeiten hat, wie sich ein Strahl bewegen kann? Es gibt keinen richtigen Weg. Der einzige wichtige Teil ist, dass Ihre Werten, f(xi) und p(xi) bleib korrekt.

Wenn Sie den Pfad divergieren und zwei Strahlen erzeugen, müssen Sie die Anzahl erhöhen nder Gesamtproben entsprechend, weil Sie jetzt zwei Proben gemacht haben. Behandeln Sie dann beide Pfade so, als wären sie von Anfang an getrennt.

Wenn Sie nur einen Weg fortsetzen möchten, können Sie dies mit dem russischen Roulette tun. Definieren Sie drei Intervalle (eine übliche Methode besteht darin, die Intervalle als Partition der Zahlen zwischen 0 und 1 auszuwählen). Die relativen Größen dieser Intervalle müssen proportional zum Material sein. Der schwierige Teil ist, wie Sie dies entwerfen. In meiner Klasse haben wir ein Zahlenreflexionsvermögen definiertρ. Wir ziehen eine Zufallszahl zwischen 0 und 1, wenn sie niedriger als istρDer Weg endet. Sonst denken wir nach. Das BRDF achtet darauf, den spiegelnden gegenüber dem diffusen Teil zu gewichten, wenn Sie genügend Proben machen.

Natürlich können Sie dies durch Wichtigkeitsstichproben verbessern, und hier haben Sie wahrscheinlich Probleme. Für ein sehr spiegelndes Oberflächendesign eine zufällige Verteilung, die nur mehr Richtungen aus der spiegelnden Reflexionsrichtung zieht. Die Ruhe wird diffus sein. Ich habe nicht genug Erfahrung mit dem Bulding von Pfad-Tracern, um Ihnen beim Entwerfen eines zu helfen, aber Ihre Quellen werden hier wahrscheinlich etwas haben.

Wichtig ist hier noch einmal: Entwerfen Sie es so, dass Sie wissen, wie wahrscheinlich eine bestimmte Richtung ist, und behalten Sie dann Ihre p(xi) Sie können also am Ende durch diese dividieren und eine korrekte Monte-Carlo-Schätzung erhalten.

TL; DR Es gibt keinen richtigen Weg. Es ist NUR wichtig, die Wahrscheinlichkeiten von Proben zu berücksichtigen.

Ich hoffe, ich habe den Punkt Ihrer Frage nicht ganz übersehen.

Ergänzung: Monte-Carlo-Sampling konvergiert immer mit unendlichen Samples gegen den korrekten Wert, solange Sie die Gewichtung nach Wahrscheinlichkeit korrigieren. Dies bedeutet, dass selbst wenn Sie eine völlig dumme Methode zum Generieren von Samples verwenden, dies funktioniert, wenn Sie dies lange genug tun. Vielleicht nicht in Ihrem Leben oder dem Ihrer Urenkel, aber es wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.