Flow Visualization


Ziel dieser Übung war die Entwicklung einer Applikation zur Visualisierung von Strömungsdatensätzen, wie sie zum Beispiel durch Messungen oder Simulationen gewonnen werden. Die verwendeten Datensätze enthalten mehrere Kanäle, in denen  Informationen wie Strömungsrichtung, Druck und Temperatur gespeichert sind, wobei sich in den ersten drei Kanälen die x, y und z Komponenten der Vektoren befinden, die die Strömungsrichtung repräsentieren. Jeder Kanal kann zur Generierung der Hintergrundtextur verwendet werden, was in einer Graustufendarstellung des Datensatzes resultiert. Dieses Graustufenbild kann mit einer Transferfunktion beliebig eingefärbt werden.

Die Strömung eines Datensatzes kann auf zwei Arten visualisiert werden: durch einen Arrowplot und/oder durch Streamlines.
Beim Arrowplot werden in regelmäßigen Abständen Pfeile gezeichnet, die in die Richtung der Strömung zeigen.
Strömungslinien folgen von einem Punkt aus der Richtung der Strömungsvektoren. Zum Einsatz kommt hierbei der sogenannte "Evenly Spaced Streamlines" Algorithmus, der dafür sorgt, dass die Linien gleichmäßig über das Bild verteilt sind und sich gegenseitig nicht schneiden. Grob beschrieben zeichnet der Algorithmus von einem Seedpunkt ausgehend eine Streamline und übeprüft anschließend für Punkte links und rechts der Linie (normal auf den jeweiligen Linienpunkt) ob sie sich in genügend großem Abstand zu den Punkten der bisher gezeichnet Linien befinden. Falls ja wird von diesem neuen Seedpunkt aus wieder eine Linie gezeichnet (mittels Eulerintegration), solange bis sie zu nahe an bereits existierende Linien gerät. Jede neu gezeichnete Linie wird dann wieder auf mögliche Seedpunkte untersucht, solange bis alle Seedpunkte aller Streamlines gefunden und alle Streamlines gezeichnet wurden.

Realisiert wurde dieses Projekt in Visual Studio 2005 mit C++, Qt, OpenGL und GLSL.


Wer das Prorgamm gerne selber mal ausprobieren würde, kann es sich  hier runterladen:  download