Lektion 4 - Shading & Rendering

Inhalt

  1. Rendering
  2. Cycles-Nodes Grundlagen
  3. Grundprinzip
  4. Shader

Fortsetzung in Kapitel 5 (Texturen, Mix Nodes, Bump und Displacement, Node Gruppen, UV Editing)

1. Rendering

Rendering beschreibt den Prozess, aus den bestehenden Szenen-Daten (Modelle, Materialien, Licht, Kamera) ein Bild Blender zu berechnen. Rendering findet genau genommen schon im 3D-Editor statt, hier sogar in Echtzeit, um überhaupt interaktiv Änderungen an der Szene vornehmen zu können. Meist beschreibt aber der Begriff Rendering den Vorgang, explizit ein Bild in hoher Qualität mit allen Material- und Licht-Einstellungen zu berechnen. Dies geschieht dann nicht mehr in Echtzeit, d.h. die Berechnungszeit für ein Bild ist deutlich länger (mehrere Sekunden, Minuten oder sogar Stunden), als die Dauer, die das Bild während einer Animationssequenz sichtbar ist (1/25, 1/50 oder 1/60 Sekunde).

Unterschiedliche Renderer

Blender bietet von Haus aus zwei unterschiedliche Renderer, die derartige Berechnungen vornehmen.

  • Blender Renderer
  • Cycles Renderer

Darüber hinaus kann Blender auch weitere, z.T. kommerzielle externe Renderer anbinden, wie z.B. V-Ray, RenderMan und LuxRender.

Ursprünglich wurde Blender nur mit dem eingebauten “Blender-Renderer” ausgeliefert. Der Cycles-Renderer wurde erst ab 2011 als Alternative und komplette Neu-Entwicklung hinzugefügt. In den letzten Versions-Updates von Blender wurde Cycles Schritt um Schritt erweitert.

Blender Renderer

Der eingebaute Blender Renderer wird häufig noch für nicht-realistische Darstellungen wie z.B Toon-Shading oder in Illustrationen eingesetzt. Hier sollen bewusst nicht-realistische und abstrakte oder reduzierte Bildmittel verwendet werden.

Cycles Renderer

Die größten Neuerungen von Cycles gegenüber dem älteren Blender-Renderer sind

  • Physikalisch basiertes Berechnungen -> mehr Realismus der Ergebnisse
  • Node-basiertes Material-System -> Mehr Flexibilität (aber auch mehr Komplexität) bei den Materialien
  • GPU-Unterstützung -> Schnellere Berechnungen

Was macht der Renderer?

Die Hauptarbeit des Renderers ist es, für jedes Pixel des Ausgabebildes eine Farbe zu berechnen. Für jedes Pixel des Ausgabebildes wird dazu

  • ermittelt, welche Fläche welches Objektes “unter” dem Pixel liegt.
  • die Ausrichtung der Fläche für diese Stelle ermittelt (in Form der Normalen)
  • die Material-Eigenschaften für diese Stelle ermittelt.
  • die Licht-Situation für diese Stelle ermittelt.
  • die Farbe aus o.A. Parametern berechnet.

Die Möglickeiten, für Benutzer Einfluss auf das Rendering-Ergebnis zu nehmen, sind somit die Parameter obiger Farbberechnung zu beeinflussen. Neben einem sinnvollen Licht-Setup ist die größte Komplexität hier die Definition der Material-Eigenschaften. Mit dem Cycles-Renderer wurde hierfür ein Node-basierter Editor entwickelt, der die komplexen Zusammenhänge bei der Definition von Material-Eigenschaften in einer grafischen Benutzeroberfläche handhabbar macht.

2. Materialnodes Grundlagen

