Advanced Topics in Computer Graphics and Visualization
340 likes | 464 Views
This comprehensive master’s thesis delves into fluid simulation focusing on animating sand as a fluid. It covers foundational concepts of fluid dynamics, modeling techniques, and surface reconstruction using particles. The thesis discusses various fluid types, simulation approaches with grids and particles, and the mathematical equations involved, such as the Navier-Stokes equations. Special attention is given to the strengths and weaknesses of different simulation methods, including Smoothed Particle Hydrodynamics (SPH) and Particle-in-Cell (PIC) techniques, providing a detailed understanding of animating sand fluid dynamics.
Advanced Topics in Computer Graphics and Visualization
E N D
Presentation Transcript
Advanced Topics in Computer Graphics and Visualization Animating Sand as a Fluid Hanno Flohr Master Informatik
Gliederung • GrundlagenFluidsimulation • mitGittern • mitPartikeln • Animation von Sand als Fluid • Fluidsimulation • Modellierung des Sands • OberflächenrekonstruktionmitPartikeln
Fluidsimulation • Fluide: • Flüssigkeiten • Gase • verschiedene Fluidarten • zähflüssig oder reibungsfrei • komprimierbar oder nicht komprimierbar • verschiedene Flussarten (laminar/turbulent) • Verschiedene Ansätze zur Beschreibung • Fluidsimulation mit Eulerschen Gittern • Fluidsimulation mit Lagrangeschen Partikeln
Fluidsimulation • Gleichungen zur Berechnung basieren auf: • Massenerhaltung • Impulserhaltung • Volumenkräfte (z.B. Gravitation) • Oberflächenkräfte (Druckkraft, Reibung gemäß Viskosität) • Randbedingungen • Bestimmen Geometrie des Fluidrands und Flußverhalten am Rand • Variablen: • Geschwindigkeit • Hilfsvariablen (z.B. Druck, Dichte, Viskosität)
Fluidsimulation • Kontinuitätsgleichung für inkompressible Fluide: • Navier-Stokes Gleichung (für inkompressible Fluide): • Advektion: Fluid transportiert Werte/Objekte • Volumenkräfte: Beschleunigung durch externe Kräfte • Diffusion: Glättung des Vektorfelds (abhängig von Viskosität) • Druck: stellt sicher das Geschwindigkeitsfeld divergenzfrei bleibt
Fluidsimulation mit Gittern • Gitterpunkte speichern Geschwindigkeit, Druck, Indikator wo das Fluid (nicht) ist und zusätzliche Variablen • Bestimmung der Zelleninhalte • Leer • Oberfläche • Voll • Randbedingungen für betroffene Zellen festlegen • volle Zellen: Geschwindigkeitskomponenten berechnen und einen Iterationsschritt für neuen Druck • Oberflächenzellen: Randgeschwindigkeit neu berechnen • Position und Oberfläche updaten
Fluidsimulation mit Gittern • Hauptvorteil: • Simple Diskretisierung der Gleichungen und Lösung der Inkompressibilitätsbedingung • Nachteile: • Gitter benötigt • Werte auch an Gitterpunkten ohne Fluid • Probleme mit Advektion • hohe numerische Diffusion wegen akkumulierter Interpolationsfehler durch numerische Approximation der Gleichungen
Fluidsimulation mit Partikeln Smoothed Particle Hydrodynamics (SPH) • SPH Modell: • Fluid als Set von diskreten, sich bewegenden Partikeln • speichern Position und Geschwindigkeit • Kontinuitätsgleichung durch Modell erfüllt • konstante Anzahl Partikel mit konstanter Masse • Fluid kann sich frei ausbreiten • Partikeleigenschaften beeinflussen Nachbarschaft
Smoothed Particle Hydrodynamics • SPH Simulation: • Dichte aller Partikel bestimmen • Masseneinfluss benachbarter Partikel • Beschleunigung aller Partikel berechnen • Krafteinflüße benachbarter Partikel • Geschwindigkeiten updaten • Alle Partikel bewegen • Position der Partikel updaten
Smoothed Particle Hydrodynamics • Vorteile: • hohe Präzision bei Advektion • kein Gitter benötigt • Nachteile: • Nachbarschaftsbestimmung nötig • effizienteste Methoden basieren auf Sortierung der Partikel in gewöhnliche Gitter, kd-tree oder BSP-tree • Probleme mit Druck und Inkompressibilitätsbedingung • oft kleinere Zeitschritte benötigt
Animation von Sand alsFluid • Fluidsimulation • Modellierungdes Sands • OberflächenrekonstruktionmitPartikeln
Fluidsimulation • Komplementarität der Stärken und Schwächen von Gittern und Partikeln nutzen
Fluidsimulation • Particle-in-Cell (PIC): • Partikel für Advektion, Gitter für Rest • Problem: hohe numerische Diffusion durch wiederholte Mittelung und Interpolation • Fluid-Implicit-Particle (FLIP) • Partikel fundamentale Repräsentation des Fluids • Gitter zum Aktualisieren der Partikelvariablen, gemäß auf dem Gitter berechneten Änderungen • Verbesserung: kaum numerische Diffusion
Algorithmus (1) Adaption von PIC und FLIP für nicht komprimierbare Flüße: • Initialisierung der Partikel • 8 Partikel pro Zelle • Randomly jittered (gegen Aliasing) • Partikel nahe der Fluidoberfläche: • mindestens halbe Zelle von Oberfläche entfernt
Algorithmus (2) • Übertragung auf Gitter: • Gitterpunkte erhalten gewichtetes Mittel der nahen Partikel (trilineare Interpolation) • Markierung von Gitterzellen mit zumindest einem Partikel • im unmarkierten Gitterbereich: Abstandsfeld konstruieren um Geschwindigkeitsfeld außerhalb des Fluids auszudehnen
Algorithmus (3) • Berechnungen auf dem Gitter: • Addieren der Beschleunigung durch Gravitation • Randbedingungen und Inkompressibilität erzwingen • neues Geschwindigkeitsfeld erneut ausdehnen • Gitter nur als Zusatzstruktur (Gitter muss nicht in jedem Zeitschritt gleich sein)
Algorithmus (4) • Partikelgeschwindigkeiten updaten • Trilineare Interpolation der Geschwindigkeit (PIC) oder Geschwindigkeitsänderung (FLIP) gemäß der 8 umliegenden Gitterpunkte • zähflüssige Strömung (zB Sand): PIC • reibungsfreie Strömung (zB Wasser): FLIP
Algorithmus (5) • Partikel bewegen (Advektion) • Simpler ODE solver mit 5 Zwischenschritten • Beachtung der CFL Bedingung (max eine Zelle pro Zwischenschritt) • Erkennen von Partikeln die feste Wände durchdringen • Behebung zur Vermeidung von Artefakten
Animation von Sand alsFluid • Fluidsimulation • Modellierung des Sands • OberflächenrekonstruktionmitPartikeln
Modellierung des Sands • Definiton der Materialverformung • Mohr-Coulomb-Gesetz für statische Reibung: • Scherspannung (lässt Partikel aneinander gleiten) • Druck (drückt Partikel aneinander) • : Reibungswert • Scherspannung zu gross: • einfachste Flussregel angewandt: • Sand darf sich in Richtung der Scherkraft ausbreiten
Zusammenhalt (Kohäsion) • kleine numerische Fehler können zu Gleiten im Sand führen (-> instabil) • Kohäsionskoeffizient zum Ausgleich der Fehler • höhere Scherspannung nötig bevor Sand fließt • erreichter Effekt: • stabiles Verhalten des Sands im Ruhezustand • kein sichtbarer Effekt auf Fluss wenn Sand in Bewegung • Aber: zur Modellierung von Gesteinen mit wirklicher Kohäsion ungeeignet, da zu stabil
Vereinfachtes Modell (Annahmen) • Nicht komprimierbare Strömung -> konstante Dichte • Druck um gesamtes Geschwindigkeitsfeld inkompressibel zu machen ähnlich richtigem Druck im Sand • Keine Beachtung von • elastischer Verformung • minimaler Volumenänderung zu Beginn/Ende des Flusses • Aufteilung: • Zellen mit starrer Bewegung und • Zellen mit nicht komprimierbarer Scherströmung
Vereinfachtes Modell (Annahmen) • Fließflächen-Bedingung: • Sand kann Kräften und Massenträgheit widerstehen -> Zelle mit starrer Bewegung • Verfestigung der Geschwindigkeit starrer Regionen: • Gruppen von zusammenhängenden starren Zellen finden • einheitliche Geschwindigkeit für starre Regionen bestimmen • projizierte Starrkörperbewegung berechnen
Reibungsrandbedingungen • definieren Reibung zwischen Sand und anderen Objekten • Randbedingungen bisher erlauben: • entweder keinerlei Gleiten • oder dauerhaftes Gleiten Video-Quelle: http://www.cs.ubc.ca/~rbridson/movies/websandbunny.mov
Reibungsrandbedingungen Reibungsformel: • Statische Reibung: Geschwindigkeit in Tangentialrichtung = Null • Kinetische Reibung:Geschwindigkeit in Tangentialrichtung proportional reduziert Video-Quelle: http://www.cs.ubc.ca/~rbridson/movies/sandbunny.mov
Algorithmus (für jeden Zeitschritt) • Gewöhnliche Schritte der Fluidsimulation (Advektion, Gravitation, Randbedingungen, Druck, etc) • Berechnung: Formänderungsgeschwindigkeitstensor pro Zelle (zentrale Differenzen) • Speichern der Zellen als starr oder fließend • Gruppen von starren Zellen finden und Geschwindigkeiten verfestigen • Update verbleibender Geschwindigkeiten mit Reibungsspannung
Animation von Sand alsFluid • Fluidsimulation • Modellierung des Sands • OberflächenrekonstruktionmitPartikeln
Oberflächenrekonstruktion • durch Simulation: Positionen der Partikel welche das Fluid definieren • für hochqualitatives Rendering: Oberfläche zur Umhüllung der Partikel nötig
Oberflächenrekonstruktion • Prinzip: exakte Rekonstruktion des Abstandsfeldsder Partikel • Für jeden Gitterpunkt: • naheliegende Partikel in Radius um Gitterpunkt () finden • gewichtetes Mittel der Postionen () und Radien ) aller naheliegenden Partikel berechnen • Gewichtung anhand Kernelfunktion und Radius um Gitterpunkt • Abstand zu naheliegenden Partikeln berechnen:
Oberflächenrekonstruktion • Oberfläche bestimmen: benachbarte Gitterpunkte mit unterschiedlichen Vorzeichen für Abstand • Oberfläche zwischen diesen Gitterpunkten • Oberflächenpunkte anhand Abstandswerten bestimmbar • Vorteile: • Geringe Kosten pro Frame • Unabhängige Frames -> Berechnung mit mehreren CPUs/Maschinen parallel möglich
Oberflächenrekonstruktion • Probleme: • Artefakte in konkaven Regionen • gemittelte Position kann irrtümlich außerhalb der Oberfläche liegen • Lösung: Sampling auf höherer Auflösung + ein smoothing pass • Radien müssen genaue Abschätzungen des Abstands zur Oberfläche sein • keine schnelle Methode zur Berechnung mit genügend hoher Präzision vorhanden • Darum: alle Radien fest (konstanter durchschnittlicher Partikelabstand) und Initialabstand an Oberfläche anpassen
Video: Sand Column Video-Quelle: http://www.cs.ubc.ca/~rbridson/movies/sandcolumn.mov
Video: Water Column Video-Quelle: http://www.cs.ubc.ca/~rbridson/movies/webwaterslide.mov