Skip to content

Commit a5c7d4b

Browse files
committed
Initial drop
1 parent 4554828 commit a5c7d4b

60 files changed

Lines changed: 961 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# API reference — MRTK3
2+
3+
MRTK3 is now shipping as [a set of individually versioned packages](index.md#versioning). As a result, each MRTK3 package ships its API reference individually. Please find the links to the API references for MRTK3 packages below:
4+
5+
- [MRTK Core Definitions](https://aka.ms/mrtk3coreapi)
6+
- [MRTK Accessibility](https://aka.ms/mrtk3accessibilityapi)
7+
- [MRTK Audio Effects](https://aka.ms/mrtk3audioapi)
8+
- [MRTK Data Binding and Theming](https://aka.ms/mrtk3dataapi)
9+
- [MRTK Diagnostics](https://aka.ms/mrtk3diagnosticsapi)
10+
- [MRTK Graphics Tools](https://learn.microsoft.com/dotnet/api/Microsoft.MixedReality.GraphicsTools)
11+
- [MRTK Input](https://aka.ms/mrtk3inputapi)
12+
- [MRTK Spatial Manipulation](https://aka.ms/mrtk3spmanipapi)
13+
- [MRTK UX Components](https://aka.ms/mrtk3uxcompapi)
14+
- [MRTK UX Core](https://aka.ms/mrtk3uxcoreapi)
15+
- [MRTK Windows Speech](https://aka.ms/mrtk3winspeechapi)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Architecture overview — MRTK3
2+
3+
![Architecture MRTK3](../images/MRTK_v3_Architecture.png)
4+
5+
One of the goals with MRTK3 was to take everything we've learned from the start of MRTK2 back in early 2018, combine it with the work that's been done by our industry partners across OpenXR and Unity since then, and come out the other side with a strong, extensible foundation that allows MRTK to focus more on providing differentiators and an overall improved user (and developer!) experience.
6+
7+
## Input and interactions
8+
9+
The overall architecture of the input stack of MRTK3 is built on four foundational components:
10+
11+
1. OpenXR
12+
1. [Khronos Specification](https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html)
13+
1. [Unity OpenXR Plugin documentation](https://docs.unity3d.com/Packages/com.unity.xr.openxr@latest)
14+
1. [Unity subsystems](https://docs.unity3d.com/ScriptReference/UnityEngine.SubsystemsModule.html)
15+
1. [Unity's Input System](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest)
16+
1. [Unity's XR Interaction Toolkit](https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@latest)
17+
18+
along with a layer of MRTK-defined [interactors](interactors.md) and [subsystems](subsystems.md), providing features like poke and speech.
19+
20+
### OpenXR
21+
22+
OpenXR is the interface between an application and an XR runtime system, allowing for a common set of features to be called generically and allow the hardware-specific implementation to be handled by the XR runtime. Adopting this in MRTK3, along with Unity's Input System, lets Unity handle more of the cross-platform and extensible input story while allowing MRTK3 to focus on helping you build rich experiences on top.
23+
24+
### Subsystems
25+
26+
[Subsystems](subsystems.md) and Unity's [SubsystemManager](https://docs.unity3d.com/ScriptReference/SubsystemManager.html) should be conceptually familiar to MRTK2 users, as they're the new "data providers". The idea is that different platforms or services can provide an implementation of a specific type of MRTK subsystem and have that run when relevant, providing data to MRTK3 and the app overall, just like data providers did to the various systems in MRTK2. Since we're focusing on OpenXR, the goal is that many features are covered by a cross-vendor EXT extension in OpenXR and multiple subsystems aren't needed, but vendor-specific extensions can represent early tech advancements that we want to support.
27+
28+
### Unity Input System
29+
30+
Conceptually, Unity's Input System will also feel familiar to users of the MRTK2 controller mapping profile. It provides a central place for mapping the buttons and other input axes on a controller or hand to a set of actions. These actions are then consumed by Unity's XR Interaction Toolkit (XRI) and MRTK3, so the object being interacted with doesn't care as much about _what_ is manipulating it, just that it _is_.
31+
32+
### XR Interaction Toolkit
33+
34+
XRI provides a foundation of interactors and interactables. MRTK builds upon this with its own set of [interactors](interactors.md) and [interactables](interactables.md), allowing for additional features like articulated hand tracking, gaze, and pinch.
35+
36+
## See also
37+
38+
- [Subsystems](subsystems.md)
39+
- [Interactors](interactors.md)
40+
- [Interactables](interactables.md)

docs/mrtk3-overview/architecture/images/UGUI.svg

Lines changed: 15 additions & 0 deletions
Loading
52.3 KB
Loading
24 KB
Loading
47.3 KB
Loading

docs/mrtk3-overview/architecture/images/interactable_classes.svg

Lines changed: 19 additions & 0 deletions
Loading
81 KB
Loading
52.9 KB
Loading

docs/mrtk3-overview/architecture/images/selectedness.svg

Lines changed: 16 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)