blender mantaflow

Ein Mantaeis in Blender 2.93- Artikel in Digital Production 2105

Der verregnete Sommer will uns einfach kein Wetter gönnen, bei dem wir mit einem Softeis im Park sitzen und genießen können. Dann machen wir unser Eis doch einfach virtuell selbst in Blender. Das hat auch den Vorteil, dass wir es an jedem beliebigen Ort auf der Welt platzieren können. Z.B. in Venedig am Meer bei Sonnenuntergang.

Dieser Workshop funktioniert mit Blender ab Version 2.92, wir empfehlen aber die Version 2.93 mit Long Term Support. Er ist in drei Teile aufgebaut und auch für Blender-Neulinge geeignet. Zuerst werden wir mittels Mantaflow die Eiscreme simulieren. Im zweiten Schritt bereiten wir die Szene für das Shading vor. Im dritten Schritt erzeugen wir für die Eiscreme ein Material und rendern das Ergebnis.

Immer trifft es zuerst den armen Default Cube

Wir öffnen eine neue Szene und starten, indem wir den Default Cube löschen und mittels Shift+A > Mesh > Circle einen Kreis hinzufügen. Links unten im 3D-Viewport erscheint ein kleines Pop-up, das wir über einen Klick auf den kleinen Pfeil öffnen können. Dort setzen wir den Fill Type auf Triangle Fan und die Anzahl der Vertices auf 12.

mantaflow blender simulation flüssigkeit fluid liquid
Add Circle – Die Einstellungen für das Circle- Objekt, aus dem später die Eiscreme fließen soll.

Schachbrettauswahl

Als nächstes begeben wir uns per Tab in den Edit Mode und deselektieren mit Shift+LMB den Punkt in der Mitte. Im Select-Menü findet sich die Option Checker Deselect. Mit den Standardeinstellungen sollte jetzt nur noch jeder zweite Punkt selektiert sein. Wir skalieren diese mittels S ein wenig nach innen, wodurch eine Sternenform entstehen sollte. Durch diese Form soll sich bald feines Softeis in die Szene ergießen.

mantaflow belnder simulation flüssigkeit fluid liquid
Einzel-Keyframe – Im Properties Editor kann man einzelnen Kanälen einen Keyframe verpassen.

Eltern-Kind-Beziehung

Dafür soll sich der Stern auf einer enger werdenden Spiralbahn aufwärtsdrehen. Wir bewegen ihn mit G, Y, 2 um zwei Einheiten nach rechts und fügen über Shift+A > Empty > Plain Axes ein leeres Objekt hinzu. Nun wählen wir den Stern aus und fügen danach mit Shift das Empty der Auswahl hinzu. Mittels Strg+P > Object erzeugen wir eine Child-Parent-Hierarchy mit dem Empty als Elternteil und dem Stern als Kind. Jetzt wählen wir das Empty aus und richten es mittels R, Y, 90 auf. Im Object Properties Tab des Properties Editors setzen wir einen Keyframe bei Rotation Z, indem wir dort auf den kleinen weißen Punkt rechts neben der Property klicken. Das gleiche führen wir mit Location Z durch und wählen den Stern an, wo wir einen Keyframe bei Location Y setzen.

Taschenrechner immer dabei

Wir gehen zu Frame 80 und setzen beim Stern Location Y auf 0,2 und erstellen wieder einen Keyframe. Dann selektieren wir das Empty und setzen die Location Z auf 5 und erzeugen ebenfalls einen Keyframe. Jetzt kommt der Punkt, an dem wir uns überlegen können, wie viele Schichten an Eiscreme wir am Ende haben wollen. In unserem Beispiel sollen es vier sein. Also klicken wir in das Feld für Rotation Z und geben dort 360 mal 4 ein. Das Ergebnis sollte 1.440° sein, alle Eingabefelder für Zahlen in Blender haben quasi einen Taschenrechner integriert, der einfache Formeln in Python-Syntax automatisch berechnet.

Auf die Spitze getrieben

Um die Spitze zu simulieren, die bei der Befüllung eines Eisbechers in der realen Welt am Ende übrig bleibt, animieren wir zusätzlich die Größe des Sterns. Wir setzen bei Frame 60 einen Keyframe in allen drei Scale-Kanälen, indem wir im Viewport die Taste I für Insert Keyframe drücken und dann Scale auswählen. Dann begeben wir uns zu Frame 80 und drücken S, 0,01 um die Skalierung auf ein Prozent zu reduzieren. Jetzt setzen wir wieder einen Keyframe.

Eisdomäne

