# Blender Dokumentation: Flüssigkeiten

| <<<Zurück Referenz: Soft Body | ↑ Inhaltsverzeichnis ↑ Handbuch durchsuchen | Weiter>>> Die erste Fluidanimation |
* Diese Seite bezieht sich auf Blender v2.43

## Simulationen von Flüssigkeiten

Im Rahmen des Google Summer of Code 2005 hat Nils Thuerey diesen Flüssigkeitssimulator geschrieben. Damit ist es möglich, realistische Animationen von Flüssigkeiten im Zusammenspiel mit anderen Objekten, die als „Hindernisse“ fungieren, zu erzeugen. Allerdings werden annähernd realistische Bilder erst bei sehr feinen Auflösungen erzielt, die extrem rechen- und speicherintensiv sind. Bevor Sie also Ihren Computer für Stunden lahmlegen, wird es dringend empfohlen, einige Testberechnungen mit kleiner Auflösung zu machen.
Diese Anwendung greift auf die Lattice-Boltzmann-Methode zurück, die eine Art zellulären Automatismus für die Simulation von Flüssigkeiten auf der makroskopischen Ebene bereit stellt.
Für technische Details der Anwendung schauen Sie bitte auf der Seite von Nils oder im Wikibook nach.
Die Einträge und Einstellungen für Fluids nehmen Sie in dem Panel Fluid Simulation F7 vor.

## Arbeitsumgebung

Das Fluid-Simulationssystem besteht aus sechs unterschiedlichen Elementen, die durch die Buttons neben und unter 2 symbolisiert werden. Wenn ein Objekt im 3D View selektiert ist, können Sie diesem jeweils eine Funktion zuweisen. Mehrfachzuweisungen sind nicht möglich, dass heißt, ein Objekt kann nicht gleichzeitig z.B. Domain und Fluid sein.Im einzelnen handelt es sich um

### Domain

    Die Domain bildet den äußeren Rahmen, in der die Fluidsimulation stattfindet. Wichtig: Domains müssen geschlossene Meshes sein, sonst funktionieren sie nicht.

### Fluid

    Dasjenige Objekt, dem die Eigenschaft Fluid zugewiesen wurde, bestimmt das Volumen bzw. die Menge an Flüssigkeit, die in der Animation verwendet werden soll.

### Obstacle

    Hindernis, durch das die Flüssigkeit nicht hindurchfließen kann.

### Inflow

    Objekt, das wie ein Zufluss funktioniert.

### Outflow

    Objekt, das wie ein Abfluss funktioniert.

### Particle

    Zusatzfunktion, die schaumähnliche Effekte auf der Oberfläche der Flüssigkeit simuliert.
Im Folgenden werden die einzelnen Buttons incl. ihrer Unterfunktionen der Reihe nach vorgestellt.

## Domain Type

Standard (St)

### 1 . Enable

    Lässt das aktivierte Objekt Teil des Fluid Systems werden.

### 2 . Domain

    Die Bounding Box des Objekts dient als Begrenzungsrahmen, in dem die Fluidsimulation berechnet wird.
Die Buttons Standard 3 , Advanced 4 und Boundary 5 bilden dabei drei Untermenüs für den Themenbereich Domain.
* Standard: Standard Optionen für den Bereich Domain
* Advanced: Erweiterte Funktionen
* Boundary: Erweiterte Einstellungen für die Hülle

### 6 . Bake

    Mit einem Klick auf diesen Button startet die Fluid Simulation. Das Blender-GUI geht in einen neuen Modus über und zeigt nur noch den aktuell berechneten Frame an. Während der Zeit der Berechnung können keine weiteren Änderungen an der Szene vorgenommen werden. Dabei werden 2 Dateien für jeden Frame mit der Endung .bobj.gz abgespeichert. Wenn ein bestimmter Ordner als Ablage für mehrere Simulationen verwendet wird, achten Sie darauf, unterschiedliche Namen für jede Berechnung zu verwenden, sonst werden alten Daten bei gleichem Namen überschrieben. Sie sind immer auf der sicheren Seite, wenn Sie die Daten in getrennten Ordnern abspeichern. Mit der Esc-Taste wird die Berechnung abgebrochen.
