Difference between revisions of "2017 Winter Project Week/Support for volumetric meshes"

From NAMIC Wiki
Jump to: navigation, search
m (typo)
Line 27: Line 27:
 
|
 
|
 
<!-- Approach and Plan bullet points -->
 
<!-- Approach and Plan bullet points -->
* Initial discussions needed with Curtis and Steve based on existing work: IA FEMesh from Slicer 3, BodyCentricCubicMesh and MeshCompression modules, and the CleaverExtension.
+
* Initial discussions needed with Curtis and Steve based on existing work: IA FEMesh from Slicer 3, BodyCentricCubicMesh and MeshCompression modules, and the CleaverExtension. Some parts of the IA FEMesh module were prototyped in early Slicer 4 (Curtis).
 
* Probably investigate the creation of a MRML node similar to Models (possibly create a hierarchy between both?) that would wrap a vtkUnstructuredGrid in order to visualize, load and save the meshes.
 
* Probably investigate the creation of a MRML node similar to Models (possibly create a hierarchy between both?) that would wrap a vtkUnstructuredGrid in order to visualize, load and save the meshes.
 
* Investigate best way to adapt previous Slicer-based volumetric work that allowed for creation and edition (bullet point 1) to work with the new architecture put in place within Slicer 4 (bullet point 2).
 
* Investigate best way to adapt previous Slicer-based volumetric work that allowed for creation and edition (bullet point 1) to work with the new architecture put in place within Slicer 4 (bullet point 2).
 
|
 
|
<!-- Progress and Next steps bullet points (fill out at the end of project week) -->
+
<!-- Progress/Results -->
* Some parts of the IA FEMesh module were prototyped in early Slicer 4 (Curtis).
+
* Can Read & Write Unstructured Grid mesh (vtk or vtu)
 +
* Fix bug in vtk reader to retrieve all point data and cell data.
 +
* vtkMRMLModelNode now holds a "mesh", either a polydata (surface mesh) or an unstructured grid (volumetric mesh)
 +
* vtkMRMLDisplayNode had a major clean up to consolidate scalar range options (scalarRangeFlag and autoScalarRange). Other clean up made to retrieve the look-up table for specific nodes only holding color transfer functions (ex: vtkMRMLProceduralColorNode).
 +
* DisplayableManager updated for 3D to allow cutting through volumetric mesh.
 +
* SliceDisplableManager updated for 2D Slices to be able to use same display properties than 3D view.
 +
* qMRMLModelDisplayNodeWidget updated to simplify scalar range mode selection, adapt number of decimals and single step for manual selection of the range based on the current values.
 +
* Progress made to threshold displayed mesh by scalar values.
 +
|
 +
<!-- Next steps/Future work-->
 +
* Finalize threshold display option.
 +
* Clean up and consolidate qSlicerModelsModuleWidget (display properties, representations, wireframe, clipping... just move options around to make it more usable)
 +
* Add clipping option to smoothen the cut (using vtkClipDataSet vs vtkExtractGeometry)
 +
* Add support to pass through CLI (SlicerCLILogic)
 +
* Display information about the model type (surface or volumetric) for the user to be able to distinct it in the module widget.
 +
* Test with more cases, like fiber bundles etc... (changes could have a lot of impacts because there were changes to vtkMRMLDisplayNode and vtkMRMLModelNode. Make sure the updated API stays backward compatible).
 
|}
 
|}
  

Revision as of 15:43, 13 January 2017

Home < 2017 Winter Project Week < Support for volumetric meshes

Key Investigators

  • Alexis Girault (Kitware, Inc.)
  • Curtis Lisle (KnowledgeVis, LLC)
  • Steve Pieper (Isomics, Inc.)

Project Description

Objective Approach and Plan Progress and Next Steps

From top priority to possible future work:

  • Being able to visualize, load and save volumetric meshes
  • Improving clipped visualization of models (surface models or volumetric meshes) and facilitate the display of the point data (active scalars).
  • Being able to create volumetric meshes from label maps (or segmentation?) and possibly edit them
  • Initial discussions needed with Curtis and Steve based on existing work: IA FEMesh from Slicer 3, BodyCentricCubicMesh and MeshCompression modules, and the CleaverExtension. Some parts of the IA FEMesh module were prototyped in early Slicer 4 (Curtis).
  • Probably investigate the creation of a MRML node similar to Models (possibly create a hierarchy between both?) that would wrap a vtkUnstructuredGrid in order to visualize, load and save the meshes.
  • Investigate best way to adapt previous Slicer-based volumetric work that allowed for creation and edition (bullet point 1) to work with the new architecture put in place within Slicer 4 (bullet point 2).
  • Can Read & Write Unstructured Grid mesh (vtk or vtu)
  • Fix bug in vtk reader to retrieve all point data and cell data.
  • vtkMRMLModelNode now holds a "mesh", either a polydata (surface mesh) or an unstructured grid (volumetric mesh)
  • vtkMRMLDisplayNode had a major clean up to consolidate scalar range options (scalarRangeFlag and autoScalarRange). Other clean up made to retrieve the look-up table for specific nodes only holding color transfer functions (ex: vtkMRMLProceduralColorNode).
  • DisplayableManager updated for 3D to allow cutting through volumetric mesh.
  • SliceDisplableManager updated for 2D Slices to be able to use same display properties than 3D view.
  • qMRMLModelDisplayNodeWidget updated to simplify scalar range mode selection, adapt number of decimals and single step for manual selection of the range based on the current values.
  • Progress made to threshold displayed mesh by scalar values.
  • Finalize threshold display option.
  • Clean up and consolidate qSlicerModelsModuleWidget (display properties, representations, wireframe, clipping... just move options around to make it more usable)
  • Add clipping option to smoothen the cut (using vtkClipDataSet vs vtkExtractGeometry)
  • Add support to pass through CLI (SlicerCLILogic)
  • Display information about the model type (surface or volumetric) for the user to be able to distinct it in the module widget.
  • Test with more cases, like fiber bundles etc... (changes could have a lot of impacts because there were changes to vtkMRMLDisplayNode and vtkMRMLModelNode. Make sure the updated API stays backward compatible).

Background and References