Ausgangspunkt für dieses Tutorial sind zwei Legosteine aus einem vorangegangenen Modelling-Workshop. Ihr findet die Ausgangsdatei im Paket der Arbeitsdateien zu diesem Tutorial. Am Modelling der Legosteine gibt es eigentlich nichts auszusetzen, aber Spielzeug sieht doch erheblich authentischer aus, wenn auch Gebrauchsspuren wie kleine Kratzer, abgewetzte Kanten und matte Stellen darauf zu sehen sind.
Einstellen des Inverse AO-Shaders
Wie anfangs erwähnt, soll uns die Inverse Ambient Occlusion (IAO) die von den Gebrauchsspuren besonders betroffenen Stellen liefern. Damit wir die Arbeit des Shaders auch richtig beurteilen können, konzentrieren wir uns zunächst ganz auf die IAO. Der grüne Legostein bietet sich natürlich an, weshalb wir im zugehörigen grünen Material des Steins auf der Basis-Seite vorübergehend alle aktiven Material-Kanäle deaktivieren und stattdessen den Leuchten-Kanal aktivieren.
Im Leuchten-Kanal des Materials öffnen wir über den Textur-Button das Shader-Menü und wählen uns im Untermenü Effekte den Ambient Occlusion-Shader aus. Die inverse AO liegt also nicht als eigener Shader vor, sondern als kleine, aber feine Einstellung im normalen Ambient Occlusion-Shader.
Nach dem Laden des Ambient Occlusion-Shaders zoomen wir in der Editor-Ansicht etwas näher an den Legostein heran und starten ein erstes Test-Rendering. Da der AO-Shader im normalen Modus arbeitet, bekommen wir natürlich im Moment noch die Schattenbereiche des Legosteins geliefert.
Um den Unterschied der beiden Arbeitsweisen zu verdeutlichen, öffnen wir per Klick auf den Shader-Button bzw. durch Aufklappen des Textur-Bereichs den Ambient Occlusion-Shader und aktivieren als Erstes die Option Gegenrichtung.
Wir starten ein erneutes Test-Rendering in der Editor-Ansicht und bekommen nun die in Gegenrichtung arbeitende Ambiente Occlusion angezeigt. Wie der Vergleich der beiden Renderings verdeutlicht, ist die IAO nicht einfach eine umgekehrte AO, sondern eine komplett andere Arbeitsweise. Wirklich brauchbar ist die ermittelte IAO für unsere Zwecke aber noch nicht, weshalb wir uns nun um das Feintuning kümmern.
Da unsere Legosteine ihre Gebrauchsspuren in erster Linie an den Ecken und Kanten tragen sollen, stören die ausgeprägten grauen Bereiche an den Oberflächen. Als ersten Schritt reduzieren wir daher das Maximum Strahlenlänge auf 30 cm.
Zur Beurteilung der Auswirkung dieser Änderung fertigen wir wieder ein Test-Rendering in der Editor-Ansicht an. Die dunklen Bereiche liegen nun wie gewünscht fast ausschließlich an den Ecken und Kanten des Legosteins, allerdings könnten die grauen Bereiche ruhig etwas dunkler ausfallen.
Dies erledigen wir über den Farbe-Schieberegler im Ambient Occlusion-Shader. Wir versetzen den Schwarz-Regler des Verlaufs dazu ein gutes Stück nach rechts, um die dunklen Bereiche gezielt zu verstärken.
Bei dieser Gelegenheit aktivieren wir außerdem die Option Nur Eigenbeschattung. Da der blaue Stein auf dem grünen Stein aufliegt, würde dies nämlich die Berechnung der AO unerwünscht beeinflussen.
Wie ein erneutes Test-Rendering zeigt, haben die Änderungen wie gewünscht gewirkt, sodass wir mit dem nun fertiggestellten Inverse AO-Shader die Erzeugung der Gebrauchsspuren in Angriff nehmen können.
Erweitern des Shaders für die Gebrauchsspuren
Wir bleiben vorerst im Leuchten-Kanal, da sich diese Art der Darstellung für die Beurteilung des IAO-Shaders bereits bewährt hat. Damit wir den fertiggestellten IAO-Shader mit weiteren Shadern verarbeiten können, rufen wir über den Textur-Button am Ambient Occlusion-Shader einen Ebene-Shader auf.
Nach Klick auf den Shader-Button des Ebene-Shaders landen wir in der Ebenenverwaltung des Shaders. Der von uns erstellte IAO-Shader liegt dort bereits als Ebene bereit. Über den Button Shader… erzeugen wir eine zweite Ebene mit einem Noise-Shader.
Mit dem Standard-Noise werden wir für unsere Gebrauchsspuren natürlich nicht glücklich. Per Klick auf die kleine Shader-Vorschau gelangen wir in die Einstellungen des Noise-Shaders und wählen dort die Noise-Art Nutous, die sich wesentlich besser eignet. Als globale Größe verwenden wir 80 %, die restlichen Parameter belassen wir auf den Standardwerten.
Über den nach oben weisenden Pfeil am rechten oberen Rand wechseln wir wieder in die Ebenenverwaltung und sehen dort, dass der Noise-Shader aufgrund seines Blendemodus den Ambient Occlusion-Shader komplett überdeckt.
Wir benötigen den Noise-Shader aber eigentlich, um den IAO-Shader gezielt im Kontrast zu modifizieren – diese Aufgabe übernimmt für uns der Blendemodus Levr.
Wie sich das genau auf den inversen Ambient Occlusion-Shader auswirkt, ermitteln wir in einem Test-Rendering. Da der Noise-Shader mit 100 % auf den IAO-Shader wirkt, ist das Ergebnis zu kontrastreich, es herrschen keinerlei Mitteltöne.
Zurück im Einstellungsdialog des Ebene-Shaders ist dies aber schnell korrigiert. Ein Wert von 40 % für den Blendemodus Levr lässt noch genug von den mittleren Graubereichen übrig.
Mit dieser fertigen Shader-Kombination wollen wir nun endlich die Gebrauchsspuren auf unseren 3D-Legosteinen anbringen.
Da wir uns im Moment immer noch im Leuchten-Kanal befinden, unseren Gebrauchsspuren-Shader aber in anderen Material-Kanälen nutzen möchten, kopieren wir ihn über das Shader-Menü im Textur-Button mit dem Befehl Shader/Bild kopieren.
Erstellen der Gebrauchsspuren über den Alpha-Kanal
In Cinema 4D führen bekanntlich viele Wege zum Ziel. Wir könnten unseren Gebrauchsspuren-Shader zum Beispiel genauso im Farbe-Kanal als Ebene verwenden. In diesem Tutorial habe ich mich für den Alpha-Kanal entschieden, so können wir durch das Überlagern von verschiedenen Materialien ebenso recht flexibel arbeiten.
Auf der Basis-Seite des grünen Legostein-Materials deaktivieren wir den nun nicht mehr benötigten Leuchten-Kanal und aktivieren dafür wieder den Farbe- und Reflektivitäts-Kanal. Bei beiden Legostein-Materialien aktivieren wir den Alpha-Kanal für unseren Gebrauchsspuren-Shader.
Da wir den Gebrauchsspuren-Shader für beide Legosteine verwenden möchten, selektieren wir im Material-Manager beide Lego-Materialien, um sie gleichzeitig bearbeiten zu können. Im aktivierten Alpha-Kanal fügen wir unseren Gebrauchsspuren-Shader über den Befehl Shader/Bild einfügen aus dem Shader-Menü des Textur-Buttons ein.
Nach dem Einfügen des Gebrauchsspuren-Shaders für beide Materialien müssen wir noch die Option Alpha-Bild deaktivieren, damit der als Textur geladene Ebene-Shader korrekt interpretiert wird.
Die Hauptmaterialien für die Gebrauchsspuren auf unseren Legosteinen sind damit fertig. Wenn wir nun ein Test-Rendering anstoßen, sehen wir, dass sich an den per IAO ermittelten, exponierten Stellen kein Material auf unseren Legosteinen befindet. Für einen glaubwürdigen Schmutzauftrag würde dies im Prinzip sogar schon reichen.
Material für die Gebrauchsspuren
Doch in diesem Tutorial soll es ja um abgewetzte Stellen und Kratzer gehen. Während die beiden ersten Lego-Materialien die unversehrte Oberfläche bedecken, soll es nun bei zwei weiteren Materialien um die Gebrauchsspuren gehen. Dafür habe ich im Material-Manager bereits zwei etwas hellere grüne bzw. blaue Materialien bereitgestellt. Wir verzichten bei beiden Materialien auf die per Reflektivitäts-Kanal generierten Glanzlichter, um den matten, abgeriebenen Look zu unterstreichen.
Wir weisen beide Lego-Materialien per Drag and Drop aus dem Material-Manager in den Objekt-Manager den jeweiligen Legosteinen zu und achten auf die korrekte Tag-Reihenfolge. Da das eben zugewiesene Gebrauchsspur-Material als Ebene unterhalb des unversehrten Lego-Materials liegen soll, steht sein Textur-Tag im Objekt-Manager links.
Beim nächsten Test-Rendering ist gut zu sehen, dass unser etwas helleres Lego-Material an allen exponierten Stellen zu sehen ist. Jetzt wirken unsere Legosteine nicht mehr schmutzig, sondern vom Spielen abgewetzt.
Nun haben wir uns um den vom Spielen verursachten Plastikabrieb gekümmert, allerdings soll es ja vorkommen, dass Spielzeug einer gröberen Gangart ausgesetzt ist und dabei mit Dellen und Kratzern verunziert wird. Hier hilft uns wieder der von uns erstellte Gebrauchsspuren-Ebene-Shader weiter.
Für den Fall, dass der Ebene-Shader sich nicht mehr in unserer Zwischenablage befindet, kopieren wir ihn uns einfach vom Alpha-Kanal eines Legostein-Materials über den Befehl Shader/Bild kopieren aus dem Shader-Menü des Textur-Buttons.
Anschließend selektieren wir die beiden helleren Materialien der abgewetzten Material-Version über den Material-Manager und aktivieren auf der Basis-Seite des Einstellungsdialogs für beide Materialien den Relief-Kanal.
Über den Befehl Shader/Bild einfügen aus dem Shader-Menü des Textur-Buttons setzen wir den kopierten Shader als Textur in den Relief-Kanal beider Materialien ein.
Auf Basis des Shaders für die Abnutzungsspuren können wir uns leicht eine Variante für die per Relief-Kanal generierten Dellen und Kratzer erstellen. Wir wissen ja, wie der Blendemodus Levr funktioniert, deshalb sollten wir den Kontrast etwas erhöhen, um die auf diese Weise erzeugte Bump-Map auf Kratzer zu reduzieren. Heben wir die Ebene Levr auf 60 % an.
Um die Kratzer noch weiter zu vereinzeln, öffnen wir die Einstellungen des Noise-Shaders und setzen dort das Clipping unten auf 30 %. Wie bereits in der Vorschau zu sehen, werden dadurch die helleren Bereiche gezielt abgeschnitten bzw. reduziert.
Damit ist der für die Dellen und Kratzer vorgesehene Shader-Ableger auch schon eingestellt, sodass wir nur noch die Stärke des Relief-Kanals festlegen müssen – ich bin bei der Standardeinstellung von 20 % geblieben. Die in Release 18 neuen Parallax-Funktionen seien nur der Vollständigkeit halber erwähnt, für diesen Anwendungsfall ergibt sich hier kein sichtbarer Qualitätsunterschied.
Noch weiter möchte ich die Legosteine in diesem Tutorial nicht malträtieren. Wie die Nahaufnahme zeigt, geben die kleinen Kratzer und Ausbrüche den Legosteinen den gewünschten letzten 'Schliff', …
… der die Glaubwürdigkeit unseres finalen Renderings doch erheblich erhöht.