Difference between revisions of "2010 NAMIC Project week: Programmatic use of Volume Rendering module"

From NAMIC Wiki
Jump to: navigation, search
 
Line 53: Line 53:
 
==Delivery Mechanism==
 
==Delivery Mechanism==
  
The following Tcl code provides the guidelines for implementation:
+
Tcl and Python examples are available: [http://viewvc.slicer.org/viewcvs.cgi/trunk/ProgrammaticVolumeRendering/?root=NAMICSandBox ProgrammaticVolumeRendering in SandBox]
 
 
<pre>
 
 
 
# Initialization
 
 
 
set scene $::slicer3::MRMLScene
 
 
 
set scenario [vtkMRMLVolumeRenderingScenarioNode New]
 
set property [vtkMRMLVolumePropertyNode New]
 
set parameters [vtkMRMLVolumeRenderingParametersNode New]
 
 
 
$scene AddNode $property
 
$scene AddNode $parameters
 
 
 
$parameters SetAndObserveVolumeNodeID "vtkMRMLScalarVolumeNode1"
 
$parameters SetAndObserveVolumePropertyNodeID [$property GetID]
 
$scenario SetParametersNodeID [$parameters GetID]
 
 
 
$scene AddNode $scenario
 
 
 
# on/off
 
set vtGUI $::slicer3::VolumeRenderingGUI
 
set vrLogic [$vrGUI GetLogic]
 
 
 
$vrLogic SetVolumeVisibility 0
 
 
 
# initialize opacity mapping
 
 
 
# initialize color mapping
 
 
 
# switch between rendering technique
 
 
 
# detect the available rendering techniques
 
 
 
</pre>
 
  
 
==References==
 
==References==
  
 
</div>
 
</div>

Latest revision as of 12:41, 25 June 2010

Home < 2010 NAMIC Project week: Programmatic use of Volume Rendering module

Key Investigators

  • BWH: Andriy Fedorov, Johannes Schick
  • NCI: Yanling Liu
  • Isomics: Alex Yarmarkovich

Objective

A number of modules in Slicer use volume rendering. However, none of them is using this functionality from Volume Rendering module in Slicer.

The objective of this project is to:

  • provide example code (Tcl and/or C++) that allows to use volume rendering programmatically
  • confirm that all the needed functionality available from volume rendering GUI is available from Tcl/C++ interfaces
  • convert the existing modules that use VTK volume rendering to use the volume rendering module functionality

Questions to study:

  • difference in performance and appearance between rendering label maps and greyscale images
  • GPU/CPU switch while using pure VTK volume rendering

Approach, Plan

We will go through the basic functionality needed to add volume rendering to the code:

  • create volume rendering scene
  • visibility on/off
  • initialization of the opacity and color transfer maps
  • switching between the volume rendering techniques and automatic identification of the techniques available on a given machine

Our hope is that by the end of the week this page will be self-contained for adding volume rendering to any GUI Slicer module.

Progress

Initial code for programmatic use of volume rendering is in the sandbox. Current limitation: opacity and color transfer functions cannot be adjusted programmatically.

Delivery Mechanism

Tcl and Python examples are available: ProgrammaticVolumeRendering in SandBox

References