In diesem dritten Tutorial der Reihe über Feuer und Rauch mit dem Fluid-Simulator in Blender 4.5 sprechen wir darüber, wie Blender das Bake, also die physikalische Simulation von Feuer und Rauch, berechnet und speichert.


Dieses Tutorial ist Teil einer Miniserie mit 10 Episoden über die Grundlagen von Feuer und Rauch in Blender 4.5. Für die vollständige Episodenliste klicken Sie hier.

Die Videoversion dieses Tutorials ist derzeit in dieser Sprache nicht verfügbar, steht jedoch in englischer Sprache zur Verfügung und kann oben auf der Seite ausgewählt werden.


Videotranskript

Hallo zusammen! In diesem dritten Tutorial der Reihe über Feuer und Rauch mit dem Fluid-Simulator in Blender 4.5 sprechen wir darüber, wie Blender das Bake, also die physikalische Simulation von Feuer und Rauch, berechnet und speichert. Unter anderem sehen wir, wie man die Simulation für eine Domain einmal berechnet, damit sie dupliziert und an anderen Stellen der Szene platziert werden kann, ohne die Simulationen für alle Kopien neu berechnen zu müssen. Außerdem sehen wir, wie man einen Offset für die Wiedergabe der Simulation festlegt, sodass die Animation mit einem bereits brennenden Feuer beginnt und nicht mit der anfänglichen Entzündung der Flamme.

Die Ausgangsszene für dieses Tutorial besteht aus einer Feuerschale, die einige Holzscheite enthält.

Es handelt sich um zwei getrennte Meshes, wobei die Scheite ein einzelnes Mesh bilden.

Die Feuerschale steht auf einer rechteckigen Plane, die als Boden dient, und später werden wir weitere Feuerschalen darauf platzieren. Die virtuelle Welt hat eine Strength von 0 und keine Lichtquellen, daher erscheint die Szene im Rendered-Modus vollständig schwarz.

Aus den vorherigen Episoden wissen wir, dass wir einem Objekt eine Fluid-Komponente vom Typ Fire And Smoke Flow zuweisen müssen, damit es Flammen erzeugt. Also füge ich dem Feuerholz eine Physics Fluid-Komponente hinzu und stelle Inflow als Verhalten der Komponente ein. Das bedeutet, dass das Holz in jedem Frame Flammen erzeugt.

Anschließend erstelle ich einen Cube, weise ihm eine Flow-Komponente vom Typ Domain zu und lasse ihn zunächst die gesamte Szene umschließen. Sofort bemerken wir ein Problem: Die Standardauflösung ist zu niedrig und erzeugt Voxels, die zu groß sind. Dadurch werden die Flammen im Verhältnis zu den Objekten, die sie erzeugen, viel zu groß.

Eine Erhöhung der Auflösung auf 64 verbessert die Situation kaum, und außerdem dauert die Simulation länger. Ich möchte die Auflösung gar nicht weiter erhöhen, da klar ist, dass dies nicht der richtige Ansatz ist.

Die naheliegendste Lösung besteht darin, die Domain so zu skalieren, dass sie nur die Feuerschale und etwas Raum darüber umfasst, damit sich Flammen und Rauch entwickeln können. Jetzt funktioniert die Auflösung sogar etwas zu gut. Tatsächlich ist sie vielleicht sogar übertrieben, daher können wir sie wieder auf 32 reduzieren und erhalten dennoch klar definierte Flammen. Das eigentliche Problem ist vielmehr, dass das Holz viel zu viel Feuer erzeugt.

Um die erzeugte Feuer­menge zu verringern, können wir den Parameter Fuel des Inflow-Objekts anpassen. Intuitiv gilt: Je höher der Fuel-Wert, desto mehr Brennstoff wird in jedem Frame verbrannt. Die Lösung besteht also darin, diesen Wert zu senken, bis die Flammen eine passende Größe erreichen.

Wie in den vorherigen Episoden erwähnt, werden die Daten des Baking, also der Berechnung der physikalischen Simulation, in einem speziellen Ordner gespeichert, dessen Pfad im Abschnitt Cache des Domain-Objekts angegeben ist. Bevor ich die Domain erstellt habe, habe ich die Datei auf der Festplatte gespeichert, daher befindet sich der Cache-Ordner im selben Verzeichnis wie die Blender-Projektdatei.

Im Abschnitt Cache der Domain können wir den Frame-Bereich festlegen, über den die Domain-Simulation berechnet werden soll. Dieser Bereich muss nicht unbedingt dem Animationsbereich der Szene entsprechen. Das kann nützlich sein, um nur eine begrenzte Anzahl von Frames zu baken, um sich einen Eindruck vom Aussehen des Feuers zu verschaffen, bevor man das vollständige Bake durchführt. Ein weiterer Anwendungsfall ist, wenn sich Fluid-Objekte nicht im Kamerabereich befinden und es daher für diese Frames nicht notwendig ist, die physikalische Simulation zu berechnen.

Bevor wir die anderen Parameter im Abschnitt Cache betrachten, sehen wir uns an, was passiert, wenn wir das Set aus Domain, Feuerschale und Holzscheiten, wobei die Scheite als Inflow-Objekte fungieren, duplizieren und diese Kopien in der Szene verteilen. Wie wir zuvor gesehen haben, würde eine einzelne Domain, die die gesamte Szene abdeckt, eine extrem hohe Auflösung benötigen, um gute Flammen zu erzeugen, und dabei viel ungenutzten Raum enthalten. Um mehrere Feuerschalen hinzuzufügen, bleibt daher nur die Möglichkeit, das gesamte Set zu duplizieren.

