You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When switching to the OpenXR Plugin OVRPlugin.GetSystemHeadsetType() always returns Oculus_Quest_2 even when using other devices such as the Quest 3
This is significant because when using the interaction package this function call is used to determine which controllers to show the users by OVRControllerHelper.
Using the Oculus XR Plugin the OVRPlugin.GetSystemHeadsetType() returns the correct headset type.
Setup
Unity: 2021.3.36f1
Packages: Meta XR Core SDK v 62.0.0; OpenXR Plugin 1.10.0; XR Plugin Management 4.4.0
Device: Quest 3, OS version 63.0.0.399.366
Repro
Add the following script to the sample project
usingTMPro;usingUnityEngine;publicclassGetSystemHeadsetType:MonoBehaviour{TextMeshPro_text;// Start is called before the first frame updatevoidStart(){vargo=newGameObject("Debug Text");_text=go.AddComponent<TextMeshPro>();varrectTransform=go.GetComponent<RectTransform>();rectTransform.position=newVector3(0,0.8f,1);rectTransform.localScale=newVector3(0.02f,0.02f,0.02f);rectTransform.sizeDelta=newVector2(50,5);}// Update is called once per framevoidUpdate(){_text.text=$"GetSystemHeadsetType {OVRPlugin.GetSystemHeadsetType()}";}}
Add the script to any game object in the StartScene.unity
Save the scene
Build using Oculus > Samples > Build Starter Scene and deploy to device
Run the app on a Quest 3 and observe the text field saying "GetSystemHeadsetType Meta_Quest_3"
Back in Unity, install the OpenXR Plugin package
Under Project Settings > XR Plug-in Management switch Plug-in Provider to OpenXR
Build using Oculus > Samples > Build Starter Scene and deploy to device
Run the app and observe the text field saying "GetSystemHeadsetType Oculus_Quest_2"
Expected Results
OVRPlugin.GetSystemHeadsetType() returns the headset type the app is running on, as it does with the Oculus XR plugin.
The cause of this bug seems to be due to the missing OpenXR extension XR_META_headset_id. You can create a custom OpenXR feature (as mentioned in this issue #12) which includes that extension and the call to OVRPlugin.GetSystemHeadsetType() now works
The text was updated successfully, but these errors were encountered:
Hey! Curious if you saw any logs in adb that said anything about the XR_META_headset_id extension? The MetaXRFeature.cs should contain the new XR_META_headset_id extension that should allow for the correct headset type in OpenXR. If this extension isn't enabled there's a fallback to the old system which doesn't contain Quest 3.
Description
When switching to the OpenXR Plugin OVRPlugin.GetSystemHeadsetType() always returns Oculus_Quest_2 even when using other devices such as the Quest 3
This is significant because when using the interaction package this function call is used to determine which controllers to show the users by OVRControllerHelper.
Using the Oculus XR Plugin the OVRPlugin.GetSystemHeadsetType() returns the correct headset type.
Setup
Unity: 2021.3.36f1
Packages: Meta XR Core SDK v 62.0.0; OpenXR Plugin 1.10.0; XR Plugin Management 4.4.0
Device: Quest 3, OS version 63.0.0.399.366
Repro
Add the following script to the sample project
Expected Results
OVRPlugin.GetSystemHeadsetType() returns the headset type the app is running on, as it does with the Oculus XR plugin.
Actual Results
OVRManager.IsPassthroughRecommended() always returns Oculus_Quest_2
Workarounds
The cause of this bug seems to be due to the missing OpenXR extension
XR_META_headset_id
. You can create a custom OpenXR feature (as mentioned in this issue #12) which includes that extension and the call to OVRPlugin.GetSystemHeadsetType() now worksThe text was updated successfully, but these errors were encountered: