Categories: Sonstiges

Einsteigerguide: Was ist Subsurface Scattering?

Subsurface Scattering simuliert halbtransparente Objekte, in die Lichtstrahlen eindringen, umherhüpfen und anschließend an einem anderen Ort austreten. Viele organische und anorganische Materialien sind nicht direkt an der Oberfläche völlig undurchsichtig, so dass Licht nicht einfach von der Oberseite abprallt. Stattdessen dringt auch etwas Licht tief in die Hautoberfläche ein und streut sich im Inneren, nimmt die Farbe des Inneren an und tritt an einer anderen Stelle wieder heraus. Menschen- oder Tierhaut, die Schale von Trauben, Tomaten, Früchten, Wachs etc. haben alle ein Subsurface Scattering (SSS – deutsch: unterirdische Streuung) und die eine fotorealistische Abbildung nicht erreicht werden kann.

Es ist wichtig zu verstehen, dass Subsurface Scattering und Diffusion ein und dasselbe ist. Der Unterschied besteht darin, inwieweit das Licht unter der Oberfläche diffundieren kann, bevor es absorbiert oder wieder abgegeben wird.

Wie es funktioniert.

Die tatsächliche Berechnung des Lichtweges unter der Oberfläche eines Objektes ist nicht sinnvoll. Aber es hat sich gezeigt, dass es nicht notwendig ist, dies zu tun, und dass man einen anderen Ansatz wählen kann.

Blender z.B. berechnet SSS in zwei Schritten:

  1. Zuerst wird die Bestrahlungsstärke oder Helligkeit der Oberfläche berechnet, sowohl von der Vorderseite des Objekts als auch von seiner Rückseite. Dies ist so ziemlich das Gleiche wie in einem normalen Rendering. Ambient Occlusion, Radiosity, die Art des diffusen Shaders, die Lichtfarbe etc. werden berücksichtigt.
  2. Im zweiten Schritt wird das endgültige Bild gerendert, aber jetzt ersetzt der SSS-Shader den diffusen Shader. Anstelle der Lampen wird die berechnete Lightmap verwendet. Die Helligkeit eines Oberflächenpunktes ist der berechnete „Durchschnitt“ der Helligkeit seiner Umgebungspunkte. Abhängig von Ihren Einstellungen kann die gesamte Oberfläche berücksichtigt werden und es ist etwas komplizierter, als nur den Durchschnitt zu berechnen, aber lassen Sie sich von der zugrundeliegenden Mathematik nicht verwirren.

Lassen Sie uns stattdessen thematisieren, was SSS mit einem bestimmten Lightpoint macht.

Wenn Sie das SSS aktivieren, wird das Licht auf eine größere Fläche verteilt. Die Größe dieses Bereichs ist abhängig von den Radiuswerten. Anstatt alle Farben mit dem gleichen Betrag zu verteilen, können Sie für jede der RGB-Farben unterschiedliche Radiuswerte wählen.

Nachfolgend finden Sie eine Demo zum SSS von cgvirus:

For privacy reasons YouTube needs your permission to be loaded. For more details, please see our Datenschutzerklärung.

Wenn Sie einen sehr großen Radiuswert für eine Farbe verwenden, ist Ihr Licht gleichmäßig über das gesamte Objekt verteilt.

Hinweis zum Streuradius: Aufgrund der Art und Weise, wie diese Streuung berechnet wird, werden Sie bei Verwendung von Werten mit großen Radien Saumartefakte bemerken, die als Komplementärfarbe zur vorherrschenden Farbe der Streuung erscheinen. Eine Möglichkeit, diesen Effekt zu verringern, besteht darin, mehrere Durchgänge mit unterschiedlichen Streurodioden zu verwenden und zu mitteln.

SSS in Blender aktivieren.

  • Aktivieren Sie SSS, indem Sie auf den Button Subsurface Scattering klicken.
  • Oben sind verschiedene Presets zugänglich. Wenn Sie eine Voreinstellung auswählen, werden die Radiuswerte, der RGB-Radius und die IOR für Sie eingestellt. Die restlichen Optionen sind nicht gesetzt (da sie meist von der Größe Ihres Objekts abhängig sind).

Subsurface Scattering benötigt kein Raytracing. Da es jedoch vom einfallenden Licht und den Schatten abhängig ist, benötigen Sie eine geeignete Schattenberechnung (die eine Raytracing-Funktion benötigt).

Optionen.

Die numerischen Slider steuern, wie das Licht gestreut wird:

IOR.

Der Index of Refraction bestimmt den Falloff des einfallenden Lichts. Höhere Werte bedeuten, dass das Licht schneller abfällt. Der Effekt ist sehr subtil und verändert die Verteilungsfunktion nur geringfügig. Bei der Untersuchung vieler verschiedener Materialien wurden Werte von (1,3 bis 1,5) festgestellt, die für die meisten Materialien gut funktionieren.

Scale.

