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

From NAMIC Wiki
Jump to: navigation, search
(Created page with '__NOTOC__ <gallery> Image:PW-MIT2010.png|Projects List Image:genuFAp.jpg|Scatter plot of the original FA data through the genu of the corpus…')
 
 
(7 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
<gallery>
 
<gallery>
 
Image:PW-MIT2010.png|[[2010_Summer_Project_Week#Projects|Projects List]]
 
Image:PW-MIT2010.png|[[2010_Summer_Project_Week#Projects|Projects List]]
Image:genuFAp.jpg|Scatter plot of the original FA data through the genu of the corpus callosum of a normal brain.
 
Image:genuFA.jpg|Regression of FA data; solid line represents the mean and dotted lines the standard deviation.
 
 
</gallery>
 
</gallery>
  
 
==Key Investigators==
 
==Key Investigators==
* BWH: Andriy Fedorov
+
* BWH: Andriy Fedorov, Johannes Schick
 
* NCI: Yanling Liu
 
* NCI: Yanling Liu
 
* Isomics: Alex Yarmarkovich
 
* Isomics: Alex Yarmarkovich
Line 15: Line 13:
  
 
<h3>Objective</h3>
 
<h3>Objective</h3>
A number of modules in Slicer use volume rendering. However, none of them is using this functionality from Volume Rendering module in Slicer.
+
A number of modules in Slicer use volume rendering. However, none of them is using this functionality from [http://wiki.slicer.org/slicerWiki/index.php/Modules:VolumeRendering-Documentation-3.6 Volume Rendering module in Slicer].
  
The objective of this project is to develop a set of guidelines and recommendations for incorporating volume rendering into Slicer GUI modules, and convert some of the existing modules to use this functionality instead of directly accessing VTK to set up volume rendering.
+
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
  
 
</div>
 
</div>
Line 25: Line 30:
 
<h3>Approach, Plan</h3>
 
<h3>Approach, Plan</h3>
  
This is where we start ...
+
We will go through the basic functionality needed to add volume rendering to the code:
<pre>
 
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
+
* create volume rendering scene
</pre>
+
* 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.
  
 
</div>
 
</div>
Line 49: Line 44:
  
 
<h3>Progress</h3>
 
<h3>Progress</h3>
 
+
Initial code for programmatic use of volume rendering is in the sandbox. Current limitation: opacity and color transfer functions cannot be adjusted programmatically.
Complete success of this project is near!
 
  
 
</div>
 
</div>
Line 59: Line 53:
 
==Delivery Mechanism==
 
==Delivery Mechanism==
  
This work will be delivered to the NA-MIC Kit as a (please select the appropriate options by noting YES against them below)
+
Tcl and Python examples are available: [http://viewvc.slicer.org/viewcvs.cgi/trunk/ProgrammaticVolumeRendering/?root=NAMICSandBox ProgrammaticVolumeRendering in SandBox]
 
 
#ITK Module
 
#Slicer Module
 
##Built-in
 
##Extension -- commandline
 
##Extension -- loadable
 
#Other (Please specify)
 
  
 
==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