Eine Simulation erneut berechnen Nachdem die Domain gebaked wurde, wandelt sie sich in ein Fluid Mesh und der äußere Begrenzungsrahmen verschwindet. Für eine Neuberechnung wählen Sie einfach das Fluid Mesh aus und drücken den Bake-Button. Es besteht aber auch die Möglichkeit, berechnete Simulationen in einem gesonderten Ordner abzuspeichern, so dass sie bei einer Neuberechnung nicht überschrieben werden. Nähere Informatione darüber sehen Sie bitte unter Punkt 13.

### 7 . Resolution

    Bestimmt die Detailauflösung für die Simulation. Wie schon weiter oben beschrieben, wird die Berechnung anhand von „Zellen“ vorgenommen, die über die ganze Flüssigkeit verteilt gleich sind. Eine Auflösung von 50 bedeutet z.B., dass 50 x 50 x 50 = 125.000 Zellen für die Berechnung zur Verfügung stehen. Wenn die Seitenlängen der Domain nicht alle gleich lang sind, wird die längste Seite als Referenz genommen, so dass die Zellen immer würfelförmig bleiben. Höhere Auflösungen verbessern den Detailreichtum der Szene, sind aber extrem ressourcenfressend (siehe Liste).

### 8 . Preview-Res

    (Vorschau-Auflösung) Ebenfalls ein Auflösungsparameter, aber in diesem Fall für die Vorschauansicht (Alt-A). Der Wert ist hier auf 100 begrenzt. Die Vorschauansicht einer Simulation ist nur eine Annäherung und kann vom Endergebnis abweichen. Sie können auch die Preview-Res auf eins stellen und stattdessen die finale Auflösung anzeigen lassen. Je nach Computertyp und Grafikkarte kann die Darstellung aber ab einem Wert von 80 oder 100 ruckelig werden.

### 9  10 Start – End times

    Start- und Endpunkt der Simulation in Sekunden.

### 11  12 Disp. –Qual.

    Qualitätseinstellungen für die Vorschau und das finale Rendering.

### 13

    Pfadangabe und Dateiname für die Daten des Bake-Prozesses. Diese Eingabe ähnelt der bei der Ausgabe von Animationen, allerdings mit einem Unterschied: Wenn Sie einen Ordner aufrufen, der schon Daten einer früheren Animation enthält, werden diese automatisch auf die Domain angewendet. Auf diese Weise können Sie verschiedene Variationen der gleichen Animation in unterschiedlichen Ordnern abspeichern.

### Advanced (Ad)
#### 2. Gravity

    Die Beschleunigung aller Fluid-Partikel, angegeben in m/s². Leider wird die Einstellung „null“ bei den Z-Werten nicht unterstützt. Wenn Sie also Schwerelosigkeit simulieren wollen, greifen Sie auf einen sehr kleinen Z-Wert zurück.

#### 3. Viscosity (Zähflüssigkeit)

    Bestimmt die Viskosität der Flüssigkeit und damit die Kraft, die einem Körper entgegengesetzt wird, der sich durch die Flüssigkeit bewegt. Im Augenblick kann das Fluid innerhalb einer Domain nur einen Viskositätsfaktor haben. Mischformen sind nicht möglich. Normalerweise wird die Viskosität in Poiseuille angegeben, Blender hingegen verwendet die „kinematische Viskosität“. In einem kleinen Popup-Fenster finden Sie Voreinstellungen für Wasser, Öl und Honig. Manuelle Eingaben sind auch möglich.

#### 4. Realworld-size

    Angabe in Metern für die längste Seite der Domain. Diese Eingabe hat großen Einfluss auf die Simulation, je nach Fallhöhe.

#### 5. Gridlevels

    Vergröberungsfaktor für die Zellauflösung, um die Berechnung zu beschleunigen. Autowert steht auf -1; erhöhen Sie auf 3, wird die Simulation bis zu 4 mal schneller ablaufen.