Im Gegensatz zu klassischen Materialsystemen wie z.b. in Cinema4D werden Nodebasierte Materialien nicht in einem Menü mit einer langen Liste von Materialeigenschaften erstellt sondern in mit vielen einzelnen Bausteinen (Nodes) die sich zu einem Material zusammenfügen. Das hat den Nachteil, dass die Einstiegshürde etwas höher ist und es anfangs etwas länger dauert einfache Materialien zu erstellen, dies wird aber von der enormen Flexibilität und (nach Einarbeitung) Intuitivität solcher Systeme mehr als aufgewogen.

  • Das vorinstallierte Addon “Node Wrangler” ist sehr hilfreich im Nodeeditor. Es ermöglicht u.a. jederzeit mit Ctrl + Shift + LMB auf einen Node (auch Texturen etc.) zu klicken um eine Vorschau zu bekommen. Es kann in Edit > Preferences > Addons aktiviert werden.
  • Hier wurde die Cycles Renderengine verwendet, die Nodes sind jedoch in Eevee (in den Übungen verwendeter Echtzeit Renderer) gleich.

3. Grundprinzip

In- und Output

In Blender haben Materialnodes entweder Inputs, Outputs oder beides. Die die Richtung geht immer von links nach rechts. Das Bedeutet Inputs befinden sich immer links, Outputs immer rechts.

Inputs haben immer einen Regler, an dem dessen Wert eingestellt werden kann, falls dieser nicht mit dem Output eines anderen Nodes verbunden ist. So hat der Diffuse BSDF Node z.b. den Input Color, (die anderen werden später behandelt) über den die Farbe dieses einfachen Shaders bestimmt werden kann.

Der Output des des Diffuse BSDF Nodes kann mit dem Surface Input des Material Output Nodes verbunden werden. Dieser ist immer der letzte Node in jedem Material. simpleDiffuse
Das einfachste mögliche Material in Cycles/Eevee

Will man nun anhand dieses Beispiels anstelle einer einheitlichen Farbe z.b. eine Textur verwenden, muss deren Output mit der Farbe des Shaders verbunden werden.
magicalApe
This Ape is Magic!

Sockel Typen

Sockel = In- und Outputs

simpleDiffuse

Im Node Editor haben die Sockel verschiedene Farben, welche deren Typ markieren.

Farbe Bedeutung
Grün Shader bestimmen die physikalische Funktion mit der das Material auf Licht reagiert.
Gelb Farben enthalten RGB Farbinformationen
Grau Werte enthalten z.b. Schwarz-Weiß Texturen, die nicht alle drei RGB Channel benötigen (“Floats”).
Blau mit Vektoren werden 2D Texturen auf 3D Objekte gelegt. Sie enthalten x,y, und z Werte für alle Punkte auf der Oberfläche des entsprechenden Objekts.

Grundsätzlich sind fast alle Sockel miteinander kombinierbar. Zum Beispiel werden Farben in Graustufen umgewandelt, falls sie in einen grauen Sockel gezogen werden und umgekehrt.

Sogar Vektoren lassen sich als Farben verwenden und umgekehrt, da diese von Cycles auch als RGB Werte für x, y und z interpretiert werden.

Node Kategorien

Im “Add” Menü des Node Editors sind die Nodes in Kategorien unterteilt. Die Sockeltypen der Nodes hängen nur teilweise mit den Kategorien zusammen:

Kategorie Bedeutung
Input Viele nützliche Werte zur weiterverarbeitung im Nodesystem.
Output Der letzte Node in jedem Material- / Licht- / Hintergrund- Nodesystem.
Shader Die eigentlichen “Materialien”, die die Farbe der Oberfläche abhängig von der Lichtsituation berechnen.
Texture Verschiedene prozedurale- (automatisch generierte) und Bild- Texturen
Color Viele Tools für Farbkorrektur, Farbmixer etc.
Vector Tools zum manipulieren der Textur Koordinaten und Bumpmaps.
Converter Rechnen Werte um oder konvertieren diese zu anderen Typen.
Script Hmiermit lassen sich OSL (Open Shading Language) Shader einbinden. Vorerst vernachlässigbar.
Group siehe 7.
Layout tragen zur besseren Lesbarkeit komplexer Nodesysteme bei.

