Difference between revisions of "2010 NAMIC Project week: Viewer Manager Factory"

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 corpu…')
 
 
(3 intermediate revisions by 2 users not shown)
Line 8: Line 8:
  
 
==Key Investigators==
 
==Key Investigators==
* BWH: Andriy Fedorov
+
* Alex Yarmarkovich, Kilian, Steve, Nicole, JC, Julien
* NCI: Yanling Liu
 
* Isomics: Alex Yarmarkovich
 
  
 
<div style="margin: 20px;">
 
<div style="margin: 20px;">
Line 16: Line 14:
  
 
<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.
+
Create a pluggable structure for managing MRML<-->VTK Rendering and Widget interactions in the context of Slicer4. This include mapping MRML annotation nodes to and from vtkWidgets, mapping vtkMRMLModelNode and hierarchies to vtkActors/vtkMappers.
  
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.
+
Others:
 +
* Fidicials (all annotations)
 +
* ROIs
 +
* VolumeRendering
 +
* Module-specific rendering (should be possible for loadable module to register a class that maps MRML nodes to-from elements in the vtkRenderWindow
  
 
</div>
 
</div>
Line 25: Line 27:
  
 
<h3>Approach, Plan</h3>
 
<h3>Approach, Plan</h3>
 +
Create a vtkSlicerManagerFactory and vtkSlicerAbstractManager.  The vtkSlicerAbstractManager is parameterized by a vtkRenderWindow and is subclassed for each purpose.  The vtkSlicerManagerFactory holds a registry of manager types so that when a new 3D Viewer is create, a set of managers is associated with the viewer.
  
This is where we start ...
+
Loadable modules should be able to access to ManagerFactory and register custom manager types to handle their custom nodes.
<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
 
</pre>
 
 
 
  
 
</div>
 
</div>
Line 51: Line 37:
 
<h3>Progress</h3>
 
<h3>Progress</h3>
  
Complete success of this project is near!
+
* created architecture and coded initial implementation of new vtkMRMLDisplayableManager library including
 +
** vtkMRMLDisplayableManagerFactory class
 +
** vtkMRMLAbstractDisplayableManager class
 +
** vtkMRMLModelDisplayableManager class
  
 
</div>
 
</div>
Line 67: Line 56:
 
##Extension -- commandline
 
##Extension -- commandline
 
##Extension -- loadable
 
##Extension -- loadable
#Other (Please specify)
+
#Other (Please specify) YES: Slicer4 base code.
  
 
==References==
 
==References==
  
 
</div>
 
</div>

Latest revision as of 03:38, 25 June 2010

Home < 2010 NAMIC Project week: Viewer Manager Factory


Key Investigators

  • Alex Yarmarkovich, Kilian, Steve, Nicole, JC, Julien

Objective

Create a pluggable structure for managing MRML<-->VTK Rendering and Widget interactions in the context of Slicer4. This include mapping MRML annotation nodes to and from vtkWidgets, mapping vtkMRMLModelNode and hierarchies to vtkActors/vtkMappers.

Others:

  • Fidicials (all annotations)
  • ROIs
  • VolumeRendering
  • Module-specific rendering (should be possible for loadable module to register a class that maps MRML nodes to-from elements in the vtkRenderWindow

Approach, Plan

Create a vtkSlicerManagerFactory and vtkSlicerAbstractManager. The vtkSlicerAbstractManager is parameterized by a vtkRenderWindow and is subclassed for each purpose. The vtkSlicerManagerFactory holds a registry of manager types so that when a new 3D Viewer is create, a set of managers is associated with the viewer.

Loadable modules should be able to access to ManagerFactory and register custom manager types to handle their custom nodes.

Progress

  • created architecture and coded initial implementation of new vtkMRMLDisplayableManager library including
    • vtkMRMLDisplayableManagerFactory class
    • vtkMRMLAbstractDisplayableManager class
    • vtkMRMLModelDisplayableManager class

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)

  1. ITK Module
  2. Slicer Module
    1. Built-in
    2. Extension -- commandline
    3. Extension -- loadable
  3. Other (Please specify) YES: Slicer4 base code.

References