Skip to content

Commit

Permalink
Merge pull request #9426 from microsoft/prerelease/2.6.0_stabilization
Browse files Browse the repository at this point in the history
Prerelease/2.6.0 stabilization
  • Loading branch information
David Kline authored Mar 4, 2021
2 parents 7919493 + 94faab6 commit 6ec5bb4
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 28 deletions.
27 changes: 13 additions & 14 deletions Documentation/GettingStartedWithMRTKAndXRSDK.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ XR SDK is Unity's [new XR pipeline in Unity 2019.3 and beyond](https://blogs.uni

## Prerequisites

To get started with the Mixed Reality Toolkit, follow [the provided steps](WelcomeToMRTK.md) to add MRTK to a project.
To get started with the Mixed Reality Toolkit, follow [the provided steps](Installation.md) to add MRTK to a project.

## Configuring Unity for the XR SDK pipeline

The XR SDK pipeline currently supports 3 platforms: Windows Mixed Reality, Oculus, and OpenXR. The sections below will cover the steps needed to configure XR SDK for each platform.

#### Windows Mixed Reality
### Windows Mixed Reality

1. Go into Unity's Package Manager and install the Windows XR Plugin package, which adds support for Windows Mixed Reality on XR SDK. This will pull down a few dependency packages as well. Ensure that the following all successfully installed:
1. XR Plugin Management
Expand All @@ -25,11 +25,11 @@ The XR SDK pipeline currently supports 3 platforms: Windows Mixed Reality, Oculu

![Plugin management](Images/XRSDK/PluginManagement.png)

#### Oculus
### Oculus

1. Follow the [How to configure Oculus Quest in MRTK using the XR SDK pipeline](CrossPlatform/OculusQuestMRTK.md) guide to the end. The guide outlines the steps needed to configure both Unity and MRTK to use the XR SDK pipeline for the Oculus Quest.

#### OpenXR (Preview)
### OpenXR (Preview)

> [!IMPORTANT]
> OpenXR in Unity is only supported on Unity 2020.2 and higher.
Expand All @@ -47,26 +47,25 @@ The XR SDK pipeline currently supports 3 platforms: Windows Mixed Reality, Oculu

![Plugin management](Images/XRSDK/PluginManagementOpenXR.png)

> [!NOTE]
> [!NOTE]
> If you have a pre-existing project that is using MRTK from UPM, make sure that the following line is in the **link.xml** file located in the MixedRealityToolkit.Generated folder.
`<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.OpenXR" preserve="all"/>`

> [!NOTE]
> For the initial release of MRTK and OpenXR, only the HoloLens 2 articulated hands and Windows Mixed Reality motion controllers are natively supported. Support for additional hardware will be added in upcoming releases.

### Configuring MRTK for the XR SDK pipeline
## Configuring MRTK for the XR SDK pipeline

If using OpenXR, choose "DefaultOpenXRConfigurationProfile" as the active profile or clone it to make customizations.

If using other XR runtimes in the XR Plug-in Management configuration, like Windows Mixed Reality or Oculus, choose "DefaultXRSDKConfigurationProfile" as the active profile or clone it to make customizations.

