3ds Max Fluids: Jetzt wird‘s feucht!

Einer der Wünsche, die bei 3ds-Max-Usern immer wieder laut wurden, war der Ruf nach einer integrierten Flüssigkeitssimulation in 3ds Max. Mit dem Update 2O18.3 war es dann endlich soweit und 3ds Max Fluids wurde der Öffentlichkeit vorgestellt. Das System basiert auf Naiad, welches vor ein paar Jahren von Autodesk aufgekauft wurde und dann als Bifrost in Maya kam.

Zu finden ist die Flüssigkeitsimulation im Tab „Geometrie Erstellen“ im Command Panel in der Unterkategorie „Fluids“. Von dort aus wird das Max­Liquid-Objekt in die Szene gesetzt. Es besteht aus einem Icon mit Wassertropfen welches keine besondere Funktion hat, außer zu zeigen was es ist, und einer Basisform wie Kugel, Box oder Ebene, aus der dann die Flüssigkeit austritt.
Alternativ lässt sich die Basisform „Custom“ auswählen. Dadurch können neben den generischen Grundformen auch andere Geometrie-Objekte als Emitter definiert werden. Zusätzlich ist hier die Schaltfläche, welche das Simulations-View-Fenster öffnet.

Erste Schwimmzüge

Neben dem Liquid-Objekt kann weitere Geometrie in die Szene eingefügt werden, mit der die Flüssigkeit kollidieren kann, und eine Ebene, die dann als Kill Plane genutzt werden kann. Diese Ebene muss keine bestimmte Größe haben. Sie wird nur in der Höhe in die Szene gesetzt, unter der alle Flüssigkeitsbereiche gelöscht werden.
Wenn wir also einen Becher mit einer Wandstärke auf einen Tisch stellen, empfiehlt es sich, diese Ebene ein kleines Stückchen unterhalb der Tischoberfläche zu positionieren. Sollte die Flüssigkeit auch vom Tisch herab auf den Boden fließen können, sollte diese Kill Plane ein wenig unterhalb der Bodenoberfläche liegen.

Im Reiter für die Flüssigkeitsattribute werden die Objekte entsprechend ihrer Funktion in der Simulation in die richtigen Kategorien eingefügt.
Im Reiter für die Flüssigkeitsattribute werden die Objekte entsprechend ihrer Funktion in der Simulation in die richtigen Kategorien eingefügt.

In dem Simulations-View-Fenster können im oberen Solver-Bereich verschiedene Simulationen erstellt und dupliziert sowie zur Berechnung gestartet, pausiert und angehalten werden. Rechts neben dem Simulationsbalken sind die drei Schaltflächen für die Simulationsberechnung, die Schaumberechnung und die Generierung von einem Mesh.
Darunter sind verschiedene Reiter für die Liquid Attributes, die Solver-Parameter, das Caching, die Display Settings und die Render Settings.
Im ersten Reiter, welcher beim Erststart aktiv ist, befinden sich die Liquid Attributes. Hier kann man auch die Basisform und Größe definieren.
Darunter können die Kollisionsobjekte und die Kill Plane ausgewählt werden.
Darunter wiederum können die Schaummaske, das Guide-System und die Motion Fields eingestellt werden. Aber dazu kommen wir später.
In diesem ersten Beispiel würden hier der Becher und der Tisch als Kollisionsobjekte hinzugefügt werden. Falls die Flüssigkeit bis auf den Boden tropfen soll, muss natürlich auch dieser hier eingetragen werden.

Die Daten der berechneten Simulationen können schnell sehr groß werden.
Die Daten der berechneten Simulationen können schnell sehr groß werden.

