The YawVR is a pretty interesting device with a lot of potential, but I've found that it's potential is massively limited without motion compensation for your HMD.
For people who are unfamiliar, the problem is that when the YawVR moves your body, your HMD (Rift,Vive,Index,Quest,etc) thinks you just moved your head. If you want to use the YawVR for example to ride a roller coaster or fly a plane, and you'd like it to turn with the vehicle, you will find that your view inside the vehicle also turns! So when the vehicle turns 90 degrees, instead of your head continuing to look out the windshield, you find yourself looking out the side window. This renders the unlimited yaw feature completely useless. The affect happens when the device moves on any axis, but yaw is most noticeable. I find that if I limit yaw to 45 degrees, I can fly around in Elite dangerous and the experience isn't awful... it just feels like I'm swimming in my cockpit chair :-( I have to map a joystick button to recenter my view and I find myself using it a lot...
The solution is motion compensation - which means to track the movements of the YawVR and subtract (compensate) them from the HMD movement. If this is done perfectly, your in-game view will not change as the chair spins continously and pitches and rolls.
To date, there is absolutely no motion compensation available for Oculus Rift, Rift S, Quest, or Quest 2.
The YawVR FAQ claims there is motion compensation support for:
- HTC Vive (3rd party)
- Valve Index (3rd party)
- Pimax (in-house)
I don't own any of these HMDs so I can't speak to how well the motion compensation works, but if you are a prospective YawVR buyer, you may want to look into this before pulling the trigger.
If you are curious, here is a more in-depth write-up about motion compensation and some of the issues with it for some HMDs: https://www.xsimulator.net/community/threads/trips-treatise-on-motion-compensation-and-enclosed-simulators.14150/
From what I can tell, motion compensation cannot work properly if it tries to "trick" the VR system and causes optical tracking and IMU tracking to disagree. That is the problem with mounting a Rift CV1 camera to the YawVR.
I don't understand why something like OpenVR Motion Compensation couldn't work as well with a Rift CV1 as a lighthouse tracked device, except the author of it states that the valve provided SteamVR driver for Oculus devices is problematic. I guess that's the only reason...
It would be great if YawVR could implement a Virtual Tracker for OpenVR Motion Compensation. This would allow YawVR users to get motion compensation without mounting a controller to their YawVR. In theory it would also give better results since it would be located at the center of rotation. I suppose in practice there is too much error introduced by the slippage and how YawVR moves relative to how it's commanded to move.
And... this still wouldn't help Oculus devices which suffer from the valve provided SteamVR driver.
Exciting "news"! I confirmed last night that OpenVR Motion Compensation (OVRMC) does indeed work with Oculus Quest 2 when using Virtual Desktop v1.17.1. I tested it out using Elite Dangerous, and it worked for yaw/pitch/roll. From what I understand, this should also work for Quest and any WMR HMD (like Reverb G2).
Here are the caveats:
To setup do the following:
Note: Virtual Desktop will update itself all the time so... you'll probably have to repeat steps 5-12 every time you want to play with motion compensation/cancellation enabled.
Also, you'll need to get your hands on the 1.17.1 apk and streamer installer for Virtual Desktop.
You could reach out to @KydDynoMyte (probably can catch him in discord easier than on this forum) to request the Virtual Desktop 1.17.1 apk and streamer installer, or if he allows it I'll try to post the files in this thread.
You might be able to download the streamer app using the big orange button at the top of this page:
Update: Apparently you can use the latest version of Virtual Desktop now, you just need to start the streamer on your PC with /DisableRenderPose flag. I haven't tried this yet myself, but @KydDynoMyte mentioned it to me.
I'm really hoping this works because installing the old versions over and over (and getting ahold of them to begin with) is a major pain...
I confirmed tonight that this does work quite well version 1.18.7 of Virtual Desktop. Once you get into SteamVR, you need to open the OVRMC settings and set LPF Beta to 0.7. Then set DEMA samples to 72.
With these settings I was able to fly in Elite Dangerous using yaw(!), pitch, and roll and the motion compensation kept me pretty much facing the windshield - as you would hope. I did some dogfighting and was not bothered much by latency. My previous experience was not as good, I suspect because the settings I used previously for OVRMC were not as good.
That sounds promising ☺️
Thank you, will try ASAP, hope this works for Rift S too.
I've been playing with the OVRMC settings a bit and here is what I found:
Still here @supatrupa ?
Made a post in the tutorial section, still no luck to make this work. Even have a quest 2 now.
Can you confirm that only Version 1.18.7 of Virtualdesktop is working?
Where to get the apk
Is any streamerapp version working?
By use the /DisableRenderPose flag you mean adding it via a shortcut or command line?
What does the streamerapp do if I even don't have to start virtualdesktop on my quest2?
Does this work with the YawVR tracker? (Driver is installed and works well in steam)
Thanks in advance
What is the status of Motion Compensation in combination with a HP Reverb G2 HMD?
I would like to use the Yaw VR set together with my HP Reverb G2 HMD in games like DCS, MS Flightsim and Starwars Squadrons.
Not sure but I wish pitch movement was compensated better https://youtu.be/t6kR5-HZV6M?t=94
Probably a latency issue, so perhaps some axis could be locked or dampened? I can't think of any Yaw compatible games where you'd really need to or want to lean forward. Does motion compensation in game engine provide some configuration for or locking / dampening of axis?
You could try oxrmc to see if that'll work better