Link dual views with relative camera position

I am not sure if title explains it what I want correctly. But here is the use case:

I have two models with different orientations, loaded into two 3D viewers. I would like to link the views such that when I rotate right skull, I would like the other rotate in the same way. This is current not possible, and I am not sure whether it is possible to do without having to register them.

It might be possible to implement a relative mode in camera linkage where the delta between the two cameras is recorded at the start and then always applied to each update. I’m not sure how much work that would take.

I actually think just registering the two models to be basically in the same space would be the most straightforward. I know that is hard to do with the rotate and translate sliders or direct manipulation, but since you have landmarks on these already it should be easy to do with a landmark transform.

This made me think of another mode that could be helpful: we could use the camera controls to align the two models in the views and then use the difference in camera parameters to calculate a transform to apply to one of the models for registration. That might be more intuitive than the sliders or manipulators and would work when you didn’t have landmarks.

This example just happened to have landmarks. Most often I do not have any.

Yes, something like this what I had in mind. Once I bring objects the positions I would like to keep, there would a button or a something that will lock the relative position.

This should be pretty straightforward. Get the translations from the centers of rotation of the two camera views, and then the rotation from the vectors from these centers of rotation back to the camera and the up vectors. I could imagine a little module for that would be quite doable.

1 Like

If it’s helpful until this gets implemented in Slicer, you can link the viewers in Meshlab.