Raphiiko / OyasumiVR

🥽 VR Sleeping Utilities
MIT License
246 stars 19 forks source link

Cross-avatar virtual tracker posing #17

Open ShayBox opened 1 year ago

ShayBox commented 1 year ago

You could use OSC to create virtual FBT trackers, even on Quest, which can be "moved" around to pre-defined positions to create poses similar to locomotion animations from prefabs such as GoGo Loco.

It's an interesting idea, but may be better suited as a dedicated mobile app, or project, but I thought I'd share it cause it seems like something this project might be interested in.

Raphiiko commented 1 year ago

It's a good idea for sure, as it would remove the requirement for users to add animations to their avatars.

I have been experimenting a little with this in the past few weeks already, but using a custom SteamVR driver that adds virtual trackers. I'd prefer that as then the functionality wouldn't be limited to just VRChat, but OSC trackers might be a simpler approach to start out with.

Having not looked into OSC trackers yet, it does raise some questions, mainly about how it behaves when people already use other (osc or non-osc) trackers, and how it would transition between them. I can imagine there would need to be some abstraction layer in between to allow seamlessly switching between real trackers and oyasumi's virtual trackers without needing the user to recalibrate.

ShayBox commented 1 year ago

I would assume having toggles to turn individual virtual trackers on and off would be a good idea, but real fbt users would likely not use this, as it wouldn't work very well with real trackers or other tracker solutions that use OSC

OSC sends tracker positions, and the trackers get moved to those positions, if you were using non-osc trackers I don't think OSC trackers for the ones you have would work, if you're using osc trackers you can also use osc trackers, but they would rapidly switch between the two sets of positions every time one of the program sends their position, this really only works for people that don't have trackers at all.

Raphiiko commented 1 year ago

Right, I see. For other OSC-based trackers, it would be possible to build some kind of proxy into Oyasumi, where instead of sending tracking data to VRC it could be sent to Oyasumi. Then the tracking data can either be passed through to VRChat, or blocked in favour of Oyasumi's simulated data.

For SteamVR trackers.... this is a bit more difficult. For one, the SteamVR tracker data would have to be transmitted over OSC to VRChat, so that the same proxying can be done. Then the tracking data should be blocked from getting to VRChat directly to prevent ending up with two sets of trackers. I'm not entirely sure if the latter is possible, but I suspect it's what OVR-SmoothTracking does to do its thing.

The reason I want this is because I personally use FBT together with the sleeping animations. When sleep mode activates, I have Oyasumi turn off my trackers and switch to using the sleeping animations, to preserve their battery.

It definitely complicates the issue though, so I'll have to see if it's feasible to do it this way at all. On its own it's still a pretty good option for people who don't use FBT.