SlimeVR / SlimeVR-Server

Server app for SlimeVR ecosystem
https://slimevr.dev
Apache License 2.0
609 stars 166 forks source link

[Server] Support VRChat OSCQuery #580

Open TheButlah opened 1 year ago

TheButlah commented 1 year ago

To get feature parity with the steamvr driver, we need to know the position of the headset. We can receive this data from vrchat via OSCQuery.

TheButlah commented 1 year ago

@Louka3000 if you have bandwidth to tackle this, can you assign yourself?

Erimelowo commented 1 year ago

I can add it to my todo, but it's not in high-priority.

TheButlah commented 1 year ago

I think its actually very important, because steamvr is so much laggier than osc. Also reviewers are sure to show footage of it working on quest, and without legtweaks this footage won't be as good.

Hence why its in the "required for 1.0" set

Eirenliel commented 1 year ago

Also autobone doesn't work without it

Erimelowo commented 1 year ago

Autobone won't work simply by adding OSCQuery support, as we can't do Reset All (unless we implement manual user height in GUI, which we should, but is unrelated then). Also, VRChat did not release any OSCQuery beta, so reviewers will be stuck with footage without HMD data. Finally, even with OSCQuery, there's no way to get HMD rotation, so we'll be stuck with no neck solving... better give up feature parity and accept compromises :p

TheButlah commented 1 year ago

so we'll be stuck with no neck solving

as we can't do Reset All

Can you elaborate? I'm unclear on what exactly is the data we need from vrchat. I thought all we needed was the height and that would unblock both autobone and legtweaks

VRChat did not release any OSCQuery beta

Does this mean even if we implemented stuff on our end, there still is no way to get height data from vrchat until VRChat releases OSCQuery?

Erimelowo commented 1 year ago
  1. OSCQuery won't give us any additional data compared to what you're getting by using OSC Trackers on a PC without the SteamVR driver. That means you ONLY get HMD height in % from the ground (0-1). There's no way to get height from VRChat.
  2. As I said, implementing OSCQuery immediately won't work, as they didn't release it outside of closed beta.
  3. There's no way to get HMD rotation, which means rotating your head will induce sliding, as if your Head shift and Neck length were 0. This is the current behaviour when using OSC without HMD data. The only workaround for this is to use a Slime tracker on your head.
TheButlah commented 1 year ago

ok, thanks for the clarification it makes sense. I descoped this from 1.0.

@Louka3000 Does legtweaks and autobone work when using OSC on PCVR with the steamvr driver enabled?

Erimelowo commented 1 year ago

Yes, but there's the "bounce issue" with legtweaks because of VRChat tracking space synchronization. Maybe need to not send HMD data all the time if we have position?

TheButlah commented 1 year ago

@Louka3000 could you open a github issue to describe what exactly we need for legtweaks + autobone to work when using OSC on PCVR, because I just don't know enough and having you describe it would be better

Erimelowo commented 1 year ago

To clarify, both work just fine themselves. The actual problem concerns the trackers being dragged with the HMD in VRChat with OSC Trackers, probably due to some latency. I don't know the exact cause as I haven't looked into it, and I'm too busy doing 9000 other things.