Feuer und Rauch mit Pyro

Auf diesen Seiten finden Sie eine Kurzeinführung in das Pyro-Simulationssystem, mit dem Sie Nebel, Wolken, Rauch, Feuer und Explosionen berechnen können. Weiterführende Informationen zu allen Einstellungen am Pyro-Emitter-Tag, am Pyro Brennstoff-Tag, dem Pyro-Ausgabe-Objekt oder dort verknüpften Pyroszene-Einstellungen finden Sie auf den jeweiligen Hilfeseiten.
Zur Verwaltung verschiedener Simulationseinstellungen innerhalb einer Szene verwenden Sie das Simulationsszene-Objekt.


Hier sehen Sie zwei Beispiele für einfache Pyro-Simulationen: Links ist farbiger Rauch, rechts eine feurige Kugel zu sehen.

Bestimmte Phasen einer Pyro-Simulation lassen sich als Volumensatz speichern, der dann als neuer Startzustand einer Simulation verwendet werden kann. Zudem lassen sich die einzelnen Eigenschaften eines Volumensatz-Objekts als separate Volumenobjekte herauslösen. Diese können ebenfalls zur Definition eines Anfangszustand für eine Pyro-Simulation genutzt werden. Zudem lassen sich diese Volumenobjekte u. a. auch für das Meshing, also die Umrechnung z. B. der simulierten Dichte einer Pyro-Simulation zu einem Polygon-Objekt verwenden.
Zum Rendern einer als .vdb-Sequenz gespeicherten Pyro-Simulation können Sie z. B. das Redshift Volume-Objekt oder das bereits für die Verwendung mit Pyro vorkonfigurierte Redshift Pyro Volume-Material verwenden.

Die folgenden Themen werden auf dieser Seite behandelt:


Wie funktioniert eine Fluid-Simulation?

Zunächst einmal mag erstaunen, dass hier von einer Fluid- also einer Flüssigkeitssimulation die Rede ist. Tatsächlich gelten für Gase und Flüssigkeiten gleiche physikalische Gesetzmäßigkeiten, sodass ähnliche Rechenmethoden für Flüssigkeiten und auch Gasbewegungen verwendet werden können. Bei Pyro liegt der Schwerpunkt aufgrund der zur Verfügung gestellten Parameter jedoch klar auf Gas-Simulationen.

Bei dieser Art Simulation wird zunächst ein Volumen gebraucht, in dem das Gas entsteht. Dabei wird das Gas mit Eigenschaften, wie Dichte, Masse, Geschwindigkeit und Temperatur versehen. Die Umgebung des Gas-Emitters erhält ebenfalls Eigenschaften, wie Temperatur, Druck oder die Richtung und Stärke der Gravitation. Mit diesen Eckdaten kann die Simulation dann die Bewegung der Gase und Schwebstoffe Bild für Bild vorausberechnen. Wie bei anderen Simulationen auch, ist daher auch hierbei wichtig, dass nicht beliebig in der Zeit hin und her gesprungen wird, sondern die Simulation von Beginn an Bild für Bild ablaufen kann. Die Simulation lässt sich jedoch auch bildweise im Arbeitsspeicher oder als Cache-Datei speichern, was dann z. B. die Kombination der Simulation mit Meshing-Generatoren oder das Rendern mit Redshift ermöglicht.


Pyro-Simulationen lassen sich auch mit anderen Simulationsarten mischen. Hier strömt z. B. Rauch auf eine Ebene und drückt dabei einen Rigid Body-Kugel weg.

Um die Simulation möglichst schnell berechnen zu können, wird der Raum (bzw. die simulierte Luft im Bereich des Pyro-Emitters) in fest definierte Würfel, die sogenannten Voxel aufgeteilt. Sie kennen dieses Prinzip eventuell bereits vom OpenVDB-System des Volumenerzeuger-Objekts. Die Größe dieser Voxel legt dabei den Maßstab der Simulation fest, bzw. auch deren Detaildichte und Speicherbedarf. Je kleiner die Voxel werden, desto detaillierter und exakter können Feuer oder Rauch berechnet werden, desto mehr Speicher und Rechenleistung werden jedoch auch benötigt, was vor allem bei größeren Simulationsvolumen im Blick bleiben muss. Wählen Sie daher immer eine angepasste Voxelgröße. Zudem existiert aber auch die Option, bewusst mit einer niedrig aufgelösten Simulation zu beginnen, die sich einfacher formen und schnell berechnen lässt und diese dann in einem zweiten Schritt in eine höher aufgelöste Version umzuwandeln.