Die Kill Plane sorgt, wie der Name schon ausdrückt, dafür, dass alle Flüssigkeitssimulationen darunter gelöscht werden. Hier wird die vorher erstellte Ebene unter der Tischplatte oder unter der Bodenoberseite in dem entsprechenden Bereich im Fenster hinzugefügt. Zusätzlich schadet es nicht, diese Ebene in ihren Objekteigenschaften auf „Nicht Renderbar“ zu stellen, da wir sie ja im finalen Bild nicht sehen wollen.
Sobald der Emitter, die Kollisionsobjekte und gegebenenfalls die Kill Plane definiert wurden, kann man schon den Play-Kopf im oberen Solver-Bereich des Simulationsfensters aktivieren und so die erste Simulationsberechnung starten. Während der Berechnung kann man auch den Time Slider bewegen und sieht so im Ansichtsfenster den Bereich der Simulation, der bis dahin schon berechnet wurde. So kann man relativ früh erkennen, ob die Berechnung in den gewünschten Wegen verläuft.
Für die Simulationsberechnungen werden nur die CPUs eingesetzt. Somit lohnt es sich, mehrere schnelle CPUs im System zu haben. Beim Berechnen werden die Daten als Cache auf die Festplatte geschrieben. Die Einstellungen dazu findet man im dritten Reiter. Da solche Caches sehr schnell sehr groß werden können, sollte man sich gut überlegen, wo diese hingeschrieben werden sollen. Von Haus aus werden sie in einen SimCache-Ordner in den Projektordner geschrieben, der normalerweise in „Eigene Dokumente“ liegt, falls man es nicht anders definiert hat.

In den Simulationsparametern werden die Grundlagen wie die Voxelgröße und Berechnungsintervalle definiert.
In den Simulationsparametern werden die Grundlagen wie die Voxelgröße und Berechnungsintervalle definiert.

Als Standard wird hier der Name der Szene als Benennung des Ordners für die Simulations-Cache-Datei verwendet. Aber das lässt sich natürlich auch über das Token-System darunter einstellen. Sollte man sich später entscheiden, den Szenennamen zu ändern, sollte man aufpassen, dass das System noch den richtigen Cache-Ordner findet. Da der Cache leider nicht im Asset Tracking aufgeführt wird, muss man hier im Notfall die Ordner entsprechend umbenennen, damit die Szene wieder automatisch den richtigen Cache findet.
Um die Simulation auch in anderen 3D-Paketen zu nutzen, kann man bei „Export PRT Files“ ein Häkchen setzen. Jedoch muss man dazu die Flüssigkeit neu berechnen lassen. Ich habe hier zwar kein Maya am Start, aber die als .bif geschriebenen Cache-Dateien sollen anscheinend auch von Maya gelesen werden können.
Falls die Simulation jetzt noch nicht perfekt aussieht, führt uns das zum zweiten Reiter. Hier, in den Solver-Parametern, können wir die Feinheiten der Simulation einrichten. Einer der Gründe für eine erfolglose Berechnung könnte die Master Voxel Size in dem Rollout-Simulation-Parametern sein. Wenn die Szene zum Beispiel auf Meter gesetzt ist, wird in der Standardeinstellung eine Unit als ein Meter gesehen. Somit wäre bei einer Master Voxel Size von 0,5 der kleinste Voxel einen halben Meter groß und würden nie in den Becher mit einem Durchmesser von 10 Zentimetern passen.
Der zweite wichtige Punkt in Sachen Voxelgröße ist die Größe des Emitters. Auch hier muss die Voxelgröße kleiner sein als das Emitterobjekt. Während eine kleinere Voxelgröße genauere Ergebnisse liefert, wird natürlich auch die Berechnung länger dauern und die Cache-Datei größer werden. Das Voxel-Gitter kann man auch als kleinen Würfel im Ansichtsfenster sehen, wenn der Haken bei „Show Voxel Grid“ im Command Panel des Liquid-Objekts gesetzt wurde. So kann man visuell abschätzen, ob die Auflösung passen könnte.
Ein weiterer wichtiger Faktor in diesem Rollout sind die Time Steps. Die Adaptivity steuert die Anzahl der Iterationen pro Frame während der Simulation. Hier sollte man sich mit kleinen Schritten bewegen, da die Berechnung deutlich länger ausfallen kann, je näher man sich dem Höchstwert von 1,0 nähert. Da hier alles in Voxelgrößen gemessen wird, wirkt sich hier eine kleinere oder größere Master Voxel Size natürlich auch auf das Ergebnis der Simulation aus.
Die Darstellung im Ansichtsfenster lässt sich im vierten Reiter einstellen. Beim ersten Start ist hier der Display Type auf Punkte gestellt. Die funktionieren sehr schnell und man kann den Time Slider schnell hin und her schieben. Auch die Darstellungsart als Planes ist sehr fix. Alternativ können hier auch Custom, Kugeln, Bifrost Cache Mesh, Bifrost Dynamic Mesh oder natürlich keines von allem ausgewählt werden.
In den Particle Settings dazu lässt sich auch der Farbkanal mit unterschiedlichen Informationen füttern. So lassen sich im Ansichtsfenster die Geschwindigkeit, die Dichte, die Wirbelstärke, das Alter oder weitere Informationen über die Färbung darstellen. Das Gleiche lässt sich auch für den Opazitätskanal, den Kanal für die Darstellungsgröße und die Kanäle für den Schaum einstellen, sofern er mitberechnet wurde.

