Project 4: Direct Volume Rendering

Ryan Miller - millerrv@purdue.edu

Task 1 - Salient isovalues (salient_cfd.py and salient_medical.py)

The anatomical isosurfaces were borrowed from the last project (CT head scan), but this task also illustrated computational fluid dynamics (CFD). I tried to highlight properties of the vortex breakdown, such as the recirculation bubbles present on each side of the delta wing aircraft.

In addition to using the "Isovalue" slider to reveal different surfaces, the user can switch the "Transparency" slider from 0 to 1 to enable pre-set opacities and reveal each of the different surfaces (shown in the last two images).



Task 2 - Transfer function design (dvr-cfd.py and dvr-medical.py)

This task introduced the topic of volume rendering, where a transfer function of color and opacity is used to directly render an image, without an underlying geometry. Choosing the appropriate values for the transfer function can be difficult.

The color transfer function was borrowed from the last task, but the opacity function had to be modified. I use a vtkPiecewiseFunction() and slowly build up the opacity with each layer. I used a guess-and-check strategy, essentially seeing what looked best. This proved to be a time-consuming process, and without the provided reference, probably impossible.

I also experimented with different rendering strategies, using the trilinear rendering described in the handout, along with a small sampling distance -- 0.5 seemed to be a good balance between performance and visualization quality.



Task 3 - Volume rendering vs. isosurfacing

After fixing the camera elevation and azimuth, I combined the isosurface and volume rendering into a single image to make comparison easier. For the head CT data set, I noticed that volume rendering produced a much more defined skull and teeth, compared to the transparent layers on the isosurface, which obscured and hid subtle indentations in the bone.

I also noticed the volume rendered head looked more lifelike and less "computer-generated" than the isosurface visualization. This is likely because volume rendering can reproduce the inaccuracy of imaging techniques (such as the CT scan) and appear fuzzier in areas that are less defined.

For the CFD data set, the isosurface model more easily highlights the outer surface of the data, while the volume rendered version leaves this fuzzy as the data points were less exact. Within the columns, specifically surrounding the recirculation bubbles, however, the volume rendered visualization offers a superior view of the finely rippled texture associated with the data. Again, the isosurface visualization slightly obscured this underlying structure due to the semi-transparent layers. Unfortunately, when zoomed in, as shown below, the quality of the visualization degrades and the true fuzziness of the volume rendering technique becomes clear.





Task 4 - Multidimensional transfer functions (BONUS)

TODO -- Will be turned in separately by April 7.