Open IssueSyncBot opened 10 months ago
MickGerrit
I was having the same issue... I walked into this issue because I tried to make passthrough working by importing Oculus Integration. With MetaXR enabled, not only does the ray not folllow hands anymore, I could also not do any pinch interactions. But... I was able to press buttons with the tip of my index finger
Phantomxm2021
I was having the same issue. And I have debug the MRTKRayInteractor
-> Update
[the aimPose
and devicePose
value are always 0 ]
Any work around besides disabling the Meta XR feature group entirely? Any other thoughts\ideas on how to get these important features to work?
So, there is still no update/workaround for this ?
Not all features of the Meta XR feature group are available, but with Unity OpenXR: Meta, pass-through and some features are available without Oculus Integration. However, I am just a user, so I am not sure if this workaround is correct.
Thank you for this message. I will use this workaround/solution until they officially support it.
I am also facing exactly the same thing. I want to switch between pass through and no pass through in the software, but when I encountered a problem, I had to check MetaXR to achieve pass through. However, there was a problem with the hand ray and the same problem occurred. When I disable MetaXR, pass through fails. Is there any update on this issue at present?
I face the same thing, in unity 2022.3.26f1 and meta XR core SDK 64.0.0, i am not use Oculus Integration. when i uncheck Meta XR under OpenXR Feature Groups, the ray is comeback. Have anyone solved this problem or other solution find?
update: now i am using Unity OpenXR: Meta package to open passthrough, its works. i just wanna use passthrough, so if you guys have same requirement, just download this package (com.unity.xr.meta-openxr)
Hi, still no workaround using meta sdk for this ?
Update @spg666 : I managed to have hands and controllers work in far while keeping meta xr sdk by modifying a few prefabs, scripts and the interaction profile.
Now, mind that the polyfill hand is working for quest hands, but when meta xr enabled, the values aren't read in polyfill but in "InputAction", which isn't null but all values are at zero. Now we could just invert the order in the PoseSourceList, but that might cause issues if we're doing crossplatform, but more importantly makes Quest 3 controllers incorrect (the ray will go from the hand and not the tip of the controller). So we need to modify the FallbackCompositePoseSource script so that we can ignore InputAction values (and so fallback on polyfill) with quest hands, but not with any other controller.
public bool IsController { get; set; } = false;
/// <summary>
/// Tries to get a pose from each pose source in order, returning the result of the first pose source
/// which returns a success.
/// </summary>
public bool TryGetPose(out Pose pose)
{
for (int i = 0; i < poseSourceList.Length; i++)
{
IPoseSource currentPoseSource = poseSourceList[i];
if (currentPoseSource != null && currentPoseSource.TryGetPose(out pose))
{
#if UNITY_ANDROID && !UNITY_EDITOR
//We want to use polyfill source when using Quest hands, but InputAction works better with meta controllers.
if (currentPoseSource is InputActionPoseSource && !IsController)
{
continue;
}
#endif
return true;
}
}
pose = Pose.identity;
return false;
}
Now those modifications implies other modifications, this time in MRTKRayInteractor :
protected override void Start()
{
base.Start();
if (controllerDetectedAction == null || controllerDetectedAction.action == null) { return; }
controllerDetectedAction.action.started += ControllerStarted;
controllerDetectedAction.action.canceled += ControllerEnded;
controllerDetectedAction.EnableDirectAction();
}
private void ControllerStarted(InputAction.CallbackContext context)
{
if (context.control.device is UnityInputSystem.XR.XRController)
{
isController = true;
}
}
private void ControllerEnded(InputAction.CallbackContext context)
{
if (context.control.device is UnityInputSystem.XR.XRController)
{
isController = false;
}
}
if (AimPoseSource is FallbackCompositePoseSource poseSource)
{
poseSource.IsController = isController;
if (poseSource.TryGetPose(out Pose aimPose))
{
transform.SetPositionAndRotation(aimPose.position, aimPose.rotation);
if (hasSelection)
{
float distanceRatio = PoseUtilities.GetDistanceToBody(aimPose) / refDistance;
attachTransform.localPosition = new Vector3(initialLocalAttach.position.x,
initialLocalAttach.position.y, initialLocalAttach.position.z * distanceRatio);
}
}
}
else
{ [current code] }
Now we have : hand tracking, ray display, BUT ! The pinch action isn't detected any more.
(provider comes from meta aim package from openxr-meta)
STEP 5 - My OpenXR settings are as follows :
There you go !
Original issue opened by:
@spg666
Describe the bug
When the MetaXR feature is enabled in the OpenXR Feature Group, the Ray is no longer displayed in Quest hand tracking.
To reproduce
Steps to reproduce the behavior:
Expected behavior
Even when the MetaXR feature is enabled, the Ray should still be visible during hand tracking on Quest.
Your setup (please complete the following information)
Target platform (please complete the following information)
Additional context
When the MetaXR feature is deactivated within the OpenXR Feature Group, the Ray properly appears during hand tracking on the Quest. Furthermore, while the hand tracking system allows for successful button interaction, it fails to respond to the ObjectManipulator. The Ray is visible when using Oculus Link to run the application within the Unity Editor.
ISSUE MIGRATION
Issue migrated from: https://github.com/microsoft/MixedRealityToolkit-Unity/issues/11553