These profiles are set up with the correct systems and providers, where needed.
These profiles are set up with the correct systems and providers, where needed. See [the profiles docs](Profiles/Profiles.md#xr-sdk) for more information on profile and sample support with XR SDK.

To migrate an existing profile to XR SDK, the following services and data providers should be updated:

#### Camera
### Camera

From [`WindowsMixedReality.WindowsMixedRealityCameraSettings`](xref:Microsoft.MixedReality.Toolkit.WindowsMixedReality.WindowsMixedRealityCameraSettings)

Expand All @@ -80,7 +79,7 @@ to

![XR SDK camera settings](Images/XRSDK/CameraSystemXRSDK.png)

#### Input
### Input

From [`WindowsMixedReality.Input.WindowsMixedRealityDeviceManager`](xref:Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input.WindowsMixedRealityDeviceManager)

Expand All @@ -100,7 +99,7 @@ __Windows Mixed Reality__:

![XR SDK input settings](Images/XRSDK/InputSystemWMRXRSDK.png)

#### Boundary
### Boundary

From [`MixedRealityBoundarySystem`](xref:Microsoft.MixedReality.Toolkit.Boundary.MixedRealityBoundarySystem)

Expand All @@ -114,7 +113,7 @@ to

![XR SDK boundary settings](Images/XRSDK/BoundarySystemXRSDK.png)

#### Spatial awareness
### Spatial awareness

From [`WindowsMixedReality.SpatialAwareness.WindowsMixedRealitySpatialMeshObserver`](xref:Microsoft.MixedReality.Toolkit.WindowsMixedReality.SpatialAwareness.WindowsMixedRealitySpatialMeshObserver)

Expand All @@ -128,7 +127,7 @@ to

![XR SDK spatial awareness settings](Images/XRSDK/SpatialAwarenessXRSDK.png)

#### Controller mappings
### Controller mappings

If using custom controller mapping profiles, open one of them and run the Mixed Reality Toolkit -> Utilities -> Update -> Controller Mapping Profiles menu item to ensure the new XR SDK controller types are defined.

Expand Down
39 changes: 25 additions & 14 deletions Documentation/Profiles/Profiles.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
# Profiles

One of the main ways that the MRTK is configured is through the many profiles available in the foundation package. The main [`MixedRealityToolkit`](xref:Microsoft.MixedReality.Toolkit.MixedRealityToolkit) object in a scene will have the active profile, which is essentially a ScriptableObject. The top level MRTK Configuration Profile contains sub-profile data for each core of the primary core systems, each of which are designed to configure the behavior of their corresponding sub-systems. Furthermore, these sub-profiles are also Scriptable Objects and thus can contain references to other profile objects one level below them. There is essentially an entire tree of connected profiles that make up the configuration information for how to initialize the MRTK sub-systems and features.
One of the main ways that the MRTK is configured is through the profiles available in the foundation package. The main [`MixedRealityToolkit`](xref:Microsoft.MixedReality.Toolkit.MixedRealityToolkit) object in a scene will have the active profile, which is a ScriptableObject. The top level MRTK Configuration Profile contains sub-profile data for each core of the primary core systems, each of which are designed to configure the behavior of their corresponding subsystems. Furthermore, these sub-profiles are also ScriptableObjects and thus can contain references to other profile objects one level below them. There is essentially an entire tree of connected profiles that make up the configuration information for how to initialize the MRTK subsystems and features.

For example, the Input system's behavior is governed by an input system profile, for example the `DefaultMixedRealityInputSystemProfile` (Assets/MRTK/SDK/Profiles). It's highly recommended to always modify the profile ScriptableObject assets via the in-editor inspector.
For example, the input system's behavior is governed by an input system profile, like the `DefaultMixedRealityInputSystemProfile` (Assets/MRTK/SDK/Profiles).

<img src="../../Documentation/Images/Profiles/input_profile.png" width="650px" style="display:block;">
<sup>Profile Inspector</sup>

> [!NOTE]
> While it is intended that profiles can be swapped out at runtime, this [currently does not work](https://github.com/microsoft/MixedRealityToolkit-Unity/issues/4289)
## Background

Profiles are mainly intended to support specific scenarios across multiple devices, which are handled via the data providers. This way, an app can be designed as device-agnosticly as possible and let the MRTK and the profile's data providers handle cross-platform support.

There are also profiles built around the input features of specific devices, such as the HoloLens 1 profile which defaults to GGV-style interactions.

## XR SDK

Currently, there are two profiles provided for XR SDK, `DefaultXRSDKConfigurationProfile` and `DefaultHoloLens2XRSDKConfigurationProfile`. As a result, not all samples scenes are fully supported due to scene- and scenario-specific configurations. Any samples that use `DefaultMixedRealityToolkitConfigurationProfile` and `DefaultHoloLens2ConfigurationProfile` _can_ be swapped over to their corresponding XR SDK profiles. If you're using OpenXR with XR SDK, use the `DefaultOpenXRConfigurationProfile` instead.

Additional work is being undertaken to ease configuration and support all sample scenes, allowing for both legacy XR and XR SDK to be configured side-by-side. See issue [#9419](https://github.com/microsoft/MixedRealityToolkit-Unity/issues/9419) for tracking.

See [Configuring MRTK for the XR SDK pipeline](../GettingStartedWithMRTKAndXRSDK.md#configuring-mrtk-for-the-xr-sdk-pipeline) for more information on converting profiles between legacy XR and XR SDK.

## Default profile

Expand All @@ -27,21 +38,21 @@ of the default selected profile.

The key differences between the HoloLens2 profile and the Default Profile are:

**Disabled** Features:
**Disabled** features:

- [Boundary System](../Boundary/BoundarySystemGettingStarted.md)
- [Teleport System](../TeleportSystem/Overview.md)
- [Spatial Awareness System](../SpatialAwareness/SpatialAwarenessGettingStarted.md)
- [Boundary system](../Boundary/BoundarySystemGettingStarted.md)
- [Teleport system](../TeleportSystem/Overview.md)
- [Spatial awareness system](../SpatialAwareness/SpatialAwarenessGettingStarted.md)
- [Hand mesh visualization](../Input/HandTracking.md) (due to performance overhead)

**Enabled** Systems:
**Enabled** systems:

- The [Eye Tracking provider](../EyeTracking/EyeTracking_Main.md)
- The [eye tracking provider](../EyeTracking/EyeTracking_Main.md)
- Eye input simulation

Camera profile settings are set to match so that the editor quality and player quality are the same. This is different from the default camera profile where Opaque displays are set to a higher quality. This change means that in-editor quality will be lower, which will more closely match what will be rendered on the device.
Camera profile settings are set to match so that the editor quality and player quality are the same. This is different from the default camera profile where opaque displays are set to a higher quality. This change means that in-editor quality will be lower, which will more closely match what will be rendered on the device.

> [!NOTE]
> The Spatial Awareness system is turned off by default based on client feedback - it is an interesting visualization to see
initially but is typically turned off to avoid the visual distraction and the additional performance hit of
having it on. The system can be re-enabled by following the [instructions here](../SpatialAwareness/SpatialAwarenessGettingStarted.md).
> initially but is typically turned off to avoid the visual distraction and the additional performance hit of
> having it on. The system can be re-enabled by following the [instructions here](../SpatialAwareness/SpatialAwarenessGettingStarted.md).

0 comments on commit 6ec5bb4

Please sign in to comment.