blender dynamic paint

Blender Dynamic Paint- Artikel in Digital Production 1206

Seit der 2.6er-Serie enthält die freie 3D-Suite Blender das Simulationstool „Dynamic Paint“. Dabei handelt es sich oberflächlich gesehen um die Möglichkeit, mittels 3D-Objekten direkt auf andere 3D-Objekte zu zeichnen. Unter der Haube entpuppt sich Dynamic Paint aber als mächtiges Werkzeug für den Einsatz bei Motion Graphics und VFX. Die Digital Production bietet einen Überblick über die Features, zeigt Möglichkeiten auf und sprach mit dem Entwickler.

Ursprüngliches Einsatzwerkzeug für Dynamic Paint war das einfache Erstellen von Wetmaps für Fluid-Simulationen in Blender. Dem Entwickler wurde jedoch schnell klar, dass das System Potential für deutlich mehr hat. Die Erweiterung auf allgemeines Mesh-Painting war ein erster logischer Schritt, schnell folgten Displacement, Weight Painting und ein Wellen-Algorithmus. Mit diesen Erweiterungen lässt es sich auch zur Steuerung von Partikel-Systemen sowie zum dynamischen Triggern von Effekten nutzen.

blender dynamic paint
Diese animierte (!) Version des neuen Apple-Logos lässt sich mit Dynamic Paint in gut fünf Minuten erstellen.

Grundlagen

Im Vergleich mit anderen Systemen lässt sich Dynamic Paint am ehesten mit einer stark aufgebohrten und verallgemeinerten Version des "Collision Map"-Feature von Thinking Particles vergleichen. Es ist aber nicht auf Partikel beschränkt, die Partikel-Funktionen sind vielmehr eine Untergruppe des allgemeinen Ansatzes. Ein Dynamic Paint-System besteht aus zwei grundlegenden Komponenten. Zum einen der „Canvas“, das ist die Oberfläche auf die gemalt werden soll. Diese kann beliebige Formen haben. Zum anderen ein oder mehrere Brushes, also die Pinsel, die die Oberfläche einfärben. Diese können ebenfalls beliebige Formen haben, ein typischer Anwendungsfall ist zum Beispiel eine Fluid-Simulation, die auf Hindernissen eine Wetmap hinterlässt. Beim Canvas lässt sich einstellen, worauf gemalt werden soll. Zum einen lässt sich auf UV-Maps malen. Damit lassen sich Bildsequenzen erstellen, die wiederum als Texturen nutzbar sind. Diese Option erlaubt eine nahezu beliebige Genauigkeit, die nur von der Auflösung der Bilder begrenzt ist. Der Nachteil ist allerdings, dass die dynamischen Änderungen nicht live im Viewport angezeigt werden, sondern erst gebacken werden müssen. Außerdem stehen hier nicht alle Optionen zur Verfügung. Die zweite Option besteht darin, mit Vertex-Daten wie Weight-Painting zu arbeiten. Hier ist der Nachteil, dass das Mesh eine sehr hohe Auflösung haben muss, schließlich werden den einzelnen Vertices Werte zugewiesen. Vorteil hingegen sind die Echtzeit-Vorschau und zusätzliche Optionen. Das Pendant zur Arbeit mit Bildsequenzen ist hier die Option „Vertex Colors“. Dabei wird jedem Knoten ein RGB-Farbwert zugewiesen. Dieser lässt sich für die Diffuse-Farbe von Texturen einsetzen. Die zweite Option ist direktes Weight-Painting mit Dynamic Paint. Hierbei bekommt ebenfalls jeder Knoten einen Wert zugewiesen, nur handelt es sich in diesem Fall nicht um RGB-Werte, sondern um eine Gewichtung. An dieser Stelle werden schon die zahlreichen Möglichkeiten klar, die das System bietet. Denn mit Weight-Painting lassen sich in Blender Partikel-Systeme, Soft Bodies, Modifier, Constraints und mehr beeinflussen. Die letzten beiden Optionen betreffen die Position der Vertices. Mit „Displacement“ werden sie anhand des Pinsels verschoben. So lassen sich mit wenig Aufwand etwa Fußstapfen im Schnee realisieren. Hinter „Wave“ versteckt sich eine Wellen-Simulation, die sich gut mit anderen Simulationen in Blender kombinieren lässt. So kann die Ocean-Sim als Grundlage genommen werden, und mit Dynamic Paint werden zusätzliche Wellen am Schiffsbug hinzugefügt.

