VisualizationLibrary
VisualizationLibrary copied to clipboard
Volume Rendering Solidification Example
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
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