Surface editor and labeling

I would like to start this discussion to develop a 3D surface editor in Slicer that will allow coloring/labeling/spray paint a surface mesh or perform other operations such as cut, clip, smoothing. All the tools should be interactive.

2 Likes

You can use all the existing segmentation effects in Segment Editor to edit surface models, if you convert your model as a segmentation, or import it (if it is stl or obj) directly as segmentation.

While as a user part of me also would like to have this functionality, given the existing range of functions in Segment Editor and how easy Segmentations module makes it go back from a scalar volume to 3D models back and forth, I think it would be hard to justify the time investment.

There is also a Surface Toolbox with a range of function to edit meshes.

Operations on surface meshes are necessary for some projects, especially when you work with open surfaces (segmentations are always closed surfaces). We already have lots of tools in place, some more are coming withing weeks, while others we don’t have plans for.

Existing features:

  • labelling: point labels can be attached to surfaces and points are moved on surfaces by default
  • smoothing, decimation, cleaning, hole filling, etc.: provided by Surface Toolbox module
  • EasyClip extension can do some clipping with a plane

Planned:

  • clip: dynamic clipping with multiple planes and on-surface curves - plane widget pull request is already under review, clipping tool is expected to be released within 1-2 months
  • creation of parametric surfaces (curved planes) - in 6-12 months
  • Picking of models: you should be able to pick a model and choose operations on it by right-clicking - in 6-12 months
  • Boolean operations: built-in VTK Boolean filters are broken but Romer’s vtkbool package is supposed to work much better, we can integrate that into Slicer

Not planned:

  • coloring/spray paint
  • sculpting tools (use Segment Editor instead)
  • CAD-style parametric editing (use CAD tools instead; for example, we could implement a bridge to open-source Python-based FreeCAD)
4 Likes