Forum Discussion
sourcenity
5 years agoStart Member
Keeping a Guardian Room Scale Playspace Centered at 0,0,0
Hi.
The Oculus Quest/Rift software allows the setting of a Guardian space, which has a defined width, length, and center in any given room. The Guardian does not change when resetting the view or taking off the glasses, waiting for them to go to standby, and turning it on again.
However, when resetting ("centering") the view or taking off/putting on the glasses, the center point and orientation of the user changes. In particular, the current center of the user changes to 0,0,0 in Unity, but this is no longer the center of the Guardian.
My question: Is there any way to keep the Guardian center at 0,0,0 in all cases, even if the user resets their view?
Thank you.
Anonymous Unfortunately, the Oculus integration is only informed that a change took place, but the recentering of Unity's world center (0,0,0) takes place outside of the integration (I believe within the package DLLs, but definitely not as part of the asset). So, we can't just ignore the call.
It is possible to use the OVRBoundary* methods to grab the actual center of the guardian and then move the rig in the opposite direction and rotation, but this is more of a hack than a solution.
However, I did find a solution: On Quest, you can switch the TrackingOrigin from Eye or Floor to Stage, which will keep Unity's world center and orientation in the center of the guardian. This is what I want, so it's fine. It doesn't work on Quest-via-Rift, though, and I haven't tested it on the purely PC hardware (Rift).
Thanks.
3 Replies
Replies have been turned off for this discussion
- Anonymous
If you're using the Oculus Integration, I believe these situations will call OVRDisplay.RecenterPose(). You could modify this method in the Oculus Integration so it doesn't do anything in these situations?
Alternatively you could have a calibration step in your application where you make the user stand on a specific spot and call OVRBoundary.TestNode(Node.Head, BoundaryTyle.PlayArea) to make sure they're in the right spot within the guardian. If they're not you could call OVRDisplay.RecenterPose() to reset calibration? (You'd probably also need to make sure they're facing towards a specific direction too.)
- sourcenityStart Member
Anonymous Unfortunately, the Oculus integration is only informed that a change took place, but the recentering of Unity's world center (0,0,0) takes place outside of the integration (I believe within the package DLLs, but definitely not as part of the asset). So, we can't just ignore the call.
It is possible to use the OVRBoundary* methods to grab the actual center of the guardian and then move the rig in the opposite direction and rotation, but this is more of a hack than a solution.
However, I did find a solution: On Quest, you can switch the TrackingOrigin from Eye or Floor to Stage, which will keep Unity's world center and orientation in the center of the guardian. This is what I want, so it's fine. It doesn't work on Quest-via-Rift, though, and I haven't tested it on the purely PC hardware (Rift).
Thanks.
- MartinFnitraMProtege
Setting to Stage does not prevent recentering when de device goes to sleep and the problem persists...
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
- 2 years ago
- 12 months ago