When I reset view/origin for roomscale for Oculus (PC), it seems that the whole play area is relocated, ie. instead of being wherever I was relative to my boundary, OpenXR gives pose just like I would be in the centre of the play area. And there is no way to learn where play area should be.
As my game relies heavily on actual location within the boundary, resetting view/origin breaks a lot. One could argue that the player should not reset view. Or that’s it not consistent with other APIs.
If I do the same thing with Oculus SDK or VRAPI, I get still results against the play area. Well, that’s not entirely true, as the origin might be offset, ie. not at 0,0,0 but there’s enough information to know where I am relative to the actual boundary. With OpenXR, there’s no play area anchoring and resetting moves us around.
I use resetting view for the menu to show stuff in front of the player, works especially well on Quest where resetting happens without any popups.
Some details: I have two reference spaces, one is
XR_REFERENCE_SPACE_TYPE_VIEW to be view/head. The other is
XR_REFERENCE_SPACE_TYPE_STAGE for roomscale.
Is that the intended behaviour? I suspect it might be a bug?
What I’d expect, one of two:
- When reset happens, comes
XrEventDataReferenceSpaceChangePendingevent, it should only indicate that something like that happened but the pose should be still relative to original play area and it’s up to the programmer to handle resetting inside the game.
xrGetReferenceSpaceBoundsRectshould return not only the size of the play area but also location and orientation of its centre.