Volume Rendering

Allgemeines

Wenn man das Programm startet, sieht man auf der linken Seite das Ausgabe Fenster und auf der rechten das Steuer-Panel. Jenes gliedert sich in "General" und in "Rendering". Beenden kann man das Programm mit dem Exit Button, welcher sich auf der "General" Seite befindet. Hat man eine Transfer Funktion nicht gespeichert, so wird man beim Beenden gefragt, ob man diese speichern will. Entscheidet man sich für "ja", so öffnet sich ein Speichern-Dialog.

Auf der "General" Seite kann man einen Datensatz laden, indem man "Open" drückt. Es öffnet sich ein Dialog, wo man *.dat Dateien auswählen kann.

Danach wird der Datensatz geladen (dies kann mitunter ein bisschen länger dauern!). Neben dem "Open" Button werden die Frames per Second angezeigt. Weiters ist hier auch die Funktionalität zum Bearbeiten, Öffnen und Speichern von Transfer Funktionen vorhanden.

Die Art der Klassifikation lässt sich hier auch einstellen. Diese haben aber nur eine Wirkung, wenn man den Datensatz mittels Slices oder 3d Textur darstellt, denn beim Raycasting ist das Compositing im Shader implementiert! "Pre-classification" bedeutet, dass der Volums Datensatz mittels der aktuellen Transfer Funktion auf Farben abgebildet wird und eine dann je nach Render-Modus Slices oder eine 3d Textur erzeugt werden/wird. "None" bedeutet, dass man keine Transfer Funktion verwendet, sondern die Dichtewerte des Volums Datensatzes als Intensität gerendert werden. Wählt man "Shaders" aus, so werden GLSL Shader verwendet und man kann zusätzlich noch den Typ des Compositing auswählen (ob der Gradient verwendet werden soll, oder nicht). Weiters gibt es 4 verschiedene Blend Modi, welche auch keine Wirkung beim Raycasting haben.

Als letztes lässt sich die Kamera einstellen. Man kann den Datensatz von links/rechts/oben/unten/vorne/hinten betrachten und nach vorne und hinten schieben mittels "Forward" und "Backward". Will man den Datensatz von allen Richtungen betrachten, so kann man ihn auch frei rotieren lassen um die jeweiligen Koordinaten Achsen.

Rendering

Auf der zweiten Seite des Steuer-Panels lassen sich die verschieden Render Modi auswählen. Der erste Modus ist Slices. Hier wird der Datensatz mittels 2d Texturen für jede Koordinaten Achse gerendert. Die Anzahl der Texturen ist von der Dimension des Datensatzes abhängig, weswegen man  nicht die Anzahl frei einstellen kann. Weiters kann man alle Slices oder ein spezielles rendern. Will man ein Spezielles darstellen, so kann man dieses mit den Schiebereglern auswählen. Es ist allerdings zu beachten, dass abhängig von der Blickrichtung das Slice der gerade betrachteten Koordinatenachse gerendert wird. Folglich bringt es nichts, ein spezielles Slice auf der z-Achse zu wählen, wenn man von links auf den Datensatz schaut, denn hier schaut man entlang der x-Achse und somit wird das ausgewählte Slice der x-Achse gerendert.

Der zweite Modus ist Slice rendering mittels einer 3d Textur. Hier kann man auch wie im letzten Abschnitt bereits erwähnt, alle Slices oder ein spezielles zeichnen. Hier lässt sich jedoch die Anzahl der Slices einstellen,  mindestens eines und maximal 1000 (da benötigt man schon einen guten Computer!).

Der letzte Modus ist Raycasting. Hier lässt sich die Schrittweite dz und die maximale Intensität mi einstellen. Die maximale Intensität bestimmt, wann ein Ray terminiert wird, nämlich, wenn er diese erreicht. Weiters kann man Adaptive step size aktivieren, wodurch mehrere Schritte gemacht werden, wenn ein Ray auf eine Intensität ungleich 0 auftrifft. Beleuchtung kann auch aktiviert werden.

Transfer Funktion

Drückt man bei Transfer function auf Edit, so öffnet sich der Transfer Funktion Editor. Hier können Punkte der drei Grundfarben RGB hinzugefügt und entfernt werden. Verschieben lassen sich die Punkte, indem man mit dem Cursor über sie drüber fährt, woraufhin sich der Cursor zu einer Hand ändert, die linke Maustaste gedrückt hält und dann die Maus bewegt. Lässt man die linke Maustaste los, so wird der Farbpunkt aktualisiert. Schließt man den Editor, so wird die Transfer Funktion auf den Datensatz angewendet. Im Hintergrund wird das Histogramm des Datensatzes dargestellt. Weiters kann man die Skalierung der Dichte-Achse (die x-Achse) und des Histogramms einstellen.

Screenshots

Die Bilder in der ersten Spalte wurden mittels Raycasting erzeugt, die in den folgenden Spalten mittels Slicing.

 

 
 

Downloads

Download Source code.