Stagbeetle Raycasting

Min/Max Octree Volume Raycasting

Description

Data structure for accelerating volume raycasting. Recursive generated min/max octree keeping track of all intersected nodes. Exact intersection points between adjacent cells are registered. The Beetle dataset is taken from TU Wien and has a resolution of 832x832x494 at 8 bit.

Technical Details

Volume Raycasting
Min/Max Octree
Empy Space Skipping
Shader
C++
GLSL
OpenSceneGraph
Gradient Estimation
Central Differences

Min/Max Octree Volume Raycasting

Depending on the transfer function the amount of data, that is visible of a volume dataset, may be low. In this case the renderer has to perform a lot of work by only skipping voxels that are completely transparent. Furthermore all rays have to pass through the whole volume and will never accumulate to full opacity. Early ray termination has no effect in this situation. Empty space skipping (ESP) is an effective solution to this problem. It delivers information to the renderer that can be used to skip regions of the volume that do not contain meaningful data and thus accelerates the rendering.

Datastructures for ESP

In order to perform ESP an additional data structure must be introduced, that subdivides the volume into discrete bricks and encodes the minimal and the maximal occurring amplitude within that block. Different data structures can be used for this purpose; one of them is an octree. In this very context such a data structure is called min/max octree, since each cell contains in addition to the spatial resolution and position also statistical information on the intensity values inside each cell. The octree is generated recursively. The volume is split into eight equally sized child cells. Subsequently the minimal and maximal intensity values inside each cell are determined by sampling all voxels in the cells. If these values are beyond a certain threshold, the cell is again subdivided into eight blocks, as long as a maximal tree depth is reached, or if a given cell does not pass the threshold test.

During rendering this data structure can be queried and the sampling distance inside the ray traversal loop can be adjusted adaptively. When a ray enters a cell, it can query the data structure for the min/max values of that cell. If these values are visible according to the transfer function, the sampling of the ray is continued regularly. However when the values are not visible, the position of the box does not need to be sampled. Thus it can be skipped and the position of the ray can be advanced up to the exit intersection point of the current box. Based on this exit point, the next cell can be determined which is again checked for its min/max values. This process is continued until the ray reaches the end of the volume or the ray accumulates to full opacity.