What is MixedRealityToolkit-vNext

This new version of the MixedRealityToolkit aims to further extend the capabilities of the toolkit and also introduce new features, including the capability to support more VR/AR/XR platforms beyond Microsoft's own Mixed Reality setup.

The vNext branch is taking all the best lessons learned from the original Mixed Reality Toolkit and refactoring / restructuring it to both:

  • Support a wider audience, allowing solutions to be built that will run on multiple VR / AR / XR platforms such as Mixed Reality, Steam/Open VR and OpenXR (initially)

  • Provide an easier to use SDK, to enable rapid prototyping and ease adoption for new users (or users of previous frameworks)

  • Ensure an extensive framework for advanced integrators, with the ability to swap out core components with their own should they wish to, or simply extend the framework to add new capabilities.

Learn more about Windows Mixed Reality here.

Learn more about the architecture behind Windows Mixed Reality - vNext here.

Learn more about the approach behind the Windows Mixed Reality - vNext SDK here.

Feature areas

The Mixed Reality Toolkit vNext will includes many APIs to accelerate the development of MR / XR / VR / AR projects for a range of supported devices, including (but not limited to)

  • Microsoft HoloLens
  • Microsoft Immersive headsets (IHMD)
  • Steam VR (HTC Vive / Oculus Rift)
  • OpenXR platforms

Getting started with MRTK-vNext

MRTK-vNext is currently under heavy development, utilizing the current state of the MRTK_development as a starting point. Refer to this branch for working examples and experimental code.

Learn more about the approach behind the Windows Mixed Reality - vNext SDK here. Which aims to help on-board developers quicker when building solutions.

Examples and QuickStart scenes

One radical change to the Mixed Reality Toolkit vNext, will be the standards and approaches to real world example scenes.

New examples will follow strict guidelines, such as:

  • Each example must have a use and demonstrate a real world test case (no tests).
  • Each example will use a standardized template, so all examples have the same look and feel.
  • Each sample will be fully documented, detailing both the use case it is demonstrating and how to implement the features demonstrated.

Check the "Work In Progress" section of the Windows Mixed Reality - vNext SDK for a peek at the first new example.

External\How To docs folder is meant to help everyone with migrating forward or any simple doubts they might have about the process. Please feel free to grow all these sections. We can't wait to see your additions!

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Built With

Share this project:

Updates

posted an update

It's been a busy month and we're all hammering away on the toolkit, adding new features, refining existing ones and even whipping up a few "add-ons" in the process.

More video / tutorial content will be released with the next beta which should be "soon" (tm)

Log in or sign up for Devpost to join the conversation.

posted an update

The Mixed Reality Toolkit Quick start

Getting started with any new project / framework or toolkit can be quite daunting, especially when that toolkit has such a wide reach, like the Mixed Reality Toolkit.

The last post gave you a taste for what the project was about, it's goals, aims and dreams.

What's covered in this quick start?

In this short guide, we're going to give you a quick 10 minute rundown for what is takes to get off the ground with the Mixed Reality Toolkit.

This is just a quick start, so we won't go in to too much depth in to building an entire project or all the systems available. Those will be covered later.

We will cover:

  • The prerequisites you will need to get started:
  • Starting a new project
  • Importing the MRTK Beta asset
  • Setting up your scene
  • Demo of "ready to go" features
  • Adding interactivity and collision
  • Watching paint dry

Getting Started:

Either watch the video or keep reading. The Mixed Reality Toolkit Quickstart video

Prerequisites

The MRTK just needs Unity 2018.2.13f+ and the latest package available on the site and you are up and running

Starting your new project

Every Unity developer by now knows how to create a new project, but with Unity 2018, you have a few more project templates to choose from:

