Forum Discussion
voidroom
3 years agoProtege
reset view/origin for roomscale relocates whole play area for current session
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 woul...
voidroom
3 years agoProtege
There is an information relative pose of the new centre, so it is possible to map it to the actual play area. It's a part of XrEventDataReferenceSpaceChangePending struct.
But this event may get called in two situations:
1. when the boundary gets updated
2. when the view is reset
I need to check how exactly this works (ie. if poseValid is set to true or false for both cases).
Maybe the "reset view" should have a different event? Or there should be a way to not relocate reference space?
voidroom
3 years agoProtege
Well, I finally checked it and it is not possible to map new centre to the actual play area as poseValid is set to false.
- yvettemuki3 years agoExplorer
Hi. I currently also encounter this problem. My application needs to place the virtual object in the same position as the physical one. But when the user is still in the application, but take off the headset for a while and then put it on again. The origin will automatically reset so the calibration mess up. I am also finding the solution to solve it. I think we can have a discussion.
- voidroom3 years agoProtege
Recently I got the issue confirmed by Oculus support and I hope that it will be fixed soon.
Until then I have a working hack-around solution. When I receive event XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING, I store info that I need to reinit OpenXR. After all events are processed I do the reinit, ie. I close OpenXR system, create it again. Then it is set properly again.
This is not a good solution as it introduces a visible judder due to the reinitialisation. And I do it for all platforms ATM. It's not elegant but it works. At least for recenter request. I haven't checked the issue you mentioned - taking off the headset and putting it on again. But I had a similar issue happening. I just didn't connect the dots.
Oh, mind that this solution is how I implemented it in my own engine but I think that it should be still possible with Unity/Unreal (if they don't handle it). It should be possible to catch that event and to reinit at other time.
- yvettemuki3 years agoExplorer
Thanks so much for your help! But I can not find the access in Unity to manipulate the event you mentioned. Maybe Unity didn't support this access. I am still finding the solution.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 4 years agoAnonymous