FireFlyForLife / rlOpenXR

OpenXR binding for the Raylib game framework
MIT License
21 stars 3 forks source link

Camera doesn't follow headset accurately #1

Closed Sirvoid closed 1 year ago

Sirvoid commented 1 year ago

Built the demos using cmake and tested them on Quest 2 with link and airlink in 90hz and 120hz. The camera doesn't follow the headset accurately making me sick very quickly. Tried also with virtual desktop and steamvr but it's even worst. The image is stuttering like crazy when moving my head but only in the hmd view. I don't believe it is an issue on my end as I do pcvr using those everyday and everything works perfectly.

FireFlyForLife commented 1 year ago

Hi! Sorry to hear it's not working well with the quest and my delay to get back to you.

I only have a oculus rift myself. But I might be able to debug with a friend who has a quest 2.

In the meantime, could you try moving the rlOpenXRUpdateCamera() call to directly after rlOpenXRBegin()? the rlOpenXRBegin call is also responsible for waiting until the next frame (it's own VSync sort of) and updating the time which will be used by the rlOpenXRUpdateCamera call.

Sirvoid commented 1 year ago

Hi! Sorry to hear it's not working well with the quest and my delay to get back to you.

I only have a oculus rift myself. But I might be able to debug with a friend who has a quest 2.

In the meantime, could you try moving the rlOpenXRUpdateCamera() call to directly after rlOpenXRBegin()? the rlOpenXRBegin call is also responsible for waiting until the next frame (it's own VSync sort of) and updating the time which will be used by the rlOpenXRUpdateCamera call.

Sorry for the late reply, I just tried it and it seems to be working, thanks!

FireFlyForLife commented 1 year ago

I've moved the xrWaitFrame() call from rlOpenXRBegin() to rlOpenXRUpdate(). According to the OpenXR documentation this makes sense to do. And fixes your issue in the process!