Back to Projects List
Current slice navigation is based on hotkeys like Shift+drag for moving the 3D cursor, or Ctrl+Alt+drag&drop for rotation of the slice planes when slice intersections are shown. It would be great to have these features available more explicitly that could be used directly with the mouse, avoiding the use of keyboard.
In this project, we want to develop an interactive slice intersections mode to enable users to navigate slices using interaction handles (similar to markups translation/rotation).
Details:
A sketch is shown on the “Illustrations” section below.
More information in this GitHub issue: here
Create base classes to control interaction handles.
Develop the interactive slice intersections mode.
Customize slice interaction handles.
Test it on sample images.
Explore the rendering pipeline for current Markups interaction handles (i.e., MarkupsInteractionPipeline class in vtkSlicerMarkupsWidgetRepresentation).
Move base class and display options to a lower level.
Create new classes vtkMRMLSliceIntersectionInteractionWidget and vtkMRMLSliceIntersectionInteractionRepresentation in DisplayableManager.
Customize handles to control slice intersection in an intuitive manner.
Create new vtkMRMLSliceDisplayNode
Create property in vtkMRMLSliceDisplayNode to control handles visibility mode
Migrate pipelines for generic widget interaction handles from Markups module to new base classes in DisplayableManager (vtkMRMLInteractionWidget and vtkMRMLInteractionWidgetRepresentation).
Improve base interaction classes to allow easy implementation of custom interaction handles.
Implement interaction handles test case for manipulating transform nodes.
BEFORE
AFTER
Create new classes to render interaction handles for interactive slice intersection: vtkMRMLSliceIntersectionInteractionWidget and vtkMRMLSliceIntersectionInteractionRepresentation.
Add new option in ViewersToolbar to select interactive slice intersection mode. This option is only enabled and visible when slice intersection mode is active.
Render interaction handles in slice views and enable interactions.
Modify interactions to update slice intersections. Currently, sliceToRAS transform of the slice node is being updated.
Customize handles for interactive slice intersection.
Test new mode in sample images
Integrate in Slicer. Pull request: https://github.com/Slicer/Slicer/pull/6008
Final video:
https://user-images.githubusercontent.com/10816661/150459600-ba59f51b-b2aa-499d-abcd-3f023809a7ed.mp4