Volume Rendering on the Body-Centered Cubic Grid

We investigate an alternative type of grid that is optimal in terms of storage effiency. The main challenge is to find adaptions of popular volume rendering algorithms that are comparable in speed and quality to the corresponding cc grid method, so we can show that the body-centered grid is of practical use for the scientific visualization community.

Overview

The Body-Centered-Cubic Grid

Direct Volume Rendering

Rendering Methods for BCC

In Volume Visualisation, Cartesian grids are widely used because of their simplicity. But they are not the optimal choice in the aspect of storage efficiency. The optimal sampling grid would be the one which needs minimal number of samples while optimal reconstruction is still possible. But what is the optimal sampling grid?

We can assume that our sampled functions are always isotropic and
bandlimited. The frequency response of such a function are replicated (hyper-)spheres. The relationship
of the spatial and frequency domain is the following: Using less samples
in spacial domain the spheres move closer together in frequency domain.

If the spheres overlap, a 100% reconstruction of the original function
is not possible anymore.

Therefore we can map our question to the well known sphere packing problem: How can you pack as many spheres into a fixed volume while the spheres don't overlap. The problem is not fully solved in all cases, but for regular grids (and this is the case in most volume visualization projects) optimal solutions have already been found. Among the optimal grids are:

- Body-Centered Cubic (BCC) grid
- Hexagonal Close Packing grid

These two grid types need 29.3% less samples than Cartesian grids. We prefer bcc-grids over other optimal grids, because the bcc-grids can be seen as two Cartesian grids where the second grid is translated by 0.5 in all three directions. Another way to get a bcc grid is to apply a shear-and-modulo operation on a cc grid.

Direct volume rendering means that the volume data is rendered "as it is", without an intermediate step like the extraction of isosurfaces. There is no geometry involved. Volume rendering produces semi-transparent, cloud like images. For every viewing ray we must solve the volume rendering integral consisting of absorption and emission terms. It is generally not possible to solve this integral analytically. Basicly, any volume rendering algorithm approximates the rendering integral with Riemann sums. The color and opacity values are accumulated as we move along the ray, yielding a final color value for the pixel. The compositing can be done front-to-back or back-to-front:

Back-to-front:

Out_{i} = In_{i} * (1 - Op_{i})
+ Col_{i} * Op_{i}

In_{i+1} = Out_{i} ...

Front-to-back:

Color: Col = Col + (1 - Op * Col_{i} * Op_{i}

Opacity: Op = Op + (1- Op) * Op _{i}

There are 2 basic types of rendering methods: Image-orderandobject-order algorithms:

Image-order:

We traverse through every image pixel and determine which voxels contribute to this pixel. Advantage: Early ray termination. Example: RaycastingObject-order:

We traverse through each voxel and compute how its "footprint" affects the image pixels. Advantage: Perspective projection, parallelisation easier. Examples: Splatting, projected tetrahedra, texture mappingHybrid methods:

Takes advantage of both approaches. Example: shear warp We implemented different software and hardware rendering methods on the bcc grid. We developed the software raycaster for Praktikum 2. Projected tetrahedra and texture mapping are part of my diploma thesis Hardware Accelerated Volume Rendering on the Body-Centered-Cubic Grid. Please follow the links for detailed information and rendering results:Raycasting - Rendering results can be found here

Texture-Based Volume Rendering - Rendering results can be found here

Projected Tetrahedra - Rendering results can be found here