#### 6. Compressibility

    Wasser hat bei einer durchschnittlichen Temperatur einen Kompressionsfaktor von 0,0000034. Ohne diesen Kompressionfaktor wäre der Meeresspiegel um 30 Meter höher, als er tatsächlich ist und dieser Effekt kann hier eingestellt werden. Die Relevanz für Ihre Fluidanimationen dürfte wahrscheinlich fast null sein.

### Boundary (Bn)

Boundary Type Settings (gelten auch bei Obstacles):

#### 2. Noslip

    Eine Fluidzelle, die in Kontakt mit der äußeren Hülle der Domain (also Bounding Box) kommt, darf sich nicht mehr bewegen. Die Reibung an dieser Stelle ist 100%ig.

#### 3. Part

    Eine Fluidzelle, die in Kontakt mit der äußeren Hülle der Domain (also Bounding Box) kommt, darf sich bewegen, bekommt aber einen gewissen Reibungsfaktor. Der Wert kann unter PartSlip individuell eingestellt werden. PartSlip wird erst angezeigt, wenn Part aktiviert ist (keine Abbildung).

#### 4. Free

    Eine Fluidzelle, die in Kontakt mit der äußeren Hülle der Domain (also Bounding Box) kommt, darf sich frei bewegen.

#### 5. Tracer Particles

    Die wörtliche Übersetzung von „Tracer“ im Onlinewörterbuch Leo lautet „Ablaufverfolger“. Diese „Tracer“ werden dem Fluid beigemengt und schwimmen während der Animation mit. Um die Tracer Partikel anzuzeigen, muss aber zuerst die Einstellung Partikel aktivieren (Erklärung siehe Nr.6).

#### 6. Generate Particles

    Diese Einstellung hat eine Doppelfunktion. In Verbindung mit Surface Subdivision erzeugt es eine stärkere Tropfenbildung des Fluids. In Verbindung mit einem Particle Objekt regelt es die Anzahl der erzeugten Partikel im Fluid, abhängig von den Einstellungen unter „Particle“ (Drops oder Floats).

#### 7. Surface Subdivision

    Unterteilt die einzelnen Zellen des Fluids in kleinere Einheiten. Diese Einstellung alleine bewirkt keine Änderung des Meshes, es wirkt nur glatter. In Verbindung mit der Einstellung Particles allerdings hat es sehr deutliche Auswirkungen. Das Fluid unterteilt sich deutlich stärker in einzelne Tropfen.

#### 8. Surface Smoothing

    Glättungsfaktor, der der Oberfläche als Eigenschaft hinzugefügt werden kann. 1 ist Standard, 0 ist ausgeschaltet.

#### 9. Generate&Use SpeedVecs

    Standardmäßig werden bei der Simulation Geschwindigkeitsvektoren berechnet. Sie dienen als Grundlage für die Berechnung von Bewegungsunschärfe. Mit dem Button Disable kann der Export dieser Werte deaktiviert werden.

## Fluid

Alle Teile eines Objekts, das sich innerhalb der Bounding Box der Domain befindet, werden in die Simulation einbezogen. Wenn Sie mehr als ein Fluid-Objekt verwenden, sollten diese sich nicht überschneiden.
Die Normalen des Fluid-Objekts müssen nach außen zeigen.

### Volume Init Type

* Init Volume: Initiiert den inneren Teil des Meshes als Flüssigkeit. Benötigt ein geschlossenes Mesh.
* Init Shell: Alle Oberflächen des Meshes werden als dünner Film dargestellt. Benötigt kein geschlossenes Mesh.
* Init Both: Mischung aus beidem.
* Initial velocity: Anfangsgeschwindigkeit des Fluids bei Beginn der Animation in Meter / Sekunde:

## Obstacle

Diese Objekte werden als Hindernisse für die Flüssigkeit verwendet. Wie bei der Verwendung mehrerer Fluids in einer Domain sollten sich auch hier unterschiedliche Obstacles nicht überschneiden. Achten Sie bitte auch hier peinlich genau auf die gleichförmige Ausrichtung der Normalen nach außen, sonst kommt es zu Fehlern beim Baken der Szene.

