Um uns die einzelnen Parameter des Variations-Shaders genau ansehen zu können, erzeugen wir per Doppelklick auf eine freie Stelle im Material-Manager ein neues Material, bei dem wir den Farbe-Kanal zusammen mit dem standardmäßig eingerichteten Reflektivitäts-Kanal aktiviert lassen.
Der Variations-Shader soll im Farbe-Kanal für Farbvariationen sorgen, deshalb fügen wir den Shader als Textur über den zugehörigen Pfeilbutton hinzu. Wir finden den Variations-Shader im Untermenü der Effekt-Shader.
Die eingefärbte Materialvorschau deutet zumindest schon einmal an, dass sich farblich etwas beim Material getan hat. In den umfangreichen Einstellungsdialog gelangen wir über den Textur-Button des Variations-Shaders.
Variationsmodi
Im Abschnitt Variationsmodus der Shader-Eigenschaften geht es um die Grundeinstellungen der Variation. Der Startwert sorgt für die zufällige Verteilung und lässt sich durch eine andere Vorgabe variieren.
Soll der Variations-Shader auf Objekte selbst wirken, können wir im zugehörigen Menü Objektvariation entscheiden, ob die Variationen für unterschiedliche Objekte, Objektnamen, Hierarchieebenen (Überobjekt), Klone (Renderinstanzen) oder auch Objekt-Kanal-IDs gelten sollen.
Bevor wir uns aber mit der objektweisen Variation mit einem Klon-Objekt beschäftigen, deaktivieren wir die Objektvariation und sehen uns zunächst die Polygonvariation an.
Auch hier könnt ihr wieder über ein Menü entscheiden, ob alle zum Objekt gehörenden Polygone, zwischen unterschiedlichen Polygon-Selektionen oder zwischen den UV-Kacheln variiert werden soll - in unserem Beispiel soll es um alle Polygone gehen.
Die Materialvorschau zeigt an, dass sich aus den Standard-Einstellungen bereits zahlreiche Farbvariationen ergeben haben, wir können also das Material auf ein einfaches polygonales Beispiel-Objekt auftragen.
Texturieren des Polygonwürfels
Für unser erstes Beispiel reicht ein parametrisches Würfel-Objekt mit jeweils sechsfacher Unterteilung, das wir anschließend über den Befehl Grundobjekt konvertieren (Taste C) in ein Polygonobjekt umwandeln, um für unseren Variations-Shader die gewünschten Polygone zu erhalten.
Zum Texturieren des Polygonwürfels mit dem Variations-Shader-Material ziehen wir das Material auf das Würfel-Objekt im Objekt-Manager. Alle Einstellungen im zugehörigen Textur-Tag können auf den Standardwerten bleiben.
Nach dem Texturieren des Würfels sehen wir im Editor leider nichts von unserem Variations-Shader. Hier hilft auch kein erweitertes OpenGL, wir müssen also rendern oder uns zumindest einen Interaktiven Renderbereich in die Ansicht holen.
Dazu aktivieren wir über das Menü Rendern den Interaktiven Renderbereich …
… und platzieren ihn in die Mitte unserer Editoransicht. Wie von uns definiert, besitzt jedes Polygon des Würfels eine andere Färbung, wenn auch momentan lediglich mit der Standardeinstellung der Zufallsfarben.
Zufallsfarben
Es wird also höchste Zeit, sich um das Herzstück des Variations-Shaders, den Abschnitt Farbvariation zu kümmern. Wie bereits erwähnt, basieren die momentanen Farbvariationen der Polygone auf der Standardeinstellung Zufallsfarben. Diesen Parameter können wir zum einen prozentual, zum anderen aber auch über seinen Zufallsfarbenmodus steuern. Gemeint ist damit die Verrechnung der anliegenden Farben miteinander, wie wir es auch von den Ebenenmodi in anderen Shadern von Cinema 4D bzw. natürlich in Photoshop kennen.
Wir belassen die Farbvariation über Zufallsfarben auf den Standardwerten und erhöhen zur besseren Beurteilung der kommenden Änderungen den Parameter Polygonschritt im Abschnitt Variationsmodus auf 3.
Durch diese Änderung werden nun immer 3 Polygone unseres Polygonwürfels zusammengefasst und mit einer Farbvariante belegt.
Obwohl wir nach wie vor ausschließlich mit der Farbvariation Zufallsfarben arbeiten, haben wir noch lange nicht alle Möglichkeiten ausgeschöpft. Der Abschnitt Farbgradingvariation bietet uns insgesamt sechs weitläufig bekannte Farbkorrektur-Parameter an, die wir alle einzeln prozentual auf die Zufallsfarben wirken lassen können.
Die oben gezeigte Änderung von Kontrast, Gamma und Sättigung lässt die verwendeten Zufallsfarben jedenfalls wesentlich knackiger wirken.
Gezielte Farbvariationen
Kommen wir nun zum wichtigsten Bereich des Variations-Shaders, dem Abschnitt Farbvariation. Wir finden hier verschiedene Variationsansätze, die wir einzeln (wie bislang mit den Zufallsfarben), aber auch in Kombination miteinander verwenden können. Damit wir uns die verschiedenen Möglichkeiten separat ansehen können, setzen wir die Zufallsfarben auf 0% und beginnen mit einer Grundtextur.
Ladet euch per Klick auf den Pfeilbutton einen Farbe-Shader als Grundtextur.
Durch Klick auf den Shader-Button Farbe oder noch einfacher durch Aufklappen der Verknüpfung über den kleinen Pfeil neben der Grundtextur öffnen wir den Einstellungsdialog des Farbe-Shaders. Ich habe mich für ein sattes Rot als Grundtextur entschieden.
Um den Variationsmodus aus Grund- und Zweittextur zu vervollständigen, laden wir uns über den Pfeilbutton der Zweittextur einen weiteren Shader als Textur. Ich habe mich hier für einen Noise-Shader entschieden, damit gut zu erkennen ist, an welchen Stellen bzw. Polygonen welche Variationsart zum Zug kommt.
Für den Noise-Shader der Zweittextur habe ich die Noise-Art Poxo mit einer geringen globalen Größe von 5% gewählt.
Ein Blick auf den interaktiven Renderbereich in unserer Editoransicht zeigt, welche Variationen sich aus der vorgegebenen Grund- und Zweittextur ergeben.
Auch für die Variation per Grund- und Zweittextur haben wir zwei Parameter zur Justierung der Mischung und des Verrechnungsmodus zur Verfügung. Durch eine reduzierte Mischung und die Verrechnung der Zweittextur über den Modus Weiches Licht beispielsweise …
… tritt die Zweittextur gar nicht mehr als solche in Erscheinung, nur in der Variation der Grundtextur ist sie noch erkennbar.
Wenden wir uns der dritten Option innerhalb des Abschnitts Farbvariation zu, dem Farbverlauf. Zur besseren Vergleichbarkeit habe ich die zuvor besprochene Farbvariation aus Grund- und Zweittextur gelöscht, ihr könnt aber auch einfach den Regler der Zweittexturmischung auf 0% setzen, falls ihr die Grundtextur behalten möchtet.
Standardmäßig ist ein von Blau nach Weiß verlaufender Gradient als Farbverlauf hinterlegt.
Für die Variation bedeutet dies, dass für unsere Polygone zwar zufällige, aber ausschließlich im vorgegebenen Verlauf enthaltene Farben verwendet werden.
Schalten wir nun noch die zuvor verwendete Grundtextur mit dem satten Rot hinzu und wählen eine geeignete Art wie Ineinanderkopieren für die Verrechnung der beiden Variations-Farbquellen …
… so können wir die 'zufällig' für unseren Polygonwürfel verwendeten Farben schon sehr gut nach unseren (Farb-) Vorstellungen anpassen.
Farbvariation bei Klonen
Bislang haben wir uns auf die Farbvariationen bei den Polygonen eines Würfels beschränkt. Sehen wir uns nun die objektspezifische Variation beim klassischen Beispiel eines Klon-Objekts an. In meiner einfachen Beispielszene sorgt ein Klon-Objekt für die Ausbreitung von Zylinder-Objekten zu einem Klon-Teppich. Das Material mit dem Variations-Shader habe ich dabei dem Klon-Objekt zugewiesen.
Im Einstellungsdialog des Variations-Shaders benötigen wir für die Klone im Abschnitt Variationsmodus statt der bisher verwendeten Polygonvariation eine Objektvariation. Dazu deaktivieren wir die Polygonvariation und wählen für die Objektvariation den für Klone geeigneten Modus Renderinstanzen.
Alle anderen Parameter bleiben im Vergleich zur letzten Polygonvariation identisch, so ergibt sich aus der roten Grundtextur und dem blau-weißen Farbverlauf beim Rendering ein entsprechend bunter Klon-Teppich.
Ausgehend von dieser Farbvariation können wir uns nun die anderen Optionen im Abschnitt Variationsmodus zu Gemüte führen. Über den Parameter Wahrscheinlichkeit geben wir an, welcher Anteil der Klone variiert werden soll (zu sehen im interaktiven Renderbereich).
Das Auftreten bzw. die Verteilung der variierenden Klone können wir aber auch durch eine Textur bzw. einen Shader steuern. Hierfür steht uns beim Parameter Globale Maske wieder ein Pfeilbutton zum Laden eines geeigneten Bildes bzw. Shaders zur Verfügung.
In meinem Beispiel habe ich die Wahrscheinlichkeit wieder zurück auf 100% gesetzt, als Grundtextur ein dunkles Blau gewählt und über den Pfeilbutton für die globale Maske einen Noise-Shader als Textur geladen.
Je nachdem, wie die Klone beschaffen sind bzw. die Textur auf das Klon-Objekt im Textur-Tag gemappt ist, wirkt sich auch der im Einstellungsdialog des Noise-Shaders gewählte Raum aus. In den meisten Fällen sollte Welt im Parameter Raum funktionieren, in meinem Beispiel habe ich die Textur per Fläche-Mapping auf den Klon-Teppich aufgetragen und kann so auf die Einstellung UV (2D) setzen.
Mit einer entsprechend hohen globalen Größe sowie Clipping oben und unten mit erhöhtem Kontrast ergibt sich eine brauchbare Maske für unser Beispiel.
Im Rendering sehen wir bei den schwarzen Bereichen die hinterlegte dunkelblaue Grundtextur, während sich in den weißen Bereichen die variierenden Klone breit machen. An den vordersten Klonen ist gut zu sehen, dass die globale Maske durch das Fläche-Mapping von oben auf die Klone wirkt.
Der Vollständigkeit halber wollen wir noch auf die letzten beiden Abschnitte des Variations-Shaders eingehen.
Bei der UVW-Koordinatenvariation könnt ihr eine Variation durch verschieben, spiegeln oder drehen der UVW-Koordinaten erreichen - sehr hilfreich bei sich wiederholenden, gekachelten Strukturen wie Fliesen oder Parkett. Die Option Auf 1 begrenzen bewirkt, dass bei der Verrechnung von Variationen Farbwerte größer als RGB (255, 255, 255) entstehen - bei der Verwendung von HDR-Images ist dies natürlich erforderlich und deshalb zu deaktivieren.
Alle in diesem Tutorial vorgestellten Variationsarten lassen sich natürlich beliebig miteinander kombinieren und aufeinander abstimmen.