Innerhalb jedes Voxels wird überprüft, ob dort z B. eine signifikante Gasdichte vorhanden ist. Dabei kommunizieren die Voxel mit Ihren Nachbarn, um z. B. bei einer sich ausbreitenden Explosion ggf. neue Voxel in der Nachbarschaft erstellen zu können. Da jeder Voxel-Raumwürfel Arbeitsspeicher und Rechenleistung fordert, werden nur dort Voxel erzeugt, wo es die Simulation für nötig hält, bzw. Sie als Nutzer entsprechende Grenzwerte definiert haben.. Dies hat den Vorteil, dass Sie nicht selbst ein festes Simulationsvolumen vorgeben müssen, sondern die Simulation selbst feststellt, wo Voxel benötigt werden.

Für die eigentliche Simulation wird dann jedes Voxel noch einmal in kleinere Einheiten unterteilt, um die charakteristischen Strömungen und Wirbel innerhalb einer Flamme oder einer Rauchsäule berechnen und darstellen zu können. Dabei erhalten wir bereits beim Abspielen der Simulation in den schattierten Editoransichten eine aussagekräftige Vorschau der Simulation, ohne diese zuvor cachen oder rendern zu müssen.

Wenn uns die Simulation gefällt, kann diese bildweise im Arbeitsspeicher abgelegt oder auch permanent als Cache-Datei gespeichert werden. Gespeicherte Cache-Dateien können direkt, ohne erneuten Rechenaufwand, in andere Szenen geladen oder sogar in andere 3D-Programme übernommen werden, mit denen die Darstellung von Simulationsdaten im vdb-Format möglich ist.
Schließlich lassen sich die Simulationsdaten dann natürlich auch als Einzelbild oder Animation rendern.


Beispiele für die Grundkomponenten einer Pyro-Simulation: Links wird ausschließlich Dichte (Rauch) emittiert, in der Mitte ausschließlich Temperatur (Flammen). Werden diese Eigenschaften durch Druck und das Umwandeln von Brennstoff in Dichte und Temperatur ergänzt, lassen sich auch Explosionen simulieren (rechts zu sehen).


Den Emitter definieren

Wie oben bereits beschrieben, benötigt die Simulation ein Volumen, in dem das Gas erzeugt wird, das wiederum Eigenschaften, wie Dichte oder Temperatur erhält . Stellen Sie sich diesen Bereich z. B. wie die Spitze eines Streichholzes vor. Dort wird durch Reibung Wärme erzeugt, die dann das Brennmittel entzündet. Es kommt zu einer Reaktion mit dem Sauerstoff und dem Holz. Es entstehen zusätzliche Hitze und z. B. Ruß, der als Rauchfahne aufsteigt.

Die Aufgabe des Emitters besteht also darin, zunächst den Ort zu beschreiben, an dem es zu so einer Reaktion kommt (Streichholzkopf). Zudem muss die Energiedichte des Orts beschrieben werden, also z. B. wie viel brennbares Material (Brennstoff) dort vorhanden ist, wie viel Rauch und wie viel Hitze entstehen sollen. Die Beschreibung des Brennstoffs ist dabei optional. Wir können z. B. auch bereits eine Kerzenflamme als Emitter beschreiben, wenn wir nur die Temperatur am Docht und die Menge an entstehendem Ruß festlegen. In der Praxis sieht das dann z. B. so aus:

Schritt 1:

Erstellen oder selektieren Sie zunächst das Objekt, das Ihr Emitter für Feuer oder Rauch sein soll. Dieses Objekt kann später auch unsichtbar geschaltet werden und muss daher nicht zwingend ein sichtbarer Bestandteil Ihrer Modelle sein. Oft bietet sich z. B. ein einfaches Kugel-Grundobjekt als Emitter an. Achten Sie nur auf eine sinnvolle Skalierung, also auf realistische Maße.
Als Emitter können die folgenden Objekttypen verwendet werden:

Schritt 2:

