> For the complete documentation index, see [llms.txt](https://docs.multiset.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.multiset.ai/unity-sdk/meta-quest/sample-scenes/navigation.md).

# Navigation

The Quest navigation scene, covering NavMesh baking, placing points of interest and the arrow based visual guidance.

### Overview

The Navigation feature in MultiSet Quest SDK enables AR navigation experiences with Point of Interest (POI) management and visual guidance using animated arrows and progress indicators.

### Prerequisites

* Unity project with MultiSet Quest SDK v1.15.2 or higher
* Meta Quest device for testing
* Valid MultiSet Client ID and Client Secret

### Scene Setup

### Scene Configuration

1. **Load the Navigation Scene**
   * Navigate to: `Assets/Samples/MultiSet Quest SDK/[version]/Sample Scenes/Navigation`
   * Double-click to open the Navigation scene
2. **Configure MultiSet SDK Manager**
   * Select the `MultisetSdkManager` GameObject in the hierarchy
   * Click **"Open MultiSet Configuration"** button in the Multiset SDK Manager component
   * Enter your **Client ID** and **Client Secret** in the configuration file

<figure><img src="https://3163433004-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FokTDI7QVY04Zvb1pQ8Ry%2Fuploads%2Fr97BovOTEqXVRQJadbtj%2Fconfig-file.png?alt=media&amp;token=225223b5-8265-4998-aac6-892ecfcb1344" alt="" width="375"><figcaption></figcaption></figure>

1. **Set Map Codes**
   * In the `SingleFrameLocalizationManager` component:
     * Add your **Map Code** or **MapSet Code**

<figure><img src="https://3163433004-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FokTDI7QVY04Zvb1pQ8Ry%2Fuploads%2FFFFYNilWmXgJyfPhdv4L%2Fmapcode-mapsetcode.png?alt=media&amp;token=cf095c50-0acf-48a8-87cd-abd105e44a6b" alt="" width="375"><figcaption></figcaption></figure>

####

### Core Components Configuration

**MapMeshHandler**

Controls the visualization mode of the map mesh:

* **EnableVisualization**: Display the Map Mesh in the scene
* **EnableOcclusion**: Enable occlusion using the Map Mesh
* **No Mesh**: Hide all mesh visualization

**MapMeshDownloader**

* Click the **"Download Mesh"** button to import the mesh for your desired map
* This mesh is essential for setting up the AR experience

**NavigationController**

Manages the navigation flow:

* Maintains the list of POIs
* Handles navigation routing and guidance

### Setting Up Points of Interest (POIs)

#### Step 1: Bake NavMesh Surface

1. **Configure Navigation Agent Settings (To open agent settings click on the Agent Type dropdown)**
   * Set appropriate values for:
     * Radius
     * Height
     * Step Height
     * Other agent parameters as needed
2. **Generate NavMesh**
   * Navigate to: `Map Space > NavigationContent > NavMesh`
   * Click the **"Bake"** button to create the NavMesh with current settings

<figure><img src="https://3163433004-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FokTDI7QVY04Zvb1pQ8Ry%2Fuploads%2FoED5qFsl6drsYKKySlA0%2FNavMesh-Agent.png?alt=media&amp;token=9265dfab-34b6-4c6f-aeb6-418a84adc372" alt=""><figcaption></figcaption></figure>

#### Step 2: Add POIs to the Scene

1. **Navigate to POI Container**
   * Go to: `Map Space > NavigationContent > POIs`
2. **Create POI GameObjects**
   * Add POI GameObjects as children of the POIs container
   * Place POIs on the baked NavMesh surface
3. **Configure Each POI** In the Inspector panel, set:
   * **Title**: Display name for the POI
   * **Identification**: Unique identifier (Must be unique for each POI)
   * **POI Name**: Internal reference name

### Runtime Controls & Usage

#### Localization

* **Initial Localization**: Automatically triggered when the app launches on Meta Quest
* **Relocalize**: Press **Button A** on the right controller

#### Navigation Controls

| Controller | Button | Action                         |
| ---------- | ------ | ------------------------------ |
| Right      | A      | Trigger relocalization         |
| Right      | B      | Display POI list               |
| Left       | X      | Stop/Cancel current navigation |

#### Navigation Flow

1. **Start Navigation**
   * Press **Button B** to display the POI list
   * Select a POI from the list to begin navigation
2. **Visual Guidance**
   * Animated arrows appear showing the path
   * Progress bar displays:
     * Distance to destination
     * Target POI name
     * Navigation progress
3. **Stop Navigation**
   * Press **Button X** to cancel the current navigation

## Boundaryless App Configuration

#### Important Notice

The boundary system is a critical safety feature for fully immersive apps. However, to utilize the Navigation feature effectively, a boundaryless app configuration may be required.

#### Requirements for Boundaryless Apps

* Boundary must be disabled for the entire app experience
* Apps must not contain any immersive experiences
* Developers must ensure user safety when boundary is disabled

#### Implementation

Add the following entry to your app's `AndroidManifest.xml` file:

```xml
<uses-feature
    android:name="com.oculus.feature.BOUNDARYLESS_APP"
    android:required="true"/>
```


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.multiset.ai/unity-sdk/meta-quest/sample-scenes/navigation.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
