Blender Dokumentation: Material-Nodes
Diese Seite bezieht sich auf Blender v2.42 |
Was sind die Vorteile von Material Nodes?
- Das bisherige Materialsystem ist bereits sehr komplex und vielfach ausreichend.
- Es existiert allerdings eine Einschränkung von 10 Texturen pro Material. Mit den Nodes entfällt diese Einschränkung.
- Es kann nun zwischen Materialien überblendet werden, und nicht mehr nur zwischen verschiedenen Texturen.
- Bisher konnten Texturen nicht unabhängig von Ramp Shadern benutzt werden, da die Ramp Shader immer zum Schluss berechnet wurden. Diese Einschränkung entfällt, und damit kann Multilayer Material, z.B. Aufkleber auf Autolack, erzeugt werden.
- Nodes haben zur Zeit noch einen großen Nachteil: sie verlängern u.U. die Renderzeit deutlich, da für jeden Material Node das Raytracing (sofern erforderlich) und Ambient Occlusion berechnet wird. Sie sollten also nach Möglichkeit nur in einem Material Node Raytracing einsetzen.
Einführendes Beispiel
BearbeitenWir fangen mit dem einfachst möglichen Beispiel und der Standardszene an.
Anschalten der Material Nodes
Bearbeiten- Teilen Sie das 3D-Fenster, und wechseln auf der rechten Seite in das Node Editor Fenster (Abbildung 1, a). Sie befinden sich im Material Nodes Modus des Node Editors, wie sie im Fensterheader sehen können (Abbildung 1, b).
- Um Nodes für das Material zu benutzen, können Sie entweder im Fensterheader des Node Editor Fensters auf Use Nodes klicken (Abbildung 1, c), oder auf dem Links and Pipeline Panel auf Nodes (Abbildung 1, d). Es erscheint auf dem Links and Pipeline Panel ein roter Button Add New (Abbildung 2), im Node Editor Fenster zwei leere Nodes.
- Klicken Sie auf Add new. Die bisher leeren Nodes im Node Editor zeigen ein Vorschaubild (Abbildung 2). Wir haben jetzt zwei Materialien in der Szene:
- einen Node Tree (NT:Material, Abbildung 3, a). Dieser Node Tree kann nun beliebig komplex gestaltet werden.
- ein "einfaches" Material wie es bisher schon in Blender üblich war (MA:MatNode, Abbildung 3, b).
- Die Eigenschaften unter Render Pipeline auf dem Links and Pipeline Panel sind nicht für einen Material Node verfügbar, sondern können nur für den gesamten Node Tree eingestellt werden. Sie können also beispielsweise das Material nicht gleichzeitig als Wireframe und in der normalen Ansicht rendern lassen.
- Sie bearbeiten das Material nun wie üblich, alle Einstellungen und Texturen mit Ausnahme der Render Pipeline beziehen sich auf den Material Node. Dabei ist es gleichgültig, ob Sie bspw. die Farbe auf dem Material Panel einstellen, oder mit dem Material Node. Im Output Node sehen Sie die Vorschau des Materials.
Ein zweites Material überlagern
BearbeitenEin zweites Material soll dem ersten Material überlagert werden.
- Um einen weiteren Material Node hinzuzufügen, drücken Sie Space->Add->Inputs->Material (Abbildung 4).
- Klicken Sie den Add new Button auf dem neuen Material Node Panel.
- Um die beiden Material Nodes zu mischen, benötigen Sie einen Mix Node (Space->Add->Color Ops->Mix), das ist der einzige Material Node, der die gleichzeitige Eingabe zweier Farbwerte ermöglicht.
- Verbinden Sie den Color-Ausgang der beiden Material Nodes mit den Mix Node Color-Eingängen, den Mix Node-Ausgang mit dem Color-Eingang des Outputs (Abbildung 5).
Mit der Drop Down Box des Mix Nodes stellen Sie den Verrechnungsmodus (Blending Mode) zwischen den Materialien ein, so können Sie also nicht mehr wie bisher nur Texturen verrechnen, sondern ganze Materialien.
- Der Fac-Wert auf dem Mix Node gibt an, wie stark die Inputs für den Output berücksichtigt werden. Ein Wert von 0.00 bedeutet, dass nur Color 1 berücksichtigt wird, ein Wert von 0.5 verrechnet Color 1 und Color 2 zu je 50 Prozent, ein Wert von 1.00 berücksichtigt nur Color 2. Der Fac-Wert kann über ein Material pro Pixel gesteuert werden, dadurch ist "Stenciling" zwischen zwei Materialien möglich, also Überblendung zwischen Materialien.
Eine solche Überblendung zwischen zwei Materialien soll nun demonstriert werden, dabei benutzen wir einen Material Node um den Fac-Wert des Mix Nodes zu steuern.
Texturen und Ramp Shader (Material Stencil)
BearbeitenIm bisherigen Materialsystem war es nicht möglich, ein Material mit einem Ramp Shader durch eine teilweise transparente Textur zu überlagern, die nicht vom Ramp Shader beeinflusst wurde. Dieses Beispiel dient insbesondere auch der Demonstration des Material "Stenciling".
- Wenn Sie unser Beispiel von bisher weiter verfolgen wollen, löschen Sie den Würfel und ersetzen ihn durch eine UV-Sphere, die Sie etwas glätten sollten (Set Smooth). Wählen Sie auf dem Links and Pipeline Panel das Material mit dem N vor dem Namen aus, dies deutet an, dass es sich dabei um einen Node Tree handelt (Abbildung 6).
- Erzeugen oder importieren Sie ein Material mit einem Ramp Shader, zum Beispiel "BestCarPaintRampMat" aus Sonix Car Material Library.
- Wählen Sie den linken Material Node aus Abbildung 5 aus (RMT). Ersetzen Sie das Material MA:MatNode durch das importierte Material. Dazu wählen Sie es auf dem Links and Pipeline Panel unter Active Material Node aus.
- Laden Sie in dem anderen Material eine teiltransparente Textur, z.B. die aus Abbildung 7. Stellen Sie den Map Input auf Sphere und SizeX/Y/Z auf 10.0. Aktivieren Sie für die Image-Textur Use Alpha. Benennen Sie den Material Node in "Textur" um. Wenn Sie nun rendern, können Sie zwei Dinge beobachten:
- Die Image Textur wird mit dem Ramp Shader Material gemischt.
- Das Material mit dem Rampshader wird mit dem grauen Standardmaterial von Blender gemischt an den Stellen, wo die Textur den Alphawert von 0 hat.
Der Fac-Wert muss so gesteuert werden, dass er den Wert 1 hat an den Stellen, die nur die Image Textur zeigen sollen, und 0 an den Stellen, die nur die Ramp Shader Textur zeigen sollen.
Wir könnten einen Textur Node als Eingabe für Fac benutzen, wenn wir nicht den Map Input auf Sphere gestellt hätten, da sich eine solche Geometrie mit den bisherigen Nodes noch nicht direkt abbilden lässt.
Stattdessen setzen wir einen dritten Material Node als Stencil ein.
- Duplizieren Sie den Material Node mit der Textur (Shift-D). Damit stellen wir sicher, dass alle Gemoetriedaten gleich sind.
- Klicken Sie auf die kleine "2" neben dem Namen des Material Nodes, um eine Single User Kopie zu erzeugen (Abbildung 8). Benennen Sie den Material Node in Stencil um.
- Verbinden Sie den Alpha Output des Stencil Nodes mit dem Fac Input des Mix Nodes.
- Stellen Sie auf dem Map To Panel des Stencil Nodes Col aus, Alpha invertiert (in gelb) und DVar auf 0. Das entspricht genau unserem gesuchten Mapping (Abbildung 9).
Das Ergebnis (Abbildung 10) ist nicht sonderlich spektakulär, aber Ihnen fallen bestimmt schnell viele Anwendungsbereiche ein. Von dieser Technik gibt es viele Variationsmöglichkeiten, einige davon wären:
- Man mappt mit UV Koordinaten, dann kann man den Stencil Effekt direkt mit einer Textur erreichen.
- Man könnte die Materialien nicht per Stencil kombinieren, sondern sie wechselseitig über eine Textur transparent machen.
Die gezeigte Lösung mit einem Stencil Material ist aber die allgemeinste und flexibelste.
Links
BearbeitenReleaselogs zu den Material Nodes
Sonix' Blender 2.34 onwards car material library.
Material Stencil