blender dynamic paint
Integrierte Wellensimulation: Die Bewegung des jungen Frosches hinterlässt an der Wasseroberfläche dank Dynamic Paint automatisch eine Wellenspur

Der Canvas im Detail

Der Canvas von Dynamic Paint kann verschiedene Layer enthalten. Sprich, man kann die gleichen Brushes verwenden, um sowohl eine Textur zu verändern als auch die Vertex Weights und das Displacement zu beeinflussen. Je nachdem ob man Surface oder Vertex als Format einstellt, werden andere Optionen angezeigt, der Kontext der Anwendung ist hierbei entscheidend. Wählt man eine Bildsequenz, so lässt sich deren Auflösung definieren und man kann sich für Antialiasing entscheiden. Im Falle von Vertex-Paint ist die Frage nach der Auflösung natürlich hinfällig. Beide Optionen erlauben das Setzen von Start- und Endframes, damit die Simulation nicht die komplette Animation hindurch laufen muss, was Rechenzeit spart.

Oberflächen malen

Nächster Schritt ist die Wahl der Oberfläche. Will man malen, so findet man Optionen zum Trocknen der Farbe über einen bestimmten Zeitraum (zu welchem Zweck man die Farbe trocknen lassen kann, wird später ersichtlich) sowie zum Auflösen der Farbe und zum Beeinflussen der Pinsel. Im Falle von Displacement ist ein "Trocknen" des veränderten Meshes natürlich nicht vorgesehen. Stattdessen wird angeboten, die Tiefenänderung inkrementell ablaufen zu lassen, ebenso lässt sich eine Schranke für die maximal mögliche Verformung setzen. Will man auf der Oberfläche Wellen erzeugen, so wird natürlich ein komplett anderes, auf die Simulation bezogenes Feature-Set geboten. Hier lässt sich einstellen, ob die Wellen vom Rand des Canvas reflektieren sollen, wie schnell die Simulation ablaufen soll und wie stark die Wellen bei der Ausbreitung schwächer werden.
Im Falle von Weight Paint und normalem Paint lässt sich noch einstellen, in welchen Maps die Daten gespeichert werden sollen. Bei Paint stehen hier zwei zur Auswahl, die "Paintmap" und die "Wetmap". Der Unterschied ist, dass die Wetmap in Graustufen aufgezeichnet wird und manche spezielle Effekte nur die Wetmap beeinflussen. Welche von beiden im 3D-View angezeigt wird, lässt sich ebenfalls einstellen. Beim Malen ist natürlich die Frage, welche Farbe vorher vorhanden ist, so wie die meisten Leinwände in real zunächst weiß sind. Dies lässt sich unter "Dynamic Paint Initial Color" einstellen. Zur Auswahl steht, eine einzige Farbe für den kompletten Canvas zu wählen, die Farbe einer vorhandenen Textur zu übernehmen oder die bisher in den Vertices gespeicherte Farbe. Dadurch werden mehrere Durchgänge mit Zwischenspeichern möglich.

blender dynamic paint
Leinwand: Die Optionen für den Canvas, sprich die Oberfläche, auf die gemalt werden soll.

