2017 Winter Project Week/Support for volumetric meshes

From NAMIC Wiki
Jump to: navigation, search
Home < 2017 Winter Project Week < Support for volumetric meshes

Previous works


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