Technische Universität Dresden Fakultät Informatik Institut für Software- und Multimediatechnik Prof. Dr. Stefan Gumhold Hauptseminar Computergrafik Simulation von Feuer Albrecht Uhlig (Mat.-Nr.: 2805055) Betreuer: Dipl.-Phys. Niels v. Festenberg 2 Inhaltsverzeichnis 1. Einleitung...............................................................................................................................3 2.Motivation und Anwendung.................................................................................................4 3.Mathematische Grundlagen..................................................................................................6 4.Aufbau und Modell einer Flamme.......................................................................................7 5.Umsetzung der Simulation..................................................................................................10 6.Darstellung von Feuer.........................................................................................................12 7.Resultat.................................................................................................................................14 8.Zusammenfassung und Ausblick........................................................................................14 Literaturverzeichnis...............................................................................................................16 Abbildungsverzeichnis............................................................................................................16 3 1. Einleitung Seit etwa 800.000 Jahren nutzen Menschen das Feuer und heben sich damit deutlich von der Tierwelt ab. Vorher war Feuer gleichbedeutend mit Gefahr und nicht kontrollierbar. Heutzutage kann es in Form von Kaminfeuer oder Kerzenlicht das Gegenteil bedeuten. Diese Besonderheit von gleichzeitigem Nutzen und großer Gefahr macht das Feuer sehr interessant. Man kann Feuer grob in zwei Kategorien einteilen. Das Zweckfeuer und das Schadfeuer. Zweckdienlich ist Feuer zum Beispiel als Beleuchtung, zum Wärmen oder zum Kochen. Schädlich ist es im Allgemeinen als Brand oder Explosion. Abbildung 1 zeigt je ein Beispiel für Zweck- und Schadfeuer. Abbildung 1 Beispiel für Nutz und Schadfeuer Im Folgenden wird ein Modell zur Simulation von Feuer vorgestellt, welches auf dem Paper [1] basiert. Dabei werden Navier-Stokes-Gleichungen verwendet deren mathematischen Grundlagen in Kapitel 3 erläutert werden. Kapitel 4 und 5 stellen dann das verwendete Modell und die Umsetzung vor. Kapitel 6 geht auf die Darstellung der Simulation ein. Am ende werden einige Bilder der Simulation gezeigt und eine Zusammenfassung gegeben. 4 2. Motivation und Anwendung Für die Simulation von Feuer gibt es verschiedene Anwendungen und Motivationen. Beim Schadfeuer möchte man möglichst das verhalten und die Ausbreitung von Bränden vorhersagen. Das betrifft z.B. Brandschutz in Gebäuden oder die Ausbreitung von Waldbränden. Abbildung 2 zeigt eine Simulation von Brandausbreitung in einem Gebäude. Bei dieser Art von Simulation kommt es nicht auf einzelne Flammen an, sondern auf das Verhalten des gesamten Brandes. Abbildung 2 Simulation von Brand in einem Gebäude In der Computergrafik kommt es nicht auf realistisches Verhalten, sondern auf realistisches Aussehen an. Verhalten und Aussehen hängen zwar eng zusammen, aber meist werden in der Computergrafik viele Vereinfachungen und Optimierungen vorgenommen wenn sie der Darstellung zweckdienlich sind. Anwendung finden diese Simulationen z.B. in der Filmindustrie, wo bisher meist gefährliche Stunts notwendig waren. Abbildung 3 zeigt ein Beispiel für so einen Stunt und eine Anwendung von simuliertem Feuer. 5 Abbildung 3 Feuer in der Filmindustrie Ein weiteres Gebiet bei dem die Darstellung von Feuer eine Rolle spielt sind Computerspiele. Da Feuer sehr aufwendig zu simulieren ist, wurden bisher meist einfache oder vorherberechnete Effekte verwendet. Abbildung 4 zeigt zwei Beispiele für die Darstellung von Feuer in Spielen. Simuliertes Feuer mit dem auch Interaktion möglich ist, findet man zurzeit noch nicht in Spielen. Abbildung 4 Feuer in Computerspielen 6 3. Mathematische Grundlagen Wichtig für das Verständnis der Simulation ist der Nabla-Operator ∇ . Eine genaue mathematische Definition findet man in jeder Standardliteratur. Für die folgenden Kapitel ist ein grobes Verständnis dieses Operators notwendig. Der Nable-Operator kann drei verschiedene Bedeutungen haben. Wird er auf ein Skalarfeld angewendet, bezeichnet man das Ergebnis als Gradient. Für den zweidimensionalen Fall, kann man sich das Skalarfeld z.B. als Höhenkarte vorstellen. Der Gradient gibt dann an, in welche Richtung eine Kugel rollen würde wenn man sie auf die Karte legt. Die Länge des Gradienten an dieser Stelle, gibt sozusagen die Steilheit an. Wendet man den Operator auf ein Vektorfeld an, entsteht ein Feld aus Matrizen. Aus diesen kann ein Wert für die Divergenz bestimmt werden. Wenn man das Vektorfeld als Geschwindigkeitsfeld auffasst, gibt dieser Wert an, ob der Stoff an der Stelle auseinander oder zusammen strömt. Da wir im Folgenden von nicht komprimierbarem Fluss sprechen, kann der Stoff nicht zusammengedrückt werden, ist also divergenzfrei. Eine dritte Anwendung hat der Operator bei der Berechnung von der Rotation eines Feldes. Diese Anwendung wird in Kapitel 5 noch einmal erwähnt. Die Rotation kann z.B. benutzt werden, um eine Kraft zu berechnen, die die Wirbel im Geschwindigkeitsfeld verstärken. Bei der Simulation von Gasen und Flüssigkeiten gibt es zwei Ansätze. Entweder man verfolgt die Bewegung der einzelnen Teilchen im Raum, oder man beobachte die Veränderung bestimmter Werte an einem festen Raumpunkt. Bei der vorgestellten Simulation wird letzteres getan. Dazu werden Navier-Stokes-Gleichungen für nicht komprimierbaren Fluss verwendet. Diese Gleichungen beschreiben die Geschwindigkeit des zu simulierenden Mediums an jedem Punkt im Raum. Dabei können auch andere Attribute (z.B. Temperatur) mitgeführt werden, wie in Kapitel 5 gezeigt wird. Abbildung 5 zeigt die beiden wichtigen Gleichungen. u ist das Geschwindigkeitsfeld des Mediums, p das Druckfeld, ν die Zähigkeit (Viskosität), ρ die Dichte und A stellt externe Kräfte dar. 7 ∇ ⋅u = 0 1 ∂u 2 = − (u ⋅ ∇ )u − ∇ p + ν ∇ u + A ∂t ρ Abbildung 5 Navier-Stokes-Gleichungen Der erste Term besagt, dass das Medium divergenzfrei ist, also nicht Komprimierbar. Der zweite Term besteht aus einem (von links nach rechts) Transportteil, einem Druckteil, einem Diffusionsteil und den externen Kräften. Der Transportteil drückt die Eigenbewegung des Stoffes aus. Der Druckteil repräsentiert den Druckausgleich abhängig von der Dichte. Je größer die Dichte, desto langsamer bewegt sich der Stoff. Der Diffusionsteil beschreibt die Reibung des Stoffes an sich selber und die externen Kräfte vereinen z.B. Gravitation und Wind. 4. Aufbau und Modell einer Flamme Abbildung 6 zeigt die schematische Darstellung einer Flamme. Der Pfeil zeigt die Flussrichtung des Brennstoffes an. Die Flamme besteht aus mehren Teilen, die für die Simulation einzeln betrachtet werden. Der brennbare Stoff wird erhitzt, bis er sich entzündet (chemisch reagiert) und zu heißen Reaktionsprodukten wird. Wenn diese wieder Abkühlen entsteht Rauch. Der Bereich der chemischen Reaktion wird im folgenden blauer Kern genannt, da er bei realen Flammen eine blaue Farbe hat. Der Rauch ist nicht Schwerpunkt der Simulation, da es eigene Arbeiten dazu gibt (siehe [2]). 8 Abbildung 6 Aufbau einer Flamme Die chemische Reaktion des Brennstoffes wird nicht simuliert. Es wird eine Temperatur-ZeitKurve verwendet, die vom Gestalter der Simulation frei gewählt werden kann. Abbildung 7 zeigt ein Beispiel für so eine Kurve. Feststoff T Gas Verbrennungsprodukte Blauer Kern Zeit Übergang von fest zu gasförmig Abbildung 7 Temperatur des Brennstoffes abhängig von der Zeit Beim Übergang von Brennstoff zu Verbrennungsprodukten ändert sich die Zusammensetzung des Stoffes. Diese Veränderung kann von den nicht komprimierbaren Flussgleichungen nicht beschrieben werden. Deshalb werden der blaue Kern und die gelbe Flamme getrennt voneinander simuliert und an einer Übergangsfläche zu vereinigt. Abbildung 8 zeigt die Stromlinien bei der Ausdehnung des Brennstoffes. 9 Stromlinien Übergang blauer Kern zu Gelber Flamme 2 Verschiedene Flussgleichungen Abbildung 8 Stromlinien in der Flamme Die Simulation der heißen Verbrennungsprodukte fängt dort an, wo der blaue Kern aufhört. Am Übergang ändert sich die Dichte des Stoffes. Diese Änderung ist ein Parameter der Simulation und wird Ausdehnungsparameter genannt. Die Anfangswerte für die heißen Verbrennungsprodukte werden so berechnet, dass Masse und Impuls erhalten bleiben. Abbildung 9 zeigt die verwendeten Formeln. ρ h (Vh − D ) = ρ f (V f − D ) ρ h (Vh − D ) 2 + ph = ρ f (V f − D ) 2 + p f f Brennstoff h Heises Gas ρ f /h Dichte Vf /h Geschwindigkeit p f /h Druck D = V f − S Geschwindigkeit der Übergangsfläche Abbildung 9 Masse und Impulserhaltung an der Reakionsgrenze Bei festen Brennstoffen wird der Druck nicht beachtet, wodurch sich die Formeln aus Abbildung 9 vereinfachen lassen. Es entsteht ein Term für die Geschwindigkeit des injizierten Brennstoffes der sich aus der Geschwindigkeit des Festkörpers und einem Teil der die Ausdehnung des Stoffes beschreibt zusammensetzt. Mit dieser Methode lassen sich Festkörper simulieren, die mit der Flamme interagieren und sich auch selber entzünden können. Im nächsten Kapitel wird beschrieben wie dieses Modell in der Praxis umgesetzt werden kann. Außerdem wird die nie noch offene Frage geklärt, an welcher Stelle man die beiden Simulationen verbinden muss, wo also die chemische Reaktion stattfindet. 10 5. Umsetzung der Simulation Bisher wurde immer von kontinuierlichen Feldern gesprochen. Um tatsächlich eine Simulation durchzuführen muss der Raum in diskrete Voxel geteilt werden. Jedes Voxel bekommt Werte für Dichte, Druck, Temperatur und Abstand zum Übergang der beiden Simulationen (siehe Kapitel 4). Die Geschwindigkeit wird an den Flächen zwischen den Voxeln definiert. Da das Feuer gasförmig ist, fällt der Reibungsteil aus der Navier-Stokes-Gleichung weg, und sie wird zur Eulergleichung (Abbildung 10). Diese Gleichungen lassen sich über einen SemiLagrang-Ansatz lösen, der sehr ausführlich in [3] beschrieben wird. Dabei wird der Transportteil zuerst alleine numerisch gelöst und danach der Druckteil unter Ausnutzung der Divergenzfreiheit. Damit die Flamme nach oben steigt, wird eine Auftriebskraft hinzugefügt. Diese Kraft wird proportional zur Differenz der Temperatur des Stoffes zur Umgebungstemperatur festgelegt. Der Proportionalitätsfaktor ist ein weiterer Parameter der Simulation. ∇ ⋅u = 0 1 ∂u = − (u ⋅ ∇ )u − ∇ p + A ∂t ρ Abbildung 10 Eulergleichungen Dieser numerische Lösungsansatz hat das Problem, dass Bewegungsenergie verloren geht. Genauer gesagt verringert sich die Rotation, was zu weniger Verwirbelung führt. Um trotzdem optisch ansprechende Wirbel zu erzeugen kann eine weitere externe Kraft berechnet werden, um die verloren gegangene Energie wieder hinzuzufügen. Diese Methode wird in [4] beschrieben und als Vorticity-Confinement (Wirbelerhaltung) bezeichnet. Die Entscheidenten Formeln sind in Abbildung 11 dargestellt. ε ist ein weitere Parameter der Simulation und gibt die Menge der zugeführten Rotation an. 11 ω = ∇×u N= ∇ ω ∇ ω f wirbel = ε h( N × ω ) ω N ε h Rotation Normiertes Gradientenfeld (Richtung der Rot.) Parameter für Menge zugefügter Rotation Größe der Voxel Abbildung 11 Wirbelerhaltung Bisher wurde erklärt, wie eine Simulation mit den Navier-Stokes-Gleichungen umgesetzt wird. Wie in Kapitel 4 erläutert, werden aber zwei Simulationen benötigt, die an einer Übergangsfläche Masse und Impuls erhalten. Um die Position dieser Fläche zu bestimmen, wird ein neuer Wert φ eingeführt. Er beschreibt den Abstand zum Übergang und hat den Wert 0 an der Verbindungsstelle (Level-Set-Methode). Positive Werte bedeuten, dass Brennstoff vorhanden ist und bei negativen Werten ist kein Brennstoff vorhanden. In der laufenden Simulation werden die Werte φ aus dem Geschwindigkeitsfeld, der Reaktionsgeschwindigkeit (S) und den alten Werten von φ berechnet. Damit φ trotz numerischer Berechnung weiterhin den Abstand angibt ( ∇ φ = 1 ) sind Korrekturen notwendig die in [5] beschrieben werden. Abbildung 12 zeigt die verwendeten Formeln. w = u f + Sn φ ∂φ w = − w⋅ ∇ φ ∂t n ≈ ∇φ φ neu = φ alt − ∆ t ( wxφ x + wyφ y + wzφ z ) ∆ t Abstand zum blauen Kern Bewegung blauer Kern Normierter Gradient Simulationsschrittes Abbildung 12 Berechnung der Übergangsfläche Um das Feuer auch darstellen zu können, ist es wichtig, die Temperatur in jedem Voxel zu kennen. Diese Kann als Funktion von der Zeit berechnet werden (Kapitel 4). Die Zeit kann bei den verwendeten Flussgleichungen mitgeführt werden. Dabei ist der Transportteil der Flussgleichungen (Kapitel 4) besonders wichtig. Abbildung 13 zeigt die Formeln zum mitführen von Werten bei den Flussgleichungen und wie daraus die Temperatur berechnet wird. − (u ⋅ ∇ ) beschreibt den Transport (Advektion) des Wertes und k die Veränderung des Wertes (abhängig von der Zeit). Gäbe es keinen Transport, würde dort also nur –k stehen. Da 12 wir k als Konstante mit dem Wert 1 wählen, ist die Zeit direkt Proportional ohne einen Proportionalitätsfaktor. ∂Y = − (u ⋅ ∇ )Y − k ∂t Y neu = − k∆ t + Y * T ~ 1− Y Y k Reaktionskoordinate Y* Semi-Lagrang-Lösung der Advektion T Zeit Konstante (=1) Abbildung 13 Berechnung der Temperatur 6. Darstellung von Feuer Feuer ist ein Medium das selber Licht erzeugt aber auch Absorbiert und Bricht. Es verhält sich also wie eine leuchtende Wolke. Für die Darstellung von Wolken gibt es viele andere Arbeiten, z.B. [6]. Besonders wichtig, ist das Ausstrahlen von Licht für die Darstellung. Dabei verhält sich Feuer wie ein Schwarzkörper. Das bedeutet, dass die Farbe des ausgestrahlten Lichtes von der Temperatur des Feuers abhängt. Abbildung 14 zeigt das Verhalten eines solchen Schwarzkörpers. Die Grafik stellt die Intensität des Lichtes in Abhängigkeit von der Wellenlänge und der Temperatur dar. C1 und C 2 sind Naturkonstanten. Le ,λ ( x) = 2C1 λ 5 (eC2 /( λ T ) − 1) T C1 ≈ 3,7418 ⋅ 10 − 16 Wm 2 C2 ≈ 1,4388 ⋅ 10 − 2 mK Abbildung 14 Schwarzkörperstrahlung 13 Will man die Farbe des Feuers berechnen, muss beachtet werden, dass sich das Auge an die Helligkeit des Feuers anpasst. Um einen realistischen Effekt zu erhalten wird die von-KriesMethode verwendet die in [7] beschrieben wird. Dabei wird das ausgestrahlte Spektrum verwendet, um die Tristumulus-Werte zu finden (Abbildung 15). 0 0 Xr Xa 1 / Lw Y = M −1 0 M Y 1 / M 0 a w r Z a 0 0 1 / S w Z r Abbildung 15 Berechnung der Tristimulus-Werte Hat man die Farben der Raumpunkte bestimmt, kann das Feuer wie eine Wolke darstellen (siehe z.B.[6]). Die im folgenden Kapitel gezeigten Bilder wurden durch eine Ray-Marching –Methode berechnet. Dabei ist weder die Simulation noch die Darstellung des Feuers echtzeitfähig. 14 7. Resultat Abbildung 16 zeigt drei Beispiele der Simulation. Links zwei brennende Holzstücken. Hier der Übergang von festen zu gasförmigen Brennstoff mit simuliert. Auf der rechten Seite wird die Möglichkeit der Interaktion mit dem Feuer dargestellt. Eine Kugel bewegt sich durch die Flamme und entzündet sich dabei. Abbildung 16 Beispiele der Simulation 8. Zusammenfassung und Ausblick Es wurde ein Modell und praktische Anleitung zur Simulation von Feuer vorgestellt. Dazu werden nicht komprimierbare Flussgleichungen verwendet. Die Tatsache, dass Feuer eigentlich ein sich ausdehnendes Medium ist, und damit nicht nicht-komprimierbar, wird durch die Verwendung von zwei Simulationen gelöst. Eine für den sich erwärmenden Brennstoff und eine für die heißen Reaktionsprodukte der Verbrennung. An der Übergangsfläche der Simulationen wird Masse und Impuls erhalten. Die Position des 15 Überganges wird durch eine Level-Set-Methode beschrieben. Dargestellt wird das Feuer durch Berechnung der Temperatur als Funktion von der Zeit. Anhand der Temperatur wird die Farbe des Feuers bestimmt. Die Simulation ist obwohl sie viele Vereinfachungen vornimmt nicht echtzeitfähig. Trotz der physikalisch nicht korrekten Vereinfachungen ist das optische Resultat sehr ansprechend und wirkt realistisch. Außerdem ist Interaktion mit dem Feuer möglich und feste Brennstoffe oder sich entflammende Gegenstände können auch simuliert werden. Ausblickend kann gesagt werden, dass die volumetrische Simulation von Feuer zwar sehr gut aussieht, aber in naher Zukunft nicht echtzeitfähig werden wird. Ansätze über Partikel sind sehr viel schneller aber wirken oft nicht realistisch. Neuere Paper, wie z.B. [8], beschreiben wie man auch mit Partikelansätzen realistisch aussehendes echtzeitfähiges Feuer simulieren kann. 16 Literaturverzeichnis [1] Nguyen, Fedkiw, Jensen, 2002 Physically Based Modeling and Animation of Fire [2] R. Fedkiw, R. Stam, H. W. Jensen. 2001 Visual Simulation of Smoke [3] Stam 1999 Stable Fluids [4] Steinhoff, Underhill, 1994 Modification of the Euler Equations for “Vorticity Confinement” [5] Sethian 1996 A Fast Marching Level Set Method for Monotonically Advancing Fronts [6] Niniane Wang. 2003 Realistic and Fast Cloud Rendering [7] Fairchild 1998 Color Appearance Models. Addison Wesley [8] Bridault-Louchez, Leblond, Rousselle. 2006 Enhanced illumination of reconstructed dynamic environments using a real-time flame model Abbildungsverzeichnis Abbildung 1 Beispiel für Nutz und Schadfeuer.....................................................................3 Abbildung 2 Simulation von Brand in einem Gebäude.........................................................4 Abbildung 3 Feuer in der Filmindustrie.................................................................................5 Abbildung 4 Feuer in Computerspielen..................................................................................5 Abbildung 5 Navier-Stokes-Gleichungen...............................................................................7 Abbildung 6 Aufbau einer Flamme.........................................................................................8 Abbildung 7 Temperatur des Brennstoffes abhängig von der Zeit......................................8 Abbildung 8 Stromlinien in der Flamme ...............................................................................9 Abbildung 9 Masse und Impulserhaltung an der Reakionsgrenze......................................9 Abbildung 10 Eulergleichungen............................................................................................10 Abbildung 11 Wirbelerhaltung..............................................................................................11 Abbildung 12 Berechnung der Übergangsfläche.................................................................11 Abbildung 13 Berechnung der Temperatur.........................................................................12 Abbildung 14 Schwarzkörperstrahlung...............................................................................12 Abbildung 15 Berechnung der Tristimulus-Werte..............................................................13 Abbildung 16 Beispiele der Simulation.................................................................................14