Die Größe Ihres Objekts in Blender-Einheiten, über die der Streueffekt erfolgen soll. Ein Scale von 1,0 bedeutet 1 Blender-Einheit ist gleich 1 mm, ein Scale von 0,001 hingegen bedeutet 1 Blender-Einheit ist gleich einem Meter. Wenn Sie herausfinden möchten, welchen Scale-Wert Sie in Ihrer Szene verwenden sollen, nutzern Sie einfach die Formel: (Größe in Blender-Einheiten) / (reale Größe in Millimetern) = Scale.

Scattering-Farbe (Albedo).

Albedo ist die Wahrscheinlichkeit, dass Licht ein Scattering-Event übersteht. Wenn Sie an Scattering als Filter denken, ist dies die Höhe des Filters. Sie wird mit der Oberflächenfarbe multipliziert. In der Praxis ist dies nicht intuitiv. Es sollte das gleiche sein wie die Oberflächenfarbe, jedoch hat die Änderung dieses Wertes unintuitive Auswirkungen auf den Scattering-Effekt:

Je dunkler die Farbe, desto mehr Licht wird gestreut. Ein Wert von 1 führt zu keinem Scattering-Effekt.

Wenn Sie es also auf grün setzen, erscheinen die beleuchteten Bereiche des Objekts grün und grün wird nur wenig gestreut. Daher erscheinen die dunkleren Bereiche in rot und blau. Sie können die unterschiedlichen Streuungen kompensieren, indem Sie einen größeren Radius für die Farbe einstellen.

RGB Radius.

Dies ist nicht der Radius des Subsurface Scatterings, sondern die durchschnittliche Weglänge zwischen den Scattering-Events. Während das Licht durch das Objekt wandert, springt es umher und tritt anschließend an einem anderen Punkt aus der Oberfläche aus. Dieser Wert entspricht der durchschnittlichen Länge, die das Licht zwischen den einzelnen Bounces zurücklegt. Je länger die Weglänge ist, desto weiter darf das Licht streuen. Dies ist die Hauptquelle für die wahrgenommene „Scattering-Farbe“ eines Materials. Ein Material wie die Haut hat einen höheren roten Radius als grün und blau. Das Subsurface Scattering ist die Steuung des Lichts unter der Oberfläche. Sie steuern, wie weit sich das Licht ausbreitet, um ein bestimmtes Ergebnis zu erzielen.

Blend.

  • Farbe: Hiermit wird gesteuert, wie stark die RGB-Option die diffusen Farben und Texturen moduliert. Beachten Sie, dass auch bei einer Einstellung dieser Option auf 0,0 die RGB-Option das Scattering-Verhalten beeinflusst.
  • Textur: Wie stark die Oberflächenstruktur mit dem Shading verschwimmt.

Scattering-Gewicht.

  • Front: Faktor zur Erhöhung oder Verringerung des Front-Scatterings. Wenn Licht durch die Vorderseite des Objekts eintritt, wie viel wird absorbiert oder hinzugefügt? (Normalerweise 1,0 oder 100%).
  • Back: Faktor zur Erhöhung oder Verringerung des Back-Scatterings. Licht, das von hinten auf ein Objekt trifft, kann den ganzen Weg durch das Objekt gehen und auf der Vorderseite des Objekts herauskommen. Dies geschieht vor allem bei dünnen Gegenständen, wie Händen und Ohren.

Fehler.

Dieser Parameter steuert, wie genau der Algorithmus die umgebenden Punkte abtastet. Wenn man diesen bei 0,05 belässt, sollte man Bilder ohne Artefakte erhalten. Es kann höher eingestellt werden, um das Rendern zu beschleunigen, möglicherweise mit Fehlern.

Die Einstellung auf 1.0 ist eine gute Möglichkeit, schnell eine Preview der Arbeit mit Fehlern zu erhalten.

Entwicklung eines eigenen SSS-Materials.

Der traditionale Ansatz.

Ein häufigerer, aber weniger intuitiver Ansatz ist die Verwendung von „Layering“. Dies ist eine vereinfachte Version des Layering-Ansatzes:

  • Setzen Sie die SSS-Farbe auf einen Wert Ihrer Wahl, normalerweise die vorherrschende Farbe des Objekts. Wenn Sie verschiedene Radien für die Farben verwenden möchten, machen Sie es nicht zu dunkel.
  • Stellen Sie den Scale-Faktor ein. Wenn Sie viewl Transzulenz sehen wollen, benötigen Sie kleine Objekte oder großformatige Werte.
  • Stellen Sie die Radiuswerte ein.
  • Passen Sie die Helligkeit mit den Werten Vorne und Hinten an.

Ein intuitiverer Ansatz.

  • Stellen Sie die Scattering-Farbe auf 0,5 ein.
  • Stellen Sie das Frontgewicht auf 2,0 ein.
  • Stellen Sie den Scale-Faktor basierend auf der Größe Ihres Objekts in Bezug auf die Szene ein. Wenn Sie viel Transzulenz sehen wollen, benötigen Sie kleine Objekte oder großformatige Werte.
  • Stellen Sie die Radiuswerte entsprechend ein.

Wir hoffen, dass wir Ihnen einen ersten, kleinen Überblick über das Subsurface Scattering geben konnten. Wenn Sie noch Fragen oder Anregungen haben sollten, hinterlassen Sie uns unten einen Kommentar.

Vielen Dank für Ihren Besuch.

3DMaster