Schon beim Berechnen der Simulation kann man die Ergebnisse im Ansichtsfenster mitverfolgen.
Schon beim Berechnen der Simulation kann man die Ergebnisse im Ansichtsfenster mitverfolgen.

Zu guter Letzt kann man ganz unten noch definieren, wie viele Partikel im Ansichtsfenster oder auch beim Rendern dargestellt werden sollen.
Da bisher noch keine Geometrie generiert wurde, wird uns Bifrost Cached Mesh noch nichts bringen. Das Bifrost Dynamic Mesh hingegen wird in Echtzeit generiert, wenn der Rechner mächtig genug ist. Ansonsten muss man halt ein paar Millisekunden warten, bis das System das Mesh für den momentanen Frame erstellt hat. Auf jeden Fall kann man so schon mal sehen, wie die Flüssigkeit mit den momentanen Einstellungen aussieht. Die Einstellungen für das dynamische Mesh gleichen den Einstellungen für das zu erstellende Cashed Mesh. Man kann also auf diesem Weg experimentieren, welche Einstellungen das zufriedenstellendste Resultat liefert. Hier lässt sich mit dem Resolution Factor definieren, wie fein unterteilt das Mesh sein soll, oder auch mit dem Droplet Reveal Factor, wie genau hochfrequente Details dargestellt werden dürfen oder auch die Glättung der Oberfläche an sich. Diese und weitere Einstellungen können dann auch als Preset abgespeichert werden, um sie dann schneller bei zukünftigen Simulationen zu nutzen.

In den Anzeigeeinstellungen kann definiert werden, welche Informationen im Ansichtsfenster dargestellt werden.
In den Anzeigeeinstellungen kann definiert werden, welche Informationen im Ansichtsfenster dargestellt werden.

Um das wirkliche Mesh für eine bereits berechnete Simulation zu erstellen, kann man oben im Solver-Bereich die Schaltfläche zur Generierung des Meshes einschalten und die Schaltflächen für die Simulationsberechnungen ausschalten, da diese ja schon berechnet wurde. Es ergibt auch Sinn, das Mesh nur dann zu erstellen, wenn man mit der Simulation zufrieden ist, da die Mesh-Erstellung auch seine Rechenzeit und natürlich Platz auf der Festplatte benötigt.
Für das wirkliche Rendering sind die Einstellungen im vierten Reiter zu finden. Hier können weitere Channels wie das Alter, die Dichte, die Geschwindigkeit und mehr Faktoren hinzugefügt werden. Da sich jedem dieser Kanäle ein eigener Map Channel zuweisen lässt, kann man so im Material-Editor auf diese zusätzlichen Informationen zugreifen und sie in das finale Material integrieren. Das Simulationsresultat kann als einfache Formen ­­– Ebene, Kreuzchen, Würfel, Kugeln – oder als Cache Mesh bestehen.

In den Render Settings wird eingestellt, welcher Solver als was für eine Art von Geometrie gerendert werden soll. Auch lassen sich hier weitere Informationen hinzufügen, die dann in dem Material wiederverwendet werden können.
In den Render Settings wird eingestellt, welcher Solver als was für eine Art von Geometrie gerendert werden soll. Auch lassen sich hier weitere Informationen hinzufügen, die dann in dem Material wiederverwendet werden können.

