Bruckner und Seemann Part 1 - Part 2
 

  • Implements VTK's volume mapper API and therefore can be used
    instead of vtkVolumeTextureMapper and vtkVolumeRayCastMapper
  • Simple shear-warp algorithm without acceleration data structures
    (low memory footprint)
  • Fast shear-warp algorithm using runlength encoding
    (requires recomputation of the runlength encoding when voxel classification
    is changed)
  • Fast classification shear-warp algorithm
    (uses a min-max octree and a summed area table to enable interactive
    classification)
  • Optimzed versions of the simple, runlength-encoding and
    fast classification algorithms for nearest neighbour and
    linear interpolation
  • Alpha compositing, Maximum Intensity Projection (MIP) and isosurface
    rendering
  • Optimized acceleration datastructures for fast isosurface rendering
  • Shading, Color transfer function, scalar opacity transfer function and
    gradient opacity transfer function with VTK semantics
  • Application of arbitrary clipping planes through the standard VTK
    interface (transparent and MIP clipping modes)
  • Special algorithm for correct intermixing of polygonal geometry with
    volume rendering possible through
  • Auto-adjustment of sample distances based on rendering speed

The listed features have been implemented in a class called
vtkVolumeShearWarpMapper, a subclass of vtkVolumeMapper, to smoothly
integrate in VTK's object model.

The actual algorithms have been implemented as templated functions to
support multiply data types
(although VTK currently only supports
unsigned char and unsigned short data types for volume rendering, but
this might change in future versions).

There is always one version of each algorithm optimized for nearest
neighbour interpolation and one for linear interpolation.

- Simple algorithm which does not use acceleration data structures
(apart from the runlength-encoded intermediate image for early
ray termination) and therefore has a low memory footprint

CompositeIntermediateNearestSimple
CompositeIntermediateLinearSimple

- Fast algorithm which uses a runlength-encoded volume for each principal
axes to skip transparent voxels (has to be recomputed if the
classification function changes)

CompositeIntermediateNearestRLE
CompositeIntermediateLinearRLE

- Fast classification algorithms which uses a min-max octree and a summed
area table
to skip transparent voxels for interactive classification

CompositeIntermediateNearestUnclassified
CompositeIntermediateLinearUnclassified

Acceleration data structues (runlength-encoded intermediate image,
runlength-encoded volume, min-max octree, summed area table) are
implemented as templated classes.

All other functions (such as the factorization of the view matrix) have
been implemented as methods of the vtkVolumeShearWarpMapper class.

To compile VTK with the shear-warp volume mapper please follow these steps:

  1. Download the VTK source from http://www.kitware.com. The code has
    been verfied to work with version 4.0 as well as nightly sources
    up to the current date (23-01-2003).
  2. Copy the following files to the ./Rendering subdirectory:
    • vtkVolumeShearWarpMapper.cxx
    • vtkVolumeShearWarpMapper.h
    • vtkOpenGLVolumeShearWarpMapper.cxx
    • vtkOpenGLVolumeShearWarpMapper.h
  3. If you use version 4.0 or a nightly release up to the current date
    (23-01-2003) replace the following files in the ./Rendering
    subdirectory ( Later versions of VTK might include changes in these files, so
    compare them and include the changes in the new files.):
    • vtkGraphicsFactory.cxx
    • CMakeLists.txt
  4. Follow the VTK documentation on how to build VTK for your system.

dataset: skull
feature:
1 clipping plane
alpha compositing
dataset: skull
feature:
2 clipping planes
alpha compositing

dataset: engine
feature: 2 clipping planes
alpha compositing

dataset: skull
feature: slice projected on clipping plane
alpha compositing
dataset: skull
feature: slice projected on clipping plane, crosshair allows picking, see coordinates (x, y, z) and intensity in left lower image corner
alpha compositing

dataset: engine
feature: clipping plane with mip clipping mode
left: mip
right: isosurface

dataset: head
feature: clipping plane with mip clipping mode
upper: isosurface
lower: mip

dataset: head
feature: hybrid volume rendering (shear warp intermixed with geometry)
alpha compositing

dataset: head
feature: hybrid volume rendering (shear warp intermixed with geometry)
alpha compositing

dataset: head
feature:shear warp not intermixed with geometry
alpha compositing

dataset: head
feature: hybrid volume rendering (shear warp intermixed with geometry)
alpha compositing

How to add a clipping plane:

1. Add a plane actor
2a. Add plane actor to skull actor

2b.

3a. Add plane actor to viewport

3b.

4a. Use plane actor to clip volumes.

  • left mouse button: view coordinates and intensity
4b.
  • middle mouse button in center region: translation along the clipping plane normal
  • middle mouse button in border region: rotation around the centered axis parallel to the respective border.

 

To select transparent or mip clipping mode use the advanced property "clippingMode". Geometry intersection can be turned on / off using the expert property "intermixIntersectingGeometry".