Das Problem besteht darin, dass Blender beim Drücken von Play in der Timeline für alle Domains denselben Cache-Ordner verwendet. Das bedeutet, dass sie sich dieselben Simulationsdaten teilen. Wenn Sie sicher sind, dass Sie für alle Simulationen dieselben Parameter beibehalten möchten, können Sie versuchen, den Betrachter zu täuschen, indem Sie die Domains leicht drehen oder jeder Domain unterschiedliche Materials zuweisen, um das Aussehen der Flammen beim Rendern zu variieren.

Das eigentliche Problem entsteht, wenn wir die Auflösung oder einen anderen Parameter einer Domain ändern und anschließend erneut ein Bake durchführen. Beispielsweise reduziere ich die Auflösung der weiter entfernten Domains, da wir für Hintergrundobjekte keine hohe Auflösung benötigen. Jetzt vermischt Blender die Daten stark, da derselbe Satz volumetrischer Daten von Objekten mit unterschiedlichen Eigenschaften gemeinsam genutzt wird.

Wenn Sie möchten, dass jede Domain ihre Daten klar von den anderen getrennt speichert, müssen Sie vor dem Start der Simulation für jede Domain separate Cache-Ordner angeben. Natürlich erhöht dies den Speicherplatzbedarf auf der Festplatte erheblich, da die Daten der verschiedenen Domains getrennt gespeichert werden. Je nach Bedarf müssen Sie entscheiden, welche Strategie sinnvoller ist: eine oder mehrere sehr große Domains mit duplizierter Simulation oder separate Caches für verschiedene Domains.

Bisher hat Blender das Bake der Simulation jedes Mal berechnet, wenn wir in der Timeline Play gedrückt haben. Das ist jedoch nicht der einzige mögliche Modus. Tatsächlich gibt es einen weiteren, der uns auch ein sehr nützliches Werkzeug bietet. Um es einfach zu halten, lasse ich nur eine Feuerschale mit ihrer Domain in der Szene und lösche die anderen. Seien Sie jedoch vorsichtig, denn beim Löschen von Domains werden deren Daten nicht automatisch von der Festplatte entfernt. Das ist eigentlich positiv, da wir die Simulationsdaten später speichern und wiederverwenden können. In diesem Fall benötige ich diese Daten jedoch nicht mehr, daher lösche ich sie manuell.

Im Abschnitt Cache der Domain finden wir das Menü Type, das standardmäßig auf Replay eingestellt ist. Dies ist der Modus, den wir bisher verwendet haben: Blender berechnet jedes Mal ein neues Bake, wenn wir zu Frame 1 zurückkehren und Play drücken, und überschreibt dabei die vorherigen Daten.

Der Modus Modular ermöglicht es, separate Bakes für verschiedene Aspekte der Simulation durchzuführen. In bestimmten Fällen kann das hilfreich sein, um einzelne Teile zu überprüfen oder zu ersetzen, ohne die gesamte Simulation neu berechnen zu müssen.

Der Modus All schließlich erlaubt es, die gesamte Simulation zu baken, jedoch im Hintergrund und nicht in der Timeline zu berechnen. Um das Bake zu starten, müssen Sie im Panel auf Bake All klicken. Blender zeigt dabei einen Fortschrittsbalken an. Sobald die Berechnung abgeschlossen ist, können Sie in der Timeline Play drücken, um das Ergebnis deutlich flüssiger anzusehen, da es bereits von Blender vorab berechnet wurde.

Um die Simulationseinstellungen zu ändern, müssen Sie zunächst die vorhandenen Daten löschen, indem Sie auf Free All klicken. Danach werden die Parameter wieder bearbeitbar und Sie können Änderungen vornehmen. Anschließend müssen Sie natürlich erneut auf Bake All klicken, damit Blender die Simulation neu berechnet.

Ein Blick in den verwendeten Ordner gibt Ihnen eine Vorstellung davon, welche verschiedenen Module oder Baking-Schritte bei Verwendung der Modi Modular und All getrennt berechnet und gespeichert werden.

Der Modus All stellt den Parameter Offset zur Verfügung, der ein Problem löst, das Sie möglicherweise bereits bemerkt haben. Bisher begannen alle Feuersimulationen mit der Entzündung der Flamme im ersten Frame der Animation.

Das ist jedoch nicht immer wünschenswert, da wir manchmal möchten, dass die Animation mit einem bereits brennenden Feuer beginnt.

Um dieses Problem zu lösen, können wir im Feld Offset eine negative Zahl eingeben.

Der Tooltip erklärt, dass dies nicht bedeutet, dass das Baking früher beginnt, sondern lediglich, dass die Simulation so wiedergegeben wird, als wäre sie im ersten Frame der Animation bereits um diese Anzahl von Frames fortgeschritten.

Die Animationslänge in Frames bleibt weiterhin diejenige, die zwischen Frame Start und Frame End festgelegt ist.

In diesem Fall bleiben die letzten 25 Frames der Timeline ohne Simulation, da wir Blender mit dem Offset angewiesen haben, den 25. Frame der Simulation im ersten Frame der Timeline abzuspielen.

Um dieses Problem zu beheben, müssen wir lediglich mehr Frames berechnen lassen, damit die Simulation die gesamte Timeline abdeckt. Daher setze ich im Abschnitt Cache der Domain Frame End auf 275, klicke auf Free All und starte anschließend das Bake erneut mit Bake All.

Diese Website dient ausschließlich der Präsentation einiger meiner Arbeiten und verfolgt keinerlei werbliche Absichten. Bitte beachten Sie, dass ich derzeit keine Anfragen für individuelle Auftragsarbeiten, Beratungsleistungen oder andere Formen beruflicher Zusammenarbeit suche oder beantworte.


ERWEITERTE DATENSCHUTZ- UND COOKIE-VERWENDUNGSRICHTLINIEN