Dabei wird auf das berechnete Mesh zugegriffen, falls es erstellt wurde. Andernfalls wird hier das Bifrost Dynamic Mesh zur Darstellung verwendet. Wenn als Renderer Arnold ausgewählt ist, wäre auch Arnold Surface eine Option. Dann erscheinen weitere Optionen, die ungefähr denen des Cached Mesh entsprechen.
Bei den Möglichkeiten für den Schaum sieht es sehr ähnlich aus. Man hat jedoch zusätzlich die Option, den Schaum als Arnold Points zu rendern. Hierbei ist zu beachten, dass man die Einstellungen für den Schaum auf „Keine“ stellt, wenn man mit Arnold rendert und keinen Schaum mitberechnen lässt. Anderenfalls wäre der Render Cache einfach nur schwarz. Das ist eine momentane Einschränkung, die Autodesk auch bekannt ist und die wahrscheinlich in einem der nächsten Updates behoben wird.

Es wirbelt!

Soweit also für eine einfache Flüssigkeitssimulation. Je nachdem, wie sich die Flüssigkeit bewegt, entstehen auch Wirbel. Sind diese Wirbel stark genug, wird Luft in diese Flüssigkeit hineingemischt und Schaum entsteht. In den 3ds Max Fluids geht das auch ohne tieferem physikalischen Verständnis, indem man einfach oben im hinteren Solver-Bereich die Schaltfläche für die Berechnung des Schaums einschaltet. Nicht, dass es die Berechnung beschleunigt, aber es wird schöner.
Falls auch hier nicht alles mit einem Knopfdruck perfekt aussieht, sollten wir uns nochmal den Rollout-Foam-Parametern im Reiter „Solver Parameters“ zuwenden. Hier kann neben der Emissionsrate über die Werte für die Geschwindigkeit, die Verwirbelung und die Oberflächenkrümmung definiert werden, ab wann Schaum entstehen soll.

Mithilfe der Darstellung als Bifrost Dynamic Mesh kann man schon im Ansichtsfenster abschätzen, wie das zu generierende Mesh aussehen wird.
Mithilfe der Darstellung als Bifrost Dynamic Mesh kann man schon im Ansichtsfenster abschätzen, wie das zu generierende Mesh aussehen wird.

Mama, ich will ein Eis!

Mit dem Upgrade 2018.4 kamen ein paar Presets dazu. In den Solver-Parametern im Rollout-Liquid-Parameter haben wir jetzt schnellen Zugriff auf Bier, Blut, Karamell, Schokoladensirup, Schlagsahne, Honig, Ketchup, Latexfarbe, Ahornsirup, Quecksilber, Milch, Motoröl, Olivenöl, Orangensaft, Knetmasse, Silikon, Zahnpasta, Getriebeöl und Wasser. Da die Tage wieder länger werden und die Hoffnung auf den Sommer keimt, könnten wir uns doch ein Softeis mit zwei Geschmacksrichtungen gönnen.

Flüssigkeiten mit unterschiedlicher Dichte werden sich nicht sofort vermischen.
Flüssigkeiten mit unterschiedlicher Dichte werden sich nicht sofort vermischen.

Mein Setup dafür besteht – neben der obligatorischen Kill Plane – aus einer Eiswaffeltüte als Kollisionsobjekt und zwei umeinander kreisenden Kugeln darüber. Dem Liquid-Objekt definiere ich als Emitter ein Custom-Objekt. Jetzt erscheint ein weiteres Rollout im Reiter „Liquid Attributes“, in dem ich die zwei Kugeln hinzufügen kann. Damit mehr rein passt, habe ich mich für eine würfelförmige Eistüte entschieden, die ich dann später mit dem Preset „Zahnpasta“ auffülle, da das bestimmt so ähnlich ist wie Softeis.
Um zwei Flüssigkeiten wie eine Emulsion miteinander zu mischen, benötigen wir wie im echten Leben zwei Flüssigkeiten mit unterschiedlichen Dichten. In den Rollout Emitter Objects im Reiter „Solver Parameters“ können die Eigenschaften des oder der Emitterobjekte eingestellt werden.
Im unteren Bereich bei den Emitter Conversion Properties lässt sich auch der Mode für das Objekt definieren, aus dem die Flüssigkeit kommt. Der Modus „Solid“ ist perfekt für wasserdichte Objekte mit klar geschlossenen Volumen. Der Modus „Shell“ lässt die Flüssigkeiten an der Oberfläche entstehen und ist somit auch für Objekte ohne Volumen geeignet.

