How to preserve the up vector of the camera when orbiting?

We basically want to have a user setting for keeping the “horizon” at all times when orbiting (similar to SketchUp).

It’s rather easy to just set the up vector of the camera but I wonder how I can change the existing orbit operator to do this on each frame.

The orbit operator has a special “BIM” orbit mode that should do what you want:
https://docs.techsoft3d.com/communicator/latest/api_ref/viewing/classes/Communicator.Operator.CameraOrbitOperator.html#Communicator.Operator.CameraOrbitOperator.setBimOrbitEnabled

let op = hwv.operatorManager.getOperator(Communicator.OperatorId.Orbit);
op.setBimOrbitEnabled(true);

Thank you, it seems to work for the orbit. But how do you disable the stuttering zoom when middle-clicking something?

Nevermind my question, it’s a mouse problem on my side, there’s no stuttering zoom, just an overly sensitive scroll wheel :wink: