Develop
Develop
Select your platform

Mixed Reality Utility Kit - Trackables

Updated: Aug 26, 2025

Learning Objectives

  • Explain what a trackable is and how it differs from static scene anchors.
  • Grant the Spatial Data permission required for all tracking APIs.
  • Enable MRUKTrackables in the MRUK component (e.g., checking “Keyboard Tracking Enabled”).
  • Subscribe to TrackableAdded and TrackableRemoved events.
  • Instantiate prefabs on added trackables and destroy them when trackables are removed.

Overview

A trackable is a physical object (e.g., a keyboard or a QR code) that can be detected and tracked at runtime, unlike scene anchors, which are captured during Space Setup. You can use the low-level Core SDK OVRAnchor.Tracker for full control or the high-level MRUK APIs (MRUKTrackable) for event-driven simplicity.

MRUKTrackables

MRUK simplifies runtime detection by instantiating MRUKTrackable components for each detected OVRAnchor. Subscribing to TrackableAdded and TrackableRemoved lets you react without polling.

Requirements

  • Enable Spatial Data Permission
  • In the MRUK component under Scene Settings → Tracker Configuration, check one of the trackable options: Keyboard Tracking Enabled or QR Code Tracking Enabled.

Tracker Configuration UI

MRUK Tracker Configuration
Check either of the Keyboard Tracking Enabled or QR Code Tracking Enabled check boxes. MRUK provides a Trackable Added and Trackable Removed event, where we can easily call our public methods from.

Events & Usage

Below are sample methods we could call after either event has been invoked. When a trackable has been added, the user might want to instantiate a prefab on the trackable, such as a keyboard visual or passthrough overlay to see the trackable in VR mode. When a trackable has been removed, the user might want to destroy the GameObject again.
using UnityEngine;
using Meta.XR.MRUtilityKit;

public void OnTrackableAdded(MRUKTrackable trackable)
{
    Debug.Log($"Trackable of type {trackable.TrackableType} added.");
    Instantiate(_prefab, trackable.transform);
}

public void OnTrackableRemoved(MRUKTrackable trackable)
{
    Debug.Log($"Trackable removed: {trackable.name}");
    Destroy(trackable.gameObject);
}

Trackable types

Learn more about specific types of trackables:

Explore more MRUK documentation topics to dive deeper into spatial queries, content placement, manipulation, sharing, and debugging.
Core Concepts
  • Overview Get an overview of MRUK’s key areas and features.
  • Getting Started Set up your project, install MRUK, and understand space setup with available Building Blocks.
  • Place Content without Scene Use Environment Raycasting to place 3D objects into physical space with minimal setup.
  • Manage Scene Data Work with MRUKRoom, EffectMesh, anchors, and semantic labels to reflect room structure.
Content & Interaction
Multiuser & Debugging
MRUK Samples & Tutorials
Mixed Reality Design Principles
Did you find this page helpful?
Thumbs up icon
Thumbs down icon