Rein theoretisch sollte man das Fluid-System auch für festere Massen nutzen können.
Rein theoretisch sollte man das Fluid-System auch für festere Massen nutzen können.

Der Modus „Solid (Robust)“ ist für Geometrien mit komplexeren Formen, die auch kleine Löcher haben dürfen, wie zum Beispiel das Grundobjekt Teekessel. Auch hier wird die Flüssigkeit an der Oberfläche generiert und nicht im Volumen, wie es der Fall mit „Solid“ wäre. Diese Modi gibt es natürlich auch für die Kollisionsobjekte. Wenn Flüssigkeiten also mit Objekten kollidieren sollen, die nur aus einseitigen Flächen bestehen und somit kein wirkliches Volumen haben, ist „Shell“ eine gute Wahl.
Aber zurück zu unserem Eis – bevor es schmilzt. Im gleichen Rollout lässt sich oben auch die Density, also die Dichte, einstellen. Dieser Wert würde jetzt auf alle Emitter-Objekte angewendet werden. Um unterschiedliche Dichten zu erhalten, muss man links eine der Kugeln im Emitter-Bereich auswählen. So erscheint ein eigenes Rollout für dieses Objekt, welches aber noch leer ist. Sobald man aber ein Häkchen gesetzt hat für „Overwrite Global Controls“ kann man hier neue Werte setzen, die dann nur für dieses Objekt gelten. Das Gleiche kann man übrigens auch für die Kollisionsobjekte einstellen.
Das Preset „Zahnpasta“ gab mir eine allgemeine Dichte von 1.450, somit ändere ich die Dichte des einen Emitter-Objekts auf 1.460. Nicht, dass ich eine Ahnung der physikalischen Eigenschaften von Softeis habe, ich esse das Zeug nur. Je unterschiedlicher die Werte für die Dichte sind, desto weniger werden sich die Flüssigkeiten mischen und eher nebeneinander koexistieren.

Die ersten Simulationen zeigen schon im Ansichtsfenster, wie das finale Resultat aussehen könnte.
Die ersten Simulationen zeigen schon im Ansichtsfenster, wie das finale Resultat aussehen könnte.

Im Ansichtsfenster kann ich die beiden Flüssigkeiten sehen und unterscheiden, indem ich im Reiter „Display Settings“ dem Color Channel die Density als Eingangs­information gebe. Für das Rendering muss im Reiter der Render Settings ein neuer Kanal für die Dichte hinzugefügt werden und im Material Editor ein Material erstellt werden, dessen Diffuse-Input von einer Gradient Map gefüttert wird, die als Map Channel die gleiche Nummer hat, die dem erstellten Density Cannel in den Render Settings der Flüssigkeit gegeben wurde.
Der erste Versuch ergab eine kolorierte Suppe, die mich heute wohl mehr begeistert, als sie es mich damals als Kind hätte. Woran lag es? Die Masse war nicht zäh genug und stoppte auch nicht rechtzeitig in ihrer Bewegung.

Durch die Darstellung als Bifrost Dynamic Mesh im Ansichtsfenster kann man das Verhalten der Flüssigkeit gut erkennen.
Durch die Darstellung als Bifrost Dynamic Mesh im Ansichtsfenster kann man das Verhalten der Flüssigkeit gut erkennen.

In den Liquid Parameters lässt sich unten die Viskosität einstellen. Kleinere Werte ergeben ein dünnflüssiges Medium, während höhere Werte die Sache zäher machen. Das Preset gab mir einen Wert von 500, den ich jetzt auf 1.000 verdopple. Um dem Kindertraum von einer nicht aufhörenden Eisspende-Apparatur zu entgehen, entferne ich gegen Ende der Animation bei eingeschaltetem Animationsknopf noch das Häkchen für „Enable Liquid Emission“ in den Emitter-Parametern. So lässt sich der Fluss geregelt beenden. Und schon ergießt sich eine gummiartige Wurst in meine Eistüte und bleibt darin hängen. Mama hatte wohl doch recht mit ihrer Abneigung gegen die Softeismaschinen auf den Jahrmärkten.

Ab ins Wirtshaus!