Weisen Sie diesem Objekt z. B. über das Tags-Menü des Objekt-Managers aus der Simulation-Kategorie ein Pyro-Emitter-Tag zu. Mit diesem können Sie u. a. die Menge und Art der Pyro-Komponenten festlegen, die entstehen sollen (z. B. Dichte für die Simulation von Rauch, Temperatur für die Simulation von Feuer und Brennstoff für die Simulation einer Explosion). Im gleichen Menü ist auch das Pyro Brennstoff-Tag zu finden, das jedoch tatsächlich mit dem Pyro-Emitter-Tag identisch ist. Am Pyro Brennstoff-Tag sind die Voreinstellungen nur bereits derart ausgelegt, dass eine Explosion simuliert werden soll, wogegen am Pyro-Emitter-Tag standardmäßig Flammen und Rauch entstehen. Das Pyro-Emitter-Tag kann jedoch ebenfalls zum Pyro Brennstoff-Tag umkonfiguriert werden und dann ebenfalls Explosionen erzeugen. Ebenso kann das Pyro Brennstoff-Tag auch Rauch und Flammen erzeugen, wenn die entsprechenden Optionen dort aktiviert werden.

Hinweis 1:Bei allen Splines und auch bei den Polygon-Objekten, die kein geschlossenes Volumen darstellen (wie z. B. bei Objekten mit Löchern oder einer einfachen Ebene), muss am Pyro-Emitter-Tag die Option Oberfläche aktiviert werden. Über den Parameter Oberflächendicke kann dann auch bei solchen Objekten ein Volumen gebildet werden, in dem die Pyro-Simulation z. B. heißes Gas oder Rauch erzeugt.

Hinweis 2:Bei der Nutzung von Partikeln oder dem MoGraph Matrix-Objekt muss der Punkte-Modus am Pyro-Emitter-Tag aktiviert werden. Dadurch lässt sich ein Radius um die Positionen der Partikel oder Matrizen herum festlegen, in dem dann jeweils Pyro-Elemente erzeugt werden sollen. Die Nutzung von Partikeln kann zusätzliche Optionen bieten, da dort z. B. die Partikelgröße oder - im Fall von Thinking Particles - auch die Farbe, direkt auf die Pyro-Simulation übertragen werden kann. Gleiches gilt für die Farben des MoGraph Matrix-Objekts.

Hinweis 3:Es muss nicht zwingend das gesamte Objekt als Emitter genutzt werden. Über die Zuweisung von Vertex Map-Tags, Vertex Farben-Tags oder Polygon-Auswahl-Tags kann der zum Emittieren genutzte Bereich eines Objekts eingeschränkt werden (z. B. eine Fackel, die nur am oberen Ende brennen soll). Hier erfahren Sie mehr dazu.

Schritt 3:

Zusammen mit dem Pyro-Emitter-Tag entsteht automatisch ein Pyro-Ausgabe-Objekt, an dem Sie später dann z. B. die Eigenschaften der Simulation auswählen können, die Sie als Cache speichern möchten. Dies ist zum Rendern der Simulation mit Redshift notwendig, kann aber auch für Übergabe der Simulation an andere Programme genutzt werden.

Hinweis:Sollte das Pyro-Ausgabe-Objekt versehentlich gelöscht worden sein, kann es erneut über die Ausgabeobjekt erstellen-Schaltfläche in den Pyro-Einstellungen der Projekt-Voreinstellungen erstellt werden.

Schritt 4:

An dem Pyro-Ausgabe-Objekt finden Sie in dem Tab Pyroszene eine Verlinkung zu den Pyro-Simulationseinstellungen, die den Projekt-Voreinstellungen entnommen werden. Dort können Sie alle wichtigen Simulationseinstellungen finden, wie z. B. auch die eingangs bereits erwähnte Voxelgröße, mit der maßgeblich der Detailgrad, die Simulationsgeschwindigkeit und der Speicherbedarf beeinflusst werden. Das Pyro-Emitter-Tag ist also nur für den Emitter zuständig und die am Pyro-Ausgabe-Objekt verlinkten Pyroszene-Einstellungen für die Berechnung der eigentlichen Simulation.

Schritt 5:

Wenn Sie nun die Animation durch Betätigung der Vorwärts abspielen-Funktion Bild für Bild ablaufen lassen, sehen Sie bereits der Erzeugung von Feuer und Rauch an Ihrem Objekt. Beachten Sie, dass das Verhalten und der Detailgrad der Simulation (sowie deren Speicherbedarf) sehr stark von der vorgegebenen Voxelgröße abhängen.


Zusammenspiel der Pyro-Komponenten