### Volume Init Type: Boundary Type

Bestimmt die Anhaftung der Oberfläche.
* Bei der Einstellung Noslip bleibt die Flüssigkeit am Hindernis kleben, zumindest bei den Teilen, die das Hindernis berühren (Geschwindigkeit null).
* Part(-slip) erzeugt eine Mischung aus beiden Werten. Die Überblendung kann zwischen 0 und 1 eingestellt werden, wobei 1 gleichbedeutend mit Free ist. Wenn sich das Objekt bewegt, wird automatisch auf Free umgestellt.
* Free(-slip) erlaubt der Flüssigkeit, sich um das Hindernis herum zu bewegen.

#### Animated Mesh

    Wenn das Mesh animiert ist, z.B. durch eine Armature, einen Shape key oder ein Lattice, aktivieren Sie bitte diesen Button. Bei einfachen Positionsänderungen oder Drehungen ist das nicht erforderlich. Die Rechenzeit steigt dabei stark an.

#### PartSlip Amount

    „Überblendfaktor“ zwischen Noslip und Free.

## Inflow

Dieses Objekt fungiert als Zuflussstutzen für Flüssigkeiten, ähnlich wie ein Wasserhahn.

### Volume Init Type

    siehe Fluid.

### Inflow velocity

    Anfangsgeschwindigkeit des Fluids.

### Local Inflow Coords

    Für die "Ausgießrichtung" werden die lokalen Daten des Objekts benutzt. Diese Einstellung ist wichtig, wenn das Objekt verschoben oder rotiert wird.

## Outflow

Alle Flüssigkeit, die in den Einsflussbereich dieses Objekts kommt, wird aus der Szene entfernt, ähnlich wie ein Abfluss. Diese Funktion kann wichtig sein im Zusammenspiel mit einem Inflow Objekt. Es verhindert, dass eine Domain bei einer längeren Animation vollläuft.

### Volume Init Type

    siehe Fluid.

## Particle

Diese Einstellung kann verwendet werden, um zusätzlich Partikel in die Animation einzubauen. Dazu wird ein Hilfsobjekt abseits der Domain eingefügt, am besten ein einfacher Würfel. Das Material dieses Objekts wird für die Partikel in der Animation verwendet. Das Objekt wird durch die Einstellung „Partikel“ aktiviert. Die Verteilung der Partikel erfolgt automatisch beim Baken und kann in dieser Form z.B. durch Einstellungen im Partikelsystem nicht weiter beeinflusst werden.

### Size Influence

    Die Partikel können über unterschiedliche Größen verfügen. Bei der Einstellung 0 haben alle Partikel die gleiche Größe.

### Alpha Influence

    Wenn dieser Wert größer als Null ist, wird der Alpha-Wert über die Größe der Partikel gesteuert.

### Bake directory

    Pfadangabe auf denjenigen Ordner, wo die Simulationsdaten der aktuellen Anwendung liegen. In der Regel ist diese Pfadangabe gleich der Angabe unter „Domain“. Durch Strg-C / Strg-V können Sie die Angaben kopieren.

## Finetuning der Eigenschaften

Beim Baken:
* Erhöhen Sie die Auflösung
* Obstacles, Inflows und Outflows sollen so wenig Polygone wie möglich haben
* Vermeiden Sie hohe Geschwindigkeiten bei den Fluids. Die Rechenzeit ist dann sehr hoch.
Ohne Baken:
* Setzen Sie die Fluidobjekte auf SetSmooth
* Nutzen Sie den Subsurf Modifier und setzen den Wert 1.

## Hinweise und Tipps beim Baken