Um dem in Bayern geschriebenen Artikel einen lokalen Aspekt zu geben, schauen wir uns doch an, was passiert, wenn spontan alle Bierfässer in einer Gaststätte eines Brauhauses platzen. So habe ich die beiden Räume nebeneinander modelliert mit einer Wand dazwischen und auch darauf geachtet, dass alle Wände ein Volumen haben und nicht nur aus einer Ebene bestehen. Für die Tische, Bänke und Stühle im Lokal habe ich zusätzliche Geometrien gebaut mit deutlich weniger Polygonen, um die Berechnung nicht unnötig zu belasten.

Mithilfe des Guide-Systems können Flüssigkeiten berechnet werden, die zwischen zwei animierten Geometrien entstehen, ohne dass das komplette Flüssigkeitsvolumen simuliert werden muss.
Mithilfe des Guide-Systems können Flüssigkeiten berechnet werden, die zwischen zwei animierten Geometrien entstehen, ohne dass das komplette Flüssigkeitsvolumen simuliert werden muss.

Im Nebenraum wurde ein Würfel erstellt, der als Custom-Objekt für den Fluid Container dient. Im Rollout Emitter Objects wurde oben der Emit Type auf „Container“ anstelle von „Emitter“ gestellt. So wird das Volumen der Flüssigkeit nur einmal erstellt und nicht dauernd nachgefüllt. Im Reiter „Liquid Attributes“ wurden nun der Würfel als Emitterobjekt definiert und die Räume und das Low-Poly-Mobiliar als Kollisionsobjekte. Falls durch falsche Einstellungen manche Wände noch undicht sein könnten, habe ich noch eine Kill Plane unter den Boden gelegt und zur Simulation hinzugefügt.
Da es sich hier um eine größere Szene handelt als nur ein Wasserglas auf einem Tisch und die kleinsten Kollisionsobjekte, also die Stuhlbeine, eine Mindestbreite von fünf Zentimetern haben, habe ich die Master Voxel Size für den ersten Test ohne Möbel auf 0,1 gestellt. Das entspricht dann einem Dezimeter, also zehn Zentimetern. So musste ich nicht lange warten, um zu sehen, wie die Flüssigkeit aus dem Nebenraum in den Gastraum fließt. Es entsteht die gewünschte Dicke in der Flüssigkeitsoberfläche bei der Tür und die Flüssigkeit verteilte sich schön im Raum.
Jedoch sah es eher aus, als hätte die Apfelsaftfabrik nebenan ein Leck. Leider scheint es so, als seien bei den Presets nur die Einstellungen für die Flüssigkeiten, jedoch nicht die für den Schaum berücksichtigt. Also müssen wir nochmal zu den
Settings für den Schaum, um dieses schale Bier ein wenig aufzufrischen. Hier habe ich dann die vorgegebenen Werte für „Min Liquid Churn“ und „Min Liquid Curvatue“ verringert, um mehr Schaum zu erzeugen.
Schade, dass bei den Presets nicht auch automatisch die mitgelieferten Materialien zugewiesen werden. Also musste ich zum Kühlschrank laufen und Referenzmaterial holen. Ein Multi / Sub-Object Material kommt hier zum Einsatz, wobei die Material-ID 1 für die Flüssigkeit genutzt wird und 2 für den Schaum.
Ein großer Ozean würde sehr viel Ressourcen verbrauchen. Hier ist das Guide-System eine große Hilfe. So wird nicht der ganze Ozean mitberechnet, sondern nur die Oberfläche. Da 3ds Max von seinen Modifikatoren lebt, ist es eigentlich ein Leichtes, eine Meeresoberfläche zu erstellen. Die Zutaten dafür sind eine Ebene mit genügend Unterteilungen. Hierfür nehme ich gerne den Quadrify-Mesh-Modifikator, der in der deutschen Version unter dem Namen „Netz in Vierecke unterteilen“ läuft.
Alternativ ist auch Subdivide eine gute Wahl, um Objekte zu tesselieren, denn eine Basis auf Dreiecken ist für eine Flüssigkeitsoberfläche formbarer. Gerne nehme ich auch einen Rechteck-Spline und verwandle ihn mit dem Garment Maker in eine 3D-Geometrie. So habe ich wieder eine prozedural einstellbare Oberfläche, auf der jetzt aber eher unregelmäßige Dreiecke gleichmäßig verteilt sind. Das entspricht meinem Anspruch an Wasser am ehesten. Nachdem wir genügend Polygone zum Spielen haben, können wir für die Strömung und den Wind zwei Wave-Modifikatoren darauflegen, gespickt mit animierten Noise-Modifikatoren und dem Displace-Modifikator, der von einem animierten Rauschen oder einer Cellular Map gefüttert wird.
Hierbei scheint die Erstellung der zu nutzenden Oberfläche fast langwieriger als die der Effekte selbst. Die Berechnungszeiten werden davon allerdings profitieren. Für das Setup in diesem Beispiel habe ich im Reiter „Liquid Attributes“ den Teekessel als Kollisionsobjekt definiert und noch eine Kill Plane unter die animierte Oberfläche gelegt. Weiter unten ist das Rollout für das Guide-System. Hier habe ich den an einem Pfad entlang animierten Teekessel dem Objekt, welches an seiner Kontaktfläche zum Guide Mesh die Flüssigkeit generieren wird, zusätzlich als Guide Emitter zugewiesen. Das Guide Mesh ist somit unsere prozedural animierte Wasseroberfläche, die für das System wesentlich leichter zu berechnen ist.
Im Reiter „Solver Parameters“ haben wir dann wiederum die entsprechenden Einstellungen dazu. Wenn das System genutzt werde soll, muss man selbstverständlich das Häkchen bei „Enable“ setzen. „Compute Guide from Hi Res Liquid“ ist normalerweise von Haus aus eingeschaltet und sorgt dafür, dass Kollisionsobjekte in die Flüssigkeitsoberfläche fallen können und sie durchdringen, ohne dass die Min. Simulations Depth erhöht werden muss. Das wirkt sich auch auf die benötigte Menge der Partikel und Voxel für die Simulation aus. Die weiteren Einstellungen sind Skalierungsmöglichkeiten auf die Master Voxel Size, um einen größeren Kontaktbereich zu ermöglichen, oder die schon erwähnte Min. Simulations Depth, um zu definieren, bis zu welcher Tiefe die Simulation erstellt wird. Des Weiteren kann man über die Particle Density mögliche entstehende Luftlöcher in der Flüssigkeit auffüllen und die Überlappungsbereiche zwischen dem Guide Emitter und dem Guide Mesh definieren.
Wenn wir jetzt die Simulation erstellen, werden nur die Flüssigkeiten und der Schaum berechnet, die durch den Kontakt zwischen dem Guide Emitter und dem Guide Mesh entstehen. Die entstandene Flüssigkeit wird auch auf die animierte Oberfläche fallen und damit interagieren.
Über die Motion Fields kann man auch einen externen Einfluss auf die Simulation ausüben. Das Helferobjekt dazu findet man in den Space Warps. Ist dieses Objekt in der Szene erstellt und der Simulation in den Liquid Attributes hinzugefügt, kann hier der Einfluss von Wind, Wellen, Verwirbelungen und Strudeln simuliert werden oder sich auch nur einfach als eine Dämpfung auf die Flüssigkeit auswirken.

Fazit

Alles in Allem ist es natürlich ein komplexes System, welches hier auch gar nicht bis ins letzte Detail behandelt werden kann – um auch den anderen Autoren noch ein wenig Platz zu lassen. Die meisten Probleme, auf die man stoßen könnte, haben oft einen logischen physikalischen Grund, der uns auch in der echten Welt im Wege stehen würde. Natürlich findet man als Anwender immer etwas zum Verbessern und ich würde mich freuen, wenn die Presets auch die passenden Einstellungen für den Schaum haben und wir den Cache im Asset Tracker definieren könnten.
Es ist auf jeden Fall interessant, damit zu arbeiten, und macht auch Spaß – je nach Detailgrad und Umfang der Simulationen und der benutzen Hardware kann man sogar öfters mal einen Kaffee trinken gehen oder kleinere bis große Pausen einlegen, denn die Berechnungen können schon mal ihre Zeit dauern.

Kommentar schreiben

Please enter your comment!
Please enter your name here

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.