Zur Verdeutlichung zeigen die folgenden Bilder noch einmal den oben bereits beschriebenen Zusammenhang zwischen Pyro-Emitter-Tag, Pyro-Ausgabe-Objekt und den darin verlinkten Pyro-Simulationseinstellungen. Die folgende Abbildung zeigt dabei den Standardfall. Es wurde ein Objekt (hier ein Würfel) mit dem Pyro-Emitter-Tag belegt. Dadurch entsteht ein Pyro-Ausgabe-Objekt in der Szene. An diesem finden Sie neben den verschiedenen Cache-Optionen auch den Pyroszene-Tab. Dort sind standardmäßig die Pyro-Simulationseinstellungen verlinkt, deren Werte aus den Projekt-Voreinstellungen von Cinema 4D entnommen werden.


Links sind die Simulationseinstellungen am Pyro-Ausgabe-Objekt im Attribute-Manager zu erkennen. Deren Werte sind standardmäßig mit denen aus der Kategorie 'Simulation/Pyro' in den Projekt-Voreinstellungen identisch (siehe rechte Seite der Abbildung).

Eine zweite Variante besteht darin, dass Sie im Simulieren-Menü von Cinema 4D ein Simulationsszene-Objekt aufrufen. Dieses kann per Drag&Drop in das Szene-Feld der Pyroszene-Einstellungen am Pyro-Ausgabe-Objekt gezogen werden. Dadurch werden dann die Pyro-Simulationseinstellungen verwendet, die am Simulationsszene-Objekt verfügbar sind. Die Pyro-Werte aus den Projekt-Voreinstellungen spielen dann für diese Simulation keine Rolle mehr.

Da in der Szene beliebig viele Simulationsszene-Objekte vorhanden sein können, ermöglichen diese die Verwaltung verschiedener Simulationseinstellungen, die einfach per Drag&Drop zum Pyro-Ausgabe-Objekt zugewiesen werden können.


Die Pyro-Simulationseinstellungen eines Simulationsszene-Objekts können ebenfalls als Pyroszene am Pyro-Ausgabe-Objekt verwendet werden.

Was nun noch fehlt ist eine Verknüpfung zwischen den Pyro-Simulationseinstellungen und den Pyro-Emitter-Tags, die darauf zugreifen sollen. Hierfür steht am Simulationsszene-Objekt, wie auch in den Projekt-Voreinstellungen, im Szene-Tab ein Elemente-Feld zur Verfügung. Dort hinein müssen alle Pyro-Emitter-Tags gezogen werden (also nur die entsprechenden Tags, nicht die Objekte), die diese Simulationseinstellungen verwenden sollen. Die folgende Abbildung stellt dies beispielhaft dar.

Hinweis 1:Falls Sie nur mit den Projekt-Voreinstellungen als Quelle für die Pyro-Simulationseinstellungen arbeiten möchten, kann dieser Schritt entfallen, denn dort werden neue Pyro-Emitter-Tags und Pyro-Brennstoff-Tags automatisch in die Elemente-Liste eingetragen.
Hinweis 2:Jedes Pyro-Tag kann nur in einer Elemente-Liste enthalten sein. Durch Zuweisung eines Pyro-Tags z. B. zu einem neuen Simulationsszene-Objekt, wird der Eintrag dieses Tags automatisch aus den übrigen Elemente-Listen entfernt..

Im gleichen Bereich finden Sie übrigens auch eine Kräfte-Liste, in der Sie die Kraft-Objekte verlinken können, die auf die entsprechenden Pyro-Simulation wirken sollen (siehe ebenfalls nachfolgende Abbildung).
Schließlich können Sie auch direkt am Namen des Pyro-Ausgabe-Objekts ablesen, welche Simulationseinstellungen darin verlinkt wurden. Bei einer Pyroszene-Verlinkung zu den Projekt-Voreinstellungen erscheint dort der Namensanhang (Voreingestellt). Wurde ein Simulationsszene-Objekt verwendet, erscheint dessen Name als Anhang am Pyro-Ausgabe-Objekt. Dies ist ebenfalls am folgenden Bild zu erkennen.


Bei der Nutzung von Simulationsszene-Objekten als Quelle für Pyro-Simulationseinstellungen, muss darauf geachtet werden, dass die entsprechenden Pyro-Emitter-Tags dort in der Elemente-Liste verlinkt werden. Werden nur die Projekt-Voreinstellungen verwendet, passiert dies in deren Elemente-Liste automatisch.

