Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
132 stars 2 forks source link

Add radial menu swipe gestures (aka make it a proper pie menu) #2155

Closed technobaboo closed 3 months ago

technobaboo commented 3 months ago

Is your feature request related to a problem? Please describe.

I have a problem with fine motor control that makes pointing with the laser difficult so context menus are quite difficult to navigate because pointing at the correct option is unstable and getting closer is highly inconvenient.

Describe the solution you'd like

I want radial menus to support swipes so you can hold the context menu button (or trigger when the radial menu is active) and move the laser in a direction, then release to select that option. For submenus I would want them to pop up wherever the button is released.

Essentially, behavior like fly-pie (https://youtu.be/U22VxoT-tNU) would remove the need for precise pointing and can be mapped to a sphere around the user for easy proprioceptive input. I wouldn't need to worry about hitting a tiny target, I'd only need to swipe in a direction and could trust that given a certain tooltip i have equipped it did the right action.

This isn't just good for accessibility, it'd make all context menu actions much much faster! https://donhopkins.medium.com/an-empirical-comparison-of-pie-vs-linear-menus-466c6fdbba4b

I noticed that when creating things the radial menu greatly slows down the speed of creation just as much as the inspector does (which i'll talk about in other issues) because vr controllers casting rays makes fitts' law much worse than a mouse. But because menus have been greatly sped up by making them pie menus i figured this'd be a very easy initial fix that everyone would enjoy!

Describe alternatives you've considered

Additional Context

Obviously with larger amounts of context menu items the angle range at which you need to swipe becomes narrower, but you can easily traverse more distance meaning you get more precision with a controller or mouse. Having the existing button-based system is not mutually exclusive either, both can work at the same time without conflict and i think that's for the best!

If this isn't a good default, having it as an option would be immensely helpful.

Requesters

ohzee00 commented 3 months ago

Just to clarify, you are aware that radial menus support swiping via holding down trigger right?

technobaboo commented 3 months ago

i was not aware of this at all and i tried to do it before :/

ohzee00 commented 3 months ago

Pff fair enough, I guess the best outcome of a github issue is finding out the feature is already in, you did a good job detailing the request however. Though not to reopen this but to add more information, you can adjust your laser settings to be more smooth if that helps you at all too!

Dessix commented 3 months ago

I don't know that closing this is optimal- there is a nuance in the proprioceptive mapping suggestion that is not present in the current game which I've found somewhat lacking, coming from <Other VR Game>.

technobaboo commented 3 months ago

how do you mean? will def reopen if there's fluidity missing

Electronus commented 3 months ago

Also just as a note, as per the reporting requirements please don't mention past projects the team worked on.

shiftyscales commented 3 months ago

Hi @technobaboo - thank you for the issue.

Have you had a chance to try out the existing swiping functionality by clicking on the centre button of the context menu? Does it work to fit your needs?

There are a few other accessibility features Resonite offers in its settings which may also be of use to you if you are having difficulties with hand tremoring/laser instability.

Inside of the "Devices" setting category, there is the "Tracking Smoothing" settings- these allow you to smooth out the position, and rotation of tracked devices, including your hands/controllers, which can help to eliminate tremors/jittering in the tracking.

Lower values apply more smoothing- for my personal use- I find a value around 10 to be a good mid-point between responsiveness, and stability.

image

In addition to the tracking smoothing settings, there are also options to change the laser behaviour in the "User Interface" category.

Here are the values I personally use, but I would recommend reading the settings descriptions, experimenting, and seeing what feels best for you:

The most relevant setting here is the "Laser Smooth Speed" which acts similar to the tracking smoothing above- with lower values making the laser less responsive, but more stable.

image

Hopefully these settings help - if you wish to provide any further feedback on the function of the radial menus, please either comment/re-open this issue, or make a new one.

Thank you. :)