blender cycles ink drop
Ein Tintentropfen in Wasser erstellt mit Blender und Cycles

Tutorial: Tintentropfen in Wasser

Tintentropfen in Wasser sehen sehr ästhetisch aus, darum begegnet man ihnen im Bereich Grafik Design und Motion Graphics immer wieder. Mit Blender und der Cycles Render Engine kann man sie zu Hause am Computer erzeugen.

Dieses Tutorial gibt es als Video (oben) oder im Folgenden als Text-Version. Ihr benötigt Blender 2.77 oder aktueller:

Wählen Sie zu Beginn die Cycles Render Engine im Info Editor. Das ist das Menü ganz oben. Wählen Sie den Standard-Würfel und skalieren Sie ihn auf die dreifache Größe (S 3). Im Properties Editor begeben Sie sich ins Physik-Tab und fügen eine Smoke Simulation hinzu. Wählen Sie hier "Domain". Der Würfel ist jetzt ein Container für die Rauchsimulation, mit der wir den Tintentropfen erstellen. Jetzt wird der Würfel nur noch als Drahtgitter-Modell dargestellt.

Scale the cube and make it a smoke domain

Fügen Sie eine Icosphere hinzu (Shift + A - Mesh - Icosphere) und skalieren Sie sie auf 1/10tel ihrer Größe (S 0.1). Die Kugel wird als Quelle des Tintentropfens fungieren, daher muss sie animiert werden, als würde ein Tropfen in Wasser fallen und dabei langsamer werden. Die Bewegung wird dann später als Quelle für die Bewegung des Rauchs genommen.

Stellen Sie sicher, dass Sie sich bei Frame 1 befinden und bewegen Sie die Kugel -7.5 Blender Units (BU) entlang der X-Achse (G X -7.5). Fügen Sie ein Keyframe für die X-Location hinzu, indem Sie das Properties-Panel öffnen (N) und einen Rechtsklick auf die X-Location ausführen. Im Menü, das nun erscheint, wählen Sie "Insert Single Keyframe". Begeben Sie sich nun zu Frame 10 und bewegen Sie die Kugel 5.5 BUs entlang der X-Achse (G X 5.5). Fügen Sie ein weiteres Keyframe hinzu. Wenn Sie nun die Animation abspielen, werden Sie feststellen, dass die Kugel langsam startet, dann schneller wird und danach erneut langsamer. Das ist in unserem Fall genau richtig, denn wenn die Kugel in die Domain eindringt, wird sie jetzt auf die selbe Art langsamer, wie es auch ein Tintentropfen in Wasser tun würde.

Mit der Kugel weiterhin angewählt begeben Sie sich zu den Physik-Einstellungen im Properties-Editor und fügen Sie der Kugel ebenfalls eine Smoke Simulation hinzu. Wählen Sie diesmal "Flow" und setzen Sie die Temperatur auf 0.0, damit sich die Tinte später nicht nach oben bewegt. Schalten Sie zudem "Initial Velocity" ein, damit die Bewegung der Kugel auf die Rauchsimulation (und damit die Tinte) übertragen wird.

Use an icosphere as flow source and animate it

Jetzt ist es an der Zeit, die Simulation zum ersten Mal zu backen. Wählen Sie die Domain an und schalten Sie "Adaptive Domain" ein, damit die Simulation schneller berechnet wird. Begeben Sie sich als nächstes zum "Smoke Cache"-Panel und wählen Sie "OpenVDB" als Dateiformat. Das ist eine neue Option in Blender, die wesentlich weniger Speicherplatz benötigt als das "Point Cache"-Format. Speichern Sie nun Ihre Datei und drücken Sie den "Bake"-Knopf. Wenn das Backen fertig ist, können Sie die Animation abspielen und sehen, dass die Tinte einfach durch die Domain hindurchschießt. Der Grund dafür ist, dass es noch nichts in der Szene gibt, mit dem die Simulation reagieren könnte.

Do your first bake using OpenVDB

Fügen Sie ein "Turbulence Force Field" hinzu (Shift+A -> Force Field -> Turbulence). Es kann an irgendeiner Stelle in der Szene platziert werden. Im Physik-Tab setzen sie den Wert für "Strength" auf 10. Das ist notwendig, da die Rauchsimulation in Blender sehr starke Kräfte benötigt, um auf diese reagieren zu können. Setzen Sie den Wert für "Size" auf 0.75. Dadurch werden die Turbulenzen ein wenig kleiner. Setzen Sie den Wert für "Flow" auf 1.0. Dadurch wird der Effekt des Feldes so wirken, als ob etwas durch Flüssigkeit schwimmt. Also genau das, was für einen Tintentropfen in Wasser benötigt wird. Wenn Sie jetzt die Simulation neu backen und als Animation abspielen, sehen Sie, dass sich der Rauch der Simulation turbulent zerstreut. Damit steht die Basis für den Effekt, in den nächsten Schritten wird das Resultat noch optimiert.

