Skip to content

Commit

Permalink
Merge pull request #7268 from microsoft/prerelease/2.3.0_stabilization
Browse files Browse the repository at this point in the history
Prerelease/2.3.0 stabilization -> dev
  • Loading branch information
David Kline committed Feb 10, 2020
2 parents d296702 + 9c2eb91 commit 02405ec
Show file tree
Hide file tree
Showing 24 changed files with 191 additions and 106 deletions.
2 changes: 1 addition & 1 deletion Assets/MixedReality.Toolkit.Foundation.nuspec
Expand Up @@ -14,7 +14,7 @@
<releaseNotes>$releaseNotes$</releaseNotes>
<tags>Unity MixedReality MixedRealityToolkit MRTK</tags>
<dependencies>
<dependency id="Microsoft.Windows.MixedReality.DotNetWinRT" version="0.5.1043" />
<dependency id="Microsoft.Windows.MixedReality.DotNetWinRT" version="0.5.1045" />
</dependencies>
<contentFiles>
<files include="any\any\.PkgSrc\**" buildAction="None" copyToOutput="false" />
Expand Down
Expand Up @@ -19,7 +19,7 @@
<Import Project="Sdk.props" Sdk="Microsoft.Build.NoTargets" Version="1.0.85" />

<ItemGroup>
<PackageReference Include="Microsoft.Windows.MixedReality.DotNetWinRT" Version="0.5.1043" />
<PackageReference Include="Microsoft.Windows.MixedReality.DotNetWinRT" Version="0.5.1045" />
</ItemGroup>

<Import Project="Sdk.targets" Sdk="Microsoft.Build.NoTargets" Version="1.0.85" />
Expand Down
Expand Up @@ -6,7 +6,6 @@
using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine;

using MRConfig = Microsoft.MixedReality.Toolkit.Utilities.Editor.MixedRealityProjectConfigurator.Configurations;

namespace Microsoft.MixedReality.Toolkit.Utilities.Editor
Expand All @@ -20,7 +19,10 @@ public class MixedRealityProjectConfiguratorWindow : EditorWindow
{ MRConfig.VirtualRealitySupported, true },
{ MRConfig.SinglePassInstancing, true },
{ MRConfig.SpatialAwarenessLayer, true },
// Issue #7239: Disable MSBuild for Unity on Unity 2019.3 and newer while the cause of the loop is investigated
#if !UNITY_2019_3_OR_NEWER
{ MRConfig.EnableMSBuildForUnity, true },
#endif // !UNITY_2019_3_OR_NEWER
// UWP Capabilities
{ MRConfig.MicrophoneCapability, true },
{ MRConfig.InternetClientCapability, true },
Expand Down Expand Up @@ -92,22 +94,26 @@ private void OnGUI()
{
MixedRealityInspectorUtility.RenderMixedRealityToolkitLogo();

string foldoutHeader;

if (!MixedRealityProjectConfigurator.IsProjectConfigured())
{
foldoutHeader = "Modify Configurations";
RenderChoiceDialog();

EditorGUILayout.Space();

showConfigurations = EditorGUILayout.Foldout(showConfigurations, "Modify Configurations", true);
if (showConfigurations)
{
RenderConfigurations();
}
}
else
{
foldoutHeader = "Configurations";
RenderConfiguredConfirmation();
}

EditorGUILayout.Space();

showConfigurations = EditorGUILayout.Foldout(showConfigurations, foldoutHeader, true);
if (showConfigurations)
{
RenderConfigurations();
}
}

private void RenderConfiguredConfirmation()
Expand Down Expand Up @@ -178,18 +184,21 @@ private void RenderConfigurations()

