Edit this page

NA-MIC Project Weeks

Back to Projects List

MarkupConstraints Slicer Module

Key Investigators


Project Description

MarkupConstraints is a Slicer module intended for Slicer extension developers to constrain and synchronize markups and control points of different nodes.

The module has been developed to support Q3DCExtension, however I intend to expand it further for reuse in other interactive tools.


  1. Robust constraints between control points in different vtkMRMLMarkupNode instances
    • Support for constraining points between for example a line and fiducial markup is very limited
  2. Detect dependency cycles and provide meaningful error messages
    • Slicer freezes indefinitely when updating constraints with cycles
  3. Robust constraints from control points to other node types
    • Project a point to the surface of a model
  4. Support saving/loading a markup node or MRML scene while preserving constraints
  5. Determine the best mode of distribution and publish
    • Likely will be published on the Extension Index in “Developer Tools”
  6. Create a simple interactive UI for debugging/testing purposes
    • Should allow viewing or editing existing constraints in the scene


Thanks to Kyle Sunderland (PerkLab) for his advice and inspiration!

Next Steps


Projection and Distance constraints Chain of distance constraints Constraint Demo

Background and References

Source code is hosted in SlicerMarkupConstraints.