* Für jeden Frame werden zwei Dateien mit der Endung .bobj.gz abgespeichert. Hier werden die Daten für die Vorschau und die finale Auflösung hinterlegt. Es ist sinnvoll, diese Dateien in einen eigenen Ordner abzulegen, da es sich um hunderte von Dateien handeln kann. Diesen Ordner müssen Sie aber selber anlegen und dann den Pfad in den Einstellungen der Domain angeben. Bei jedem neuen Bake-Vorgang werden die Daten entsprechend der berechneten Frames wieder überschrieben.
* Bevor Sie in einer hohen Auflösung rendern, empfiehlt es sich, Probebakings mit kleinen Auflösungen zu machen und anschließend vielleicht 2 oder 3 Frames in hoher Auflösung berechnen zu lassen.
* Die Bounding Box der Domain ist die „Weltbegrenzung“ für die Berechnung der Fluidsimulation. Sehr kleine Domains werden unter Umständen nicht dargestellt, es sei denn, Sie erhöhen die Auflösung der Berechnung. Dennoch sollten Sie versuchen, die Domain entsprechend Ihrer Szene so klein wie möglich zu machen, also so wenig „Luft“ wie möglich zwischen den Objekten und der Grenze der Bounding Box zu lassen. Der erforderliche Arbeitsspeicher steigt mit der Größe der Domain an und wenn Sie sorglos mit dem Raum umgehen, kommt Ihr Computer schnell an seine Grenzen. Realistische Darstellungen von Wasser werden dann kaum möglich sein.
* Fluidparameter können in den IPO-Kurven animiert werden (unter Fluids)
* Sie können nur eine Domain verwenden, aber mehrere Fluid-Objekte.
** Zum Beispiel wollen Sie eine Animation mit zwei unterschiedlichen Fluids erstellen. Rendern Sie die eine Szene, versetzen die Domain ein wenig und rendern Sie die zweite Szene, aber mit Alpha-Kanal. Im Sequenzer können Sie dann beide Ergebnisse kombinieren.
** Eine zweite Möglichkeit besteht darin, mehrere Durchgänge einer Domain mit unterschiedlichen Fluids zu berechnen, die jeweils im gleichen Ordner, aber unter verschiedenen Bezeichnungen gespeichert werden
* Überprüfen Sie vor dem Baken unbedingt die Ausrichtung der Normalen bei allen Objekten. Bei Fluids müssen die Normalen nach außen zeigen, bei Obstacles entweder nach außen oder innen. Auf jeden Fall darf es keinen Mix zwischen Innen und Außen geben. Strg-N (Recalculate Normals Outside) bzw. Strg-Shift-N (Recalculate Normals Inside) stellt die Normalen alle in die gleiche Richtung.
* Im Augenblick sind noch keine Gravitationswerte von 0 erlaubt. Mindestens ein Wert von x/y/z muss einen von Null verschiedenen Wert annehmen.
* Wenn ein Objekt auf Init Volume eingestellt ist, muss das Objekt geschlossen sein und ein Volumen besitzen! Planes funktionieren nur mit der Einstellung Init Shell.

## Arbeitsumgebung und Einschränkungen

* Wenn BAKE gedrückt wurde, ist die normale Nutzung für die Zeit der Berechnung unterbrochen. Mit Esc können Sie den Vorgang abbrechen. Dies empfiehlt sich besonders dann, wenn Sie erst jetzt merken, dass der zur Verfügung stehende Arbeitsspeicher nicht ausreicht. Falls Sie nicht sofort aktiv werden und die Berechnung stoppen, wird Blender dies für Sie erledigen und seinen Dienst durch einen Absturz quittieren. Deshalb ist es nützlich, vor dem Baken zu speichern.

## Animationsdauer

Etwas komplizierter ist der Zusammenhang zwischen der Animationsdauer des Fluidsystems und der Framerate in der Timeline. Der Parameter Realworld size ist die erste entscheidende Einstellung. Hier wird die Grundlage für alle anderen Werte gelegt. Mit Realworld size wird die Größe der Domain festgelegt, und zwar deren längste Seite. Die Zeit, die ein animiertes Fluid unter bestimmten Gravitationswerten benötigt, diese Strecke zu durchmessen, variiert erheblich, abhängig von der Größe. Das deckt sich mit unserer Erfahrung mit realen Objekten. Wenn ein Glas Wasser auf den Boden fällt, erreicht es diesen schneller als z.B. ein Eimer, der aus großer Höhe vom Dach fällt.
Die allgemeine Formel für den freien Fall lautet (im Vakuum bzw. ohne Berücksichtigung der Luftreibung):
    $h(t)=h_{0}-{\frac {1}{2}}gt^{2}$