Die Animation des Emitters ist so weit abgeschlossen, nun benötigen wir eine Domain, in der die Simulation stattfinden kann und die gleichzeitig als Mesh für die Eiscreme dienen wird. Wir fügen einen Cube hinzu, skalieren diesen mit S, 3,5 und bewegen ihn mit G, Z, 2 um zwei Einheiten nach oben. Damit ist nun quasi der Bereich abgesteckt, in dem die Simulation ablaufen kann. Damit wir sehen können, was darin passiert, empfiehlt es sich, den X-Ray-Modus zu aktivieren. Der Shortcut dafür ist Alt+Z.

Der Fluch der Dimensionen

Wir begeben uns mit der selektierten Domain zum Physics Tab im Properties Editor und schalten dort Fluid ein. Bei Type wählen wir Domain und bei Domain Type Liquid. Die Resolution Divisions setzen wir auf 64. Damit wird die grundsätzliche Qualität der Simulation definiert. Niedrigere Werte bedeutet schnelleres Simulieren, aber auch, dass die Form des Emitters weniger deutlich zur Geltung kommt, dass Stufenartefakte erscheinen und dass es bei langsamen Bewegungen zu Flackern kommen kann. Höhere Werte verbessern die Qualität, allerdings ist zu beachten, dass sich die benötigte Rechenzeit bei einer Verdopplung der Resolution Divisions verachtfacht. Hier schlägt der Fluch der Dimensionen gnadenlos zu.

mantaflow blender simulation flüssigkeit fluid liquid
Domaineinstellungen – Die Basiseinstellungen für die Domain. Vorerst noch ohne Mesh für schnellere Simulationen.

Stabilität

Timesteps Maximum schalten wir auf 16 und Minimum auf 2. Jetzt kann Mantaflow für sich entscheiden, ob es die Simulation in viele kleinere Zeitabschnitte unterteilt, wenn eine Bewegung zu schnell wird. Und der Emitter bewegt sich durchaus flink. Bei Simulation Method wählen wir APIC. Diese ist stabiler als FLIP und besser geeignet, wenn man Szenen hat, bei denen es zu keinen Spritzern kommen soll wie in unserem hochviskosen Beispiel. Wir schalten Viscosity ein und setzen die Strength auf 5,0. Dieser Wert bestimmt, wie formstabil das Eis später wird. Damit sind die wichtigsten Einstellungen bei der Domain vorgenommen. Später werden wir noch mal zur Domain zurückkehren, wenn es darum geht, nicht nur die Flüssigkeit über Partikel zu simulieren, sondern ihr auch eine Oberfläche zu geben. Dadurch, dass wir vorerst ohne Mesh simulieren, erhalten wir bei unseren Tests eine höhere Geschwindigkeit bzw. kürzere Simulationszeiten.

Emittereinstellungen

Für die folgenden Schritte empfiehlt es sich, vorher sicherzustellen, dass man sich in der Timeline bei Frame 1 befindet. Denn dann kann man bei jeder Änderung gleich das Ergebnis im Viewport ansehen. Wir fügen dem Emitter-Objekt ebenfalls eine Fluid-Physik hinzu und schalten den Type auf Flow. Im Unterpanel Settings schalten wir den Flow Type auf Liquid. Damit sagen wir der Simuation, dass der Emitter eine Flüssigkeit erzeugen soll, die eine Oberfläche hat. Bei Flow Behaviour schalten wir auf Inflow und setzen die Sampling Substeps auf 32. Die Simulation weiß jetzt, dass aus dem Emitter konstant eine Flüssigkeit fließen soll. Dank der 32 Sampling Substeps funktioniert das auch, wenn sich der Emitter sehr schnell bewegt. Wenn wir jetzt die Simulation starten, indem wir die Animation mit der Leertaste abspielen, zeigt sich aber noch nichts im Viewport, denn unser Emitter ist ein Spezialfall, da er keine Ausdehnung in die dritte Dimension hat, sprich er hat kein Volumen. Also begeben wir uns zum Unterpanel Flow Source und setzen dort den Haken bei „Is Planar“.

blender mantaflow flüssigkeit fluid liquid
Emittereinstellungen – Die Einstellungen für den Emitter. Ohne das Häkchen bei „Is Planar“ kann unser zweidimensionaler Stern keine Flüssigkeit abgeben.

Den Müll rausbringen bzw. den Cache leeren

