Unity MR Part 0: Introduction
Tags: unity3d, mixedreality, tutorial, beginners
Published: 2024-01-10 10:10:43

Welcome to our comprehensive article series designed to guide developers through the exciting process of creating a Mixed Reality (MR) experience for the Meta Quest 3 using Unity. This series is tailored to provide step-by-step instructions, from the initial setup to the final touches, ensuring a thorough understanding of the key components and techniques essential in MR development.

Here's a list of articles included in this series:

**Setting up Unity**: We begin by setting up Unity for MR development, ensuring that your environment is ready for building MR experiences.

---

**Session Component**: Delve into the session component, a crucial aspect of managing MR experiences.

---

**Camera Component**: Understand the role of the camera in MR and how to configure it effectively for immersive experiences.

---

**Entering MR**: Learn how to use Passthrough technology to blend the real and virtual worlds seamlessly.

---

**Left and Right Controllers**: Get to grips with setting up and customizing the Meta Quest 3 controllers for intuitive user interactions.

---

**Planes**: Explore plane detection and its significance in accurately placing virtual objects in the real world.

---

**Raycasts**: Dive into using Raycasts for interactive elements in your MR environment.

---

**Anchors**: Understand how to use anchors for stabilizing virtual objects in the physical world.

---

**Instantiating Prefab**: Learn the process of adding and manipulating prefabs in your MR scene.

---

**VoiceSDK**: Integrate voice commands for a more natural and hands-free user experience.

---

**Animation**: Bring your MR experience to life with fundamental animation techniques.

---

**Improve Scene**: Conclude the series with enhancements and refinements to your MR scene, elevating the overall user experience.

---

Whether you're a seasoned developer or new to MR, this series will equip you with the skills and knowledge to create engaging and interactive MR experiences on the Meta Quest 3 platform. Join us on this journey to unlock the full potential of MR technology.

This article series is centered around the latest stable version of Unity at the time of writing, which is `2023.2.3f1`, and specifically targets the Meta Quest 3. While the techniques and approaches discussed may also be applicable to other Unity versions and Quest devices, our primary objective was not to ensure compatibility with older devices. Our focus is on leveraging the capabilities and features available in the newest Unity version for the Meta Quest 3, aiming to deliver the most up-to-date and optimized experience for this platform.

We conducted this series using Windows and the `Meta Quest Link`. If you're utilizing a different operating system, you might need to make some adaptations here and there. This note is important to bear in mind, as certain steps or configurations might vary slightly depending on the operating system you are working with.

📚 The Air Link and Link Cable functionality is exclusive to the Windows platform. To develop for the Meta Quest 3 on a Mac, you need to download the Meta Quest Developer Hub (MQDH) from [Meta Quest Dev Center - Meta Quest Developer Hub](https://developer.oculus.com/meta-quest-developer-hub/) . Once your Meta Quest 3 is connected and set up with a cable, you can directly build and run an app from Unity.

Before we dive into features required to implement a MR experience in Unity we need to distinguish between:

---

## OpenXR

OpenXR is an open, royalty-free standard developed by Khronos that aims to simplify Augmented Reality (AR) / Virtual Reality (VR) development by allowing developers to seamlessly target a wide range of AR/VR devices.

The OpenXR specification contains two categories of features: `core features`, which are present on every platform, and `extensions`, which are optional and may not be implemented by some platforms.

---

## ARFoundation

AR Foundation enables you to create multi-platform AR apps with Unity. In an AR Foundation project, you choose which AR features to enable by adding the corresponding manager components to your scene. When you build and run your app on an AR device, AR Foundation enables these features using the platform's native AR SDK, so you can create once and deploy to the world's leading AR platforms.

In this course we will only develop for the Meta Quest 3.

Here is a list of the available features in `OpenXR: Meta` provider plug-in:

| **Feature** | **OpenXR: Meta** |
| --- | --- |
| Session | ✅   |
| Device tracking | ✅   |
| Camera | ✅   |
| Plane detection | ✅   |
| Image tracking | ❌   |
| Object tracking | ❌   |
| Face tracking | ❌   |
| Body tracking | ❌   |
| Point clouds | ❌   |
| Raycasts | ✅   |
| Anchors | ✅   |
| Meshing | ❌   |
| Environment probes | ❌   |
| Occlusion | ❌   |
| Participants | ❌   |

---

## OpenXR: Meta

Unity `OpenXR: Meta` enables Meta Quest device support for your AR Foundation projects and provides a C# interface for Meta's OpenXR runtime. This package depends on both `AR Foundation` and the `OpenXR Plug-in`.

---

## Next article

If you're joining us, we recommend starting with the first article in our series `Setting up Unity`, where we lay the groundwork for your MR development journey. In this introductory article, we focus on setting up Unity -- a crucial first step in building MR applications. We walk you through every necessary tool and package, as well as best practices for configuring your Unity project.

Ready to dive in? Start with the first article “[Setting up Unity](https://dev.to/taikonauten/part-1-setting-up-unity-2h83)”.