Set center of rotation for transform in 3D view

Even though it is possible to rotate the object in 3D view interactively whenever the rotation transformation is applied it is working as origin in the world origin ( I guess. )
3D interactor is very difficult to precisely adjust and i don’t know if it is possible to constrain the 3D interactor to rotate around only one axis if needed.
Is it possible to add a feature to change the object origin to the center of the geometry from GUI? (and if possible other centers of origin as well )

(i am aware any center of origin can be defined from the fiducial point using the script)

Similar questions come up quite often but so far in most cases it turned out that manual rotation in 3D view had not been a good solution anyway, so we did not end up investing a lot of time into improving the transform widget. It is true then if you could set the center of rotation and axes directions more easily then it would make accurate orientation somewhat more feasible (we have an open issue for this). But there are always much better solutions than free translation/rotation in 3D, because that is inherently a very tedious, iterative process.

If you describe what task you are trying to solve then we can give advice what tools you may consider.

It is that often that we need to orient an ROI box in relation to structures. For example we here we want to make the ROI box parallel to the bone surface. Right now we achieved this with the script placing a fiducial in the centroid and rotating it around that.
But if there is an automated function to set the object origin to the center of geometry/segment then it would be easily rotated from the transform module

Screenshot from 2020-11-01 21-13-11

We’ll implement ROI rotation in the new Markups ROI node. It should be available in a few months.

Note that you can create optimal oriented bounding box fully automatically, using 10-15 lines of code (see New Segment Statistics: Oriented Bounding Box, Diameter and More). The script could be slightly modified to create ROI from automatically rotate the ROI to have one side parallel to a specified line.

If you don’t want to do any programming, then you can rotate the volume so that the cut axes are parallel to R/A/S axis and then you don’t need to rotate the ROI.

1 Like

It would be great and thank you very much for that. Which will simplify many things.

This is the way we currently using…

I’ve started the implementation of the Markups ROI here: https://github.com/Sunderlandkyl/Slicer/tree/wip_roi

There are a lot of issues with it currently, but I plan to to have it completed by the end of November.

2 Likes

Thank you very much for the great effort! :clap: