Fiducials - specify segment in 3D view?

I am viewing 2 segments in the 3D viewer - insect exoskeleton in one segment and some internal anatomy in a 2nd segment. The exoskeleton has its opacity turned down so I can view the internal segment “in situ”. What I would like to be able to do is place a fiducial on the internal anatomy segment by clicking in the 3D viewer. What happens, though, is the intersection test hits the exoskeleton first and places the fiducial on the surface of the exoskeleton.

Is there a way to tell fiducial placement to ignore some segments?

Thanks!!!

-Hollister

Oh yeah, if there’s not a way to do this and it sounds generally useful, I’m willing to take a stab at trying to implement it.

You can only set “selectable” attribute per node. So, if you want to make the exoskeleton visible but want to prevent clicking on it then export the exoskeleton to a model and make it not selectable.

If you install SlicerVirtualReality extension then you get a context-menu item in Data module that allows toggle selectable state.

image

If you don’t want or cannot install SlicerVirtualReality extension then you can make a mode node not selectable using the Python console. For example, if you exported Segment_2 to a model node, you can prevent placing markup points by typing this:

getNode('Segment_2').SetSelectable(False)

This requires recent nightly version (Slicer-4.10 does not contain this feature).

Got it. So a Segmentation is a node in and of itself, is that correct? (And this is why exporting to a model node is the way to do this?)

Thanks, Andras!

(This works great, by the way. Thanks!!!)

1 Like

Yes, and you specify “selectable” property for the whole segmentation node, with all segments in it. However, when you export segments to models, each segments becomes a separate model node that you can make selectable/non-selectable.