Ein weiterer Effekt der Nutzung von Simulationsszene-Objekten ist, dass dadurch voneinander unabhängige Simulationen erstellt werden können. Bei der Standardvorgehensweise der Zuweisung von Pyro-Emitter-Tags zu verschiedenen Objekten in der Szene, werden diese Objekte zu Emittern für die gleiche Pyro-Simulation. Alle in der Nähe dieser Pyro-Emitter simulierten Gase interagieren also miteinander, da alle Simulationen über die gleichen Einstellungen definiert werden.
Sollen hingegen vollständig voneinander unabhängige Simulationen entstehen, muss jedes Pyro-Emitter-Tag über ein eigenes Pyro-Ausgabe-Objekt mit eigenständigen Pyro-Simulationseinstellungen (also hauptsächlich Simulationsszene-Objekten) verknüpft werden.


Die Bilder zeigen zwei einzelne Kugel-Grundobjekte, die mit Pyro-Emitter-Tags versehen wurden. Links verwenden beide Pyro-Emitter-Tags eigene Simulationseinstellungen, rechts verwenden beide Tags die gleiche Verlinkung zu einer Pyro-Simulationseinstellung. Dort sind die beiden ausgestoßenen Pyro-Gasströme daher in der Lage. miteinander zu interagieren und sich zu mischen. Bei der links abgebildeten Szene hingegen verhalten sich beide Gase völlig unabhängig und unbeeinflusst voneinander.

Einen eingefrorenen Zustand nutzen

Es liegt in der Natur physikalischer Simulationen, dass sich diese aus einem definierten Anfangszustand heraus entwickeln. Bei Pyro-Simulationen entsteht z. B. eine Wolke standardmäßig langsam aus der Oberfläche oder dem Volumen eines mit dem Pyro-Emitter-Tag belegten Objekts. Am Emitter werden Brennstoffmengen, Temperaturen, die Dichte und Geschwindigkeiten gesetzt, die dann für die nachfolgende Verteilung und Bewegung der Simulation verantwortlich sind. Es gibt jedoch auch viele Projekte, bei denen bereits ab dem ersten Animationsbild eine gewisse Verteilung, z. B. einer Pyro-Wolke vorhanden sein muss und daher keine Zeit dafür ist, dass sich die Wolke zunächst ausgehend von einem Emitter Bild für Bild ausbreitet. In diesen Fällen kann ein Initialisierungsstatus gespeichert werden. Wenn Sie schon einmal mit der Kleidungssimulation gearbeitet haben, kennen Sie dieses Prinzip bereits.
Sie stellen dazu die gewünschten Eigenschaften am Pyro-Emitter-Tag und den damit verknüpften Pyroszene-Einstellungen zunächst wie gewöhnt ein und lassen dann die Simulation bis zu dem Animationsbild ablaufen, das Sie als Anfangszustand für die Simulation benötigen.

Durch Betätigung der Startzustand setzen-Schaltfläche innerhalb der Pyroszene-Einstellungen lässt sich dann der aktuelle Zustand der Pyro-Simulation speichern. Ein neues Volumensatz-Objekt erscheint in der Szene und listet alle Pyro-Eigenschaften auf, die als Startzustand gemerkt wurden. Die Art und Anzahl dieser Eigenschaften hängt davon ab, was für die Simulation am Pyro-Emitter-Tag aktiviert wurde. Standardmäßig sind dies die Eigenschaften der Dichte, der Temperatur und der Geschwindigkeit. Die Erzeugung des Volumensatz-Objekts führt automatisch dazu, dass die darin gespeicherten Pyro-Eigenschaften als .vdb-Datei in das Verzeichnis Ihres Projekts gespeichert werden. Dies ermöglicht es, auch in anderen Projekten auf diesen eingefrorenen Pyro-Zustand zuzugreifen.

Wenn Sie nun die Animation wieder ab Bild 0 ablaufen lassen, erscheint direkt der gespeicherte Startzustand, und die Simulation wird sich ausgehend von diesem Zustand und abhängig von den Einstellungen am Pyro-Emitter-Tag und in der Pyroszene weiter entwickelt. Dies kann natürlich auch für spannende Effekte genutzt werden, wenn z. B. die Simulation für die Erstellung der Startzustands ganz andere Werte oder auch Emitterformen verwendet, als die Simulation, die diesen Startzustand zugewiesen bekommt. Es muss sich also nicht zwingend um die gleiche Simulation handeln,