Edit this page

NA-MIC Project Weeks

Back to Projects List

New Interaction Widget for Transforms/Markups

Key Investigators

Presenter location: In-person

Project Description

This project aims to implement a new interaction handle widget that can be used to modify linear transform nodes. This implementation will be based on the existing interaction handle pipeline in the Markups module, but with improvements to functionality and appearance. Both the transforms and markups interaction widgets will be derived from the same base class.

The center of rotation for the transform node can be changed by holding ALT and clicking+dragging on one of the translation handles. The center of rotation can also be change in python using the “vtkMRMLTransformNode::SetCenterOfTransformation” function.

Transforms can also be scaled uniformly by holding ALT and clicking+dragging on one of the scale handles.

Objective

  1. Integration of new interaction widget into 3D Slicer.

Approach and Plan

  1. Provide an installer for precompiled version of Slicer that includes the new interaction widget.
  2. Update based on feedback gathered from the project week.
  3. Integrate new widget into the Slicer core.

Progress and Next Steps

  1. Created installer for a version of 3D Slicer containing the new widget. (See link in “Background and References” section).
  2. Created PR to integrate changes into 3D Slicer.
  3. Add options to enable/disable visualization of specific axes.
  4. Add uniform scaling option.
  5. Improved visualization based on feedback.
  6. Integrated into latest preview release!

Next steps

  1. Use a simplified widget visualization when the user is not interacting with it.
  2. Add a shortcut to allow users to cancel the transformation.
  3. Add shortcut to enable snapping to angles.

Illustrations

Existing widgets

Transforms Markups
image image

New widget

Transforms Markups
image image

Background and References