Lektion 4 - Shading & Rendering
Inhalt
- Rendering
- Cycles-Nodes Grundlagen
- Grundprinzip
- 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.
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.
This Ape is Magic!
Sockel Typen
Sockel = In- und Outputs
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. |
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.
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.)
einfaches Autolack Material mit nur einem Node