I am rendering two (different) volumes in two 3DView using python in an extension module. Each volume was configured with its own camera settings.
My intended behavior is the two 3DView has a linked behavior, e.g. the same rotation (only) operated using mouse in the 1st 3DView is applied to the 2nd 3DView (without mouse interaction there). However, I found that an extra translational transformation is added in the second 3Dview. So the volume showing in the 2nd 3DView become invisible in the display port.
Any hints or suggestions to make this working as I expected?
I cannot reproduce the behavior that you describe. Could you please provide a screen capture video or at least a few screenshots?
Sorry, my fault: my version is 4.13.0-2022-01-16-linux, a previouse release version.
This is the initial views (different volumes centered in the views):
After click in the right upper view (the two views were LinkedControlOn). The volume dispeared:
After rotation (volume shows up in the right bottom view):
My guess is that the volume was translated by the first click in the right top view.
Please always test the latest Slicer Stable Release before you ask a question or report an issue. The behavior may have been improved since your version was built.
If I understand well, you would like to synchronize the camera orientation only. The built-in linking feature links all the camera parameters, including camera and focal point positions, so you cannot focus on different points in 3D space. Instead, you can either translate all the volumes to be centered at the same physical position. Or, you can add an observer to a camera and whenever a camera parameter changes update the other 3D view’s camera accordingly.
OK. Got the point. And thank you very much for the alternatives. I will try and report their results later.
It looks that the camera way is better as it self-constrained in current issue. The modification of volumes might have consequences somewhere else.