blender principled sss scale
Die Scale-Option für den Subsurface Scattering-Effekt hilft in vielen Situationen
Featured

Tutorial: Die Scale-Option von SSS für den Principled Shader nachbauen

Nahezu jedes organische Material weist ein Phänomen auf, das sich Subsurface Scattering (SSS) nennt. Abgesehen von Game Engines ist jeder Renderer, der etwas auf sich hält, mit dieser Option ausgestattet. Allerdings ist es nicht immer leicht, damit die gewünschten Resultate zu erzielen. Unsere Haut beispielsweise, besteht aus vier Schichten unterschiedlicher Farbe, hinzu kommt, dass diese sehr heterogen sind, also aus Zellen, Blut, Kollagen usw. bestehen.

 

Licht unterschiedlicher Farben hat unterschiedliche Wellenlängen. Dadurch werden Lichtstrahlen, die durch eine organische Oberfläche dringen, gestreut. Jeder Strahl kann dabei unterschiedlich weit wandern, bevor er zurück durch die Oberfläche kommt.

Der Vektor-Input der SSS-fähigen Shader gibt dabei an, welche Farbe wie stark gestreut wird. X steht für rotes, Y für grünes und Z für blaues Licht. Das ist zwar die realistischste Herangehensweise, aber sie ist leider nicht sehr intuitiv. Es ist relativ schwierig vorherzusagen, welche Kombination von Werten in welcher durchscheinenden Farbe resultiert. Als Anfänger habe ich oft gedacht: "Warum kann ich nicht einfach angeben: Diese Farbe soll an dünnen Stellen durchscheinen und fertig?". Mit dem Principled Shader in Blender 2.79+ hat man diese Option zur Verfügung. Leider stößt man schnell an die Grenzen dieser Methode, da die gewählte Subsurface Color das Material auch an dicken Stellen, die ja eigentlich nicht sehr stark von SSS beeinflusst werden sollten, sehr stark einfärbt. Mir persönlich gefällt die Herangehensweise von V-Ray in dieser Situation sehr gut. Hier kann man vier Farben festlegen, diffuse (Oberfläche), shallow (dünnere), medium und deep (dickere Stellen) scatter. Das macht die Bedienung sehr intuitiv und die Resultate sind in meinen Augen realistisch genug.

Zurück zu der Vektorenproblematik. Nehmen wir an, wir hätten das perfekte Verhältnis zwischen R, G und B Streuung gefunden. Das Modell sieht gut aus, aber wir möchten es vergrößern, z.B. weil die gesamte Szene zu klein war. Würden wir nur Diffuse und Glossy Shader benutzen, würde sich das Aussehen der Szene nicht nennenswert verändern, für SSS ist das Gegenteil der Fall.

 
Abb. 1) Links: Suzanne mit ihrer originalen Größe und einem Meshlight hinter ihr. Rechts: die gleiche Szene, aber 4x hochskaliert.

Da die X, Y und Z-Werte Blendereinheiten (Default: Meter) sind, ist die Dicke, bei der durchscheinende Farben auftreten, stark ausschlaggebend für deren Intensität und Zusammensetzung. Wenn dieser Fall mit der ursprünglichen SSS Node auftrat, konnte man schlichtweg den Scale-Faktor anpassen und die neue Größe kompensieren. Diese Option ist im Principled Shader nicht vorhanden. Man müsste also nach dem Skalieren, oder wenn einem die Stärke des gesamten Effekts nicht gefällt, alle Werte des Vektors mal dem Faktor nehmen und dann alle drei per Hand einfügen. Keine sehr effektive Herangehensweise, also zeigen wir hier eine schnelle Methode, sich das viele Eintippen zu ersparen.

 

 

In dieser Node-Group kann man X, Y und Z separat eingeben und dann alle gleichzeitig mit der Scale multiplizieren. Hier sind die nötigen Schritte um diese Gruppe anzulegen.

  1. Eine Converter -> Combine XYZ Node hinzufügen.
  2. STRG + G drücken, um die Node zu einer Gruppe zu machen.
  3. Falls Sie die Optionen für Interface nicht sehen, drücken Sie N.
  4. Das kleine + Symbol im Kreis unter Inputs klicken.
  5. Den neu erstellten Input z.B.  'Scale' nennen, indem Sie doppelt auf den Namen klicken.
  6. Eine Converter -> Math Node einfügen und sie auf Multiply umstellen.
  7. Verschiebt man die neue Node nun, bis sie auf einem der Fäden liegt, färbt sich dieser orange und wenn man jetzt loslässt wird die Node entlang des Pfades hier eingefügt.
  8. SHIFT + D um die Multiply Node zu duplizieren und das gleiche nochmal für y und z.
  9. Jetzt den Scale Input mit dem offenen Faktor jeder Multiply Node verbinden.
  10. Das war's, jetzt nur noch TAB drücken, um aus dem Node-Editing zurückzukehren, danach kann man den Output der Group mit dem Vektor des SSS Shaders verbinden und die Werte beliebig anpassen.

Man kann sogar eine Karte malen, die man als Scale benutzt, das gleiche gilt natürlich für den Subsurface Faktor der Principled Node.

Während der Recherche für unser Buch haben wir gemerkt, dass es nicht leicht ist, an professionell, z.B. in Laboren gemessene Streuungswerte von verschiedenen Materialien heranzukommen. Glücklicherweise sind in Blender schon mehrere Kombinationen vorhanden, die man eins zu eins übernehmen kann.

Um an diese Materialoptionen zu gelangen, muss man zunächst auf Blender Internal Renderer umstellen. Danach ein Objekt anwählen, das ein Material besitzt und sicherstellen, dass das Material keinen Nodetree verwendet. Wenn man dann etwas herunterscrollt, kommt man zu den Subsurface Scattering Optionen, wo man aus 10 Presets auswählen kann. Klickt man auf einen, werden die Werte für RGB eingefügt und man kann sie für seine Cycles Nodes übernehmen.

Falls Sie an einer wesentlich detaillierteren Beschreibung des SSS Shaders interessiert sind, schauen Sie doch mal in unser Buch.