I want to squeeze the actor closer to the corner of the window (up+right) but cannot manage to do so by messing with the view port.
When I enable interactivity and see an outline of the widget, some sort of padding is in place which leaves substantial negative space around the actor within the widget
What is the source of the padding? (I cannot find any indication in vtkOrientationWidget.cxx)
You can either use orthographic projection like @lassoan suggested, which is easier to do. Or, if you want to stick to perspective projection, you can narrow down the FOV angle to reduce the visual discrepancy between the main scene and the orientation axes. Decreasing the FOV angle will do a zoom-in, then you have to dolly (translate) the camera backwards to compensate.
I need the camera to use perspective projection (parallel doesn’t seem to even fix the issue), and lowering the camera viewing angle all the way down to 5 doesn’t really hide the dependencies that well…
(I can think of many 3D modeling applications and video game engines that use perspective projection and still have accurate axes)
You can keep using perspective projection for your main 3D content and keep using parallel projection for rendering the orientation widget. You can give this a try in 3D Slicer.
What would be the best way to exclusively set the projection mode of the orientation widget.
When I try give it a new separate camera it either crashes my application if done so before I set the interactor, or freeze my main camera if done afterwards…
It is very simple to exclusively make the orientation widget use parallel projection, just set your main camera to parallel mode, create the widget, and then set the main camera back to perspective mode.