Demo

Atmosphärische Streuung in The Blacksmith

TORBJORN LAEDRE / UNITY TECHNOLOGIESContributor
May 28, 2015
Streukopf
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Schon früh in der Planungsphase von The Blacksmith wussten wir, dass wir eine atmosphärische Streulösung wollten, die uns etwas mehr Details und Kontrolle als die eingebauten Nebeloptionen bieten würde. Wir wollten vor allem den Effekt der Luftperspektive in einigen der weitläufigeren Aufnahmen des Films hervorheben.

atmosphärisches Streuungsbild

Als wir begannen, an einer Streulösung für das Projekt zu arbeiten, implementierten wir zunächst die Simulationsmodelle, die in mehreren Veröffentlichungen von Tomoyuki Nishita[1] vorgestellt wurden, und spielten mit ihnen herum. Nach einigen Experimenten und Prototypen verschiedener Aufnahmen entschieden wir schließlich, dass es besser wäre, ein Modell anzustreben, das eine umfassende künstlerische Kontrolle für jede einzelne Einstellung des Kurzfilms ermöglicht. Wir wollten eine Lösung, die es uns ermöglicht, uns den primären Elementen der physischen Modelle anzunähern, die uns aber auch erlaubt, bei Bedarf alle Regeln zu brechen. Außerdem sollte die Lösung keine großen Auswirkungen auf die Laufzeit des Kurzfilms haben, und wir wollten die meisten Berechnungen pro Vertex und nicht pro Pixel durchführen können.

Wir haben uns zum Ziel gesetzt, die kombinierten Effekte der Rayleigh- und Mie-Streuung aus den physikalischen Modellen zu emulieren. Wir haben auch ein drittes Element hinzugefügt, das verschiedene Arten von Streuungseffekten in geringer Höhe darstellt und als Höhenstreuung bezeichnet wird. Eine weitere wichtige Abweichung von den physikbasierten Modellen war, dass wir uns entschieden haben, weiterhin HDR-Himmeltexturen zu verwenden, anstatt den Himmel und die Wolken prozedural zu generieren. Der offensichtliche Nachteil dabei ist, dass die Einrichtung einer dynamischen Tageszeit (die wir für The Blacksmith nicht brauchten) etwas komplizierter wird, während der Hauptvorteil darin besteht, dass wir die volle künstlerische Kontrolle über den Himmel behalten.

Rayleigh-Streuung


Die Rayleigh-Streuung des Sonnenlichts in der Atmosphäre ist der Grund für den hellen blauen Farbton des Tageshimmels und die Rötung der Sonne und des Horizonts bei Sonnenaufgang und Sonnenuntergang.

In unserer Emulation lassen wir die Sonne selbst weg und konzentrieren uns nur auf die Modellierung der Farben und der Auslöschung, die durch die Ein- und Ausstrahlung des Sonnenlichts entsteht. Eine visuelle Darstellung der Sonne kann entweder in der Himmelstextur, als Teil der Mie-Streuung, als Sonnenfackel-Sprite oder in einer beliebigen Kombination aus diesen hinzugefügt werden. Im einfachsten Fall ist die Dichte der Rayleigh-Streuung eine glorifizierte Exponentialfunktion, die durch die Rayleigh-Phasenfunktion moduliert wird. Wir haben jedoch eine zusätzliche Kontrolle über die Daten, die in das System eingegeben werden, und die Daten, die wir aus dem System extrahieren. Da wir nicht modellieren, wie sich Licht verschiedener Wellenlängen durch die Atmosphäre bewegt, sind die von uns berechneten Dichten skalare Werte. Wir verwenden eine HDR-Farbrampe, um verschiedene Farbtöne des Streulichts am Horizont und im Zenit zu berücksichtigen, und verwenden eine Funktion, die die Entfernung berücksichtigt, um den endgültigen Farbton zusammenzustellen.

Beispiel für Rayleigh-Streuung
Rayleigh-Beitrag in verschiedenen Streukonfigurationen.

Mie Scattering

Die Mie-Streuung des Sonnenlichts in der Atmosphäre trägt zu dem hellen Halo um die Sonne, dem grau-weißen Aussehen der Wolken und dem Dunst bei, der über verschmutzten Städten zu sehen ist. Im Gegensatz zur Rayleigh-Streuung, bei der das Licht nahezu gleichförmig gestreut wird, ist die Mie-Streuung stark vorwärtsgerichtet.

In unserer Emulation lassen wir die Mie-Streuung hauptsächlich den Dunst und den Halo um die Sonne darstellen. Daher tönen wir sie fast immer, um die Tatsache auszugleichen, dass unsere Rayleigh-Emulation die Sonne ignoriert. Technisch gesehen sind unsere Rayleigh- und Mie-Funktionen sehr ähnlich, wobei der wesentliche Unterschied in der Phasenfunktion besteht, die auf den Ausgang angewendet wird. Wie viele andere Implementierungen verwenden wir die Henyey-Greenstein-Streufunktion zur Steuerung der Anisotropie - oder Vorwärtsrichtung - der Mie-Streuung.

Beispiel für Streumie
Mie-Beitrag in verschiedenen Streukonfigurationen.

Diejenigen, die die Forschungspapiere gelesen haben, könnten sich über unsere Namenswahl lustig machen, da wir uns bei der Auswahl der Emulationen gewisse "Freiheiten" nehmen. Wir haben früh festgestellt, dass die Leute im Allgemeinen den Namen Rayleigh verwenden, wenn sie "Himmelsstreuung" beschreiben, und Mie, wenn sie "Sonnendunst" beschreiben, also haben wir beschlossen, diese Namen beizubehalten, auch nachdem die Implementierungsmodelle von den physikalischen Modellen vereinfacht wurden.

Höhenstreuung

Das Element Höhenstreuung stellt einen Mischmasch aus verschiedenen Streueffekten in geringer Höhe dar, darunter Strahlungsnebel, Bodendunst und tiefliegende Wolken.

Unsere Implementierung der Höhenstreuung ist recht einfach; die Höhendichte wird aus einer definierten Meereshöhe und einem Höhenabfall berechnet. Dann wird die abstandsbasierte exponentielle Dichte skaliert und das Ganze in der gewünschten Farbe eingefärbt.

Bild für Streuhöhe
Höhenbeitrag in verschiedenen Streuungskonfigurationen.

Streuung der Okklusion

Da unser Streuungsbeitrag in erster Linie dadurch entsteht, dass das Sonnenlicht zum Beobachter hin und vom Beobachter weg gestreut oder von Teilchen auf dem Weg zum Beobachter absorbiert wird, ist es logisch, dass etwas passieren muss, wenn Objekte das Sonnenlicht blockieren.

Um solche Fälle zu behandeln, gehen wir mit einem Strahlenmarsch durch die kaskadierte Schattenkarte des gerichteten Lichts und akkumulieren die Menge der Okklusion entlang des Strahls in einem herunterskalierten, außerhalb des Bildschirms liegenden Puffer. Bei der Anwendung der Streuung auf das Ausgabepixel wird diese Okklusionskarte mit einem kantenbewussten Filter hochgerechnet und bei der Zusammenstellung der endgültigen Farbe für das Pixel verwendet. In dieser Kombinationsphase haben wir ein kleines Problem: Da unsere Lösung nur aus einer einzigen Streuung besteht, können wir nicht einfach das gesamte einfallende Licht ausblenden, da dies zu einem sehr dunklen und unnatürlichen Bild führen würde. Außerdem wollten wir die Lösung nicht erweitern, um die komplexere und teurere Mehrfachstreuung zu bewältigen. Letztendlich bestand die Lösung für uns darin, einen "indirekten Faktor" zu erfinden, mit dem man explizit einen bestimmten Prozentsatz der Streuung festlegen konnte, der als indirekt statt als direkt zu behandeln war.

Streuokklusion
Unverfälschte Okklusion in verschiedenen Streuungskonfigurationen.

Alles zusammenfügen

Jetzt müssen nur noch die verschiedenen Elemente kombiniert werden, um das endgültige Bild zu erstellen. Wenn man die Rayleigh-, Mie- und Height-Elemente addiert, erhält man eine schöne Komposition der verschiedenen Streufarben.

Streubild
Kombinierte Rayleigh-, Mie- und Höhenstreuung.

Als Nächstes müssen wir sicherstellen, dass wir den Okklusionspuffer gut nutzen. Wir verwenden verschiedene Parameter für die Stärke der Verdeckung, die auf direkte, indirekte, Wolken- und Himmelsstreuung angewendet werden.

Verdeckte Streuung
Kombinierte und verdeckte Streuung.

Schließlich bleibt nur noch, die Streuung mit dem gerenderten Bild zu mischen. Wir verdunkeln das übertragene Bild um die gesamte akkumulierte Extinktion und hellen es um die gesamte akkumulierte In-Streuung auf. Daraus ergibt sich die endgültige Zusammensetzung für unsere Beispielszenen.

Streuung der endgültigen Zusammensetzung
Endgültige Zusammensetzung.

Wir haben die atmosphärische Streuung in ein separates Projekt extrahiert, das Sie im Asset Store erhalten können. Neben dem gesamten Code und den Shadern, aus denen die Lösung besteht, enthält das Projekt auch alle Konfigurationsvorgaben, die zur Erzeugung der Bilder in diesem Beitrag verwendet wurden. Vergessen Sie nicht, in der mitgelieferten Readme-Datei nachzulesen, was die verschiedenen Konfigurationsoptionen bedeuten.

Referenzen:
[1]: Darstellung der Erde unter Berücksichtigung der atmosphärischen Streuung
https://nishitalab.org/user/nis/cdrom/sig93_nis.pdf

[1]: Methode zur Darstellung der Himmelsfarbe unter Berücksichtigung der Mehrfachstreuung
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.75.5595&rep=rep1&type=pdf

[1]: Darstellung von Wolken unter Berücksichtigung von mehrfacher anisotroper Streuung und Himmelslicht
https://www.researchgate.net/publication/220720838_Display_of_Clouds_Taking_into_Account_Multiple_Anisotropic_Scattering_and_Sky_Light

Der HDR-Himmel im Paket stammt von NoEmotionHDRs (Peter Sanitra) / CC BY-ND 4.0. Unverändert verwendet.