if (MixedRealityOptimizeUtils.IsBuildTargetUWP())
{
#if !UNITY_2019_3_OR_NEWER
EditorGUILayout.LabelField("MSBuild for Unity Support", EditorStyles.boldLabel);
EditorGUILayout.HelpBox("Enable this for additional HoloLens 2 features, like hand joint remoting and depth LSR mode.", MessageType.Info);
RenderToggle(MRConfig.EnableMSBuildForUnity, "Enable MSBuild for Unity");
EditorGUILayout.Space();
#endif // !UNITY_2019_3_OR_NEWER


EditorGUILayout.LabelField("UWP Capabilities", EditorStyles.boldLabel);
RenderToggle(MRConfig.MicrophoneCapability, "Enable Microphone Capability");
RenderToggle(MRConfig.InternetClientCapability, "Enable Internet Client Capability");
RenderToggle(MRConfig.SpatialPerceptionCapability, "Enable Spatial Perception Capability");
#if UNITY_2019_3_OR_NEWER
RenderToggle(MRConfig.EyeTrackingCapability, "Enable Eye Gaze Input Capability");
#endif
#endif // UNITY_2019_3_OR_NEWER
}
else
{
Expand All @@ -198,7 +207,7 @@ private void RenderConfigurations()
trackToggles[MRConfig.SpatialPerceptionCapability] = false;
#if UNITY_2019_3_OR_NEWER
trackToggles[MRConfig.EyeTrackingCapability] = false;
#endif
#endif // UNITY_2019_3_OR_NEWER
}

if (MixedRealityOptimizeUtils.IsBuildTargetAndroid())
Expand Down
Expand Up @@ -183,9 +183,14 @@ public static bool IsConfigured(Configurations config)
/// <param name="config">The setting configuration that needs to be checked</param>
public static void Configure(Configurations config)
{
if (ConfigurationSetters.ContainsKey(config))
// We use the config getter to check to see if a configuration is valid for the current build target.
if (ConfigurationGetters.ContainsKey(config))
{
ConfigurationSetters[config].Invoke();
var configGetter = ConfigurationGetters[config];
if (configGetter.IsActiveBuildTargetValid() && ConfigurationSetters.ContainsKey(config))
{
ConfigurationSetters[config].Invoke();
}
}
}

Expand Down Expand Up @@ -216,17 +221,14 @@ public static void ConfigureProject(HashSet<Configurations> filter = null)
{
foreach (var setter in ConfigurationSetters)
{
setter.Value.Invoke();
Configure(setter.Key);
}
}
else
{
foreach (var key in filter)
{
if (ConfigurationSetters.ContainsKey(key))
{
ConfigurationSetters[key].Invoke();
}
Configure(key);
}
}

