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.


The Body-Centered-Cubic Grid
Direct Volume Rendering
Rendering Methods for BCC

The Body-Centered-Cubic Grid

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:

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

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:


Outi = Ini * (1 - Opi) + Coli * Opi
Ini+1 = Outi ...


Color: Col = Col + (1 - Op * Coli * Opi
Opacity: Op = Op + (1- Op) * Op i

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


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


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

Hybrid methods:

Takes advantage of both approaches. Example: shear warp

Rendering Methods for BCC

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