From Slicer Wiki
Jump to: navigation, search
Home < Documentation < Nightly < Extensions < CurveMaker

For the stable Slicer documentation, visit the 4.10 page.

Introduction and Acknowledgements

Author: Junichi Tokuda (BWH), Laurent Chauvin (BWH)
Contact: Junichi Tokuda <email></email>
License: Slicer license |- |


This work is supported by NA-MIC, NCIGT, and the Slicer Community. This work is partially supported by NIH R01CA138586 "A New Method For Improved Targeting in Image-Guided Abdominal Interventions" (PI: Nobuhiko Hata), P01-CA67165 "Image Guided Therapy" (PI: Clare M. Tempany)
The module has been developed based on ideas and feedback from the community. We would like to especially thank:

  • Dr. Matthew Jolley, M.D., Fellow in Pediatric Anesthesia / Pediatric Cardiology, Boston Children's Hospital.
  • Dr. Sumit Agrawal, MD, FRCS, Assistant Professor, Department of Otolaryngology, University of Western Ontario.
  • Dr. Wei Wang, Ph.D., Department of Radiology, Brigham and Women's Hospital.
  • Dr. Ron Kikinis, M.D. Department of Radiology, Brigham and Women's Hospital.
  • Dr. Steve Pieper, Ph.D. Isomics, Inc.

Extension Description

CurveMaker is a simple scripted module to generate a 3D curve from a fiducial list. Curves between fiducial points are interpolated by vtkSplineFilter. The curve is dynamically updated as the fiducial list is modified (moved/added/deleted). The module is useful to draw lines in 3D space, or visualize tracked catheters.

Use Cases

  • Draw lines in 3D.
  • Visualization of catheters.
  • Analysis of needle trajectories for image-guided percutaneous interventions
  • Quantitative analysis of curves, including
    • Length
    • Distance from specific points
    • Curvature
CurveMaker GUI and result of 3D curve.

Panels and their use

  • Parameters
    • Source points: The list of fiducial points on the curve
    • Curve model: The model of the curve.
    • Radius: The radius of the curve model.
    • Interpolation: The method to interpolate the fiducial points.
      • None: The points are connected by a straight line.
      • Cardinal Spline: The default method.
      • Hermite Spline: The same interpolation method as the Documentation/Nightly/Modules/Endoscopy module. Useful for visualizing the trajectory of the virtual endoscope.
    • Ring Mode (Added June 1, 2015): Generate a closed-loop. (NOTE: Ring Mode does not support Hermit Spline. Ring Mode "On" is disabled, when Hermit Spline is selected.)
    • Enable: Start updating the curve model based on the curve. While this check box is on, the curve model is automatically updated whenever the parameters are modified.
  • Measurements
    • Length: The length of the current curve is shown in millimeter.



The new features (Length, Distance, and Curvature) are available on nightly builds released on July 28 or later. First, open 3D Slicer:


Open the Slicer Extensions from the icon on the menu bar:


Choose "Curve Maker" module from the list of extensions and click "INSTALL" button.


Once you restart 3D Slicer, the Curve Maker module should show up on the Modules menu (under Informatics->Curve Maker)


Generate a curve from fiducial points

First, create a fiducial list. Click the fiducial button on the menu bar to change the mouse mode to "Create-and-Place Fiducial", and then click on the image to create a fiducial. Repeat those steps to create a list of fiducials. See the Markups module page for detail.

CurveMaker-2.0-FiducialPointMode.png CurveMaker-2.0-DefineFiducialPoints.png

If you have created a fiducial list right after starting 3D Slicer, the fiducial list should be named "F". In the Curve Maker module, click the "Source Points" pull-down menu and select "F".


Also, create a 3D model node for the curve by selecting "Create new Model" from the "Curve model" pull-down menu.


Once the source points and curve models are specified, click "Generate Curve". A curve that connects the fiducial points should appear on the 3D viewer.

CurveMaker-2.0-GenerateCurve.png CurveMaker-2.0-Curve.png

Similar Extensions


Information for Developers

The code is available at Github.