Expand Down
3 changes: 2 additions & 1 deletion Documentation/Contributing/ExperimentalFeatures.md
Expand Up @@ -60,9 +60,10 @@ Adding a component menu:
```

## Documentation

Follow these steps to add documentation for your experimental feature:

1. Any documentation for an experimental feature should go in a `README.md` file in the experimental folder. For example, [`MixedRealityToolkit.SDK/Experimental/ScrollingObjectCollection/README.md`](../../Assets/MixedRealityToolkit.SDK/Experimental/ScrollingObjectCollection/README.md).
1. Any documentation for an experimental feature should go in a `README.md` file in the experimental folder. For example, [`MixedRealityToolkit.SDK/Experimental/ScrollingObjectCollection/README.md`](../../Assets/MixedRealityToolkit.SDK/Experimental/ScrollingObjectCollection/README.md).

1. Under *Feature Overviews* Add a link in the *Experimental* section at [`Documentation/toc.yml`](../toc.yml).

Expand Down
3 changes: 1 addition & 2 deletions Documentation/Contributing/Roadmap.md
Expand Up @@ -14,7 +14,6 @@ This document outlines the roadmap of the Mixed Reality Toolkit.

Releases are centered around themes (ex: large feature areas) and are scheduled to occur approximately every 8 weeks.


Release details, including backlog items, can be found on the [GitHub milestone pages](https://github.com/Microsoft/MixedRealityToolkit-Unity/milestones). The complete set of open issues can also be found on [GitHub](https://github.com/microsoft/MixedRealityToolkit-Unity/issues).

## Mixed Reality Toolkit (MRTK) roadmap
Expand Down Expand Up @@ -51,7 +50,7 @@ Quality and stability are the top priority for this and all Microsoft Mixed Real
**User Experience**

- Bug fixes
- Hololens Shell parity
- HoloLens Shell parity
- Graduating experimental features
- Tests to ensure features do not regress

Expand Down
40 changes: 19 additions & 21 deletions Documentation/CrossPlatform/UsingARFoundation.md
Expand Up @@ -4,34 +4,32 @@

1. Download and import the **Microsoft.MixedReality.Toolkit.Providers.UnityAR** package, from [GitHub](https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/v2.2.0) or [NuGet](../MRTKNuGetPackage.md)

> [!NOTE]
> After you import the the UnityAR package, you will see the following error:
> *Assembly has reference to non-existent assembly 'Unity.XR.ARFoundation' (Assets/MixedRealityToolkit.Staging/UnityAR/Microsoft.MixedReality.Toolkit.Providers.UnityAR.asmdef)*
". To resolve, install the correct version of ARFoundation listed below.
> [!NOTE]
> After you import the the UnityAR package, you will see the following error:
> *Assembly has reference to non-existent assembly 'Unity.XR.ARFoundation' (Assets/MixedRealityToolkit.Staging/UnityAR/Microsoft.MixedReality.Toolkit.Providers.UnityAR.asmdef)*
". To resolve, install the correct version of ARFoundation listed below.

1. In the Unity Package Manager (UPM), install the following packages:

2. In the Unity Package Manager (UPM), install the following packages:

**Unity 2018.4.x**
**Unity 2018.4.x**

| **Android** | **iOS** | Comments |
| --- | --- | --- |
| AR Foundation <br/> Version: 1.5.0 - preview 6 | AR Foundation <br/> Version: 1.5.0 - preview 6 | For Unity 2018.4, this package is included as a preview. To view package: Window > Package Manager > Advanced > Show Preview Packages|
| ARCore XR Plugin <br/> Version: 2.1.2 | ARKit XR Plugin <br/> Version: 2.1.2 | |


**Unity 2019.x**

| **Android** | **iOS** |
| **Android** | **iOS** |
| --- | --- |
| AR Foundation <br/> Version: 2.1.4 | AR Foundation <br/> Version: 2.1.4 |
| ARCore XR Plugin <br/> Version: 2.1.2 | ARKit XR Plugin <br/> Version: 2.1.2 |

1. If using Unity 2019.x, the assembly definition file for the Unity AR provider needs to be modified to have the **UnityEngine.SpatialTracking** reference added.

> [!Note]
> [!NOTE]
> MRTK will automatically update the assembly definition based on the version of Unity in which the project has been loaded. This information is presented here for reference.
![Unity AR assembly definition](../Images/CrossPlatform/UnityArAssemblyReferences.png)

## Enabling the Unity AR camera settings provider
Expand Down Expand Up @@ -68,24 +66,24 @@ The following steps presume use of the MixedRealityToolkit object. Steps require

1. Make sure you have added the UnityAR Camera Settings Provider to your scene.

2. Switch platform to either Android or iOS in the Unity Build Settings
1. Switch platform to either Android or iOS in the Unity Build Settings

When you switch the platform you should see the MRTK Project Configurator Window with settings for your chosen platform. Click Apply to enable platform specific settings.
When you switch the platform you should see the MRTK Project Configurator Window with settings for your chosen platform. Click Apply to enable platform specific settings.

iOS Project Configurator Settings
iOS Project Configurator Settings

![iOS Project Configurator](../Images/CameraSystem/MRTKProjectConfigurator.png)
![iOS Project Configurator](../Images/CameraSystem/MRTKProjectConfigurator.png)

3. There are no additional steps after switching the platform for Android.
1. There are no additional steps after switching the platform for Android.

4. If the platform is iOS, Edit > Project Settings > Player > Other Settings, under the Optimization header, **uncheck** Strip Engine Code
1. If the platform is iOS, Edit > Project Settings > Player > Other Settings, under the Optimization header, **uncheck** Strip Engine Code

![iOS Settings](../Images/CameraSystem/UncheckStripEngineCodeiOS.png)
![iOS Settings](../Images/CameraSystem/UncheckStripEngineCodeiOS.png)

> [!NOTE]
> Unchecking Strip Engine Code is the short term solution to an error in Xcode [#6646](https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6646). We are working on a long term solution for MRTK 2.3.0.
> [!NOTE]
> Unchecking Strip Engine Code is the short term solution to an error in Xcode [#6646](https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6646). We are working on a long term solution.
5. Build and run the scene
1. Build and run the scene

## See also

Expand Down
@@ -1,29 +1,39 @@
# Hand physics extension service

The hand physics service enables rigid body collision events and interactions with articulated hands.

## Enabling the extension

To enable the extension, open your RegisteredServiceProvider profile. Click `Register a new Service Provider` to add a new configuration. In the component type field, select HandPhysicsService. In the configuration Profile field, select the default hand physics profile included with the extension.

## Profile options

### Hand physics layer

Controls the layer the instantiated hand joints will go to.

While the service defaults to the "default" layer (0), it is recommended to use a separate layer for hand physics objects. Otherwise there may be unwanted collisions and/or inaccurate raycasts.

### Finger tip kinematic body prefab

Controls which prefab is instantiated on fingertips. In order for the service to work as expected, the prefab requires:

- A rigidbody component, with isKinematic enabled
- A collider
- `JointKinematicBody` component

### Use palm kinematic body

Controls whether the service will attempt to instantiate a prefab on the palm joint.

### Palm kinematic body prefab

When `UsePalmKinematicBody` is enabled, this is the prefab it will instantiate. Just like `FingerTipKinematicBodyPrefab`, this prefab requires:

- A rigidbody component, with isKinematic enabled
- A collider
- `JointKinematicBody` component

## How to use the service
Once enabled, use any collider's `IsTrigger` property to receive collision events from all 10 digits (and palms if they're enabled).

Once enabled, use any collider's `IsTrigger` property to receive collision events from all 10 digits (and palms if they're enabled).
4 changes: 2 additions & 2 deletions Documentation/EyeTracking/EyeTracking_Positioning.md
Expand Up @@ -3,8 +3,8 @@
# Eye-supported target positioning in MRTK

<!-- TODO: Add content -->
_We're currently restructuring and improving the MRTK documentation.
This content will be updated soon!
_We're currently restructuring and improving the MRTK documentation.
This content will be updated soon!
If you have any questions regarding this section please post in our MRTK slack channel._

![MRTK](../Images/EyeTracking/mrtk_et_positioning_slider.png)
Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 4 additions & 6 deletions Documentation/Input/Pointers.md
Expand Up @@ -103,20 +103,18 @@ The *[SpherePointer](xref:Microsoft.MixedReality.Toolkit.Input.SpherePointer)* u

<img src="../../Documentation/Images/Pointers/MRTK_GrabPointer.jpg" width="400">


Useful Sphere Pointer properties:

- *Sphere Cast Radius*: The radius for the sphere used to query for grabbable objects.
- *Grab Layer Masks* - A prioritized array of LayerMasks to determine which possible GameObjects the pointer can interact with and the order of interaction to attempt. Note that a GameObject must also have a `NearInteractionGrabbable` to interact with a SpherePointer.
> [!NOTE]
> The Spatial Awareness layer is disabled in the default GrabPointer prefab provided by MRTK. This is done to reduce performance impact of doing a sphere overlap query with the spatial mesh. You can enable this by modifying the GrabPointer prefab.
> [!NOTE]
> The Spatial Awareness layer is disabled in the default GrabPointer prefab provided by MRTK. This is done to reduce performance impact of doing a sphere overlap query with the spatial mesh. You can enable this by modifying the GrabPointer prefab.
- *Ignore Colliders Not in FOV* - Whether to ignore colliders that may be near the pointer, but not actually in the visual FOV.
This can prevent accidental grabs, and will allow hand rays to turn on when you may be near
a grabbable but cannot see it. The *Visual FOV* is defined via a cone instead of the the typical frustum for performance reasons. This cone is centered and oriented the same as the camera's frustum with a radius equal to half display height(or vertical FOV).
This can prevent accidental grabs, and will allow hand rays to turn on when you may be near
a grabbable but cannot see it. The *Visual FOV* is defined via a cone instead of the the typical frustum for performance reasons. This cone is centered and oriented the same as the camera's frustum with a radius equal to half display height(or vertical FOV).

<img src="../../Documentation/Images/Input/Pointers/SpherePointer_VisualFOV.png" width="200">


#### Teleport pointers

- [`TeleportPointer`](xref:Microsoft.MixedReality.Toolkit.Teleport.TeleportPointer) will raise a teleport request when action is taken (i.e the teleport button is pressed) in order to move the user.
Expand Down
23 changes: 7 additions & 16 deletions Documentation/MRTK_PackageContents.md
Expand Up @@ -5,7 +5,6 @@ The Microsoft Mixed Reality Toolkit is provided as a collection of packages. The
- [Foundation](#foundation)
- [Extensions](#extensions)
- [Tools](#tools)
- [Providers.UnityAR](#providersunityar)
- [Examples](#examples)

## Foundation
Expand All @@ -18,8 +17,10 @@ The Microsoft.MixedRealityToolkit.Unity.Foundation package includes the core com
| MixedRealityToolkit.Providers | | |
| | [ObjectMeshObserver](SpatialAwareness/SpatialObjectMeshObserver.md) | Spatial awareness observer using a 3D model as the data. |
| | OpenVR | Support for OpenVR devices. |
| | [UnityAR](CameraSystem/UnityArCameraSettings.md) | (Experimental) Camera settings provider enabling MRTK use with mobile AR devices. |
| | WindowsMixedReality | Support for Windows Mixed Reality devices, including Microsoft HoloLens and immersive headsets. |
| | WindowsVoiceInput | Support for speech and dicatation on Microsoft Windows platforms. |
| | WindowsVoiceInput | Support for speech and dictation on Microsoft Windows platforms. |
| | XRSDK | (Experimental) Support for [Unity's new XR framework](https://blogs.unity3d.com/2020/01/24/unity-xr-platform-updates/) in Unity 2019.3. |
| MixedRealityToolkit.SDK | | |
| | Experimental | Experimental features, including shaders, user interface controls and individual system managers. |
| | Features | Functionality that builds upon the Foundation package. |
Expand All @@ -40,22 +41,22 @@ The Microsoft.MixedRealityToolkit.Unity.Foundation package includes the core com

The optional Microsoft.MixedRealityToolkit.Unity.Extensions package includes additional services that extend the functionality of the Microsoft Mixed Reality Toolkit.

> [!Note]
> [!NOTE]
> The extensions package requires Microsoft.MixedRealityToolkit.Unity.Foundation.
| Folder | Component | Description |
| --- | --- | --- |
| MixedRealityToolkit.Extensions | |
| | HandPhysicsService | Service that adds physics support to articulated hands. |
| | LostTrackingService | Service that simplifies handing of tracking loss on Microsoft HoloLens devices. |
| | [SceneTransitionService](Extensions/SceneTransitionService/SceneTransitionServiceOverview.md) | Service that simplifies adding smooth scene transitions. |


## Tools

The optional Microsoft.MixedRealityToolkit.Unity.Tools package includes helpful tools that enhance the mixed reality development experience using the Microsoft Mixed Reality Toolkit.
These tools are located in the **Mixed Reality Toolkit > Utilities** menu in the Unity Editor.

> [!Note]
> [!NOTE]
> The tools package requires Microsoft.MixedRealityToolkit.Unity.Foundation.
| Folder | Component | Description |
Expand All @@ -69,21 +70,11 @@ These tools are located in the **Mixed Reality Toolkit > Utilities** menu in the
| | ScreenshotUtility | Enables capturing application images in the Unity editor. |
| | TextureCombinerWindow | Utility to combine graphics textures. |

## Providers.UnityAR

> [!Note]
> The UnityAR package requires Microsoft.MixedRealityToolkit.Unity.Foundation.
| Folder | Component | Description |
| --- | --- | --- |
| MixedRealityToolkit.Staging | | |
| | [UnityAR](CameraSystem/UnityArCameraSettings.md) | Camera settings provider enabling MRTK use with mobile AR devices. |

## Examples

The optional Microsoft.MixedRealityToolkit.Unity.Examples package includes demonstration projects that illustrate the features of the Microsoft Mixed Reality Toolkit.

> [!Note]
> [!NOTE]
> The examples package requires Microsoft.MixedRealityToolkit.Unity.Foundation.
| Folder | Component | Description |
Expand Down

0 comments on commit 02405ec

Please sign in to comment.