Depth-Dependent Halos

Martin Mautner, Andreas Winkler

DTI

This project is an application for the visualization of 3D line data. It is an implementation of the algorithms presented in Depth-Dependent Halos: Illustrative Rendering of Dense Line Data by Everts et al.

The goal of this project is to provide a method for illustrative black and white rendering of dense line data, with emphasis on line bundles. The application runs at interactive framerates with dynamic camera angles and variable parameters. Additional depth cueing methods aim to improve the visibility of spatial relations and distances within the scene.

Links

Usage

The GUI of the application consists of a 3D window and a number of controls.
Via the File->Load command in the menu bar, a line data set in TrackVis format can be openened.
The camera is controlled via the mouse. The FPS counter on the right side shows the current framerate.

Camera Controls

Rotation: Hold the left button + drag

Zoom in/out: Hold the right button + drag up/down or use the Mousewheel

Move: Hold the middle button + drag

Parameter Sliders

Thickness: adjusts the thickness of the black lines

Halo width: adjusts the width of the white halos shown at the border of each black line

Stripth depths: adjusts the depth scaling of the halos corresponding to the d_max value from the paper. Lower values will move the halos to the front, higher values move halos to the back.

Depth cueing: adjust the magnitude of the additional depth cueing effect. Higher values will decrease the line thickness for further away lines.

Debug Controls

Wireframe on/off: renders lines in wireframe mode

Filtering: pressing 'f' will toggle filtering on/off. With filtering enabled, only a subset of the data is displayed which makes it easier to look at single lines.

Configuration

In a supplied Settings.ini file, MSAA, Sample Shading and Anisotropic Filtering can be adjusted. Enabling Sample Shading and increasing the MSAA value improves the visual quality (with a large impact on performance).

Features

The following features of the original paper are implemented in this project:

Implementation

The application uses Qt for the GUI and OpenGL for rendering (at least OpenGL 4 is required). The implementation follows the descriptions in the paper:

Our implementation is slightly different than the original in that it works in view space. While Everts et al. apply the depth displacment of the halos directly in screen space, we opted to perform this step in view space, since the depth values are non-linear in screen space. This means that the method of Everts et al. only works correctly when the camera is at a fixed distance to the data points. By moving this computation to view space, our method does not suffer from this limitation.

Data Sets

The lines that are visualised are fibre tracks extracted (using TrackVis) from diffusion tensor MRI datasets provided by OpenfMRI.