Add a turbulence field

Momentan wird von der Kugel die ganze Zeit Tinte emittiert. In der Realtität löst sie sich natürlich auf. Das lässt sich animieren. Wählen Sie die Kugel aus und begeben Sie sich zu Frame 10. Setzen Sie in den Flow Settings ein Keyframe bei "Flow Source: Surface", indem Sie den Mauscurser über das Feld bewegen und die Taste I drücken. Begeben Sie sich als nächstes zu Frame 15, setzen Sie den Wert auf 0.0 und fügen Sie wieder ein Keyframe hinzu. Setzen Sie zudem den Wert für "Subframes" auf 32. Jetzt emittiert die Kugel nicht nur an jedem Frame Ihrer Animation, sondern auch 32 mal in den Frames dazwischen, wodurch ein durchgehender Strahl entsteht.

Animate the flow of the emitter

Wählen Sie wieder die Domain aus und setzen Sie den Wert für die "Vorticity" auf einen Wert von 1.0 oder weniger. Diese Einstellung kontrolliert die Wahrscheinlichkeit, mit der in der Rauchsimulation Verwirbelungen enstehen. Ein höherer Wert heißt, dass es mehr Verwirbelungen gibt, diese sind aber auch kleiner. Ein niedriger Wert bedeutet wenige Wirbel, diese sind aber größer und deutlicher. Für Tinte in Wasser sind weniger, aber deutlichere Wirbel die richtige Wahl. Experimentieren Sie mit diesem Wert.

Wählen Sie "Smoke High Resolution" und setzen Sie die "Strength" auf 1.0. Belassen Sie die "Divisions" auf 1.0. Normalerweise will man bei einer Rauchsimulation in Blender so viel wie möglich an HiRes-Divisions, da diese schneller berechnet werden, als wenn man die normalen Divisions der Rauchsimulation erhöht. In diesem Fall würden die Extra-Details, die dabei hinzugefügt werden, aber den weichen Look der Tinte zerstören. Daher auch die Reduktion der Stärke auf 1.0. Ein Level HiRes-Divisions ist aber dennoch notwendig, denn wenn man die normalen Divisions einer Rauchsimulation in Blender weit hochdreht, kann es vorkommen, dass einzelne Rauchzellen sich abtrennen. Über HiRes werden sie wieder verbunden.

Setzen Sie nun einen Wert für die normalen Divisions der Domain. Das ist die Auflösung, mit der die Simulation arbeitet. Höhere Werte führen zu einem besseren Ergebnis. Setzen Sie den Wert daher so hoch wie nur möglich. Passen Sie dabei aber auf, wie viel Arbeitsspeicher Sie zur Verfügung haben. Für einen PC mit 16 GByte Arbeitsspeicher sollten Sie den Wert z.B. nicht höher als 448 setzen. Bei hohen Werten für Division sollten Sie auch den "Margin" unter "Smoke Adaptive Domain" erhöhen, z.B. auf 16, denn die Standard-Einstellung ist für Rauchsimulationen mit geringer Auflösung. Den Wert für "Threshold" setzen Sie auf das Minimum von 0.01, da der Rauch in dieser Simulation eine sehr geringe Dichte aufweisen wird.

Final settings for the domain

Jetzt ist es an der Zeit, den Tintentropfen zu rendern. Auf der nächsten Seite erfahren Sie, wie sie einen Cycles-Shader dafür erstellen können.


Die Kugel sollte nicht gerendert werden, schalten Sie daher ihre Render-Sichtbarkeit im Outliner aus. In den Einstellungen für die World wählen Sie einen komplett weißen Hintergrund.

Turn of render visibility for the emitter