Die nächsten Einstellungen betreffen diverse Effekte. "Spread" bedeutet, dass die Farbe sich ausbreitet, "Drip" dass sie in Richtung von Kraftfeldern zerläuft. Da in Blender standardmäßig die Gravitation eingeschaltet ist, bewirkt dies in den Default-Einstellungen ohne weitere vorhandene Kraftfelder, dass die Farbe einfach nach unten läuft wie zu dick aufgetragene Farbe auf einer Wand. Dies lässt sich aber noch feiner konfigurieren oder ganz deaktivieren. "Shrink" hingegen ist das Gegenteil von "Spread" und führt dazu, dass sich die Farbe zusammenzieht.
Die letzte Einstellung ist der Cache, respektive bei einer Bildsequenz deren Zielort. Das ist der Punkt, an dem die Simulation durchgeführt und das Ergebnis gespeichert wird.

blender dynamic paint
3D-Druckraster: In diesem Beispiel wird Dynamic Paint genutzt, um einen 3D-Druckraster-Effekt zu erzeugen.
blender dynamic paint
Dynamic Paint erzeugt um die Kirsche herum eine Delle, nachdem sie auf den Cupcake gefallen ist.

Der Vertex-Cache arbeitet nach dem Standard-Caching-System für Blender-Simulationen, während man für Bildsequenzen noch einige weitere Optionen vorfindet, wie die Wahl des UV-Layers und das Dateiformat. Hier besteht die Auswahl aus PNG und OpenEXR. Letzteres erzeugt größere Dateien und benötigt mehr Rechenleistung bei der Simulation. Aufgrund der größeren Farbtiefe ist es aber das Format der Wahl, wenn hohe Qualität, wie bei der Wellen-Simulation benötigt wird.

Die Brush-Settings

Fügt man einen Brush hinzu, so hat man als erstes die Auswahl, welche Farbe der Pinsel haben soll. Hier lässt sich auch die Diffuse-Farbe des Materials auswählen. Da man diese über Texturen beeinflussen kann, lässt sich auch mit Texturen malen. Das gilt auch für Voxel-Data-Texturen, die von der Rauch-Simulation genutzt werden. Den Feuchtigkeits-Faktor der Farbe kann man hier ebenfalls einstellen. Für die Alpha-Werte des Pinsels sind gleich zwei Einstellungen vorgesehen. Zum einen ein Faktor, der die grundsätzliche Durchsichtigkeit des Pinsels bestimmt, zum anderen eine Einstellung für "absolutes Alpha". Das soll verhindern, dass während der Animation der Pinsel mit jedem Schritt den Alpha-Wert aufaddiert, bis die Farbe komplett deckend ist. Da dies in manchen Situationen jedoch erwünscht ist, wird es als Option angeboten. Als Letztes lässt sich noch einstellen, ob der Pinsel die Farbe entfernen statt hinzufügen soll.
Unter "Dynamic Paint Source" finden sich vier Optionen zum Arbeiten mit Meshes und eine für Partikel-Systeme. Die vier Mesh-Optionen bestimmen, welcher Teil für das Malen genutzt werden soll. "Mesh Volume" bedeutet hier, dass die Farbe im Inneren des Meshes entsteht. "Mesh Volume + Proximity" fügt einen Verlauf an den Rändern des Objektes hinzu. Bei diesem lässt sich die Entfernung einstellen, wie der Verlauf abfallen soll, ob das Innere des Meshes überhaupt mit einbezogen werden soll und ob der Verlauf nach Innen zeigen soll. Mittels "Project" lässt sich der Pinsel auf den Canvas projezieren, wodurch er selbigen nicht mehr berühren muss und auch die Geometrie berücksichtigt wird, die die Oberfläche gerade nicht schneidet. Wählt man nur Proximity, so hat das Volumen keinen Einfluss mehr, sondern nur noch die Flächen des Pinsels. "Object Center" ist die schnellste zur Verfügung stehende Option, die nur den Ursprung des Objekts zum Malen benutzt. Die Auswahl "Particle System" arbeitet ähnlich, nur dass die Optionen aus Performance-Gründen nochmals reduziert sind auf einen inneren und äußeren Radius, der Zwischenteil wird weich interpoliert.

