Set rotation point out of center

That’s a really interesting question, but why limit yourself to the confines of OrbitControls?

Incidentally this is an excellent use-case for the application of a SpaceMouse (6DoF input device):

Each orbit (movement along an arbitrary path) can at the infinitesimal level be construed through a superposition of a pure rotation and a pure translation (tangential to the path), which happens to be exactly what you can do with a SpaceMouse, simultaneously and one-handedly.

The direction of the puck displacement (blue arrow), which is tangent to the path at this moment, defines the direction of where the current center of rotation can be. It’s the ratio between rotational velocity (as given by the pucks twisting and/or tilting) and the translational velocity (as given by the pucks displacement) which defines the actual distance of the center of rotation along the black dash-dotted line.

Simply by changing the direction of the pucks displacement (green arrow), you arrive at an entirely different set of possible locations of the current center of rotation. On the fly and without any clicks whatsoever.

This does take some manual skill and practice, but the results in terms of ease and intuitiveness of navigation are imo very well worth it.

1 Like