scenerygraphics / sciview

sciview is a tool for visualization and interaction with ND image and mesh data
BSD 2-Clause "Simplified" License
64 stars 17 forks source link

Update default controls #532

Closed kephale closed 11 months ago

kephale commented 11 months ago

This has some changes that include:

Closes https://github.com/scenerygraphics/sciview/issues/209

ctrueden commented 11 months ago

@kephale I finished the revamp of the navigation control settings. Those five properties are now persisted when mutated through sciview or sciview.controls, but not when changed directly on the sciview.controls.parameters object itself. This was the easiest approach since the sciview.controls has access to the SciJava context and therefore the PrefService, whereas the scijava.controls.parameters is a lower level context-free thing.

kephale commented 11 months ago

Yeah, napari's shift + right came up in the original issue thread. I haven't tried implementing that one yet, but maybe we can punt for now :)

kephale commented 11 months ago

Arcball mode resets camera after FPS mode camera movement

I guess this is probably intended behavior, but if you move around in FPS mode, then zoom or rotate using mouse wheel or left drag respectively, the camera "snaps back" so that the selected object is recentered again. This is not how napari (nor IIRC VisAD nor 3D Viewer) behaves; rather, in napari if you hold shift and left drag it pans the object (or the camera moves, I'm not sure—either way, it comes across like the object moving off center), and then click and drag again to rotate, it does not snap back, but rather the arcball rotates around the new center, so the object sort of "swings" around more widely. Maybe it would make sense for arcball to operate around the current center of the view, rather than always the center of the selected object?

Arcball currently uses the active node as the center. I think this means that when a Node is selected we need to save its position, then when FPS movement happens we update that position. As a consequence Arcball will use a Vector as its center instead of a Node's position.

kephale commented 11 months ago

Initial camera position does not match initial mouse drag

This one needs more poking. I thought it was related to how Arcball's lastX and lastY are initialized at the center of the screen, but I still got funky behaviors.

kephale commented 11 months ago

Ctrl + left drag corrupts object position

Addressed

Y axis rotation inversion

Addressed

Left drag and right drag do the same thing?

I'm open to using this for Node manipulation for sure. However, I believe one of the reasons napari uses right drag for zoom is because it was a request from trackpad users. Since I'm a trackpad user sometimes I don't quite understand that.

kephale commented 11 months ago

Description tooltips in Controls dialog need updating

I vote to remove the descriptions. This should be in the UI Behavior dialog, not hard coded strings.

kephale commented 11 months ago

@ctrueden y-axis is flipped now. I propose punting on:

kephale commented 11 months ago

Some of the code duplication [between sciview and scenery] here is related to https://github.com/scenerygraphics/scenery/issues/591 but that is easy to resolve down the road.

ctrueden commented 11 months ago

I vote to remove the descriptions. This should be in the UI Behavior dialog, not hard coded strings.

I kinda like the short descriptions you changed to—I vote to keep them like that for now, rather than having none whatsoever.

I see that #541 covers the two remaining issues discussed above. I also filed one more additional issue #543.