Nun sollten sich beim Abspielen der Animation blaue Partikel im Viewport zeigen, die sich wie eine stark viskose Flüssigkeit verhalten. Möglicherweise aber nicht gleich beim ersten Frame, denn Mantaflow erneuert den Cache nur, wenn man Änderungen an den Domaineinstellungen vornimmt. Ändert man die Einstellungen am Emitter, wird das vom Cache-System leider nicht erkannt. Daher sollten wir nach jeder Änderung am Emitter kurz zur Domain gehen und dort eine kleine Änderung durchführen, z.B. indem wir die Resolution Devisions um zwei erhöhen. Wenn wir dann die Animation starten, wird die Flüssigkeitssimulation wieder vom ersten Frame aus berechnet.

Absetzungserscheinungen

Ab Frame 80 ist der Emitter winzig klein, die Partikel fließen aber weiter aus ihm heraus. Nach einiger Zeit sollte dieses Nachtropfen aber ein Ende haben. Wir begeben uns zu Frame 100 und setzen einen Keyframe bei Use Flow in den Emitter-Einstellungen. Dann gehen wir zu Frame 101, entfernen das Häkchen und setzen wieder einen Keyframe. Jetzt stoppt der Zufluss an Eiscreme bei Frame 101. Während der restlichen Frames der Animation können wir zusehen, wie das Eis sich langsam absetzt.


Oberflächlichkeiten

Wenn wir mit der Simulation soweit zufrieden sind, ist es jetzt an der Zeit, statt nur der Partikel auch eine richtige Oberfläche bzw. ein Mesh zu erzeugen. Dafür begeben wir uns zu den Domain-Einstellungen und setzen den Haken bei Mesh. Wir öffnen das Panel und setzen das Smoothing sowohl für Positive als auch für Negative auf 2. Damit wird die Oberfläche ein wenig geglättet, bei der Auflösung von 64 zeigen sich nämlich noch immer Blockartefakte, die dadurch ausgeglichen werden. Das Erzeugen des Meshes sollte jetzt relativ schnell vonstattengehen, da schon vorhandene Partikel nicht neu simuliert werden müssen. Wir können also auch noch Optimierungen am Mesh vornehmen, indem wir unterschiedliche Einstellungen ausprobieren, ohne jedes Mal die gesamte Simulation ablaufen lassen zu müssen. Dafür wählen wir das erzeugte Mesh an. Im Outliner ist nun die Domain ausgewählt. Die Oberfläche wird also aus der Domain erzeugt bzw. das Mesh der Domain wird durch die neu erzeugte Oberfläche ersetzt.

blender mantaflow flüssigkeit fluid liquid
Domaineinstellungen Mesh – Die Mesh-Einstellungen für die Domain. Mittels Smoothing können die Stufenartefakte durch die niedrige Auflösung etwas ausgeglichen werden. Zu viel davon bügelt allerdings auch erwünschte Details weg.

Eiscreme in Venedig

Nun ist es an der Zeit für das Shading der Eiscreme. Dafür benötigen wir zunächst ein Beleuchtungssetup und eine realistische Umgebung, denn ohne die wird es uns später schwerfallen, zu evaluieren, ob das Material auch realistisch ist. Aus diesem Grund werden in Blender für den Material-Preview HDRI-Panoramen mit niedriger Auflösung verwendet. Man kann sich diese wie ein 360-Grad-Panoramafoto vorstellen, das gleichzeitig exakt die Lichtsituation gespeichert hat, die der Fotograf an dem Ort zu dem Zeitpunkt der Aufnahme vorgefunden hat. Damit eignen sie sich perfekt für die Evaluation von Materialien, denn mit einem HDRI-Panorama können sie direkt in realistisches Licht getaucht werden und sie bieten auch gleich noch perfekt realistische Reflexionen. Wenn wir uns in den Shading-Workspace begeben, ist Blender bereits im Material-Preview-Modus. Ganz rechts in der oberen Ecke des 3D-Viewport sind vier Kugeln, über die man zwischen den verschiedenen Shading-Einstellungen wechseln kann. Daneben befindet sich ein Drop-down-Pfeil. Wenn wir daraufklicken, können wir zwischen den verschiedenen mitgelieferten HDRI-Panoramen umschalten. Für Eisfeeling empfiehlt sich das HDRI ganz rechts in der Leiste, das bei einem Sonnenuntergang in Venedig aufgenommen wurde, die perfekte Location für Eisgenuss. Leider sind diese mitgelieferten HDRI-Umgebungen in ihrer Auflösung stark reduziert und nicht direkt für das Rendering verwendbar. Daher sieht die Szene auch weiterhin grau aus, wenn wir in den Render-Preview-Modus umschalten oder direkt mit F12 rendern. Um beim finalen Rendering ebenfalls ein HDRI für Reflexionen und Beleuchtung im Hintergrund zu haben, müssen wir dieses der Blender World hinzufügen. Das funktioniert im Shading Workspace im Shader Editor, der sich direkt unterhalb des 3D-Viewports befindet. Im Shader Editor in der linken oberen Ecke ist ein Drop-down, bei dem momentan Object ausgewählt ist. Das bedeutet, dass wir momentan das Material des gerade aktiven Objekts bearbeiten. Wählen wir dort stattdessen World, sollten zwei Nodes erschienen sein. Der eine nennt sich Background, und in seinen Color Socket werden wir ein HDRI füttern, damit die Umgebung ihre Farbe und Helligkeit vom HDRI bekommt. Der Strenght Slider darunter ist nur ein Multiplikator und sollte auf 1,0 belassen werden. Wir fügen mit Shift+A > Texture > Environment Texture einen Node für Umgebungstexturen hinzu und verbinden dessen Color-Ausgang mit dem Color-Eingang der Background Node. Jetzt benötigen wir noch eine passende Textur. Grundsätzlich können wir hier jedes beliebige HDRI-Panorama verwenden. Falls wir keines zur Hand haben, können wir uns eine höher aufgelöste Version des Sonnenuntergangs in Venedig unter www.digitalproduction.com herunterladen. Im Node klicken wir auf Open und wählen im Dateibrowser von Blender das gewünschte HDRI aus. Wenn wir jetzt in den Rendered-Preview-Modus umschalten oder rendern, erscheint die Umgebung im Hintergrund und das Eis wird davon beleuchtet.

blender mantaflow flüssigkeit fluid liquid
Sonnenuntergang – Bei einem Sonnenuntergang in Venedig schmeckt Eiscreme noch mal extragut.

Eisstudio

Der Hintergrund ist aber vielleicht nicht ganz das, was wir für ein Eiscreme-Rendering haben wollen. Die DP hat für diesen Zweck ein Studiosetup gebaut, dass ihr unter Datei: IceCreamStudio.blend herunterladen könnt. In Blender führen wir dann File > Append aus, navigieren zur heruntergeladenen Datei und klicken doppelt darauf. Jetzt befinden wir uns innerhalb der Datei. Für den Dateibrowser von Blender sind BLEND- Dateien nichts anderes als weitere Ordner, in die hineinnavigiert werden kann. Wir begeben uns in den Ordner Collection und wählen dort die Collection IceCreamStudio aus.

Die Welt dreht sich

Nachdem wir sie in unser Projekt geladen haben, müssen wir wahrscheinlich noch die Größe und Position anpassen. Die Rotation der HDRI-Textur im World-Material können wir parallel anpassen, indem wir auf den Environment Texture Node klicken und über die Taste N die Sidebar öffnen. Dort finden wir ein Panel für Texture Mapping, wo wir über eine Änderung von Rotation Z die Umgebung drehen können. Damit können wir z.B. anpassen, aus welcher Richtung die Sonne auf die Eiscreme scheint. Falls sich die Standardlichtquelle mit dem Namen Light noch in der Szene befindet, löschen oder verstecken wir sie.

blender mantaflow flüssigkeit fluid liquid
Material Preview Mode – Die im Material-Preview-Modus verfügbaren HDRIs sind praktisch, um das Aussehen eines Materials zu begutachten, aber leider nicht ohne Umwege für das finale Rendering verfügbar.

Passepartout

Als Nächstes platzieren wir die Kamera, denn nur was die Kamera in Blender sehen kann, wird später auch gerendert. Normalerweise bewegt man die Kamera in Blender wie alle anderen Objekte auch, es gibt aber mit einem kleinen Trick die Möglichkeit, die Kamera so zu bewegen, wie man im 3D-Viewport navigiert. Dafür müssen wir aber zunächst durch die Kamera sehen. Wir drücken dafür die 0 auf dem Ziffernblock. Nun sollte sich der Blickwinkel geändert haben und ein heller wie dunkler Bereich, getrennt durch eine schwarze Linie, erschienen sein. Der dunkle Bereich ist das Passepartout, das nicht gerendert wird. Nun drücken wir die Taste N, um die Side­bar zu öffnen. Dort finden sich am Rand mehrere Tabs oder Reiter. Wie wählen View und schalten unter View Lock die Option Camera to View ein. Wenn wir jetzt im 3D-Viewport navigieren, folgt die Kamera auf dem Fuße. So positionieren wir die Kamera nach Wunsch und schalten den Lock wieder aus, damit wir die Kamera nicht aus Versehen bewegen.


