by Martin Ilcik
Intro
Ich habe dieses Software für die Laborübung „Visualisierung“ Programmiert. Flow visualisation war das zweite Beispiel zur Abgabe. Im Vergleich zum ersten Beispiel habe ich die benötigte Zeit zur Programmierung besser abgeschätzt. Deshalb hoffe ich, das dieses Stück Software keine Bugs enthält. Auch meine „ToDo“ Liste blieb am Ende fast Leer. Also bin ich ziehmlich zufrieden mit mir selbst :-) [edit] Bei der Präsentation habe ich festgestellt, dass bei der Visualisierung des Hurricanes mit 50 Zeitschritten mein Programm die grenzen des Graphikspeichers weit überschritten hat. Deshalb habe ich nach zwei Tagen eine neue, überarbeitete Version gebastelt. Jetzt läuft alles flüssig, der Bedarf von Festplattendpeicher stieg jedoch bei diesem zeitabhängigen Hurricane Dataset zu 1,3 Gb.
Wozu ist das gut?
Flow visualization dient als hilfe bei Untersuchungen von verschiedenen dynamischen Systemen. Als Eigabe dient ein *.gri File, in dem die geographische Information über das Vektorfeld gespeichert ist. Weiter benötigt das Programm Files mit Daten von einzelnen (mindestens einem) Zeitschritten. Die vorhandenen Daten sind meistens Geschwindigkeitsvektor und mehrere Zusatzdaten, wie z.B. Temperatur, Druck usw. Mein Programm arbeitet mit Daten maximaler Größe 600x600x1, es kann also nicht mit 3D Flüssen arbeiten. Zu den Feautures gehören interaktive Transferfunktionen, Arrowplots, Streamlines, Dynamic particles flow und Animationen von Daten mit mehreren Zeitschritten. Das Programm läuft zum Teil auf der graphischen Hardware und verwendet texture shader und register combiners. Deshalb läuft es nur an NVIDIA Graphikkarten aber das schon ab GeForce3 höher.
Wie bediene ich das?
Open
Dataset rechts oben öffnet neue Strömungsdaten. Falls du keine hast, einige Beispieldaten befinden sich auf der LU Visualisierung und VRVis Webpage.
Einege
Daten (Box-dataset) brauchen die Byte Ordnung zu wechseln. Nach der Auswahl der
Strömungsdatei wird man gefragt, ob die Bytes umgeordnet werden sollen.
Das
Erste Bild ist hier... Links befindet sich die Bedienfläche, im
oberen Teil das Histogramm und die dazugehörige Transferfunktion (hier
des Attributs Richtung).
Mit dem Mauswheel wird die Sicht gezoomt, mit gedrücktem rechten oder mimttleren
Knopf wird das Bild verschoben.
Auf der Bedienfläche befinden sich Buttons und Eingabefelder zu allen 5 Hauptkategorien:
BACKGROUND:
Background: Die obere hälfte dient zur Selektion des Angezeigten Attributs (Direktion, Geschwindigkeit, Zusätzliches Attribut 1, Zusätzliches Attribut 2)
Transferfunktionen:
In der unteren hälfte befindet sich die Verwaltung der
Transferfunktionen. Sie lassen sich speichern, laden, verstecken...
Wenn der Histogramm versteck ist, lässt sich die transferfunktion nicht ändern.
TransferNodes:
Im oberen Bereich des Fensters wird der Histogramm angezeigt. Die
Fläche unter ihm stellt die aktuelle Transferfunktion dar. Sie lässt sich leicht mit einigen Clicks verändern, um Aussagekräfige Bilder zu erzeugen.
Erzeugung von neuen Knoten: Mit einem Doppelklick auf die Fläche (nicht Histogramm) wird ein Farbedialog hervorgeufen. Ein neuer Transfernode mit der gewählten Farbe entsteht.
Änderungen an existierenden Knoten: Postion wird drag&drop mit der Maus geändert. Das Farbedialog wird mit einem Doppelklick in den Knoten hervorgrufen.
Löschen von Knoten: Das selektierte Knoten hat blaues Innere. Zum löschen einfach Delete drücken.
Zwei
Beispielbilder der Transferfunktionen (mit Hide histogram
gecheckt).
ARROWPLOTS:
In Arrows befinden sich die Einstellungen für die Pfeilartige Darstellung der Richtung und Stärke der Strömung. Mit length coded wird die Größe der Pfeile
proportional zur Geschwindigkeit der Strömung.
Das Erste Bild stellt einen einfachen Arrowplot dar. Es ist ein 2D Feld von Pfeilen in regulären Abständen, die die Richtung oder auch Geschwindigkeit der Strömung darstellen.
Auf
diesen drei Bildern habe ich lineares und nicht lineares
length-coding verwendet, mit sekundären Pfeilen. Das
zweite und das dritte stellen den Unterschied zwischen Linearlength
Ein- und Abgeschaltet dar.
DYNAMIC PARTICLES:
Dynamic
flow bietet einen
einfachen Particle system zur Veranschaulichung der Strömung.
Dabei wird eine große Menge von Particles auf Zufälligen Positionen
erzeugt und ihre Bewegung in der Strömung simuliert. Bei statischer Strömung
ist diese Veranschauichung bestimmt nicht realitätstreu. Bei
zeitabhängiger Strömung entstehen aber bei höheren Geschwindigkeiten der
Wiedergabe Verschiebungen, die noch zu größeren Fehlern führen.
Trotzdem können die Partikel bei richtigen Einstellung gute visuelle
Ergebnisse bringen. Dabei lässt sich ihre Länge, Anzahl, Helligkeit
(für additives blending), Lebenserwartung, Grad der RK-Integration
u.a. einstellen. Apply startet dann ein neues Particlesystem
mit eigegebenen Attributen.
Dieses
Bild entstand bei etwa 2 fps. Aber es lohnte sich, das Resultat ist
der Vorlage sehr treu.
STREAMLINES:
Streamlines werden im Gegenzug zu Partikeln auf Distanz zu bereits existierenden Linien geprüft. So wird verhindert, dass zu dichte Konzentrationen entstehen. Diese Abstände werden durch dsep und dtest definiert. Dsep wird bei der Erzeugung vin neuen Linien benutzt, dtest beim Verlängern der Linien.
In
Stramlines lassen sich mit Basiseinstellungen schnell ungenaue
Streamlines erzeugen. Hier zum Vergleich herkömliche Streamlines mit
Einheitslänge der Segmente. Das dt wurde absichtlich niedrig gewählt.
Mit
dichteren Werten von dsep und dtest entstehen ganz genaue Bilder.
Hierfür eignen sich höhere dt Werte und nicht einheitliche längen der
Sengente am besten.
Das
Pulsieren der Streamlines erzeugt den Effekt der Bewegung,
besonders bei ganz dichten Streamlines.
Screenshots
Einige
der Bilder fürs VisContest, die ich nicht so gut wie das abgesante
Bild waren.
Mehr Dynamic particles
Author: Martin Ilcik, 0225704, iso.sk at gmx punkt net