Wählen Sie die Domain und ändern sie das Screen Layout von Blender zu "Compositing". Wählen Sie die Material-Nodes und schalten Sie "Use Nodes" ein. Löschen Sie den Diffuse-Shader und fügen Sie einen Volume Absorption-Shader hinzu (Shift + A -> Shader -> Volume Absorption). Verbinden Sie ihn mit dem Volume-Eingang der "Output"-Node. Geben Sie ihm eine Farbe ihrer Wahl. Wenn Sie nun die Viewport-Ansicht auf "Rendered" schalten, absorbiert der gesamte Würfel das Licht. Damit die Rauchsimulation sichtbar wird, benötigen Sie eine Node, die dem Shader sagt, woher die Daten für die Dichte kommen sollen. Dafür gibt es noch keine dedizierte Node in Cycles. Aber Sie können die "Attribute"-Node dafür verwenden (Shift + A -> Input -> Attribute). In der Attribute-Node finden Sie ein Text-Feld. Geben Sie dort "density" ein und verbinden Sie den "Fac"-Ausgang mit dem "Density"-Eingang der Volume Absorption-Node. Nun sollten Sie den Tintentropfen sehen, wenn auch nur sehr schwach. Sie können seine Stärke erhöhen, indem Sie eine "Math"-Node zwischenschalten (Shift +A -> Converter -> Math) und sie auf "Multiply" stellen. Geben Sie nun im freien Feld den Wert 50.0 ein.

shader for simple ink

 

Sie sehen nun bereits einen fertigen Tintentropfen. Wenn das die Art von Tinte ist, die Sie benötigen, dann können Sie bereits rendern, es wird blitzschnell gehen. Es gibt aber auch noch eine modernere Version von Tinte in Wasser. Dabei nutzen Fotografen keine normale Tinte, sondern wasserlösliche Farben, die aus kleinen Farb-Partikeln bestehen. Für einen solchen Effekt wird ein weiterer Shader benötigt: "Volume Scatter". Damit Sie diesen mit der vorhandenen Volume Absorption-Node kombinieren können, benötigen Sie zunächst einen "Add Shader" (Shift +A -> Shader -> Add Shader) zwischen dem Ausgang der Volume Absorption-Node und der Output-Node. Fügen Sie als nächstes einen Volume Scatter-Shader hinzu (Shift + A -> Shader -> Volume Scatter) und verbinden Sie ihn mit dem zweiten Eingang des Add-Shaders. Verbinden Sie zudem den Ausgang der Multiply-Node mit dem "Density"-Eingang der Volume Scatter-Node und geben Sie ihr die gleiche Farbe wie der Volume Absorption-Shader. In der Viewport-Render-Ansicht sehen Sie jetzt einen merkwürdigen Effekt: Der Tintentropfen wird schwarz.

Without a strong light it will render black

 

Die Ursache liegt in den Standard-Einstellungen von Blender. Volume Scatter nutzt dabei 0 "Bounces" und aus technischen Gründen verträgt sich das nicht mit komplett einfarbigen Hintergründen. Wenn Sie mehr über Shadow Rays, Bounces und Multiple Importance Sampling erfahren wollen, empfehlen wir einen Blick in Die Cycles Enzyklopädie. Konkret können Sie das Problem beheben, indem Sie entweder ein HDRI für den Hintergrund nutzen oder eine helle Sun Lamp hinzufügen. Die einfachste Lösung liegt aber darin, in den Einstellungen für "Light Paths" im Render-Tab den Wert für "Volume" auf 1 zu setzen. Dabei erhöht sich zwar die Renderzeit, Sie sehen jetzt aber den Tintentropfen. Wobei er noch eher wie Rauch aussieht. Tinte bzw. Farbe in Wasser hat hingegen einen sehr scharfen Übergang vom klaren Wasser zur dichten Wolke. Um dies zu simulieren, setzen Sie eine "ColorRamp" (Shfit + A -> Converter -> ColorRamp) zwischen die Attribute-Node und die Multiply-Node. Bewegen Sie den Rechten Color-Stop so weit nach links, bis Sie mit dem Ergebnis zufrieden sind. Es kann sein, dass Banding-Artefakte auftauchen. In diesem Fall sollten Sie die "Step Size" im "Volume Sampling"-Panel des Render-Tabs reduzieren. In unseren Versuchen war ein Wert von 0.01 gering genug. Eine geringe "Step Size" erhöht allerdings auch die Renderzeit.

The final settings ready to render

Nun ist alles bereit zum Rendern. Falls Sie eine schöne Animation oder ein schönes Bild mit diesem Tutorial erstellen, zeigen Sie uns doch das Ergebnis in den Kommentaren. Wir freuen uns darüber! Die fertige Datei, die für das Demo-Bild genutzt wurde, können Sie direkt am Ende des Artikels herunterladen:

Die fertige .blend-Datei kann hier heruntergeladen werden!