categories Beispiel Node für jede Kategorie v. l. n. r.: Input, Output, Shader, Texture, Color, Vector, Converter, Script, Group, Layout

4. Shader

Mit Shadern berechnet Cycles, wie Materialien von Licht beeinflusst werden. Sind sie Lichtdurchlässig, Reflektierend, brechen sie das Licht? So kann dieselbe Farbe auf unterschiedlichen Shadern komplett anders aussehen. shader
Beispiel Shader v.l.n.r. Diffuse, Glossy, Glass, Translucent, Emission

hier die wichtigsten Shader:

Shader Erklärung Anwendungsbeispiele
Diffuse Matte Oberfläche - Siehe auch Diffuse Light Stein, Plastik, Holz
Emission Lichtquelle Glühlampe, Feuer, Display
Glossy Glanzpunkte reflektierter Lichtquellen - Siehe auch Specular Light Metalle, Nichtleiter (so gut wie alle Materialien haben einen reflektierenden Anteil)
Glass bricht und spiegelt Licht je nach IOR Glas, Wasser
Mix vermischt zwei Shader fortgeschrittene Materialien (siehe 5.2)
Principled Universal-Shader Vereint einige Shadermodell, um fast alle Materialien darstellen zu können
Subsurface Scattering Streut Licht unter der Oberfläche menschliche Haut, Kerzenwachs, Milch
Toon Comic Shader stilisierte Renderings
Translucent Licht scheint von der Rückseite des Objekts durch Papier, Lampenschirm, Pflanzen
Transparent durchsichtiger Shader Seifenblasen, maskierte Texturen
Volume Scatter volumetrisches Material, in dem Licht mehrmals hin und her geworfen wird Rauch, Wolken, Nebel
Volume Absorption Absorbiert Licht je nach Tiefe des Objekts, Wesentlich performanter als Scatter farbiges Glas und Flüssigkeiten (zsm. mit Glass Shader), Athmosphäre

!! Alle Shader, die die Obefläche beeinflussen werden in den Surface Input des Material Output Nodes gezogen, Volume und Volume Scatter in den Volume Input. Ansonsten entstehen Fehler.

Detailliertere Informationen zu allen Shadern (außer Principled) finden sich u.a. in der “Cycles Shader Encyclopedia” auf blenderguru.com

Principled BSDF

Der wichtigste am einfachsten zu verwendende Shader ist der “Principled BSDF” Shader, der mit wenigen Parametern komplexe physikalisch korrekte Materialien ermöglicht. Die wichtigsten Parameter sind:

Base Color: Bestimmt die allgemeine Farbe des Shaders

Subsurface Scattering: Streut Licht unter der Oberfläche. Z.b. für Kerzenenwachs, Haut etc.

Metallic: Schaltet zwischen dem Shading-Modell für Nichtleitern (Plastik, Stein…) und Metall um. Physikalisch gesehen sind sind im Normalfall nur Werte von 0.0 und 1.0 möglich (es gibt keine “Halbmetalle”)

Specular: Reflektion abhängig vom Fresnel-Wert. Kann eigentlich immer auf 0.5 gelassen werden, da physikalisch die meisten Materialien etwa in diesem bereich liegen.

Roughness: Bestimmt die “Rauheit” des Materials. Für physikalisch korrekte Materialien sollte dieser Wert nie ganz auf 0 gesetzt werden (z.b. 0.03).

Anisotropic: Ermöglicht Anisotropische Reflektionen (Topfboden, CD’s)

Clearcoat: Zweite Schicht “Specular” z.b. nötig für Autolack und lackierte Holzböden.

Transmission: Transparenz. Der Brechungsindex (z.b. 1.45-1.5 für Glas) kann mit dem IOR Wert eingestellt werden.

Umfassende Dokumentation zu diesem Shader hier (Das Shader-Modell wurde ursprünglich von Disney für die Renderengine “Renderman” entwickelt.)

textureSetup einfaches Autolack Material mit nur einem Node