Blender Dokumentation: SubSurface-Scattering
Diese Seite bezieht sich auf Blender v2.44 |
Viele organische und nichtorganische Stoffe sind nicht vollständg opak (lichtundurchlässig). Das Licht kann in diese Stoffe eindringen, und verteilt sich [scattering] innerhalb des Objektes. Teilweise wird das Licht absorbiert, teilweise tritt das Licht wieder aus. Die Reichweite und die Verteilung des Lichtes ist farbabhängig. Das austretende Licht mischt sich dann mit dem Licht, dass direkt von der Oberfläche reflektiert wird.
Menschliche Haut, viele Früchte, Wachs, Gele wie Honig oder Wackelpudding, Jade, Marmor usw. zeigen diesen Effekt sehr deutlich. SubSurface-Scattering (SSS) [Lichtverteilung unter der Oberfläche] wird über ein eigenes Panel in den Material-Buttons (F5) eingestellt. Es beeinflusst nur die diffuse Reflexion, keine spekulären Glanzlichter. Es kann ohne Raytracing berechnet werden.
Wie SSS funktioniert
[Bearbeiten]Blender berechnet das SSS in zwei Schritten:
- im ersten Schritt wird die Helligkeit der Objektoberflächen bestimmt, und zwar sowohl von der Vorderseite als auch von der Rückseite. Für diesen Schritt wird der eingestellte diffuse Shader genommen, also bspw. Lambert oder Oren-Nayar. Ambient-Occlusion und Radiosity werden berücksichtigt, ebenso die Lichtfarbe, die Objektfarbe, Texturen usw. Der Farbumfang ist allerdings zu groß, als das er in einem Jpeg-Bild dargestellt werden könnte (Abbildung 2), außerdem sieht man dort Vorder- und Rückseite zusammen.
- im zweiten Schritt wird das Bild endgültig gerendert, jetzt ersetzt der SSS-Shader aber den diffuse Shader. Anstelle des Lichteinfalles der Lampen wird zur Beleuchtung des Objektes die im ersten Schritt berechnete Oberflächenhelligkeit benutzt. Die Helligkeit eines Oberflächenpunktes ist ein gewichteter "Durchschnittswert" der Helligkeit der Nachbarpunkte. Wobei ein Nachbarpunkt je nach Einstellungen für das SSS durchaus am anderen Ende des Objektes liegen kann.
Um zu verstehen was die verschiedenen Einstellungen auf dem SSS-Panel bewirken, schauen wir uns an, welche Wirkung SubSurface-Scattering auf einen scharf begrenzten Lichtstrahl hat, der schräg auf eine Oberfläche trifft. Um die Situation möglichst einfach zu halten, handelt es sich bei der Lichtquelle um ein Spotlight ohne Falloff (SpotBl=0) und ohne spekuläre Glanzlichter. Die Lichtintensität ist so gewählt, dass die beleuchtete Fläche fast in reinem Weiß erscheint (RGB zw. 0.9 und 1.0) (Abbildung 3a).
- Wird SubSurface-Scattering eingeschaltet, wird der Lichtfleck "verschmiert", und zwar gleichmäßig in alle Richtungen (isotrop) (Abbildung 3b). Die Gesamthelligkeit des Bildes kann dabei gleich bleiben, das hängt aber vom Farbwert des SSS ab.
- Wird die Strecke verlängert, die das Licht im Inneren des Körpers zurücklegt, wird das Licht stärker verteilt (3c). Die Verteilung lässt sich mit dem Brechungsindex des Materials in geringen Grenzen beeinflussen. Ein kleiner Brechungsindex hält das Licht stärker zusammen, ein großer Brechungsindex verteilt es stärker.
- Dabei kann die Weglänge des Lichtes farbabhängig sein. Verteilt sich beispielsweise das grüne Licht gleichmäßig auf der Oberfläche, erscheinen dunkle Bereiche in dieser Farbe, die hellen Bereiche erscheinen komplementärfarbig. Die Lichtstärke wurde in Abbildung 3d erhöht, damit der Effekt deutlicher wird.
Das SSS-Panel
[Bearbeiten]- Mit Klick auf den Subsurface Scattering-Button schalten Sie diese Funktion an bzw. aus.
- Die Drop-Down Box daneben erlaubt die Auswahl einiger Voreinstellungen. Mit den Voreinstellungen werden nur die Radius RGB-Werte, der IOR-Wert und die Farbe im Farbfeld geändert, die übrigen Einstellungen sind davon unabhängig.
Die Voreinstellungen bieten einen guten Ausgangspunkt, um eigene Materialien zu entwickeln. Wenn Sie selbst ein Material entwickeln wollen, gehen Sie am besten in der folgenden Reihenfolge vor:
- Stellen Sie die SSS-Farbe auf einen nicht zu intensiven Wert (leichtes Grau ist am besten), wenn Sie die Farbverteilung am Objekt mit den Radius-Werten noch variieren wollen.
- Stellen Sie den Scale-Faktor ein. Für deutliche Transluzenz-Effekte brauchen Sie kleine Objekte oder relativ große Scale-Faktoren.
- Stellen Sie die Radius-Werte ein. Ein großer Radius-Wert verteilt das Licht dieser Farbe gleichmäßig über die Oberfläche, ein kleiner Radius-Wert lässt die ursprüngliche Farbe, die sich aus der normalen Beleuchtung ergibt, unverändert. Also erscheinen bei hohem Rot-Wert sonst dunkle Bereiche Rot, helle Bereiche erscheinen weniger Rot.
- Passen Sie die Gesamthelligkeit mit den Front- und Back-Werten an.
Einstellungen
[Bearbeiten]- Scale: Hiermit stellen Sie ein, wie groß eine Blender-Einheit in "Wirklichkeit" ist. Dieser Wert skaliert die Radius-RGB-Werte. Ein kleiner Scale-Faktor verteilt das Licht fast überhaupt nicht, der Körper wirkt sehr opak (da der Körper groß ist). Ein großer Scale-Faktor verteilt das Licht stark, der Körper wirkt sehr transluzent (da der Körper klein ist). Bei kleinen Objekten wird der Schatten sehr undeutlich, da er ja durch die interne Lichtleitung aufgehellt wird. Sie sollten diesen Faktor als ersten einstellen, angepasst an die Größe Ihres Objektes.
Scale Faktor: | 0.001 | 0.010 | 0.100 | 1.000 | 10.00 | |
---|---|---|---|---|---|---|
Eine BE entspricht: | 1 m | 10 cm | 1 cm | 1 mm | 0,1 mm | |
- Radius RGB: Mittlere freie Weglänge des Lichtes unter der Oberfläche. Je größer diese ist, desto weiter kann Licht transportiert werden, und desto gleichmäßiger ist die Lichtverteilung.
- IOR: Brechungsindex. Bei Materialuntersuchungen hat sich eine Einstellung von 1.3 bei den meisten Materialien als günstig erwiesen, für Marmor ein Wert von 1.5. Hiermit können Sie die Verteilungsfunktion für das Licht in sehr engen Grenzen beeinflussen. Ein kleiner Brechungsindex hält das Licht stärker zusammen, ein großer Brechungsindex verteilt es stärker.
- Error: Der mögliche Berechnungsfehler. Kleine Error-Werte führen zu großer Genauigkeit bei großer Rechenzeit, ein Wert von 0.05 sollte ein akzeptables Ergebnis liefern. Ein Wert von 1.0 liefert eine z.T. fehlerhafte, dafür schnelle Voransicht. Da Sie vermutlich viele Renderings benötigen um ein gutes Ergebnis zu bekommen, fangen Sie mit einem Wert von 1.0 an.
- Farbauswahlfeld: Die SSS-Farbe hat zwei Auswirkungen:
- Wenn Sie sich den SSS-Shader als eine sehr spezielle Lichtquelle vorstellen, ist dies die Lichtfarbe.
- Außerdem wird dadurch der Scattering-Radius beeinflusst, je dunkler die Farbe, desto stärker wird das Licht verteilt. Enthält die SSS-Farbe bspw. mehr Grün als Blau, wird Grün stärker verteilt als Blau. Mit unterschiedlichen Radius-Werten für die Farben kann man diesen Effekt wieder ausgleichen.
- Der Autor von SSS (Brecht) hat folgendes geschrieben: "Die SSS-Farbe ist schwer zu erklären. Die Formel mit der SSS berechnet wird (BSSRDF) wird von einem physikalischen Modell abgeleitet, das einen Absorptions- und einen Scatteringkoeffizienten besitzt. Aber da diese Parameter nicht intuitiv zu kontrollieren sind, werden sie aus der Farbe und dem Radius berechnet. Der Zusammenhang ist nicht einfach zu interpretieren. Ich würde sagen, dass die SSS-Farbe die Wahrscheinlichkeit bestimmt, mit der Licht absorbiert bzw. verteilt wird wenn es das Material durchquert. Aber da die Verteilung und die Absorption entlang des Radius erfolgt, hängt die Farbe ebenfalls eng mit diesem zusammen.
- Es ist schwer zu sagen, was der Endeffekt auf einen Render ist. Aber wenn man eine Tomate rendert, sollte die SSS-Farbe am besten auf Rot gestellt werden."
- Col: Hiermit stellen Sie ein, wie sehr die Farbe aus dem Farbauswahlfeld berücksichtigt werden soll.
- Tex: Wie stark Oberflächentexturen geblurrt werden. Bei einem Wert von 0.0 werden Oberflächentexturen nicht geblurt, bei einem Wert von 1.0 werden Sie stark geblurt.
- Front: Faktor für die Lichtverteilung an der Objektoberfläche. Wie viel wird von dem Licht, welches die Oberfläche trifft, absorbiert (Werte kleiner als 1.0) oder hinzugefügt (Werte größer als 1.0). Entsprechend steigt oder sinkt die Gesamthelligkeit.
- Back: Licht von der Rückseite des Objektes kann ebenfalls die Oberfläche erreichen. Hiermit stellen Sie den entsprechenden Faktor ein. Besonders dünne Objekte werden auch von hinten durchscheinen.
Die Oberfläche erscheint zu hell (zu dunkel)
Setzt man SSS ein, wird die Objektoberfläche u.U. deutlich aufgehellt. Dagegen gibt es mehrere Vorgehensmöglichkeiten:
- Senken Sie den Front- und evtl. den Back-Faktor.
- Dunkeln Sie den Col-Wert ab, d.h. verringern Sie den Wert [Value] der Farbe. Je dunkler die Farbe, desto mehr Licht wird absorbiert.
- Verkleinern Sie ihr Objekt (z.B. indem Sie den Scale-Wert erhöhen). Je weiter das Licht eindringt, desto besser verteilt es sich im Objekt.
Entsprechend verfahren Sie umgekehrt, wenn die Helligkeit zu gering ist, was insbesondere bei dunkler SSS-Farbe der Fall sein wird.
Einschränkungen
[Bearbeiten]- Befindet sich ein Objekt mit SSS-Material außerhalb der Kamerasicht, wird seine Reflektion unter Umständen nicht richtig gerendert.
- Nur Samples von der Vorder- und der Rückseite des Objektes werden berücksichtigt, es fehlen bei überlappenden Objekten daher evtl. Lichtanteile von der Rückseite.
- Irregular Shadow Buffers erzeugen fehlerhaften Schattenwurf auf der Rückseite von SSS Material.
- Die Flächennormalen eines Objektes müssen in die richtige Richtung zeigen, damit das SSS richtig berechnet werden kann.
- Panoramabilder und Renderings mit großem Öffnungwinkel der Kamera führen zu nicht sehr guten Resultaten.
Links
[Bearbeiten]