Auf dieser Seite 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.
Zum Rendern einer als .vdb-Sequenz gespeicherten Pyro-Simulation können Sie z. B. das Redshift Volume-Objekt in Verbindung mit dem Redshift Pyro Volume-Material verwenden.
Die folgenden Themen werden hier behandelt:
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 beim Abspielen automatisch in den Arbeitsspeicher speichern, was dann nicht nur das erneute Abspielen beschleunigt, sondern auch das Rendern mit Redshift ermöglicht.
Um die Simulation möglichst schnell berechnen zu können, wird der Raum (bzw. die Luft um den Emitter) 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.
Innerhalb jedes Voxels wird dann ü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. Dies hat den Vorteil, dass wir nicht selbst ein 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 Raumwürfel 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.
Wenn uns die Simulation gefällt, kann diese in den Arbeitsspeicher abgelegt oder auch als Cache-Datei gespeichert werden. Auf diese Weise kann die Simulation in jeder Szene ohne erneuten Rechenaufwand wieder benutzt werden 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.
Wie oben bereits beschrieben, benötigt die Simulation ein Volumen, in dem das Gas erzeugt wird. 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 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 aufsteigendem Ruß festlegen. In der Praxis sieht das dann z. B. so aus:
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.
Verwendet werden können ansonsten beliebige Polygon-Objekte, parametrische Grundobjekte und Splines, aber auch die Voxel eines Volumenerzeugers können verwendet werden.
Weisen Sie dem 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. 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:Bei allen Splines und bei Polygon-Objekten, bei denen kein geschlossenes Volumen dargestellt wird (z. B. Objekte mit Löchern oder eine einfache Ebene), muss am Pyro-Emitter-Tag die Option Oberflächenemitter aktiviert werden. Oberflächenemitter sorgt automatisch dafür, dass alle Polygonlöcher der Geometrie für die Berechnungen des Emitters geschlossen 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 erzeugen kann.
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 im RAM oder als Dateien speichern möchten. Dies ist zum Rendern der Simulation mit Redshift notwendig, kann aber auch für die beschleunigte Darstellung im Editor oder die Übergabe der Simulation an andere Programme genutzt werden.
Hinweis:Sollte das Pyro-Ausgabe-Objekt versehentlich gelöscht worden sein, kann es erneut über die entsprechende Schaltfläche in den Pyro-Einstellungen der Projekt-Voreinstellungen erstellt werden.
An dem Pyro-Ausgabe-Objekt finden Sie in dem Tab Pyroszene eine Verlinkung zu den Pyro-Simulationseinstellungen. Dort können Sie alle wichtigen Simulationseinstellungen finden, wie z. B. auch die eingangs bereits erwähnte Voxelgröße. 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.
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 Voxelgröße abhängen.
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.
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.
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, die diese Simulationseinstellungen verwenden sollen. Die folgende Abbildung stellt dies beispielhaft dar.
Im gleichen Bereich finden Sie übrigens auch eine Kräfte-Liste, in der Sie die Kraft-Objekte verlinken können, die auf die 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.
Es gibt nun zwei erste, wichtige Stellschrauben, die Sie anpassen sollten. In den Pyroszene-Einstellungen des Pyro-Ausgabe-Objekts finden Sie die Voxelgröße. Diese legt die Feinheit fest, mit der die Simulation den Raum unterteilt. Eine kleine Voxelgröße führt daher automatisch zu einer genaueren Berechnung und einer detailreicheren Simulation. Gleichzeitig steigt jedoch auch der Rechen- und Speicherbedarf der Simulation entsprechend an. Es gilt daher, diesen Wert auf die Größe der Simulation anzupassen. Als Bezugsgröße kann am Anfang die Größe des Objekts dienen, das Sie mit dem Pyro-Emitter-Tag belegt haben. Es ist daher in jedem Fall sinnvoll, auch bei den Pyroszene-Einstellungen am Pyro-Ausgabe-Objekt auf realistische Größen zu achten. Die folgende Abbildung gibt wieder, welchen Einfluss die Voxelgröße auf das Ergebnis der Simulation hat.
In der obigen Abbildung wurden von links nach rechts die Voxelgrößen 5cm, 1cm und 0,1cm verwendet. Die Breite des verformten Rings, der hier als Pyro-Emitter dient, beträgt ca. 20 cm. Deutlich ist zu erkennen, wie die Reduzierung der Voxelgröße zu einer effektivieren Füllung des Rings mit Gas und zu einer detailreicheren Simulation führt. Gleichzeitig verlängert sich jedoch die Simulationszeit beträchtlich und auch der Speicherbedarf schießt in die Höhe.
Gerade bei größeren Objekten kann eine kleine Voxelgröße also schnell dazu führen, das nicht mehr ausreichend Speicher verfügbar bleibt. In solchen Fällen kann es u. a. helfen, für die Abtastung des Volumens am Emitter-Objekt die Voxelgröße zu erhohen. Dies ist möglich durch Nutzung der Objektvoxelgröße am Pyro-Emitter-Tag. Dieser Prozentwert bezieht sich direkt auf die zuvor eingestellte Voxelgröße. Mit Objektvoxelgröße-Werten unter 100% können Sie also gezielt die Anzahl der Voxel im Bereich des Pyro-Emitters verringern. Dies führt zu einer Glättung und Vergröberung der erkannten Emitterform und zu einer Vernachlässigung von Abschnitten des Objekts, deren Querschnitt geringer als die Objektvoxelgröße ist. Oft kann diese Ungenauigkeit jedoch vernachlässig werden, zumal wenn wir so Speicher und Rechenzeit einsparen können. Die folgende Abbildung gibt auch hierzu ein Beispiel.
Wie in der obigen Abbildung zu erkennen, führt eine starke Reduzierung der Objektvoxelgröße ggf. dazu, dass nicht mehr das gesamte Objekt als Pyro-Emitter verwendet wird. Entsprechend weniger Rauch, heißes Gas oder Brennstoff werden ausgeworfen. Ebenso kann die Verteilug des erzeugten Gases ungleichmäßiger werden, da nur noch die voluminöseren Abschnitte des Objekts mit Gas gefüllt werden. Die Abbildung macht aber in diesem Beispiel aber auch deutlich, dass die Unterschiede teilweise recht gering ausfallen können. So fällt der Unterschied zwischen dem mittleren und rechts liegenden Simulationsergebnis vernachlässigbar klein aus. Wir sparen jedoch viele Voxel im Volumen ein.
Zusammenfassend lässt sich also festhalten, dass Sie mit der Voxelgröße aus denPyroszene-Einstellungen des Pyro-Ausgabe-Objekts den Maßstab der Simulation und somit deren Detailgrad steuern. Ebenso haben Sie damit aber auch ein Werkzeug zur Optimierung des Speicherbedarfs und der Berechnungsdauer an der Hand. Kleinere Voxelgrößen bedeuten immer auch eine aufwändigere Simulationsberechnung und ein erhöhter Speicherbedarf. Dieser ist für Simulationen gedeckelt bei 80% des verfügbaren Speichers. Wenn also z. B. durch zu kleine Voxel oder eine zu große Wolke oder Flamme sehr viele Voxel erzeugt werden müssen, kann es sein, dass nicht mehr das ganze Volumen der Wolke, Flamme oder Explosion erfasst werden kann. Es kann dann in diesen Abschnitten zu fehlenden Bereichen z. B. in einer Wolke kommen.
Sie finden Beispiele und Lösungswege zur Vermeidung dieses Problems bei der Beschreibung der Pyro-Simulationseinstellungen. Halten Sie die Voxelgröße daher immer so groß wie möglich und so klein wie nötig.
In obigem Beispiel wurde ein komplettes Objekt als Emitter genutzt. Sie können jedoch auch nur Teile einer Oberfläche als Emitter definieren. Dies macht es dann z. B. auch möglich, dass sich Feuer langsam über eine Fläche ausbreitet oder es nur an bestimmten Stellen qualmt.
Die Lösung dieser Aufgabe liegt in der Nutzung von Vertex-Maps. Diese lassen sich z. B. sehr schnell durch Umwandlung einer Punkt-Selektion erstellen, wenn Sie im Selektieren-Menü den Befehl Punkte-Wichtung setzen... aufrufen und dann in dessen Dialog z. B. einen Wert von 100% angeben. Eine Vertex-Map kann aber auch direkt durch Aufmalen erzeugt werden.
Dazu selektieren Sie Ihr Polygon-Objekt (ein parametrisches Objekt muss zuerst konvertiert werden mit Grundobjekt konvertieren) und wählen dann im Tags-Menü des Objekt-Managers das Vertex-Map-Tag in der Kategorie Weitere Tags aus. Das Tag aktiviert dabei automatisch das Mal-Werkzeug, das Sie ansonsten auch im Werkzeuge-Menü abrufen können. Die Intensität kann am Tag mit dem Parameter Deckkraft eingestellt werden. Einzelheiten zu diesem Mal-Werkzeug und dem Vertex-Map-Tag selbst können Sie ansonsten hier nachlesen.
Überall, wo der Wert 100% in der Vertex-Map gespeichert ist, kann der volle Effekt des Pyro-Emitters wirken. Bei Bereichen mit weniger Wichtungen in der Vertex-Map wird entsprechend weniger Gas erzeugt. Überall, wo die Vertex-Map 0% enthält, findet gar keine Erzeugung von Pyro-Elementen mehr statt. Damit dies auch tatsächlich so funktionert, müssen Sie die erstellte Vertex-Map noch richtig in dem Pyro-Emitter-Tag zuweisen. In dem obigen Bild wurden z. B. die Temperatur- und Brennstoff-Optionen im Tag ausgeschaltet, damit nur Dichte erzeugt wird (für Rauch, Dunst, Nebel usw.).
Im Dichte-Bereich der Einstellungen finden Sie dann auch die Möglichkeit, die Vertex-Map als Dichte-Map per Drag&Drop direkt aus dem Objekt-Manager zuzuweisen. Wie in der oberen Hälfte der Abbildung zu erkennen, findet die Erzeugung von Rauch nun nur noch in den Bereichen des Objekts statt, die in der Vertex-Map Werte über 0% enthalten.
Das gleiche Prinzip funktioniert so auch für die Erzeugung von Temperatur und Brennstoff im Pyro-Emitter-Tag. Da ein Objekt über mehrere Vertex-Maps verfügen kann, ist auch die Nutzung individueller Vertex-Maps zur Steuerung all dieser Emitter-Eigenschaften kein Problem.
Zudem finden Sie in jedem Vertex-Map-Tag eine Option, um auch Feld-Objekte nutzen zu können. In der obigen Abbildung wurde so z. B. ein lineares Feld verwendet, um einen perfekten Wichtungsverlauf entlang der Breite des flachen Quaders zu erzeugen. Entsprechend ergibt sich in der Simulation ein perfekter Übergang in der Intensität der simulierten Rauchs. Voraussetzung hierfür ist nur, dass am Objekt eine möglichst gleichmäßige und feine Punktdichte vorhanden ist, um auch alle Variationen in der Vertex-Map bzw. Feldstärke wiedergeben zu können.
Übrigens können Vertex-Maps auch mit Splines verwendet werden, falls Sie entlang des Splines die Eigenschaften des Emitters variieren möchten. Denken Sie dann nur auch daran, dass am Pyro-Emitter-Tag unbedingt die Option für Oberflächenemitter aktiviert werden muss, damit um den Spline herum ein schlauchartiges Volumen entsteht, das der Emitter nutzen kann. Sie erfahren mehr dazu im folgenden Abschnitt.
Ähnlich wie die oben beschriebene Vertex-Map, kann ein Objekt auch über mehrere Vertex-Farben-Tags verfügen, die dem Emitter-Objekt ebenfalls als Tags im Objekt-Manager hinzugefügt werden können. Diese Art Tag ist ebenfalls im Tags-Menü des Objekt-Managers unter Weitere Tags zu finden und ermöglicht die Zuweisung von RGB-Farbwerten und von Alpha-Werten zu jedem Punkt einer Geometrie.
Farben und Alpha-Werte lassen sich individuell mit dem Mal-Werkzeug auftragen, das Sie im Werkzeuge-Menü finden können. Hierfür kann direkt an dem Mal-Werkzeug über dessen Malmodus ausgewählt werden, ob nur RGB-Werte (Farben), nur Alpha-Werte oder beides gleichzeitig aufgemalt werden sollen. Zudem ist auch die Nutzung von Feld-Objekten direkt im Vertex-Farben-Tag möglich, um z. B. akkurate Farbverläufe oder zufällige animierte Alpha-Werte zu zu erstellen. Für komplexe Farbverläufe oder feine Strukturen, sollten genügend, möglichst gleichmäßig verteilte Punkte an dem Objekt vorhanden sein. Es können nur dort Farb- und Alphawerte an dem Objekt aufgemalt und gespeichert werden, wo Punkte vorhanden sind. Die Farben zwischen den Punkten entstehen durch einfache Interpolation.
Ist ein Vertex-Farben-Tag an dem Pyro-Emitter-Objekt vorhanden, kann es für die Erzeugung von Dichte, Temperatur oder Brennstoff ausgewertet werden und auch für die Färbung und die Transparenz der Dichte als Farben-Map zugewiesen werden. Die folgende Abbildung gibt dazu ein Beispiel.
Wie bereits mehrfach erwähnt, müssen Emitter-Objekte eigentlich geschlossene Volumen sein, damit das Pyro-Emitter-Tag zuverlässig arbeiten kann. Bei sehr dünnen Objekten (dünner als die Voxelgröße der Pyroszene-Einstellungen im Pyro-Ausgabe-Objekt), wenn Löcher vorhanden sind, bei einseitigen Objekten und auch bei Splines kann jedoch auch die Oberflächenemitter-Option am Pyro-Emitter-Taggenutzt werden. Damit lässt sich um den Spline oder um die Polygone herum ein Abstand definieren, der es dem Emitter dann wieder ermöglicht, dort Pyro-Elemente zu erzeugen. Diese Option ist standardmäßig bereits aktiv, damit jedes Spline- oder Polygon-Objekt erst einmal direkt als Pyro-Emitter genutzt werden kann.
Zusätzlich zu den oben genannten Beispielen kann diese Option aber auch mit geschlossenen Objekten kombiniert werden, wenn Sie z. B. das Volumen des Emitters über die Grenzen des zugewiesenen Objekts hinaus vergrößern möchten.
Wie die obige Abbildung zeigt, kann die Vergrößerung des Emitters mit der Oberflächenemitter-Option auch dabei helfen, die Simulation außerhalb eines Objekts sichtbar werden zu lasen. Im konkreten Fall des brennenden Asts scheinen die Flammen dadurch auch um den Ast herum zu züngeln und nicht nur aus der Oberseite auszutreten.
Die Rauch- und Feuer-Simulation kann auch mit Objekten interagieren, die über andere Simulations-Tags verfügen. So kann Rauch z. B. mit Objekten kollidieren, die über ein Kollision-Tag aus der Simulation-Tags-Gruppe verfügen.
Ebenso kann die Rauch- oder Feuer-Simulation z. B. mit Softbodies interagieren, wie das nächste Beispiel zeigt. Dort fällt eine blaue Softbody-Kugel auf die Ebene und schiebt dabei den Rauch weg. Die Wechselwirkungen zwischen der Pyro-Simulation und z. B. einer Softbody- oder Kleidungssimulationen können auch über den Parameter Flüssigkeitskraftfaktor am Pyro-Objekt gesteuert werden.
Standardmäßig interagieren alle Pyro-Simulationen in Ihrer Szene miteinander. Wenn also zwei Rauch emittierende Objekte nahe beieinander liegen, wird sich deren Rauch vermischen können und die Dynamik der Simulation verändern. Dabei kann es auch zu einer Vermischung unterschiedlicher Farbwerte des Rauchs kommen, die über die Überschreiben-Option in den Farbe-Einstellungen der Pyro-Emitter-Tags kontrolliert werden kann. Ist Überschreiben für alle Pyro-Emitter-Tags aktiviert (Standardeinstellung), findet eine Berücksichtigung der Objektreihenfolge im Objekt-Manager statt. Die folgende Abbildung gibt dazu ein Beispiel.
Obige Abbildung zeigt links die Ausgangsbasis der Szene. Es wurden dort drei separate Würfel mit einer Kantenlänge von jeweils 20 cm so nebeneinander platziert, dass sich benachbarte Würfel jeweils um 10 cm überlappen. Alle drei Würfel verfügen über Pyro-Emitter-Tags, an denen jeweils nur Dichte und Farbe aktiv sind. Der linke Würfel nutzt Rot, der mittlere Würfel Grün und der rechte Würfel Blau als Farbe für die Dichte. Der roten Rauch emittierende Würfel ist das erste Objekt mit Pyro-Emitter-Tag im Objekt-Manager. Das zweite Pyro-Objekt ist der Würfel mit dem grünen Rauch. Als letztes folgt im Objekt-Manager der Würfel, der blauen Rauch abgeben soll.
Standardmäßig ist die Überschreiben-Option an allen Pyro-Emitter-Tags aktiv und führt zu dem Ergebnis, das in der Mitte der Abbildung zu sehen ist. Es kommt zu keiner signifikanten Vermischung der Farben. Vielmehr ist es so, dass aufgrund der Objektreihenfolge im Objekt-Manager der blaue Rauch den grünen Rauch und der grüne Rauch den roten Rauch verdeckt. Je tiefer ein Objekt mit Pyro-Emitter-Tag relativ zu anderen Pyro-Emittern im Objekt-Manager liegt, desto mehr von den darüber liegenden Pyro-Simulationen werden davon farblich verdeckt.
Die resultierenden Farben werden ganz anders berechnet, wenn die Überschreiben-Option ausgeschaltet wird. In dem Fall spielt die Reihenfolge der Objekte mit Pyro-Emitter-Tags keine Rolle mehr und alle Dichte-Farben vermischen sich, so wie es rechts in der obigen Abbildung zu sehen ist. Durch die Vermischung der Rauchfarben erscheinen nun auch Gelb- und Orangetöne, sowie violette und türkise Farben.
Wenn Sie jedoch die Simulationen unabhängig voneinander simulieren möchten, also z. B. auch eine Farbvermischung naheliegender Pyro-Emitter verhindern möchten, oder aber unterschiedliche Simulationseinstellungen für die Pyro-Emitter benutzen möchten, können Sie verschiedene Simulationsszene-Objekte verwenden. Hier finden Sie ein Beispiel dazu. Die Beziehungen zwischen dem Pyro-Emitter-Tag, dem Pyro-Ausgabe-Objekt und den Simulationsszene-Objekten können Sie auch hier nachlesen.
Sehr interessant kann auch sein, Objekte zusammen mit der Simulation zu animieren. Denken Sie z. B. an Funken, die in den Flammen eines Lagerfeuers nach oben mitgerissen werden oder an Luftblasen, die unter Wasser aufsteigen. Für solche Effekte können gespeicherte Simulationen sehr hilfreich sein, die mit dem Pyro-Ausgabe-Objekt erzeugt werden können.
Dafür legen Sie zunächst wie gewohnt Ihre Simulation mit einem Emitter-Objekt (Pyro-Emitter-Tag) und dem Pyro-Ausgabe-Objekt an. Sind Sie mit der Simulation zufrieden, aktivieren Sie am Pyro-Ausgabe-Objekt z. B. die gängigen Kanäle für Dichte, Temperatur und Geschwindigkeit. Dazu setzen Sie für diese Eigenschaften im Objekt-Tab des Pyro-Ausgabe-Objekts jeweils den Modus auf Bei Export. Schließlich betätigen Sie im Cache-Tab die Berechnen-Schaltfläche und lassen die Cache-Dateien unter dem gewünschten Namen in einen neuen Ordner sichern. Da Cache-Dateien sehr groß werden können, sollten Sie wirklich immer nur die Simulationskanäle aktivieren, die Sie wirklich benötigen. Lassen Sie zudem nur die Animationsbilder als Cache sichern, die Sie später auch z. B. für das Rendering benötigen. Sie können dies über die Werte für Zeit: Min und Zeit: Max im Projekt-Tab der Projekt-Voreinstellungen festlegen.
Die Kanäle mit den Dichte- und Temperatur-Informationen können wir später für das Rendern gut gebrauchen, denn darauf greift das Redshift Volume-Material zurück. Zur Steuerung von Objektbewegungen ist hier jedoch vor allem die Information über die Geschwindigkeit hilfreich, denn diese besteht aus Vektoren, mit denen die Schnelligkeit und Richtung der Fließbewegungen im simulierten Gas festgehalten werden.
Im Prinzip können Sie nach dem Berechnen des Caches die Simulationsszene nun schließen und in einer neuen Szene ein Volumenlader-Objekt aus dem Volumen-Menü abrufen. In dessen Feld für Dateiname geben Sie die erste .vdb-Datei der zuvor gesicherte Cache-Sequenz an. In einem Infobereich des Volumenladers bekommen Sie nun die Namen der Simulationskanäle angezeigt, die in den Dateien enthalten sind. Deaktivieren Sie dort die Optionen für density und temperature, denn uns interessiert hier nur die velocity, also die Geschwindigkeit. Die Einstellungen im unteren Teil des Dialogs können z. B. zum Skalieren der Geschwindigkeitsvektoren (Parameter Faktor) oder zum Anpassen der Wiedergabegeschwindigkeit (Parameter Geschwindigkeit) genutzt werden. Auch die Bildnummer, ab der die Simulation in dieser neuen Szene beginnen soll, kann hier vorgegeben werden (Parameter Offset).
Im nächsten Schritt benötigen wir einen Volumenerzeuger, den Sie auf den Volumentyp Vektor umschalten und dann den Volumenlader in seiner Objekte-Liste verlinken. Passen Sie die Voxelgröße auf den Maßstab Ihrer Pyro-Simulation an. Falls der Emitter in der ursprünglichen Simulationsszene also z. B. eine Kugel mit dem Radius 10 cm war, versuchen Sie es hier mit einer Voxelgröße zwischen 2 cm und 0,5 cm. Der Volumenerzeuger generiert für uns nun ein engmaschiges Feld aus Vektoren, deren Länge und Richtung von der Geschwindigkeit der Simulation gesteuert werden. Die folgende Abbildung fasst diese Arbeitsschritte noch einmal zusammen.
Nun ist es an der Zeit, ein Kraftfeldobjekt aufzurufen und dort den Volumenerzeuger zu verknüpfen. Die ausgelesenen Vektoren des Volumenerzeugers erhalten dadurch eine Bedeutung, nämlich als Geschwindigkeitsvektoren und können so auf Partikel wirken. Als Geschwindigkeitstyp wählen Sie Absolute Geschwindigkeit mit einer Stärke von 100. So können die simulierten Geschwindigkeiten exakt auf die Partikel übertragen werden. Nun brauchen wir nur noch Partikel.
Dazu können Sie z. B. aus dem Simulieren-Menü den Emitter aufrufen und diesen ungefähr an den Ursprungsort der Simulation verschieben. Passen Sie auch die Rotation und Größe des Emitters so an, dass er möglichst mittig am Ort des ursprünglichen Pyro-Emitters liegt. Achten Sie auf eine ausreichend große Anzahl an erzeugten Partikeln und beschränken Sie deren Lebensdauer sinnvoll, je nach Länge Ihrer Simulationssequenz. Die Geschwindigkeit der Partikel belassen Sie zudem bei 0 cm. Die Geschwindigkeiten sollen vollständig vom Kraftfeldobjekt kommen. Die nachfolgende Abbildung zeigt auch diesen Arbeitsschritt in der Zusammenfassung.
Wenn Sie nun die Zeit in der Zeitleiste ablaufen lassen, sehen Sie, wie zuerst Partikel in der Fläche des Emitters entstehen und dann im Bereich der ehemaligen Simulation mitgerissen werden. Die folgende Abbildung gibt dies phasenweise wieder.
Die Verknüpfung mit Geometrie kann nun direkt durch Unterordnung z. B. einer kleinen Kugel unter dem Emitter-Objekt erfolgen. Dazu sollten dessen Optionen Objekte darstellen und Renderinstanz aktiv sein, um die Objekte sehen und gleichzeitig möglichst speicherschonend zu arbeiten.
Noch flexibler sind Sie jedoch, wenn Sie stattdessen ein MoGraph Klon-Objekt erzeugen und dort den Modus Objekt aktivieren. Der Emitter lässt sich dann als Objekt im Kloner zuweisen. Auf diese Weise können Sie dort den Instanzmodus Multiinstanz nutzen, der noch speicherschonender und schneller ist als Renderinstanz.
Noch etwas mehr Kontrolle, z. B. über die Ausrichtung und Skalierung von Partikeln haben Sie bei Nutzung des Thinking Particles-Systems. Dort haben Sie z. B. auch den Vorteil, dass das Volumen eines Objekts als Emitter verwendet werden kann, ähnlich dem Emitter-Objekt eines Pyro-Emitter-Tags. Zudem kann ein Großteil des oben für die Standardpartikel bereits beschriebenen Szenenaufbaus erneut verwendet werden. Der Hauptunterschied liegt bei der Erstellung der Partikel, die über eine kleine XPresso-Schaltung erfolgen muss. Dazu legen wir uns zunächst ein Objekt an, das als Emitter fungieren soll. In unserem Fall verwenden wir dafür ein konvertiertes Kugel-Grundobjekt in passender Größe und geben diesem ein XPresso-Tag, das Sie im Tags-Menü des Objekt-Managers in der Gruppe der Programmierungs-Tags finden können.
Innerhalb der Schaltung verwenden wir einen P Quelle-Node zum Erzeugen der gewünschten Anzahl an Partikeln. In der auch in der Abbildung unten dargestellten Schaltung wird der Shot-Modus verwendet, wodurch pro Animationsbild exakt die eingestellte Anzahl an Partikel generiert wird. Durch einen Vergleich mit der aktuellen Bildnummer (per Zeit-Node) kann so exakt die Zeitspanne und auch die Gesamtzahl der Partikel gesteuert werden. Hier werden z. B. nur Partikel in Bild 1 der Animation erzeugt. Das Ergebnis des Vergleich-Nodes ist ein Boole-Wert, der mit dem An-Eingang der Partikel-Quelle verbunden wird.
Deren Ausgang wird an einen P Position in Volumen-Node geleitet, der mit unserer Emitter-Kugel verknüpft ist. Durch die Wahl von Typ Innen in Verbindung mit einem passenden Tiefe-Wert, werden durch den Node individuelle Positionen für alle eingeleiteten Partkel im Inneren der Kugel berechnet. Diese Positionen müssen dann an die erzeugten Partikel zurückgeschrieben werden. Dafür ist der P Daten setzen-Node zuständig, der einerseits mit den ausgegebenen Partikeln des P Quelle-Nodes und den Positionen des P Position in Volumen-Nodes gefüttert wird. Damit ist die Erzeugung der Partikel zum gewünschten Zeitpunkt innerhalb der Kugel bereits abgeschlossen. Nun bleibt nur noch, die Partikel fortlaufend mit den Geschwindigkeiten des Kraftfeldobjekts zu belegen.
Dazu erstellen Sie einen P Pass-Node und verbinden diesen mit einem P Kraftobjekt-Node, in dem unser Kraftfeldobjekt zugewiesen wird. Die vollständige Schaltung ist in der folgenden Abbildung zu erkennen.
Auch in diesem Aufbau kann wieder ein MoGraph Klon-Objekt verwendet werden, um die Partikel mit Objekten zu belegen. Verwenden Sie dazu erneut den Objekt-Modus am Klon-Objekt. Diesmal muss als Objekt jedoch die Gruppe zugewiesen werden, in der die Partikel vorliegen. Da wir in der Schaltung keine Gruppenzuweisung angelegt haben, landen alle Partikel automatisch in der der Alle-Gruppe. Sie finden diese in den Thinking Particles-Einstellungen, die Sie über das Simulieren-Menü unter Thinking Particles finden können. Sobald Sie diese Alle-Gruppe in das Objekt-Feld des Klon-Objekts gezogen haben, ist die Verbindung hergestellt und Sie können wie gewohnt Objekte unter dem Klon-Objekt gruppieren, um diese als Partikelgeometrie zu nutzen.
Das Pyro-Ausgabe-Objekt und auch das Pyro-Emitter-Tag enthalten schon verschiedene Parameter, mit denen z. B. eine Windbewegung und verschiedene Luftverwirbelungen simuliert werden können. Da viele dieser Eigenschaften auch über Keyframes oder Schaltungen animiert werden können, steht damit bereits ein großes Arsenal an Werkzeugen zur Beeinflussung der Simulation zur Verfügung. Wenn es jedoch um lokale Veränderungen in der Simulation geht, können Kraft-Objekte weiterhelfen, die Sie im Simulieren-Menü unter Kräfte finden können.
Diese Kraft-Objekte können dabei verwendet werden:
Zudem lassen sich die Bereiche, in denen diese Kräfte wirken sollen, durch Feld-Objekte eingrenzen, damit z. B. Wind nur das obere Ende einer aufsteigenden Rauchfahne beeinflusst. Detaillierte Informationen zu diesen Kraft-Objekten finden Sie hier.
Da sich Dichte und Temperatur auch negativ einstellen lassen (über die Parameter Dichte hinzufügen und Temperatur hinzufügen am Pyro-Emitter-Tag), sind auch interessante Interaktionen zwischen mehreren Pyro-Emittern innerhalb der gleichen Pyroszene denkbar. So kann z. B. ein Objekt negative Dichte und negative Temperatur abgeben und dadurch die aufsteigende Hitze und Dichte eines anderen Emitters auflösen und mildern. Das folgende Bild gibt dazu ein Beispiel. Dort erzeugt die obere Kugel negative Eigenschaften, die mittels einer nach unten gerichteten Geschwindigkeit auf die untere Kugel gedrückt werden. Die untere Kugel erzeugt normale Dichte und Temperatur, die dadurch beim Auftreffen der beiden Gasströme abgefedert und abgekühlt wird.
Die interne Struktur der Pyro-Simulation mit ihren Voxeln ermöglicht auch noch andere spannende Kombinationsmöglichkeiten. So können Sie z. B. am Pyro-Objekt die Speicherung einzelner Eigenschaften, wie z. B. der Dichte oder der Temperatur, im RAM ablegen, wenn Sie dort die entsprechenden Optionen im Objekt-Tab mit An markieren. Wenn Sie nun das Pyro-Objekt unter einem Volumenmesher gruppieren, werden die im RAM abgelegten Pyro-Eigenschaften mit Voxeln gefüllt und in Polygone umgerechnet. Noch mehr Kontrolle über diese Umrechnung haben Sie, wenn Sie das Pyro-Objekt unter einem Volumenerzeuger eingruppieren und diesen dann unter einem Volumenmesher platzieren. So können Sie am Volumenerzeuger auch dessen Voxelgröße nutzen, um die Unterteilungsdichte am Polygonmesh einzustellen. Beachten Sie hierbei nur, dass nur die dichteren Gasbereiche von diesen Voxeln erfasst werden, Das fein ausfächernde Gas bzw. dessen Dichte oder Temperatur werden daher standardmäßig nicht berücksichtig. Sie können dies über den Voxelbereichsschwellwert am Volumenmesher beeinflussen.
Zudem lassen sich auch die Farbinformationen der Dichte für dieses Meshing verwenden. Dazu ist ein kleiner Kunstgriff nötig.
Stellen Sie zunächst Ihre Pyro-Simulation wie gewohnt ein. Um Farben zu nutzen, aktivieren Sie die Farbe-Option in den Dichte-Einstellungen des Pyro-Emitter-Tags. In dem nachfolgenden Beispiel wurden zwei Kugeln mit unterschiedlich gefärbten Pyro-Emitter-Tags versehen und in ihrer Position animiert, damit sich der Rauch beider Emitter stärker vermischt.
Damit wir die simulierten Farben separat verarbeiten können, benötigen wir die Farben als RAM-Cache oder als Cache-Dateien. Damit das Meshing mithilfe eines Volumenerzeugers und eines Volumenmeshers funktioniert, benötigen wir zudem die Dichte-Information. Wird gehen daher so vor, dass wir das bereits vorhandene Pyro-Ausgabe-Objekt duplizieren. An dem ersten Pyro-Ausgabe-Objekt aktivieren wir nur die Berechnung von Dichte Bei Export. An dem zweiten Pyro-Ausgabe-Objekt aktivieren wir nur die Farbe Bei Export. Anschließend benutzen wir die Cache-Funktionen dieser Objekte und lassen dort jeweils die Cache-Dateien berechnen. Achten Sie darauf, dass getrennte Cache-Sequenzen für die Dichte und die Farbe gespeichert werden, also unterschiedliche Speicherorte und Namen verwendet werden. Das eine Pyro-Ausgabe-Objekt liest dann ausschließlich die Dichte und das andere liest nur die simulierten Farben aus den .vdb-Dateien.
Erstellen Sie nun einen Volumenerzeuger und gruppieren Sie dort das Pyro-Ausgabe-Objekt ein, das den Dichte-Cache ausliest. Verwenden Sie einen Volumenmesher über dem Volumenerzeuger, um die Geometrie berechnen zu lassen. Regeln Sie ggf. am Volumenerzeuger die Voxelgröße, bis Sie mit dem Detailgrad der Darstellung zufrieden sind.
Ergänzen Sie nun ein Vertex-Farben-Tag am Volumenmesher. Sie finden dieses Tag im Objekt-Manager unter Tags/Weitere Tags. Im Felder-Bereich dieses Tags können Sie jetzt das Pyro-Ausgabe-Objekt zuweisen, das den Farben-Cache liest. Diese Farbinformation wird dadurch den einzelnen Punkten des Volumenmeshers zugewiesen.
Um die Farben des Vertex-Farben-Tags innerhalb eines Redshift-Materials nutzen zu können, verwenden wir dort einen Vertex Attribute-Node. In dessen Feld für Attribute Name ziehen Sie einfach das Vertex Farben-Tag aus dem Objekt-Manager hinein.
Alternativ zu dem erläuterten Weg über die Speicherung zweier separater vdb-Cache-Sequenzen können Sie auch die beiden Pyro-Ausgabe-Objekte für die Eigenschaften Dichte und Farbe jeweils auf An schalten und somit im RAM zwei getrennt liegende Caches erstellen lassen. Auch das funktioniert mit dem beschriebenen Setup.
Die in dem Pyroszene-Tab des Pyro-Ausgabe-Objekts verlinkten Pyro-Einstellungen stellen verschiedene Darstellungsmodi und Darstellungsqualitäten der Simulation bereits in den Ansichtsfenstern zur Verfügung. Dazu müssen Sie dort nur einen der schattierenden Darstellungsmodi nutzen (Gouraud-Shading, Quick-Shading oder Konstantes Shading). Um die Simulation jedoch tatsächlich mit Redshift rendern zu können, und so z. B. auch selbst beleuchten zu können oder diese gar Licht erzeugen zu lassen, muss die Simulation als Cache vorliegen. Dazu gibt es mehrere Optionen:
Voraussetzung für die folgenden Arbeitsschritte ist, dass Sie bereits Redshift als Renderer in den Rendervoreinstellungen aktiviert haben.
Wenn die Simulation im RAM vorliegt (die gewünschten Objekt-Eigenschaften wurden am Pyro-Ausgabe-Objekt mit An markiert und die Simulation wurde Bild für Bild ein Mal durchlaufen), können Sie z. B. über das Erzeugen-Menü des Material-Managers unter Redshift/Volume ein Volumenmaterial erzeugen lassen. Dort müssten Sie dann die Namen der aktivierten Pyro-Simulationskanäle eintragen (z. B. density, temperatur oder color).
Noch komfortabler ist es, dort das bereits passend eingestellte Pyro Volume-Material aufzurufen. Dort wird das Eintragen der typischen Simulationskanäle density und temperatur automatisch vorgenommen. Zudem wird die realistische Blackbody-Simulation für die Farben der Temperaturverteilung standardmäßig genutzt.
Innerhalb des RS Volume- bzw. des Pyro Volume-Materials steht die Scatter-Eigenschaft für die Dichte des gerenderten Volumens und Emission als Licht erzeugende Eigenschaft für die Temperatur der Simulation. Dies sind bereits die beiden wichtigsten Eigenschaften einer Pyro-Simulation für das Rendering. Das RS Volume-, bzw Pyro Volume-Material kann dann dem Pyro-Ausgabe-Objekt zugewiesen werden und Sie können die Simulation direkt rendern lassen.
Zur Darstellung von Bewegungsunschärfe (Motion Blur) muss bei diesem Setup ein Redshift Object-Tag an dem Pyro-Ausgabe-Objekt zugewiesen werden. Dort aktivieren Sie die Auswertung des Motion Vectors und tragen velocity als Simulationskanal für die Geschwindigkeitsvektoren in der Simulation beim Feld X ein. Nutzen Sie den Scale-Wert, um die Intensität der Bewegungsunschärfe zu steuern. Denken Sie daran, dass die Berechnung von Motion Blur auch in den Rendervoreinstellungen aktiviert sein muss!
Wenn eine Simulation als .vdb-Sequenz gespeichert wurde (die gewünschten Objekt-Eigenschaften wurden am Pyro-Ausgabe-Objekt mit Bei Export markiert und die Simulation wurde durch Betätigen der Berechnen-Schaltfläche im Cache-Tab gespeichert), wird ein Redshift Volume-Objekt benötigt, das Sie im Volumen-Menü finden können, sofern Redshift der aktive Renderer ist (siehe Rendervoreinstellungen).
Am Redshift Volume-Objekt finden Sie die Möglichkeit zum Laden der .vdb-Dateien. Dazu geben Sie zunächst im Path-Feld den Pfad zur ersten Datei der Sequenz an und wechseln dann in den Animation-Tab des Objekts. Dort finden Sie das Mode-Menü, in dem Sie z. B. den Simple-Modus auswählen können. Dieser bedeutet, dass die gespeicherte Simulation automatisch Bild für Bild abgerufen wird, wenn Sie eine Animation rendern lassen. Beim Erreichen der letzten Simulationsdatei in der Sequenz endet diese Wiedergabe automatisch. In den anderen verfügbaren Modi kann an dieser Stelle z. B. die erneute Wiedergabe der Simulation ausgelöst werden. Anschließend betätigen Sie noch die Detect Frames-Schaltfläche, damit die Sequenz der Dateien durchgezählt und deren Anzahl automatisch auf dieser Dialogseite eingetragen wird. Überprüfen Sie die Angabe für Frame Rate, damit diese mit der in Ihrer Szene verwendeten Bilderrate übereinstimmt. Ansonsten kann es dazu kommen, dass eine geladene Simulation schneller oder langsamer dargestellt wird als ursprünglich simuliert.
Wie bereits in der obigen Abbildung zu erkennen, kann in der Channels-Liste abgelesen werden, welche Eigenschaften in den geladenen Dateien enthalten sind. Diese Begriffe können anschließend dann auch im RS Volume-Material verwendet werden, um die Farben, die Dichte und das Leuchten der Simulation während des Renderings zu definieren. Dieser Arbeitsschritt unterscheidet sich nicht von dem weiter oben bereits beschrieben Rendern einer im RAM liegenden Simulation. In diesem Fall wird das Redshift Volume-Material jedoch dem RS Volume-Objekt zugewiesen.
Anders als beim direkten Rendern einer im RAM liegenden Simulation, wird bei Nutzung des RS Volume-Objekts kein Redshift Object-Tag benötigt, um das Rendern von Bewegungsunschärfe zu aktivieren. Sie finden direkt am RS Volume entsprechende Motion Blur-Einstellungen. Auch dort tragen Sie einfach velocity für den X-Kanal ein, sofern die geladene Simulation über die 'velocity'-Eigenschaft verfügt (siehe Information-Bereich im RS Volume-Objekt.
Detaillierte Informationen zum Redshift Volume-Objekt und dem Redshift Volume-Material finden Sie hier.