← zurück

Wasserpyhysik in Games

Bachelor • Studium • Simulation • Physik • Wissenschaftliche Arbeit · 2023

Bachelorarbeit zur Analyse und prototypischen Implementierung von Wasserphysik in Videospielen mit Fokus auf physikalische Grundlagen, bestehende Verfahren und Echtzeitfähigkeit.

Cover Bild für projects Seite

Highlights

Projektübersicht

In meiner Bachelorarbeit beschäftigte ich mich mit der Frage, wie Wasser in Videospielen physikalisch plausibel simuliert werden kann.

Der Fokus lag dabei bewusst auf der technischen Seite der Wassersimulation und weniger auf der rein künstlerischen Darstellung. Ziel war es, bestehende Verfahren zu untersuchen, deren Stärken und Schwächen zu analysieren und darauf aufbauend ein eigenes Konzept für eine prototypische Echtzeit-Simulation zu entwickeln.

Physikalische Grundlagen

Zu Beginn der Arbeit wurden die physikalischen Grundlagen behandelt, die für die Simulation von Flüssigkeiten relevant sind.

Dabei standen vor allem zwei Gleichungen im Mittelpunkt:

Die Arbeit zeigt dabei auch, dass beide Gleichungen allein nicht ausreichen, um Wasser in seiner ganzen Komplexität zu simulieren. Effekte wie Oberflächenspannung, Kollisionen mit Objekten oder Spritzwasser würden weitere Modelle erfordern.

Analyse bestehender Verfahren

Ein größerer Teil der Arbeit widmete sich dem Vergleich bereits existierender Ansätze zur Flüssigkeits- und Wassersimulation.

Dabei wurden unter anderem folgende Verfahren betrachtet:

Zusätzlich wurden konkrete Arbeiten und Implementierungen von unter anderem Jos Stam, Mike Ash, Robert Bridson und Matthias Müller untersucht.

Ein zentrales Ergebnis dieser Analyse war, dass alle Ansätze Kompromisse eingehen müssen:
Mehr physikalische Genauigkeit führt in der Regel zu höherem Rechenaufwand, was besonders in Echtzeit-Anwendungen problematisch wird.

Eigenes Konzept

Auf Basis der Analyse entwickelte ich ein eigenes Konzept für eine prototypische Wassersimulation.

Dabei entschied ich mich bewusst für die Gitter-Methode, da sie im Vergleich zu partikelbasierten Verfahren weniger Speicher benötigt und sich besser für echtzeitnahe Anwendungen auf schwächerer Hardware eignet.

Als Grundlage diente der 3D-Ansatz von Mike Ash, der von mir in ein moderneres C++-Konzept überführt und erweitert wurde.

Das Konzept bestand aus mehreren zentralen Klassen:

Für die Visualisierung wurde die Game Engine Vektoria verwendet.

Implementierung

Die prototypische Implementierung erfolgte in C++.

Im Solver wurden die zentralen Schritte einer gitterbasierten Fluidsimulation umgesetzt, darunter:

Visualisiert wurde die Simulation in Vektoria durch einen Würfel aus vielen kleinen Zellen.
Jede Zelle wurde als eigener Würfel dargestellt, dessen Transparenz von der gespeicherten Dichte abhing. Zusätzlich konnten Geschwindigkeitsvektoren zur Laufzeit über ein Pfeilfeld visualisiert werden.

Ergebnis und Erkenntnisse

Die Arbeit zeigt deutlich, dass hochwertige Wasserphysik in Videospielen technisch sehr anspruchsvoll ist.

In der prototypischen Implementierung wurde sichtbar, dass bereits vergleichsweise einfache gitterbasierte Simulationen, die auf der CPU laufen schnell an Performancegrenzen stoßen:

Damit bestätigt die eigene Implementierung die zentrale Erkenntnis der Arbeit:

Eine physikalisch glaubwürdige Wassersimulation in Echtzeit erfordert starke Vereinfachungen, Optimierungen oder weiterführende Ansätze wie Parallelisierung, GPU-Berechnung oder hybride Verfahren.

Fazit

Die Bachelorarbeit war für mich eine Verbindung aus Physik, C++-Programmierung und Game Engineering.

Sie hat mir gezeigt, wie komplex die Simulation von Wasser in Echtzeit wirklich ist und wie wichtig es ist, zwischen physikalischer Genauigkeit, visueller Qualität und Performance abzuwägen.

Gleichzeitig entstand ein eigener technischer Prototyp, der diese Zusammenhänge praktisch erfahrbar gemacht hat.