Inverted slice view scrolling direction

Hi,

Using 4.13.0-2021-04-02 r29808 / 49642b0 / VTK8 on Linux.

Scrolling a slice view occurs in the opposite direction since this build.

Usually, the mouse wheel would scroll a view I>S when scrolling the wheel up, same for keyboard arrow key. It’s just reversed now.

Is it a new feature or does it need a fix ?

Regards.

Specifically between which two commits do you find scrolling behavior to have been changed?

4.13.0-2021-03-20 r29789 / 233d7ac / VTK8 scrolls normally.
4.13.0-2021-04-02 r29808 / 49642b0 / VTK8 scrolls inversely.

Could it be related to the addition of ‘radiology’ and ‘neurology’ viewpoint ?

patient right is screen left
patient right is screen right

combobox in settings.

cc: @lassoan and @pieper who had been discussing the view orientation changes in ENH: Make default slice view orientations configurable by lassoan · Pull Request #5536 · Slicer/Slicer · GitHub.

Neither of the two new view orientation options (patient right is screen left (default)/patient right is screen right) match the scrolling behavior of the previous unconfigurable Slicer behavior.

Thanks for the report and tracking down the likely issue. Let’s see what @lassoan thinks and we can make the appropriate fix. I would vote for restoring the old behavior by default.

The old default SliceToRAS coordinate systems were left-handed for no particular reason. We use right-handed coordinate system everywhere else. Using left-handed slice coordinate system turns models inside out and can introduce other small inconsistencies when we transform objects to the slice plane, so I would consider it as an undesirable behavior.

Comparison of left/right-handedness of coordinate systems between preview and stable release

Using Slicer-4.11.20110226: two left handed, one right-handed

>>> import numpy as np
>>> np.linalg.det(arrayFromVTKMatrix(getNode('vtkMRMLSliceNodeRed').GetSliceToRAS()))
-1.0
>>> np.linalg.det(arrayFromVTKMatrix(getNode('vtkMRMLSliceNodeGreen').GetSliceToRAS()))
1.0
>>> np.linalg.det(arrayFromVTKMatrix(getNode('vtkMRMLSliceNodeYellow').GetSliceToRAS()))
-1.0

Using Slicer-4.11.20110327: all right-handed

>>> import numpy as np
>>> np.linalg.det(arrayFromVTKMatrix(getNode('vtkMRMLSliceNodeRed').GetSliceToRAS()))
1.0
>>> np.linalg.det(arrayFromVTKMatrix(getNode('vtkMRMLSliceNodeGreen').GetSliceToRAS()))
1.0
>>> np.linalg.det(arrayFromVTKMatrix(getNode('vtkMRMLSliceNodeYellow').GetSliceToRAS()))
1.0

With the new slice axis directions, the arrow buttons work more intuitively with the default 3D orientation, too:

Slicer-4.11.20110226:

  • red: arrow right moves the slice up → as expected
  • green: arrow right moves the slice backward → I would not expect this
  • yellow: arrow right moves the slice left → inconsistent

Slicer-4.11.20110327:

  • red: arrow right moves the slice up → as expected
  • green: arrow right moves the slice forward → as expected
  • yellow: arrow right moves the slice right → as expected

So, overall, the new behavior is more consistent at all levels, expect it is different from the old behavior.

I just read the top post and indeed behavior of the mouse wheel is opposite of what is expected, I’ll invert that.

Great, that’s the major change.

Currently :
Red slice view : arrow up moves the slice down
It’s troubling also.

The old behavior of the arrow keys in the slice views was that right arrow always went the in the RAS directions (right arrow on a sagittal went to patient right, right arrow on coronal went anterior, right arrow on an an axial went superior). Now axial and sagittal are reversed from that, which probably is something everyone could get used to, but it seem illogical to me.

Arrow/scrolling directions are reverted now (BUG: Restore slice increment/decrement direction in slice views · Slicer/Slicer@87d3eb5 · GitHub).

1 Like