Solved Question to BMS VR devs: does BMS alters VR player space?
-
Hi,
I’m trying to diagnose annoying behavior of VR environment, I’ve observed recently both on Linux And Windows when using ALVR to stream data to the HMD.
Core of the issue is, whole SteamVR environment start to shift once I commit to the 3D world in BMS. It looks like SteamVR is trying to recenter with every head movement. it makes whole camera pov jump a little left/right/up/down causing massive spikes in latency and makes me feel dizzy. This behavior starts on the 3D world load screen, under Windows it pauses once player is in 3D world but comes back when plaeer exits 3D world back to UI. Under Linux once it starts it’s present all the time. Closing BMS makes it stop.
So far I’ve observed this using ALVR, VirtualDisktop seem to be unaffected. One of the ALVR devs noted , pattern looks like BMS is trying to change player space, hence the question, what BMS is doing upon entering 3D world, that could trigger such behavior.
-
-
Somebody even made a bug report on this issue, which shed some light on what’s going on:
https://github.com/alvr-org/ALVR/issues/2013Can any dev confirm, BMS uses this functionality to reset the view at the beginning of 3D session?
-
@Xeno said in Question to BMS VR devs: does BMS alters VR player space?:
this functionality to reset the view at the begin
Xeno, which OpenVR call do you need to know exactly? This will help narrow the problem down.
-
Thanks for an answer, according to bugreport it’d most likely be one of those:
- SetWorkingStandingZeroPoseToRawTrackingPose(matrix)
- SetWorkingSeatedZeroPoseToRawTrackingPose(matrix)
with a matrix where the basis is not identity.
In general suspicion is, some games which reset playerspace to adjust fov to actual player position cause ALVR to go bonkers.
From my observations BMS does something similar when 3D world is loading. -
@Xeno said in Question to BMS VR devs: does BMS alters VR player space?:
SetWorkingSeatedZeroPoseToRawTrackingPose
I didn’t find either of those calls, but we are using the C++ API.
In any case, I see a call to
vr_compositor_->SetTrackingSpace(vr::ETrackingUniverseOrigin::TrackingUniverseSeated)
right after initialization. -
-