blender dynamic paint
Quellen: Der Einfluss der Pinsel bei verschiedenen Einstellungen der Dynamic Paint Source. Von links oben nach rechts unten: Mesh Volume, Mesh Volume + Proximity, Proximity und Object Center. Ganz unten ein Würfel, der Partikel nach rechts hin emittiert, die auf den Canvas fallen.

Die Einstellungen im nächsten Tab "Dynamic Paint Velocity" sind nützlich für Effekte, die von der Geschwindigkeit des Pinsels abhängen. So kann z.B. eine Bremsspur zum Ende hin dichter werden, oder ein Pinsel trägt weniger Farbe auf, wenn er schneller gezogen wird. Die zur Geschwindigkeit relativen Werte werden über eine Color Ramp definiert. Wenn "Replace Color" angewählt ist, wird die Farbe anhand der Geschwindigkeit direkt eingestellt, "Multiply Depth" steuert den Effekt von Displacement und Wellen, während "Multiply Alpha" die Durchsichtigkeit steuert. Der letzte Effekt hier ist "Smudge", der wie das gleichnamige Tool in Photoshop funktioniert.

blender dynamic paint
Schleimspur: Die Schnecke kriecht über den Stein und zieht mittels Dynamic Paint automatisch eine Schleimspur hinter sich her.
blender dynamic paint
Massiv oder Blattgold? Eine Statue wird mit Bällen beschossen, Dynamic Paint simuliert dabei die Schadstellen.

Das letzte Tab beinhaltet die Optionen für die Wellen-Simulation. Da der Brush grundsätzlich nicht weiß, ob der Canvas die Simulation ein- oder ausgeschaltet hat, sind diese Optionen immer vorhanden, auch wenn die Wellen-Simulation nicht genutzt wird. Zur Auswahl stehen vier verschiedene Typen. "Depth Change", die Standard-Einstellung, bewirkt nur Änderungen wenn sich der Pinsel bewegt. "Obstacle" beeinflusst die Wellen auch bei sich nicht bewegenden Objekten und reflektiert eintreffende Wellen. Damit lassen sich Effekte wie Verdrängung und Oberflächenspannung realisieren, aufgrund der unruhigen Natur der Simulation ist dies aber nur für sich bewegende Objekte zu empfehlen. Für letzteren Anwendungsfall ist hingegen die "Force"-Option zu empfehlen, da hier nur eine Kraft auf die Wasseroberfläche ausgeübt wird, aber die Geometrie nichts verdrängt und die Simulation stabil bleibt. Die Einstellung "Reflect Only" lässt das Objekt die Wellen nur reflektieren, ohne dass anderweitig in die Simulation eingegriffen wird. Leider lassen sich die Effekte nicht kombinieren. Über duplizierte Pinsel lässt sich dennoch eine Effektmischung erreichen.

blender dynamic paint
Pinsel: Die Optionen für den Brush.

Fazit

Dynamic Paint führt einen bekannten Ansatz konsequent fort und erweitert ihn um zahlreiche neue Möglichkeiten. Vor allem die Option, Weight Painting dynamisch über die Schnittmenge mit Meshes zu steuern, öffnet ein weites Feld, das bisher nur im Ansatz erforscht ist. Besonders Künstler aus dem Bereich Motion Graphics und VFX werden an Dynamic Paint ihren Gefallen finden. Da sich die erzeugten Maps exportieren lassen, ist Dynamic Paint auch ein interessantes Tool für Nutzer anderer Applikationen. Es ist aber auch ein Spielzeug, das kreativen Geistern erlaubt sich auszutoben. Hier wird die Zukunft zeigen, wo das noch junge Werkzeug seinen Platz in der Pipeline finden wird.

Dieser Artikel erschien im Magazin Digital Production, Ausgabe 1206. Herunterladen können Sie ihn hier als PDF. Darüber hinaus gibt es noch ein Interview mit Miika Hämäläinen, dem Erfinder und Hauptentwickler von Dynamic Paint in Blender.