Of these, only the following templates are supported by the Mixed Reality Toolkit today (no dates have been suggested as to when the SRP will be supported as yet):

  • 2D (although that is a bit flat for VR isn't it?)
  • 3D
  • 3D With Extras (as demonstrated in the video)

Once you have your project open, we can start adding the MRTK to it.

Downloading the MRTK

The team are working hard on multiple delivery mechanisms for the Mixed Reality Toolkit.

Once it's downloaded, it is ready to start importing.

Importing the MRTK

Like any other Unity asset, you can simply import the downloaded ".unityasset" package in to your project using the "Asset -> Import Package -> Custom Package" option from the Unity Editor menu.

What the MRTK provides though, is an optional one stop shop to prepare and configure your project automatically, to get you up and running even quicker.

This simply prompt will (as the message box suggests):

  • Setup XR settings in your current platform (you will still have to enable it for your other deployment platforms)
  • Apply Unity standard source control options
  • Set your Scripting backend to IL2CPP (Which will be the default from 2018.3 as the .NET backend is being deprecated)
  • Upgrade your project to use the .NET 4 scripting runtime (mandatory, which Unity forces a reload of the editor)

If Unity is deprecating .NET, why use .NET 4?

Unity are only deprecating the .NET backend which is used in their "Player" projects on Windows platform. Unity have stated for a while now that their only build platform will be IL2CPP going forward .NET 4 scripting however, allows projects to use more advanced coding techniques in their projects which are then compiled to IL2CPP on build. Which the MRTK uses

Accepting this dialog is completely optional and you can choose to set the above options manually later if you wish, we won't ask you again.

With one exception, the MRTK takes advantages of advanced features available with the .NET4 Scripting Runtime, so your project MUST be configured to use it, else all you will get is a bundle of wires and loads of console errors.

Now that the MRTK is in your project, you are ready to get up and running.

Activating the MRTK in your scene

So you have your VR project and the MRTK installed, what next?

Again, the team have made it super easy to enable your scene to utilize the MRTK with another single menu option:

Mixed Reality Toolkit -> Configure

This will automatically update your scene to be MRTK ready by adding the toolkit (a single object) and configuring your camera in the scene hierarchy as shown below:

This simply applies:

  • Mixed Reality Toolkit - The toolkit itself, providing the central configuration entry point for the entire framework.
  • MixedRealityPlayspace - The parent object for the headset, which ensures the headset / controllers and other required systems are managed correctly in the scene.
  • The Main Camera is moved as a child to the Playspace - Which allows the playspace to manage the camera in conjunction with the SDK's
  • UIRaycastCamera added as a child to the Main Camera - To enable seamless UI interactions through the toolkit

Note While working in your scene, DON'T move the Main Camera (or the playspace) from the scene origin (0,0,0). This is controlled by the MRTK and the active SDK. If you need to move the players start point, then move the scene content and NOT the camera!

The MRTK provides default configuration with every option turned on by default, which enables you to hit play as soon as your scene is configured. Whether you are on Windows Standalone with OpenVR or have switched to a Windows Store build (WSA), the project will just Run.

What is provided by default?

When you run your project using the default Mixed Reality Toolkit configuration, you get several features enabled without touching anything, namely:

  • Headset tracking
  • Controller tracking and visualization (represented as a 3D gizmo by default)
  • Controller mappings for the default OpenVR/WMR controllers
  • Gaze / Focus and Pointer interactions
  • Rotation options (similar to the WMR portal experience, tapping left on the thumbstick rotates the view 90 degrees to the left)
  • Teleportation controls and visualization (including orientation transportation)

Once you have played with the default, we recommend you create your own configuration and customize it to your project needs. We'll cover this in a later post (or you can play with the profile "Copy and customize" buttons)

Time to get started

The video also shows some quick instructions about getting your scene "VR Ready" by adding colliders and some quick interactivity, but that is best left to a fuller post on the subject.

You now have the tools you need to start exploring and crafting your very own Mixed Reality experience. have fun, get involved and if there is something you don't like (or even better that you really like) then let us know about it:

Log in or sign up for Devpost to join the conversation.

posted an update

Welcome to the Mixed Reality Toolkit

There have been many toolkits / frameworks and assets created to date to help developers to create Mixed Reality solutions, these are also then multiplied for each and every SDK / device that vendors have supplied.

Some solutions have made a start to try and unify all these capabilities together, namely:

  • BridgeXR Overlaps all the installable SDK’s with some common orchestration components with a VR focus.

  • Virtual Reality Toolkit (VRTK) Another VR focused framework which has been very popular with the community and has lots of support. Currently being rewritten to expand its reach.

  • HoloToolkit A true mixed reality framework utilizing spatial recognition & understanding and a wealth of Mixed Reality UX components to speed up development, however is wholly focused on the Windows Mixed Reality platforms such as HoloLens and Windows 10.

Within this landscape, the need for a true Mixed Reality framework was identified, being able to cope with all the various needs across the whole spectrum of Mixed reality, from VR (Virtual Reality), XR (Cross Reality) to AR (Augmented Reality). The framework would also need to be extensible enough to cope with the multitude of devices, both now and in the future. Thus the new Mixed Reality Toolkit (MRTK) was born.

Architecting for the future

Pulling in good architecture practices from multiple sources and finding the best patterns that worked with the Unity Game engine, the Mixed Reality Toolkit team crafted a high level architecture that would satisfy both the needs for current devices and capabilities, whilst still leaving room for the future:

The core architecture separates each area of required functionality in to their separate parts, ensuring there are no hard dependencies between them. This enables any single component of the framework to be easily replaced or extended.

New devices can be added according to the definitions set out by the framework and input is orchestrated in a non-platform dependant way. So that no matter what device is plugged in to the framework, a developers project will remain unaffected by the change and just receives input in a MRTK standardised format.

Everything is optional, aka “what’s in the box”

One core piece of feedback the team had in the formation of the project, was that everything needed to be optional, not all projects would need all the features of a full Mixed Reality Toolkit. Some projects only provide a VR experience, some might just be AR, others might only need networking / sharing as their backbone, so the toolkit had have the lightest footprint as possible, only enabling what you actually need.

What really challenged the team, was the thought that any code NOT needed should NOT even be in the project. If you have ever tried to build a framework where you users can go and delete large portions of code and still run, you should know this is a real challenge.

So as part of creating this “pick and choose” framework, the toolkit would provide “out of the box” the following systems to aid mixed reality projects:

  • A UX toolbox - providing the usual VR / AR visual elements for building project
  • Mixed Reality specialized shaders
  • A multi-platform network sharing system - for sharing Mixed Reality experiences
  • Abstracted Spatial Scanning system - for getting spatial data from different devices
  • Spatial Understanding frameworks - to “understand” what the player is seeing
  • Spatial audio - crafted for those mixed reality experiences and let the player hear in 3D space
  • Abstracted Input system - Making a single way for projects to consume input from a multitude of devices
  • Space recognition systems - to stop the player walking off a very real cliff (or over the cat)
  • A uniform configuration system - to give you a one stop shop way to configure everything in the toolkit

Wait there’s more!

This was just a taste of what has gone on with the Mixed Reality Toolkit to date, summarizing months of discussions, code, rewrites, fights and the odd barn dance or two.

The team have been focused on forming a solid foundation for the project, focusing on Windows Mixed Reality and OpenVR as a start (the two main platforms for launch) and ensuring all systems work well, no matter the platform you deploy on. We’re not there quite yet, a lot of systems are in place and yet more are in the midst of being built, but it’s all functional.

If you want to quickly dive in and start playing, then check out the main Mixed Reality Development branch for more info.

P.S. be sure to check out the next article which will give you a 25 minute “getting started” guide to see what all the fuss is about.

Log in or sign up for Devpost to join the conversation.