vittodev
2 months agoHonored Guest
Problem with OVROverlayCanvas UI shifts after resume from sleep mode
Platform: Meta Quest 3
Unity Version: 6.0.37
Meta SDK Version: 76.0.0 (com.meta.xr.sdk.core)
XR Backend: OpenXR
Rendering: URP
Issue Type: UI / Overlay behavior after suspend-resume cycle
:question_mark:Problem:
I'm using `OVROverlayCanvas` to render a UI overlay in VR, which works fine initially.
However, after the user **suspends the device (sleep mode) and resumes**, the overlay behaves incorrectly:
- The UI appears to **move with the user’s view** or “sticks to the face”.
- Even though the canvas GameObject retains its original transform, the overlay seems to be rendered in a wrong reference frame.
---
:white_heavy_check_mark: What I’ve already tried:
- Called `SetFrameDirty()` and `UpdateOverlaySettings()` on resume (`OnApplicationFocus`, `OnApplicationPause`).
- Restored original `transform.position` and `rotation`.
- Avoided `SetActive(false)`.
- Reparented temporarily to force matrix recalculation (this sometimes helps).
- Ensured the canvas is not under the OVRCameraRig or CenterEyeAnchor.
- Only one `OVROverlayCanvas` is active.
---
🔍Additional Notes:
- Using `CanvasShape = Flat`.
- Using `OverlayType = Underlay`.
- This issue only happens after suspend/resume. Not reproducible during normal runtime.
---
💬 Question:
Is this a known issue with OVROverlayCanvas in Quest 3?
- Is there any **official workaround or best practice** to force correct projection/rendering after resume?
- Should I manually re-initialize the overlay or recreate the canvas entirely?
- Would switching to a standard `World Space Canvas` avoid this behavior?
Thanks in advance for any suggestions or insights!