VisualizationLibrary icon indicating copy to clipboard operation
VisualizationLibrary copied to clipboard

Volume Rendering Solidification Example

Open MicBosi opened this issue 10 years ago • 1 comments

Solidify VL volume rendering capabilities building a VL/wxWidget volume rendering viewer:

  • GDCM/dat file loading
  • Transfer function editing per volume
  • Multiple (non intersecting?) volumes
  • Volume instancing. Each volume with its own clipping settings and transfer function for exploded views
  • View modes: direct rendering, MIP, solid iso surface, transparent iso surface
  • Volume + mesh objects rendering (vol translucent, solid mesh, other options?)
  • Depth peeling rendering for solid objects
  • Picking
  • Depth of Field
  • Fog
  • Various clipping shapes
  • Contours
  • Volume -> Triangle Mesh -> Poly Reduction
  • Take nice pictures

MicBosi avatar Jan 14 '16 15:01 MicBosi

Would be nice to have a pre-made, programmable class supporting multiple rendering techniques.

Single Volume

  • Cropping: clipping away parts of the model based on some function/shape or as VTK does using 2 planes across x/yz/ defining 27 regions that can be switched on/off
  • Clipping on one single infinite plane
  • Blending modes: composite blending, minimum intensity projection, maximum intensity projection, and additive blending.
  • Masking: a separate volume contains the masking info about each voxel: binary=visible/invisible, label=value in mask used to select how the voxel is rendered. The lookup of the label should also support linear interpolation or exact nearest label.
  • Opacity Modulated by Gradient Magnitude: compute gradient of pixel to modulate opacity. Bigger gradient -> higher opacity (based on a pre defined gradient opacity transfer function). This sort of edge detection can be used to de-emphasize homogenous regions.
  • 1D as well as 2D Transfer Functions: example mapping a scalar u and gradient magnitude v to opacity. Allow user to specify how u and v should be calculated.
  • MIP & Local Maximum Intensity Projection
  • Intermixed volume + opaque as well as translucent geometry.
  • Intermix more volumes?

Multi Volume

  • In-core multiple volume rendering
  • Volume instancing, useful for exploded views with each instance having their clipping settings
  • Out-of-core very large volume rendering: this might involve multithreading IO

See also: https://en.wikipedia.org/wiki/Volume_rendering http://www.kitware.com/source/home/post/154

MicBosi avatar Jan 20 '16 14:01 MicBosi