340 likes | 475 Views
Advanced Topics in Computer Graphics and Visualization. Animating Sand as a Fluid Hanno Flohr Master Informatik. Gliederung. Grundlagen Fluidsimulation m it Gittern m it Partikeln Animation von Sand als Fluid Fluidsimulation Modellierung des Sands
E N D
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