wobei h die Höhe des Körpers zur Zeit t bezeichnet, $h_{0}$ die Ausgangshöhe und g die Fallbeschleunigung. (Das Minuszeichen bezieht sich auf einen abwärts fallenden Körper.)
Umgestellt nach t, also der Zeit, die ein Körper für das Durchqueren einer bestimmten Strecke benötigt ergibt sich
    $t={\sqrt {2h \over g}}$
Setzen wir jetzt unterschiedliche (Domain) Größen ein, bei einer gerundeten Fallbeschleunigung von 10
    $t={\sqrt {2\cdot 0{,}5 \over 10}}$ ergibt 0,32 Sekunden
    $t={\sqrt {2\cdot 1 \over 10}}$ ergibt 0,45 Sekunden
    $t={\sqrt {2\cdot 5 \over 10}}$ ergibt 1 Sekunde
    $t={\sqrt {2\cdot 10 \over 10}}$ ergibt 1,41 Sekunden
Wie Sie sehen können, unterscheiden sich die zeitlichen Abläufe doch sehr stark voneinander. Wenn Sie also möchten, dass sich das Fluid wie in Echtzeit bewegt, müssen Sie für jede Realworld size auch immer einen bestimmten Zeitwert für Ihre Animation berücksichtigen, damit sich das Fluid entsprechend seiner Fallhöhe realistisch verhält. In Szenen, wo das Auge einen Größenvergleich zwischen unterschiedlichen Objekten anstellen kann, sind diese Einstellungen von großer Bedeutung. Allerdings wird bei diesen Werten die Abbremsung durch den Luftwiderstand nicht berücksichtigt. Wenn Sie also sehr kleine Tropfen aus großer Höhe fallen lassen wollen, verkleinern Sie einfach die Gravitation so stark, das es realistisch aussieht.
Die Gesamtzeit der Animation wird auf die in der Timeline eingestellte Anzahl der Frames verteilt.

### Beispiel

    Startzeit - 0 Endzeit - 4 ; Die Fluid Animation dauert 4 Sekunden.

### Erste Variante

    Wenn Sie Ihre Framedauer auf z.B. 100 gestellt haben, werden 100 / 4, also 25 Frames pro Sekunde berechnet.

### Zweite Variante

    Erhöhen Sie die Framerate auf 200, werden 50 Frames pro Sekunde berechnet.
Jetzt kommt aber noch eine andere Einstellung ins Spiel, nämlich die Abspielrate, die Sie unter F10 Format Panel einstellen können. Standardmäßig steht sie auf 25 fr/sec. Die Abspielgeschwindigkeit der Animation hängt nun direkt von diesen Einstellungen ab. Für das erste Beispiel stimmen beide Faktoren überein, jeweils 25 fr/sec. Im zweiten Beispiel weichen sie jedoch voneinander ab. Für die Darstellung der 50 Frames Fluidanimation benötigt Blender 50 / 25 = 2, also 2 Sekunden. Die Darstellung wird also um den Faktor 2 gedehnt und Sie erhalten eine Zeitlupenaufnahme!

## Links

http://mediawiki.blender.org/index.php/SoCFluidTutorial1
http://mediawiki.blender.org/index.php/SoCFluidTutorial2
http://wiki.blender.org/index.php/Manual/Fluid_Simulation
Eine sehr gute Webseite, wo man die Einstellungen für das Fluidsystem interaktiv erkunden kann
http://www.pkblender.it/
| <<<Zurück Referenz: Soft Body | ↑ Inhaltsverzeichnis ↑ Handbuch durchsuchen | Weiter>>> Die erste Fluidanimation |