Hochformat

Das Seitenverhältnis der Kamera können wir im Properties Panel im Reiter Output Properties ändern, das ist der dritte von oben, der aussieht wie ein Fotodrucker. Wenn wir dort die Resolution X auf 1.024 stellen und die Resolution Y auf 2.048, erhalten wir ein 2:1 Hochformat.


Cycles

Wenn wir nun in den Rendered Preview schalten, sieht das Ergebnis schon ganz gut aus. Es geht aber noch etwas besser, indem wir die Render Engine in den Render Properties – das ist der Reiter direkt über den Output Properties – im Properties Editor auf Cycles schalten. Diese kleine Änderung führt zu einem Realismus-Boost, ohne dass wir viele Einstellungen ändern müssen. Anders als Eevee simuliert Cycles, wie sich das Licht in der Szene physikalisch korrekt fortbewegt, und verfolgt dabei jeden einzelnen Strahl. Das ist der Grund, warum die Renderzeiten unter Cycles massiv länger sind. Der Zugewinn an Realismus ist es aber wert.


Ein Material für das Eis

Jetzt haben wir alle nötigen Vorkehrungen getroffen, um dem Eis ein Material zu verpassen. Wir wählen das Objekt Domain aus, es handelt sich dabei um unser simuliertes Eis, das aus der Domain der Flüssigkeitssimulation entstanden ist. Über das Drop-down schalten wir den Shader Editor von World zurück auf Object und klicken mittig auf den großen Button New. Damit haben wir ein neues Material erzeugt und auch gleich dem Objekt zugewiesen. Geben wir ihm noch einen sprechenden Namen wie z.B. „Softeis“.


Subsurface Scattering

Im Shader Editor sind jetzt zwei Nodes erschienen. Über die Principled BSDF können wir alle Oberflächeneigenschaften des Objekts kontrollieren. Zunächst schalten wir Subsurface auf 0,75. Dadurch dringt ein Großteil des Lichts zunächst in die Eiscreme ein, springt dort ein wenig umher und kommt an anderer Stelle wieder zum Vorschein. Die Eindringtiefe ist aber noch zu groß. Wir haben unser Objekt nicht realistisch skaliert, daher müssen wir ein wenig über den Daumen gepeilt arbeiten. In unseren Versuchen hat sich eine Eindringtiefe von 10 cm bewährt. Wir wählen das Drop-down Subsurface Radius und schalten alle drei Kanäle auf 0,1. Die drei Kanäle entsprechen rot, grün und blau. Da wir ein möglichst weißes Eis wollen, sollten alle drei Kanäle den gleichen Wert haben. Sonst kann es passieren, dass rotes Licht z.B. tiefer eindringt und für eine Färbung sorgt. Das Eis ist noch ein wenig matt. In der Das Eis ist noch ein wenig matt. In der Realität sollte es von einer glatten Schicht überzogen sein, da es von allen Seiten her leicht anschmilzt. Einen ähnlichen Effekt erreichen wir, indem wir die Roughness auf 0,1 stellen.

blender mantaflow flüssigkeit fluid liquid
Shading-Setup – Die Ausgangslage für das Shading der Eiscreme.

Bonus

Theoretisch sind wir bereits so weit, dass wir rendern können. Falls wir noch ein I-Tüpfelchen an Details hinzufügen wollen, können wir das Eis mit einer feinen Dellenstruktur überziehen. Dafür fügen wir eine Texture > Noise Texture hinzu und schalten die Scale auf 200. Damit erzeugen wir ein fein gepunktetes Graustufenmuster. Zudem fügen wir einen Vector Bump Node hinzu und verbinden dessen Normal-Ausgang mit dem Normal-Eingang des Principled BSDF Nodes. Wir verbinden den Fac-Ausgang des Noise Texture Nodes mit dem Height-Eingang des Bump Nodes. Nun sollten wir den Effekt bereits erkennen können, er ist aber noch viel zu stark. Reduzieren wir die Strength im Bump Node daher auf 0,2 und die Distance auf 0,1. Nun ist der Effekt subtil genug, dass wir mit F12 rendern und das Ergebnis genießen können. Auch wenn es draußen vielleicht gerade regnet.

Fazit

Für erste Schritte in Blender eignen sich Simulationswerkzeuge wie Mantaflow sehr gut, denn damit lassen sich auch ohne aufwendiges Modellieren Ergebnisse erzielen. Und falls ihr Sie dank des leckeren Ergebnisses Appetit auf mehr bekommen habt, Blender ist sehr weitläufig, es gibt viel zu entdecken.


Related Items: