Slicer3:Volume Rendering
From NAMIC Wiki
Home < Slicer3:Volume Rendering
Contents
Overview
Archtecture/Design
Test the module
- Copy the following folder from the svn repository http://www.na-mic.org/svn/Slicer3/trunk/Base/GUI/Testing/VolumeRendering to the following path <YourSlicerBuildDir>\lib\Slicer3\Modules\Packages\VolumeRendering.
- Restart Slicer
- Load a MRML-Scene (e. g. tutorial.xml from the Tutorial Dataset)
- Go to the module dropdown and select VolumeRendering
- Select "all" (if you use the tutorial dataset) as the Source Volume and click LoadNode =>The volume rendered Volume should appear.
- Play with the transfer function etc.
- Note: After changing a setting please click on the volume one time to load the new settings
Latest results and limitations
Description
- Loading changing of MRML-Nodes is possible during runtime
- At the moment no removing of MRML-Nodes possible
- Change properties (Shading, Interpolation, mapping)
- Calculate transfer functions automatically
- Performance:
- Interrupting is possible in render window.
- Interrupting somewhere else requires platform dependent coding (q.v. problems)
- Cropping is possible
Screenshots
next Tasks
ideas implemented in prototyp
- Develop different algorithms for labelmap and grayscale volumes -----algorithm for grayscale is missing => new task: presets
- Find Presets, see also at goals
- Try to reduce artefacts in labelmaps by using several RGB points in the mapping function -----done, artefacts still there?
- Implement a possibility to change between different volumes during runtime -----done
- Have a closer look on the final calculation of the renderer-----Problems, when interrupting outside renderWindow
- Detect if video card can use 3d Texture Mapping or not, if not use MIP, -----done, there are two new Buttons to simulate having openGl support or not. standard preset is now MIP (performance issue)
- Add possiblity to change opacity (for labelmaps) -----done, slider
- Include code to make all models invisible(Good for testing) -----done, new button
not yet implemented in prototyp
- Have a closer look on the gradient opacity mapper, when using label maps
- Try clipping
- Add progress functionality
Problems
- Cannot load the following data
- spgr (grayscale): tutorial data set (freezes)-----fixed: problems with automatic mapping
- grayscale (greyscale): brain atlas (freezes)-----fixed:problems with automatic mapping
- seg (LabelMap): abdomen data set (not freezing, seems to render, but unvisible)-----fixed, use char as datatype, but maybe experimenting with tresholds.
- How can rendering be interrupted outside renderWindow
- Do something like vtkRenderWindow::GetEventPending
- Problem, may require platform depending code----->Could propably be fixed with tcl-wrapping
- Experiment with vtkOpenGLVolumeTextureMapper3D, check status more often, debug. add more timers.
Goals
Volume rendering presets :
- MIP (Maximum Intensity Projection)
- CT Bone and vessel
- Use Hounsfield units
- Bone +400->+1000
- Soft tissue +40->+80
- Water 0
- Fat -60->-100
- Lung -400->-600
- Air -1000
- Problem with Vessels: Different contrast mediums?!
- Use Hounsfield units
- T1 MR Air/skin interface
- Label map per-label object rendering
Slicer3 module interface:
- Select from loaded volumes
- Specify preset transfer functions or use KWWidgets tools
Slicer3 internals:
- Correct coordinates including transforms
- Level of detail rendering
- Proper integration with surface rendering
Different Volume Rendering Algorithms
- RayCast
- 2D Texture Mapping
- 3D Texture Mapping
- ...
Wish List
- 2D Transfer functions - may require specialized opengl code integrated with VTK. Talk with Gordon about latest work from Utah.
- use glTexSubImage3D so that incremental changes to the volume can be quickly reflected
- use distance maps (inlcude several components) in rendering