Skip to content

Conversation

@RogPodge
Copy link
Contributor

@RogPodge RogPodge commented Aug 5, 2020

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

@RogPodge RogPodge added Documentation DO NOT MERGE Platform - Oculus Issues specific to Oculus devices and the Oculus platform labels Aug 5, 2020
@RogPodge RogPodge requested review from david-c-kline and wiwei August 5, 2020 23:18
@RogPodge RogPodge self-assigned this Aug 5, 2020
@RogPodge RogPodge changed the title MRTK-Quest packaging pipeline/documentation [Draft] MRTK-Quest packaging pipeline/documentation Aug 6, 2020
@RogPodge RogPodge requested a review from keveleigh as a code owner August 11, 2020 20:03
@keveleigh
Copy link
Contributor

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?

@RogPodge
Copy link
Contributor Author

RogPodge commented Aug 11, 2020

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.

@keveleigh
Copy link
Contributor

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

Won't that mean two sets of pointers for the controllers too? Which would mean two input events for every button press.

I don't think we need to include all of MRTK-Quest in order to light up just handtracking

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.

@elbuhofantasma
Copy link
Contributor

OVRProjectConfig projectConfig = AssetDatabase.LoadAssetAtPath<OVRProjectConfig>(configPath);
projectConfig.handTrackingSupport = OVRProjectConfig.HandTrackingSupport.ControllersAndHands;
AssetDatabase.Refresh();
#endif
Copy link
Contributor

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>
@RogPodge
Copy link
Contributor Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

#endregion IMixedRealityHand Implementation


public override MixedRealityInteractionMapping[] DefaultInteractions => new[]
Copy link
Contributor

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

public override MixedRealityInteractionMapping[] DefaultInteractions => handDefinition?.DefaultInteractions;

}

/*
private void UpdateTeleport()
Copy link
Contributor

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.

Copy link
Contributor Author

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);
Copy link
Contributor

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?

Copy link
Contributor Author

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
image

If Render Avatar Hands is unchecked you get generic oculus quest controllers visualized

Copy link
Contributor

@keveleigh keveleigh Aug 22, 2020

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

Copy link
Contributor

@keveleigh keveleigh Sep 1, 2020

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?

Copy link
Contributor Author

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.

@RogPodge
Copy link
Contributor Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

Copy link

@david-c-kline david-c-kline left a 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

RogPodge and others added 4 commits August 24, 2020 13:19
…Utils/Scripts/HandInput/HandPoseUtils.cs

Co-authored-by: David Kline <davidkl@microsoft.com>
Co-authored-by: David Kline <davidkl@microsoft.com>
@david-c-kline
Copy link

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@RogPodge
Copy link
Contributor Author

currently failing because of asmdef issues and issues around the unity versions, fixing now

@RogPodge
Copy link
Contributor Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@RogPodge RogPodge merged commit e72cfb3 into microsoft:mrtk_development Aug 25, 2020
@RogPodge RogPodge changed the title MRTK-Quest packaging pipeline/documentation MRTK-Quest integration/documentation Sep 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Documentation Platform - Oculus Issues specific to Oculus devices and the Oculus platform

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Oculus Quest Support for MRTK

7 participants