Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
mm_develop's avatar
mm_develop
Honored Guest
9 months ago

Virtual Hands and Hand Tracking Missing in Unity Play Mode via Quest Link

Hi,
 
I’m experiencing an issue where hand tracking does not work through Quest Link in Play Mode within the Unity Editor — virtual hands do not appear. My setup includes Unity [6000.0.33f1], Meta XR All-in-One SDK [74.0.1], OpenXR Plugin [1.14.2], and Quest 2 (system version [v74.1020]). Hand tracking works when built as an APK on the Quest 2 but fails via Quest Link, despite being enabled in the headset settings.
 
The Unity console shows warnings like `XR_ERROR_HANDLE_INVALID` from `xrGetHandMeshFB` and `xrGetSkeleton2` (full list below), suggesting Quest Link isn’t passing hand tracking data correctly. 
 
```
Local Dimming feature is not supported
UnityEngine.Debug:LogWarning (object)
OVRManager:InitOVRManager () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2386)
OVRManager:Awake () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2508)
 
[OVRPlugin] [XRCMD][failure] [XR_ERROR_HANDLE_INVALID]: xrGetHandMeshFB(handTracker, &xrMesh), arvr\projects\integrations\OVRPlugin\Src\Util\CompositorOpenXR.cpp:9871 (arvr\projects\integrations\OVRPlugin\Src\Util/CompositorOpenXR.h:342)
UnityEngine.Debug:LogWarning (object)
OVRManager:OVRPluginLogCallback (OVRPlugin/LogLevel,intptr,int) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2156)
OVRPlugin:GetMesh (OVRPlugin/MeshType,OVRPlugin/Mesh&) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRPlugin.cs:9566)
OVRMesh:Initialize (OVRMesh/MeshType) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRMesh.cs:140)
OVRMesh:Awake () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRMesh.cs:102)
 
Your project uses a scriptable render pipeline. You can use Camera.stereoTargetEye only with the built-in renderer.
UnityEngine.Camera:set_stereoTargetEye (UnityEngine.StereoTargetEyeMask)
OVRCameraRig:EnsureGameObjectIntegrity () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRCameraRig.cs:609)
OVRCameraRig:Awake () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRCameraRig.cs:196)
 
Your project uses a scriptable render pipeline. You can use Camera.stereoTargetEye only with the built-in renderer.
UnityEngine.Camera:set_stereoTargetEye (UnityEngine.StereoTargetEyeMask)
OVRCameraRig:EnsureGameObjectIntegrity () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRCameraRig.cs:610)
OVRCameraRig:Awake () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRCameraRig.cs:196)
 
Your project uses a scriptable render pipeline. You can use Camera.stereoTargetEye only with the built-in renderer.
UnityEngine.Camera:set_stereoTargetEye (UnityEngine.StereoTargetEyeMask)
OVRCameraRig:EnsureGameObjectIntegrity () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRCameraRig.cs:611)
OVRCameraRig:Awake () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRCameraRig.cs:196)
 
[OVRPlugin] [XRCMD][failure] [XR_ERROR_HANDLE_INVALID]: xrGetHandMeshFB(handTracker, &xrMesh), arvr\projects\integrations\OVRPlugin\Src\Util\CompositorOpenXR.cpp:9360 (arvr\projects\integrations\OVRPlugin\Src\Util/CompositorOpenXR.h:342)
UnityEngine.Debug:LogWarning (object)
OVRManager:OVRPluginLogCallback (OVRPlugin/LogLevel,intptr,int) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2156)
OVRPlugin:GetSkeleton2 (OVRPlugin/SkeletonType,OVRPlugin/Skeleton2&) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRPlugin.cs:9118)
OVRSkeleton:Initialize () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRSkeleton.cs:595)
OVRSkeleton:Start () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRSkeleton.cs:563)
 
[OVRPlugin] [XRCMD][failure] [XR_ERROR_HANDLE_INVALID]: xrGetHandMeshFB(handTracker, &xrMesh), arvr\projects\integrations\OVRPlugin\Src\Util\CompositorOpenXR.cpp:9360 (arvr\projects\integrations\OVRPlugin\Src\Util/CompositorOpenXR.h:342)
UnityEngine.Debug:LogWarning (object)
OVRManager:OVRPluginLogCallback (OVRPlugin/LogLevel,intptr,int) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2156)
OVRPlugin:GetSkeleton2 (OVRPlugin/SkeletonType,OVRPlugin/Skeleton2&) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRPlugin.cs:9118)
OVRSkeleton:Initialize () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRSkeleton.cs:595)
OVRSkeleton:UpdateSkeleton () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRSkeleton.cs:857)
OVRSkeleton:Update () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/Util/OVRSkeleton.cs:850)
 
[OVRPlugin] [XRCMD][failure] [XR_ERROR_ACTIONSET_NOT_ATTACHED]: xrGetDeviceSampleRateFB(m_xrSession, &hapticActionInfo, &deviceSampleRate), arvr\projects\integrations\OVRPlugin\Src\Util\CompositorOpenXR.cpp:14563 (arvr\projects\integrations\OVRPlugin\Src\Util/CompositorOpenXR.h:342)
UnityEngine.Debug:LogWarning (object)
OVRManager:OVRPluginLogCallback (OVRPlugin/LogLevel,intptr,int) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2156)
OVRPlugin:GetControllerHapticsDesc (uint) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRPlugin.cs:5263)
OVRHaptics/Config:Load () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:76)
OVRHaptics/Config:.cctor () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:71)
OVRHaptics:.cctor () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:42)
OVRManager:LateUpdate () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:3398)
 
[OVRPlugin] [XRCMD][failure] [XR_ERROR_ACTIONSET_NOT_ATTACHED]: xrGetDeviceSampleRateFB(m_xrSession, &hapticActionInfo, &deviceSampleRate), arvr\projects\integrations\OVRPlugin\Src\Util\CompositorOpenXR.cpp:14563 (arvr\projects\integrations\OVRPlugin\Src\Util/CompositorOpenXR.h:342)
UnityEngine.Debug:LogWarning (object)
OVRManager:OVRPluginLogCallback (OVRPlugin/LogLevel,intptr,int) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2156)
OVRPlugin:GetControllerHapticsDesc (uint) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRPlugin.cs:5263)
OVRHaptics/Config:Load () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:76)
OVRHaptics:.cctor () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:42)
OVRManager:LateUpdate () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:3398)
 
[OVRPlugin] [XRCMD][failure] [XR_ERROR_ACTIONSET_NOT_ATTACHED]: xrGetDeviceSampleRateFB(m_xrSession, &hapticActionInfo, &deviceSampleRate), arvr\projects\integrations\OVRPlugin\Src\Util\CompositorOpenXR.cpp:14563 (arvr\projects\integrations\OVRPlugin\Src\Util/CompositorOpenXR.h:342)
UnityEngine.Debug:LogWarning (object)
OVRManager:OVRPluginLogCallback (OVRPlugin/LogLevel,intptr,int) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:2156)
OVRPlugin:GetControllerHapticsDesc (uint) (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRPlugin.cs:5263)
OVRHaptics/Config:Load () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:76)
OVRHaptics:Process () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRHaptics.cs:389)
OVRManager:LateUpdate () (at ./Library/PackageCache/com.meta.xr.sdk.core/Scripts/OVRManager.cs:3398)
```
 
Can you confirm if Quest Link fully supports hand tracking in this scenario? Are there specific Oculus app or firmware settings (e.g., experimental features) required to enable it?
 
Thank you,

1 Reply

Replies have been turned off for this discussion
  • Hands and controllers tracking over link during play mode do not work for existing projects as well.

    Unity version: 2022.3.22f1
    All in One SDK: 71.0.0