Einleitung

Bei VoluRen handelt es sich um ein Tool, das im SS 2013 im Zuge der Lehrveranstaltung Visualisierung 2 (186.833) von Matthias Adorjan erstellt wurde. Es ist ein Volumerenderer der 8-Bit RAW-Datens�tze visualisieren kann. Zus�tzlich wurde, wie man am Titel bereits erkennen kann, ein Tiefensch�rfeeffekt implementiert. Bei der Implementierung des Effekts wurde nach den Beschreibungen des Papers Depth of Field Effects for Interactive Direct Volume Rendering von Schott et al. vorgegangen.

Screenshot

Technologien und Implementierung

Das Tool basiert auf DirectX 11 mit HLSL Shader Model 5. Dabei wurde SharpDX als managed DirectX API verwendet und WinForms mit einem MetroUI-Style f�r das Graphical User Interface.

Bei der Implementierung wurde strikt nach den Erkenntnissen des Papers vorgegangen. Der Renderer verwendet f�r die Visualisierung der Volumensdaten einen slice-based Ansatz. Nach dem PreProcessing-Schritt, bei dem Gradienten mit der Central-Difference-Methode berechnet und mit einem 3x3x3 Gauss-Filter gefiltert werden, wird das Volumen in view-aligned Slices geteilt. Daf�r ist es notwendig f�r jeden einzelnen Slice eine Proxygeometrie zu berechnen. Dazu werden die Slices jeweils mit der BoundingBox des Volumens geschnitten. Danach wird von den Schnittpunkten der Mittelwert errechnet und alle Punkte inklusive Mittelwert auf die XY-Plane projiziert. Um nun ein Proxypolygon erzeugen zu k�nnen werden die Schnittpunkte je nach Winkel zum Mittelpunkt sortiert. Schlussendlich werden anhand der sortierten Punktliste die Dreiecke f�r das Polygon erzeugt. Beim Rendern der Slices wird anhand des Iso-Wertes des Voxels ein Lookup auf jeweils vordefinierte Transferfunktionen ausgef�hrt. Auf den so erhaltenen Farbwert wird mithilfe der Gradienten und einer statischen Lichtquelle noch ein diffuses Beleuchtungsmodell angewandt.

Um den Tiefensch�rfeeffekt zu erzielen, werden die Slices beim Rendern vor der Fokusebene in Front-To-Back Reihenfolge und hinter der Fokusebene in Back-To-Front Reihenfolge traversiert. Mithilfe eines Intermediate- (bei Front-To-Back) und eines Eye-Buffers (bei Back-To-Front) wird das Blurring der einzelnen Slices durchgef�hrt. Dabei werden basierend auf den View-Space Zerstreuungskreisen des aktuellen Slices, welche zuvor noch in Texture-Space umgerechnet werden m�ssen, N=4 Samples des vorhergehenden Buffers gemittelt und das Ergebnis in den aktuellen Buffer geschrieben. Bei der Traversierung der Slices wird vor jeder Ebene der aktuelle Buffer mit dem n�chsten geswapt, um ein inkrementelles Blurring zu erm�glichen. Am Ende der Traversierung wird der Intermediate-Buffer mithilfe der Over-Operation auf den Eye-Buffer geblendet und das Ergebnis in den Framebuffer geschrieben.

Screenshot

Das Interface

Das Interface des Tools besteht im Gro�en und Ganzen aus 2 Fenstern. Das Hauptfenster enth�lt das RenderControl und das ControlPanel mithilfe dem der Benutzer verschiedene Parameter des Tiefensch�rfeeffekts anpassen kann:

Zus�tzlich zu den GUI-Elementen gibt es noch eine Mouse-Steuerung mit der die Kamera bewegt und rotiert und das Volumen rotiert werden kann. Liegt der Fokus beim RenderControl (MouseOver) so kann folgenderma�en interagiert werden:

Screenshot

Das zweite Fenster ist ein Auswahlfenster. Zu diesem gelangt man �ber den Load Volume-Button des Hauptfensters. Hier hat der Benutzer die Wahl zwischen 4 mitgelieferten Volumensdatens�tzen, die visualisiert werden k�nnen. W�hlt er einen der 4 aus und best�tigt mit OK, wird der Datensatz im RenderControl des Hauptfensters dargestellt. Mit Cancel kehrt man ohne �nderung zur�ck zum Hauptfenster.

Screenshot

Visualisierungen

Screenshot
Screenshot
Screenshot