Disabling object transforms by VR controllers


Is there a way to disable object transforms in VR, or to assign object transforms to a different button than world transform?

In the current implementation, it is very easy to transform an object by accident when the intent is to transform the world. This is particularly true when dealing with volume rendering, where the bounding box of the volume is usually bigger that the visible object.

My current workaround is to make all my objects non-selectable in subject hierarchy, but it is not very practical and has other unwanted consequences outside of VR.

What do you mean? How would you make it more practical? Or you mean that the fact that you need to lock object is not practical? We are reworking widget event processing and part of it is to make it easy to remap interaction events to widget events.

Selectable property is only used for virtual reality right now, so there are no other consequences.

If the Selectable property is only ever used in VR, then this could be the way to go.

However, it doesn’t solve the case where you want an object to be selectable (so you don’t set the flag), but you want to avoid accidental selection when the user is transforming the point of view. At the moment, this happens often and it is too easy to make that mistake.

There are many ways to improve:

  • Allow assignment of world and object motion to different buttons.
  • Give the user a few hundred milliseconds to press the second trigger before starting to transform.
  • Provide visual feedback when objects are selected for transforms. e.g. bounding box appears around the object.
  • Assign a button to undo the last object transform so that you don’t need to go out of VR to correct the mistake.
  • etc…

Thank you, all of these are good points.

This might already be the case - try grab and trigger buttons.

We plan to implement this.

Undo/redo infrastructure was disabled in Slicer because it was too complicated. We recently reviewed undo/redo infrastructure in Slicer and could fix it to work quite well. We could consider enabling undo/redo again.