-
Notifications
You must be signed in to change notification settings - Fork 2.1k
MRTK-Quest integration/documentation #8259
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MRTK-Quest integration/documentation #8259
Conversation
Assets/MRTK/Providers/Oculus/Editor/OculusConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK/Providers/Oculus/Editor/OculusConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK/Providers/Oculus/Editor/OculusConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK/Providers/Oculus/Editor/OculusConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK/Providers/Oculus/Editor/OculusConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK/Providers/Oculus/Editor/OculusConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
|
Do you think we need to bring in the entirety of MRTK-Quest to enable hand tracking on XR SDK? It feels strange to me to have to use an extension built entirely on the Oculus package in order to light something up in XR SDK. And won't that mean controllers are now tracked by both device managers? They feel like distinct managers that aren't compatible together. Can we build on the Oculus package directly instead and only reference the hand components? Since, either way (our own hand components vs MRTK-Quest), the Oculus package is required, right? |
Regarding issues with the controllers being tracked with both device managers, the only issue that we can see within the quest is that you'll see both controller visualizers, which in our case, means you see the basic 3-axis visualization as well as MRTK-Quest's hands. I don't think we need to include all of MRTK-Quest in order to light up just handtracking, though the MRTK-Quest controller is only 1 file which we don't need to include in our XRSDK controller definitions. |
38dd5fc to
31b5850
Compare
Won't that mean two sets of pointers for the controllers too? Which would mean two input events for every button press.
I think we should try to light this up without any of MRTK-Quest if possible (well, that or merge them, but I feel like they both have their uses cases separately?). It feels to me like there's too much overlap to have them running at the same time. It also makes some assumptions about camera control and scene set-up that's specific to the OVRPlugin that might be good to revisit, since we'll be using XR SDK to control the camera. Of course, you've been looking into this more than me! So, you'll know best, but it feels like something self-contained to our existing provider would work best imo. |
|
The Build and deploy your project to Oculus Quest section has a broken image link. |
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
| OVRProjectConfig projectConfig = AssetDatabase.LoadAssetAtPath<OVRProjectConfig>(configPath); | ||
| projectConfig.handTrackingSupport = OVRProjectConfig.HandTrackingSupport.ControllersAndHands; | ||
| AssetDatabase.Refresh(); | ||
| #endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also wondering - if OCULUSINTEGRATION_PRESENT isn't set, I assume that having this menu item greyed out would be optimal, but also this would take effort to figure out if it's needed - maybe just log something to console if this isn't set (i.e. "we did nothing because Oculus Integration hasn't been configured"?)
…nChecker.cs Co-authored-by: Will <wiwei@microsoft.com>
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK.ThirdParty/MRTK-Quest/Editor/MRTKQuestConfigurationChecker.cs
Outdated
Show resolved
Hide resolved
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
Assets/MRTK/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest/Art/Shaders/GradientSkybox.shader
Outdated
Show resolved
Hide resolved
...y/MRTK-Quest-Utils/Microsoft.MixedReality.Toolkit.XRSDK.Oculus.Handtracking.Utilities.asmdef
Show resolved
Hide resolved
...oviders/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest/Scripts/Input/Controllers/OculusQuestHand.cs
Outdated
Show resolved
Hide resolved
...ts/MRTK/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest/Scripts/Config/MRTKOculusConfig.cs
Show resolved
Hide resolved
| #endregion IMixedRealityHand Implementation | ||
|
|
||
|
|
||
| public override MixedRealityInteractionMapping[] DefaultInteractions => new[] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe a stretch goal, but it'd be great if we eventually reconcile this class with the ArticulatedHandDefinition class, which tries to standardize several common hand concepts, like these default interactions.
Other hand classes use it like
MixedRealityToolkit-Unity/Assets/MRTK/Providers/LeapMotion/LeapMotionArticulatedHand.cs
Line 43 in 0fa524a
| public override MixedRealityInteractionMapping[] DefaultInteractions => handDefinition?.DefaultInteractions; |
| } | ||
|
|
||
| /* | ||
| private void UpdateTeleport() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should all this teleport logic just be removed, since it's commented out? I think there are some other references to it, and some custom teleport classes being checked in (like CustomTeleportCursorHandler) and a CustomTeleportPointer reference higher up in this class.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we want to add it back in after this first round of PRs, I was going to leave it in to make it easier to test/vet when we get to that point
| if (useAvatarHands) | ||
| { | ||
| // Initialize the local avatar controller | ||
| GameObject.Instantiate(MRTKOculusConfig.Instance.LocalAvatarPrefab, cameraRig.trackingSpace); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is maybe a larger question, but do you know if we're able to talk directly to whatever APIs this avatar prefab gets the hand data from instead of needing dependencies on in-scene components from another SDK / toolkit?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The local avatar prefab is just used to show some kind of hand model when using the quest controllers.
How things look when using the quest controllers
Without MRTK Quest
just the standard 3 axis XRSDK controllers
With MRTK Quest
When Render Avatar Hands checked you get 3d hand meshes thanks so the LocalAvatarPrefab

If Render Avatar Hands is unchecked you get generic oculus quest controllers visualized
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder in this case if we need a dependency on something in the Oculus package for rendering, or could we use the rigged hands that were added recently? Since I think they're based on the joint events, it should "just work"™ and it'll be done in a bit of a more cross-platform way
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@RogPodge Did this get looked into or was it added?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We ended up keeping the dependency on the Oculus package for the time being, I'll make an issue to track this improvement in a future PR.
Co-authored-by: Kurtis <kurtie@microsoft.com>
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
david-c-kline
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a few questions and suggestions
...y/MRTK-Quest-Utils/Microsoft.MixedReality.Toolkit.XRSDK.Oculus.Handtracking.Utilities.asmdef
Outdated
Show resolved
Hide resolved
...K/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest-Utils/Scripts/HandInput/HandPoseUtils.cs
Outdated
Show resolved
Hide resolved
...K/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest-Utils/Scripts/HandInput/HandPoseUtils.cs
Outdated
Show resolved
Hide resolved
...K/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest-Utils/Scripts/HandInput/HandPoseUtils.cs
Outdated
Show resolved
Hide resolved
...K/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest-Utils/Scripts/HandInput/HandPoseUtils.cs
Outdated
Show resolved
Hide resolved
...ts/MRTK/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest/Scripts/Config/MRTKOculusConfig.cs
Outdated
Show resolved
Hide resolved
...TK/Providers/Oculus/XRSDK/MRTK.ThirdParty/MRTK-Quest/Scripts/Input/Controllers/OculusHand.cs
Outdated
Show resolved
Hide resolved
Assets/MRTK/Providers/Oculus/XRSDK/Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef
Show resolved
Hide resolved
…Utils/Scripts/HandInput/HandPoseUtils.cs Co-authored-by: David Kline <davidkl@microsoft.com>
Co-authored-by: David Kline <davidkl@microsoft.com>
…initions derive from articulated hands
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
|
currently failing because of asmdef issues and issues around the unity versions, fixing now |
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
Overview
PR incorporating MRTK-Quest into MRTK. This PR is focused on getting in the MRTK-Quest handtracking components into MRTK in order to greenlight that feature for developers. MRTK-Quest as a whole as some other features (some hand gesture utilities, hand teleport pointer) which need additional evaluation and work before pulling them in.
One thing to note is that this PR has a commented out section in OculusQuestHand with teleport pointer code. That has been left in for now to make it easier to add back in a future PR.
Changes