> For the complete documentation index, see [llms.txt](https://multiset.gitbook.io/multiset/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multiset.gitbook.io/multiset/multiset-quest-sdk/installation-guide.md).

# Installation Guide

The MultiSet Quest SDK is a Unity-based development kit designed specifically for Meta Quest headsets. It provides developers with seamless integration to MultiSet's Visual Positioning System (VPS), enabling precise real-time localization, pose visualization, and camera access within virtual and mixed reality applications.

### What You Can Build

With the MultiSet SDK, you can create applications that:

* Track user position and orientation in real-world environments
* Anchor virtual objects to physical locations
* Build location-aware AR/VR experiences
* Implement spatial mapping and navigation systems

### Key Capabilities

* Real-time Localization: Leverage MultiSet's VPS API for centimeter-accurate positioning
* Pose Visualization: Built-in 3D gizmos and world axes for debugging and development
* Camera Integration: Direct access to Meta Quest passthrough cameras
* Quest Optimization: Lightweight implementation optimized for Quest hardware
* Plug-and-Play: Minimal setup required for immediate integration

## Getting Started

MultiSet Quest SDK - Installation Guide

## 📋 Prerequisites

Before you begin, make sure you have the following:

| Requirement          | Details                                                                          |
| -------------------- | -------------------------------------------------------------------------------- |
| **Unity Version**    | [Unity 6.0+](https://unity.com/download) (Recommended: 6000.3.11f1)              |
| **Platform Support** | Android Build Support module                                                     |
| **Target Device**    | Meta Quest 3 or Quest 3S                                                         |
| **Network**          | Stable internet connection for VPS functionality                                 |
| **API Access**       | MultiSet API credentials from [Developer Portal](https://developer.multiset.ai/) |
| **Experience Level** | Basic Unity development knowledge                                                |

## 🚀 Quick Start Installation

### Method 1: Git URL (Recommended)

1. **Create or open your Unity project**
   * New project: Select **Universal 3D or 3D (Built-In Render Pipeline)**
   * Existing project: Ensure compatibility with Unity 6.0+
2. **In Unity Build Settings, switch the platform to Android or Meta Quest.**
3. **Add the SDK package**

   <pre><code><strong>Window → Package Manager → + → Add package from git URL
   </strong></code></pre>
4. **Enter the repository URL**

   ```
   https://github.com/MultiSet-AI/multiset-quest-sdk.git
   ```
5. **Verify installation**
   * Check that "MultiSet Quest SDK" appears under "In Project" in Package Manager

<figure><img src="/files/4zHAsWq1r14X7FFFvYZ3" alt=""><figcaption></figcaption></figure>

## 📦 Automatic Dependencies

The SDK automatically installs these essential packages:

* Unity Cloud - Draco (5.4.2)
* Unity Cloud - glTFast (6.15.1)
* Meta XR Core SDK (81.0.0)
* Meta MR Utility Kit (83.0.1)
* XR Plugin Management (4.5.4)
* OpenXR Plugin (1.16.1)

## 🎯 Import Sample Scenes

Get started quickly with our comprehensive examples:

1. **Open Package Manager** → Find "MultiSet Quest SDK"
2. **Navigate to Samples tab** → Click "Import" next to "Sample Scenes"
3. **Samples location**: `Assets/Samples/MultiSet Quest SDK/[version]/Sample Scenes/`

The sample scenes demonstrate core SDK functionality and serve as implementation references.

<figure><img src="/files/XTnaqdLTJa0oiGvQx11H" alt=""><figcaption></figcaption></figure>

## ⚙️ Configuration Setup

### Step 1: API Credentials Configuration

Navigate to the configuration file:

```
Assets/Samples/MultiSet Quest SDK/[version]/Resources/MultiSetConfig.asset
```

**Update your credentials:**

<figure><img src="/files/QdCYCtNDDvj7Fk20bL2a" alt="" width="563"><figcaption></figcaption></figure>

> 💡 **Get your** [**credentials**](/multiset/basics/credentials.md): Visit [Developer Portal](https://developer.multiset.ai/) to obtain your Client ID and Secret

<figure><img src="/files/6OwtSjPZd0ek0HjfiqIb" alt=""><figcaption></figcaption></figure>

### Step 2: XR Plugin Management Setup

1. **Project Settings**: `Edit → Project Settings → XR Plug-in Management`
2. **Install if needed**: Click "Install XR Plugin Management"
3. **Enable OpenXR**: Check the OpenXR checkbox under Plug-in Provider.

<figure><img src="/files/zPTt1nT38roOmJKjgAmM" alt=""><figcaption></figcaption></figure>

### Step 3: Android Platform Configuration

1. **Switch Platform**: `File → Build Settings → Android → Switch Platform`
2. **Validate Setup**: `Edit → Project Settings → XR Plug-in Management → Project Validation`
3. **Fix Issues**: Click "Fix All" to resolve any configuration problems

<figure><img src="/files/Ru5AyowOk15FA5ZHnBBF" alt=""><figcaption></figcaption></figure>

Under **Project Settings -> Meta XR -> Project Setup Tool -> Click on Fix All to add**

**This will add a Plugin folder with an Android Manifest file in the Assets directory**

<figure><img src="/files/79G4H0dbkL2awciTlQDH" alt=""><figcaption></figcaption></figure>

### Step 4: Map Configuration

Configure your localization settings in the sample scene:

1. **Open sample scene**: `SingleFrameLocalization.unity`
2. **Select MultisetSdkManager** GameObject in Hierarchy
3. **Configure localization method** in SingleFrameLocalizationManager component:

| Option     | Use Case                           | Configuration         |
| ---------- | ---------------------------------- | --------------------- |
| **Map**    | Single, specific location          | Enter **Map Code**    |
| **MapSet** | Multiple locations or larger areas | Enter **MapSet Code** |

<figure><img src="/files/dNF24BnQyQ0jc9DPc7LK" alt=""><figcaption></figcaption></figure>

> 📍 **Obtain codes**: Get your Map/MapSet codes from the [MultiSet Developer Dashboard](https://developer.multiset.ai)

{% hint style="warning" %}
Add all your AR content that you want to anchor with respect to map under "Map Space" game object.
{% endhint %}

### Step 5: Download Map Mesh in Unity Editor

Follow the[ Map Mesh Downloader](/multiset/multiset-quest-sdk/map-mesh-downloader.md) page to add the Mesh in Unity Editor for content authoring

### Step 6: Camera Permissions

When you build the project, the Meta SDK will show you a pop-up for adding camera permission

<figure><img src="/files/q810yWHDDdljmK7QrUuM" alt="" width="318"><figcaption></figcaption></figure>

The SDK automatically configures required permissions. Verify in `Assets/Plugins/Android/AndroidManifest.xml`:

```xml

  <uses-permission android:name="com.oculus.permission.HAND_TRACKING" />
  <uses-permission android:name="com.oculus.permission.USE_ANCHOR_API" />
  <uses-feature android:name="com.oculus.feature.PASSTHROUGH" android:required="true" />
  <uses-permission android:name="com.oculus.permission.USE_SCENE" />
  <uses-permission android:name="horizonos.permission.HEADSET_CAMERA" />
  <uses-feature
  android:name="com.oculus.feature.BOUNDARYLESS_APP"
  android:required="true"/>
```

## \🏗️ Build and Deploy

### Build Configuration

1. **Build Settings**: `File → Build Settings`
2. **Select Platform**: Android
3. **Add Scenes**: Click "Add Open Scenes"

**Essential Android Settings:**

* Scripting Backend: **IL2CPP**
* Target Architectures: **ARM64**
* Minimum API Level: 3&#x32;**+**

### Testing Deployment

1. **Build and Run**: Connect your Quest device and click "Build and Run"
2. **Grant Permissions**: Allow camera access when prompted
3. **Test Localization**: Verify functionality in your target environment
4. **Validate AR Features**: Ensure all AR capabilities work as expected

## 🛠️ API Reference

### Core SDK Components

| Component                                                                                               | Purpose                               |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| [`MultiSetSdkManager`](/multiset/unity-sdk/api-reference/multisetsdkmanager.md)                         | Main SDK entry point and manager      |
| [`SingleFrameLocalizationManager`](/multiset/unity-sdk/api-reference/singleframelocalizationmanager.md) | Handles single-frame VPS localization |
| [`MapLocalizationManager`](/multiset/unity-sdk/api-reference/maplocalizationmanager.md)                 | Handles multi-frame map localization  |
| [`ObjectTrackingManager`](/multiset/multiset-quest-sdk/sample-scenes/object-tracking.md)                | Handles real-time object tracking     |
| [`MapMeshHandler`](/multiset/unity-sdk/api-reference/mapmeshhandler.md)                                 | Manages 3D mesh visualization         |

### Common Issues and Solutions

| Issue                        | Solution                                                  |
| ---------------------------- | --------------------------------------------------------- |
| **Package Manager Errors**   | Update Unity Hub and Unity Editor to latest versions      |
| **XR Plugin Problems**       | Restart Unity after enabling OpenXR                       |
| **Build Failures**           | Run Project Validation and fix all issues before building |
| **Credential Errors**        | Verify Client ID and Secret from MultiSet dashboard       |
| **Localization Issues**      | Ensure stable internet connection and correct map codes   |
| **Camera Permission Denied** | Manually grant camera permissions in Quest settings       |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://multiset.gitbook.io/multiset/multiset-quest-sdk/installation-guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
