SlimeVR / SlimeVR-Feeder-App

WIP OpenVR Application that gets the position of everything to feed to SlimeVR-Server. In theory.
BSD 3-Clause "New" or "Revised" License
10 stars 8 forks source link

[Feeder] Have bindings for reset assigned by default #9

Open TheButlah opened 1 year ago

TheButlah commented 1 year ago

Currently, the feeder app exposes some OpenVR actions for full reset and fast reset that can be bound to controller bindings. These should be assigned to a sensible default on a few common controllers (most important are quest controllers and index knuckels).

The rationale for this is that the process of assigning openvr bindings is still rather difficult for people who are nontechnical. Because drift is such a common occurance, being able to double tap a button to calibrate instead of reaching for the GUI + Timer is important for a good user experience.

There is a risk of interfering with the control schemes for some games. Luckily, we know that the only real games that support FBT are VRChat, Neos, Chillout VR, and Blade and Sorcery. I would suggest we simply give it a best effort default and leave it up to the user to remap things if necessary.

kitlith commented 1 year ago

I'm pulling prior things I've said in discord:

In that case, I'm in favor of chorded default bindings, in an effort to avoid accidental triggering and avoid accidental overlap with other bindings.

am considering bundling a default for index controllers along the lines of 'chorded click for fast reset, chorded hold for full reset"

So: click for fast reset and hold for full reset we probably want to do using the trigger. That leaves the question of what else we chord with. (Also: how does mounting reset play into this? separate issue i guess )

Another option would be to do left hand for fast reset and right hand for full reset, but that's eh to me.

My personal binding is clicking the touchpad on both index controllers. Could make default binding touching both pads, and clicking one/both controllers?

I'm just making notes out loud tbh. I'll figure something out for index, and then best-effort map a similar idea to the other controllers.

Erimelowo commented 1 year ago

My personal bindings with Index controllers are: Left hand touchpad up for Full reset, and Right hand touchpad up for Fast reset. I don't think mounting reset should be bound somewhere by default (or if it is, something complicated)? People wouldn't know how to use it... cc @ButterscotchV

TheButlah commented 1 year ago

I don't think mounting reset should be bound somewhere by default

Agreed

I'm in favor of chorded default bindings

Personally, I'm not sure if I agree. But maybe I'm underestimating how easy it is for a user to do that quickly. Do you have an example binding you recommend for index controller?

kitlith commented 1 year ago

Personally, I'm not sure if I agree. But maybe I'm underestimating how easy it is for a user to do that quickly. Do you have an example binding you recommend for index controller?

example: hold a and click trigger. other example is the one i currently use, click both touchpads. just need to figure out a reasonable thing for fast/full reset.

I don't think mounting reset should be bound somewhere by default

That's fair, how does that interact with full reset though? if we should be doing a mounting reset after each full reset, then maybe that shouldn't be bound by default. (i haven't been keeping track of how it works)

Erimelowo commented 1 year ago

Mounting reset only needs to be done if the trackers shifted IRL. It goes like this: Initial setup: Full reset + Mounting reset (done via the mounting calibration tab in GUI) Trackers drifted: Full reset OR Quick reset (done via bindings) Trackers shifted IRL: do Initial setup

TheButlah commented 1 year ago

hold a and click trigger

Honestly, that seems even easier than what I currently do - double tap a. I suppose chorded would be fine then. Maybe lets add a default index controller binding and quest, that is chorded.

kitlith commented 1 year ago

question: would hold a on both controllers + either trigger be overkill? for fast reset vs full reset, would it be preferable to vary trigger (i.e. click for fast, long for full) or the button held (a on both controllers vs b on both controllers?)

TheButlah commented 1 year ago

I think its better for us to vary by button rather than by duration held.

kitlith commented 1 year ago

This is being explored in this pre-release: https://github.com/SlimeVR/SlimeVR-Feeder-App/releases/tag/v0.2.9 which has been sent to the beta testing channel.