cycles scattr

Scattr- Texturen verstreuen in Blender- Artikel in Digital Production 1902

Mit Scattr können Texturen auf Objekten verteilt oder besser verstreut werden. Denn die Platzierung lässt sich auf vielfältige Weise beeinflussen und mit Zufall versehen. Dabei können sich die Texturen auch überschneiden und stapeln.

Eine klassische Plug-in-Schnittstelle wie in anderen Programmen aus der Computergrafik existiert in Blender nicht. Die Idee ist, dass man stattdessen entweder die Software an sich verändert, schließlich ist sie ja Open Source, oder auf die Python-API zurückgreift, die allerdings einigen Einschränkungen unterliegt. Die Render Engine Cycles lässt sich mittels OSL-Skripten erweitern, diese können aber nur mit der CPU genutzt werden und funktionieren nicht mit Eevee, der neuen Realtime-Engine auf OpenGL-Basis. Scattr hingegen ist eine Sammlung von Node Groups für Cycles und Eevee. Dadurch funktioniert Scattr sogar auf der GPU, ist aber streng genommen kein Plug-in, sondern ein klassisches Asset.

Append statt Install

Scattr wird also weder installiert noch ausgeführt, sondern gelangt ins Projekt, indem das Scattr-Material über den Append-Operator an die aktuell bearbeitete Datei angefügt wird. Auf diese Art und Weise werden auch automatisch die Node Groups und damit eigentlichen Werkzeuge von Scattr importiert. Wer einen Asset Manager einsetzt, kann das Material ohne weiteres dort einpflegen. Auch in selbst erstellte Asset-Bibliotheken im BLEND-Format ist Scattr mit wenigen Klicks integriert. Optimiert ist Scattr für Blender 2.8. Die Node Groups funktionieren mittels Append auch mit Blender 2.79b, die Beispieldateien sollten aber in Blender 2.8 geöffnet werden.


Simon’s Lair

Scattr kann kostenlos über Gumroad bezogen werden (https://gumroad.com/l/scattr). Ein Klick auf den Account des Entwicklers Simon Thommes lohnt sich, denn neben Tutorial-Dateien für Scattr finden sich dort auch andere Blender-Schätze wie der prozedurale Feuer-Shader B’rn oder der prozedurale Strickwaren-Shader Knittr. Natürlich alles schon für Blender 2.8 optimiert.

digital production scattr
Knittr – Ebenfalls aus der Feder von Simon Thommes ist Knittr, ein prozeduraler Strickwaren-Shader, der über Gumroad kostenlos heruntergeladen werden kann: https://gumroad.com/l/Knittr.

Das Arsenal

Wenn man nur eine Textur verteilen möchte und keine Überlappungen braucht, dann reicht der Main Node von Scattr. Wenn Überlappungen gewünscht sind, muss man auf das Main Setup zurückgreifen, das aus zwei Nodes besteht. Bis zu neun Texturen können auf diese Weise verteilt werden. Sollen es mehr sein, so muss man eine zweite Instanz des Setups hinzufügen. Mit im Paket sind noch zwei Utility Nodes. Der N-gon Shapemaker erzeugt Vielecke, mit denen man die Verteilung der Texturen gut visualisieren kann und die auch für die ein oder andere prozedurale Textur nützlich sind. Der Pixelator ist immer dann hilfreich, wenn die automatische Interpolation von Cycles nicht erwünscht ist.

digital production scattr
Arsenal – Diese fünf Node Groups bilden das Arsenal von Scattr.


Harte Arbeit

Grundsätzlich stellt Scattr hohe Anforderungen an das Shading-System, sowohl in Cycles als auch in Eevee. Es kann daher also gerne einen kleinen Moment dauern, bis man im Viewport ein Update sieht, und auch auf Abstürze sollte man sich gefasst machen, wenn man Blender 2.8 einsetzt. Das ist auch der Grund, warum man wenn möglich den Main Node verwenden sollte.


Die Basis: Ein nicht ganz so strenges Gitter

Mit dieser lassen sich Texturen auf einem Gitter verteilen und dabei auch leicht versetzen und rotieren. Die eine große Einschränkung ist lediglich, dass sich die Texturen dabei nicht überschneiden dürfen. Für viele Einsatzzwecke ist das aber gut genug, zumal es noch genug Optionen für Zufall gibt, sodass die Verteilung damit immer noch naürlicher aussieht, als wenn man bei einer Bild-Textur in Cycles oder Eevee die Extension auf Repeat einstellt.

digital production scattr
Fun with Fruits – Ein Beispiel mit dem Basis-Node von Scattr. Auch ohne Überschneidungen lassen sich ansprechende Verteilungen erzielen. Die weiteren Nodes in dem Setup dienen dazu, die beiden Texturen zu kombinieren. Zu finden unter: https://gumroad.com/l/yRZpV.


Der Normalfall: Zufall und Selbstüberschneidungen

Der normale Scattr-Node verteilt die Texturen ebenfalls auf einem virtuellen Gitter, allerdings können sie sich selbst auch überschneiden. Das Augenmerk liegt dabei auf selbst, denn obwohl das Node-Setup mit bis zu neun Texturen beladen werden kann, wird immer nur von einer Textur der Alpha-Kanal ausgegeben, was die Überlappungen auch auf besagte Textur einschränkt. Wer mehr Texturen mit Alpha-Kanal ausgeben will, muss daher mehrere Instanzen der Node Group erstellen und bei jeder eine andere Alpha-ID angeben. Im Ergebnis können so bis zu neun Texturen überlagert, aber nicht vermischt werden. Für das Beispiel mit den Bananen und Orangen (siehe Bild „Fun with Fruits“) heißt das, dass bei der direkten Ausgabe des Nodes jeweils alle Orangen über den Bananen liegen oder umgekehrt. Wer die Texturen untereinander mischen will, kommt über die Ausgabe der Z-Indizes zum Ziel, allerdings nicht ohne einiges an extra Arbeit.

digital production scattr
Eins über das andere – Das Beispiel mit den Früchten, diesmal aber mit dem regulären Scattr Node und zufällig verstreut. Die vielen extra Nodes zur Verteilung und Kombination der Texturen sind weggefallen, dafür ist die Performance aber deutlich schlechter.

Interna

Intern verteilt Scatter eigentlich Textur-Koordinaten und nicht Texturen an sich. Letztere werden lediglich über die Koordinaten abgebildet. Ersichtlich wird das, wenn man sich die Ausgabe des Vector-Ausgangs des Single Scattr Nodes ansieht, indem man sie in einen Emission Shader leitet (siehe Bild „Behind the Scenes“). Dann sieht man deutich die Gitterstruktur mit jeweils eigenen Unterkoordinaten für jeden Quadranten.

digital production scattr
Behind the Scenes – Scattr verändert Textur-Koordinaten. In diesem Fall wurde die Ausgabe nicht als Vector-Eingabe für einen Texture Node, sondern direkt in einen Emission Shader gelenkt. Man erkennt die Aufteilung in Quadrate mit jeweils unterschiedlichen Textur-Koordinaten.


Fazit

Wer schon einmal so etwas wie Scattr selbst gebaut hat (z.B. als OSL-Shader), der freut sich, dass so ein Werkzeug jetzt endlich als vorgefertigte Node Group zur Verfügung steht. Wie so oft, wenn man prozedural in Cycles oder Eevee arbeitet, ist die Performance nicht die beste. Man kann Scattr aber hervorragend zum Texture Baking einsetzen. Wir sind gespannt, was Simon Thomme in Zukunft noch entwickeln wird.


Related Items: