Project for 3DSlicer project week

Hi all,

many users asked me for having a 3D views linking functionalities such as the 2D one.

My idea is to implement such functionality in the 3DSlicer core as a small project for the 28th project week.
The implementation will be similar to the 2D views linking (with MRMLLogic) and it will have similarly the two options as well:

  1. simple link: only the 3DViewControllers are linked
  2. hot link: also the 3DDisplayViews are linked (i.e. the cameras are in sync)

Please let me know if you think it will be useful to have this feature in the 3DSlicer core (otherwise I have to find another project (:slight_smile: ).


Some level of property synchronization between 3D views would be definitely useful.

What would you need synchronize?

  • displayed content (what models, volumes, segmentations, etc. are visible in each view)
  • view properties (show/hide ruler, orientation marker, background color, etc)
  • camera (position, focal point, up vector, orthogonal/perspective, field of view, etc.)

Would you synchronize only modified properties? For example if you only change camera orthogonal/perspective projection mode, would you also synchronize camera position, focal point, etc.?

It would be also nice to have a relative camera motion mode (where relative pose between cameras would be maintained while moving or rotating cameras) so that you can have orthogonal views.

I’m not sure about the link/hot-link name. Hot-link in slice views mainly affect when the changes are synchronized and not what is synchronized.

It is already possible to use the same camera for multiple 3D views (using Cameras module).

Sounds like a good project to me.

If you didn’t already find it, the slice link logic is implemented here and it would be good to think about how to reuse concepts and logic across multiple view types where meaningful.

thanks for the feedback.

at the moment, the users requested me only 2 and 3, of course we can further discuss all the options.
I’ll also check up if 1 is a wanted feature. It will be good if you can also get some more user feedback about to it. Of course we can further discuss this (design, etc…) during the calls or here, now I was mainly interested to see if the project is fine.

Comments point 2:

yes I saw it, I was thinking indeed to implement 2 in the same way as for the 2d views controllers.

Comments point 3:

that’s true, but I think having a button in the 3D view controller it will be much better. Moreover, I think it will be better to not use the same camera node for all the views when it is “linked”. See below.

Yes, and I think using a cameraNode for each view it is possible

Yeah I think that it will be good to have this too (e.g., investigating the same object in two 3D views). This can be done updating the camera nodes (when one is modified) instead to give to all the views the same camera node. From the point of view of the GUI, we can design the link button with the option of the angle distance.

I agree

Hi @pieper @lassoan, do you have some time to further discuss this next Tuesday (22nd) at the project week hangout (or any following one)? It will be nice to agree what to do, so at the project week I can start immediately on the implementation.

Hi @Davide_Punzo yes, I should be able to join next week’s call (I’ll be driving out of town but with the zoom conference I can easily call in). Awesome if you can get started in advance.

1 Like

I plan to join, too.

1 Like