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

From NAMIC Wiki
Jump to: navigation, search
 
(10 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
<gallery>
 
<gallery>
 
Image:PW-Winter2017.png|link=2017_Winter_Project_Week#Projects|[[2017_Winter_Project_Week#Projects|Projects List]]
 
Image:PW-Winter2017.png|link=2017_Winter_Project_Week#Projects|[[2017_Winter_Project_Week#Projects|Projects List]]
<!-- Use the "Upload file" link on the left and then add a line to this list like "File:MyAlgorithmScreenshot.png" -->
+
</gallery>
 +
 
 +
==Previous works==
 +
<gallery>
 +
File:volumetricMeshSlicer3.png | FEMesh in Slicer 3
 +
File:CleaverExtension.jpeg | Cleaver Extensio
 +
</gallery>
 +
 
 +
==Results==
 +
<gallery>
 +
File:Models_VolumetricMesh3.png | Volumetric Mesh
 +
File:Models_VolumetricMesh1.gif | Volumetric Mesh (gif)
 +
File:Models_VolumetricMesh2.gif | Models module display widget (gif)
 
</gallery>
 
</gallery>
  
Line 9: Line 21:
 
* Alexis Girault (Kitware, Inc.)
 
* Alexis Girault (Kitware, Inc.)
 
* Curtis Lisle (KnowledgeVis, LLC)
 
* Curtis Lisle (KnowledgeVis, LLC)
* Steve Piper (Isomics, Inc.)
+
* Steve Pieper (Isomics, Inc.)
  
 
==Project Description==
 
==Project Description==
 
{| class="wikitable"
 
{| class="wikitable"
! style="text-align: left; width:27%" |  Objective
+
! style="text-align: left; width:20%" |  Objective
! style="text-align: left; width:27%" |  Approach and Plan
+
! style="text-align: left; width:20%" |  Approach and Plan
! style="text-align: left; width:27%" |  Progress and Next Steps
+
! style="text-align: left; width:20%" |  Progress/Results
 +
! style="text-align: left; width:20%" |  Next steps/Future work
 
|- style="vertical-align:top;"
 
|- style="vertical-align:top;"
 
|
 
|
 
<!-- Objective bullet points -->
 
<!-- Objective bullet points -->
* [TOP PRIORITY] Being able to visualize, load and save volumetric meshes  
+
From top priority to possible future work:
* [FUTURE WORK] Being able to create volumetric meshes from label maps (or segmentation?) and possibly edit them
+
* 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
 
|
 
|
 
<!-- 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 -->
*
+
* 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 magnitude of the current values.
 +
* Threshold displayed mesh by scalar values.
 +
* Display information about the model type (surface or volumetric) for the user to be able to distinct it in the module widget.
 +
* WIP branch on github: https://github.com/Slicer/Slicer/compare/master...agirault:volumetric-mesh-support
 +
|
 +
<!-- Next steps/Future work-->
 +
* 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)
 +
* 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).
 
|}
 
|}
  

Latest revision as of 15:36, 16 January 2017

Home < 2017 Winter Project Week < Support for volumetric meshes

Previous works

Results

Key Investigators

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

Project Description

Objective Approach and Plan Progress/Results Next steps/Future work

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 magnitude of the current values.
  • Threshold displayed mesh by scalar values.
  • Display information about the model type (surface or volumetric) for the user to be able to distinct it in the module widget.
  • WIP branch on github: https://github.com/Slicer/Slicer/compare/master...agirault:volumetric-mesh-support
  • 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)
  • 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