The MultiSet Quest SDK enables seamless integration of Visual Positioning System (VPS) capabilities into your Unity Meta Quest applications, providing accurate spatial localization, object tracking, and mesh visualization features.
Before you begin, make sure you have the following:
| Requirement | Details |
|---|---|
| Unity Version | Unity 6.0+ (Recommended: 6000.3.21f1) |
| Render Pipeline | Universal Render Pipeline (URP) — required by the SDK's mesh and occlusion shaders |
| 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 multiset.ai |
| Experience Level | Basic Unity development knowledge |
-
Create or open your Unity project
- New project: Select 3D (Universal Render Pipeline)
- Existing project: Ensure compatibility with Unity 6.0+ and that URP is active
-
Add the SDK package
Window → Package Manager → + → Add package from git URL -
Enter the repository URL
https://github.com/MultiSet-AI/multiset-quest-sdk.git -
Verify installation
- Check that "MultiSet Quest SDK" appears under "In Project" in Package Manager
The SDK automatically installs these essential packages:
| Package | Version |
|---|---|
Meta XR Core SDK (com.meta.xr.sdk.core) |
205.0.0 |
Meta MR Utility Kit (com.meta.xr.mrutilitykit) |
205.0.0 |
Meta XR Interaction SDK OVR (com.meta.xr.sdk.interaction.ovr) |
205.0.0 |
Unity Cloud - Draco (com.unity.cloud.draco) |
5.4.3 |
Unity Cloud - glTFast (com.unity.cloud.gltfast) |
6.15.1 |
XR Plugin Management (com.unity.xr.management) |
4.5.4 |
OpenXR Plugin (com.unity.xr.openxr) |
1.16.1 |
AI Navigation (com.unity.ai.navigation) |
2.0.14 |
Input System (com.unity.inputsystem) |
1.20.0 |
Note: Meta MR Utility Kit is now a direct dependency and installs automatically — room scanning features (EffectMesh) need no separate install.
⚠️ Universal Render Pipeline is not installed automatically. The SDK's mesh, outline, and occlusion shaders target URP. If your project uses the Built-In Render Pipeline, those materials will render magenta. Installcom.unity.render-pipelines.universaland set an active URP asset underProject Settings → Graphics.
Get started quickly with our comprehensive examples:
-
Open Package Manager → Find "MultiSet Quest SDK"
-
Navigate to Samples tab → Click "Import" next to "Sample Scenes"
-
Samples location:
Assets/Samples/MultiSet Quest SDK/[version]/Sample Scenes/Each scene sits in its own subfolder, for example
Sample Scenes/SingleFrameLocalization/SingleFrameLocalization.unity.
| Scene | Description |
|---|---|
| SingleFrameLocalization | Basic VPS localization using single camera frames |
| Localization | Continuous localization with real-time pose updates |
| ObjectTracking | Track and localize specific 3D objects in your environment |
| Navigation | AR navigation with POI (Point of Interest) support |
The sample scenes demonstrate core SDK functionality and serve as implementation references.
Navigate to the configuration file:
Assets/Samples/MultiSet Quest SDK/[version]/Sample Scenes/Resources/MultiSetConfig.asset
Update your credentials:
Client Id = "YOUR_CLIENT_ID_HERE"
Client Secret = "YOUR_CLIENT_SECRET_HERE"| Field | Purpose |
|---|---|
| Client Id | Your MultiSet API client identifier |
| Client Secret | Your MultiSet API client secret |
| Base Url | API endpoint. Leave as https://api.multiset.ai unless directed otherwise |
💡 Get your credentials: Visit multiset.ai to obtain your Client ID and Secret
🔐 Supplying credentials at runtime: set
runtimeAuthentication = trueonMultisetSdkManager, assignclientId/clientSecretyourself, then callAuthenticateMultiSetSDK()— useful when credentials should not ship inside the build.
- Project Settings:
Edit → Project Settings → XR Plug-in Management - Install if needed: Click "Install XR Plugin Management"
- Enable OpenXR: Check the OpenXR checkbox under Plug-in Providers
- Switch Platform:
File → Build Settings → Android → Switch Platform - Validate Setup:
Edit → Project Settings → XR Plug-in Management → Project Validation - Fix Issues: Click "Fix All" to resolve any configuration problems
Configure your localization settings in the sample scene:
- Open sample scene:
SingleFrameLocalization.unity - Select MultisetSdkManager GameObject in Hierarchy
- 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 |
📍 Obtain codes: Get your Map/MapSet codes from the MultiSet Developer Dashboard
Query Mode:
| Mode | Behaviour |
|---|---|
| VPS-1 (Standard) | Default. Faster queries, suited to most maps |
| VPS-2 (Deep Search) | Broader search, useful for large or visually repetitive spaces |
Localization behaviour options:
| Option | Default | Purpose |
|---|---|---|
| Auto Localize | true |
Begin localizing automatically once authenticated |
| Background Localization | true |
Keep re-localizing after the first success |
| Bg Localization Duration | 60 |
Seconds between background attempts |
| First Localization Until Success | true |
Silently retry the first localization until it succeeds |
| Confidence Check | false |
Reject responses below the confidence threshold |
| Confidence Threshold | 0.3 |
Minimum accepted confidence when the check is enabled |
| Show Alert | true |
Display built-in status UI |
Hints narrow the search space, which can improve both speed and accuracy when you already know roughly where the user is. All are optional — leave them unset for unconstrained localization.
| Field | Format | Purpose |
|---|---|---|
| Hint Map Codes | list of map codes | Restrict the query to specific maps within a MapSet |
| Hint Position | "X,Y,Z" |
Approximate starting position |
| Hint Floor Height | "floor,ceiling" (e.g. "0,5") |
Constrain the vertical band to search |
| Hint Radius | metres (default 25) |
Search radius around the hinted position |
| Use 2D Filtering | toggle | Filter candidates in 2D, ignoring height |
| Geo Coordinates In Response | toggle | Include geographic coordinates in the localization response |
For object tracking functionality:
- Open sample scene:
ObjectTracking.unity - Select ObjectTrackingManager GameObject in Hierarchy
- Enter your Object Code(s) in the ObjectTrackingManager component — up to 10 objects can be tracked simultaneously
- Download Object Mesh (Editor only):
- Select the ObjectMeshDownloader component
- Click "Download Object Mesh" button to fetch the 3D mesh
- The mesh will be placed under the ObjectSpace GameObject for scene setup
| Component | Purpose |
|---|---|
| ObjectTrackingManager | Manages object detection and tracking |
| ObjectMeshDownloader | Downloads object meshes in Editor for AR scene setup |
| ObjectSpace | Parent transform for tracked object visualization |
📦 Get Object Codes: Create and manage trackable objects in the MultiSet Developer Dashboard
The SDK automatically configures required permissions. Verify in Assets/Plugins/Android/AndroidManifest.xml:
<uses-permission android:name="horizonos.permission.HEADSET_CAMERA" />Ensure your project meets these requirements:
- ✅ Android Build Support installed
- ✅ Minimum API Level: 32 or higher
- ✅ XR Plugin Provider enabled
- ✅ Scripting Backend: IL2CPP
- ✅ Target Architecture: ARM64
- Build Settings:
File → Build Settings - Select Platform: Android
- Add Scenes: Click "Add Open Scenes"
Essential Android Settings:
- Scripting Backend: IL2CPP
- Target Architectures: ARM64
- Minimum API Level: 32+
- Build and Run: Connect your Quest device and click "Build and Run"
- Grant Permissions: Allow camera access when prompted
- Test Localization: Verify functionality in your target environment
- Validate AR Features: Ensure all AR capabilities work as expected
| Component | Purpose |
|---|---|
MultisetSdkManager |
Main SDK entry point and manager |
SingleFrameLocalizationManager |
Handles single-frame VPS localization |
MapLocalizationManager |
Handles continuous VPS localization |
ObjectTrackingManager |
Manages object detection and tracking |
MapMeshHandler |
Manages 3D map mesh visualization |
ObjectMeshDownloader |
Downloads object meshes in Editor mode |
Ensure your setup is complete:
- Unity version 6000.3.21f1+ installed
- Universal Render Pipeline installed and an active URP asset assigned
- Android platform selected and configured
- OpenXR enabled in XR Plugin Management
- API credentials configured in MultiSetConfig
- Map/MapSet code entered in MultisetSdkManager
- HEADSET_CAMERA permissions in Android manifest
- Sample scene loads and runs without errors
- Project Validation shows no critical issues
After completing setup:
- Test Sample Scenes: Run the sample scenes to verify functionality:
SingleFrameLocalization.unity- Basic localizationLocalization.unity- Continuous localizationObjectTracking.unity- Object detection and trackingNavigation.unity- AR navigation with POIs
- Explore Documentation: Visit docs.multiset.ai for advanced features
- Start Integration: Implement SDK components in your own Unity scenes
- Join Community: Connect with other developers using the SDK
| 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 |
| Magenta / Pink Materials | Project is on the Built-In Render Pipeline. Install URP and assign an active URP asset |
| Localization Issues | Ensure stable internet connection and correct map codes. Consider narrowing the search with Localization Hints |
| Object Tracking Issues | Verify Object Code is correct and mesh is downloaded |
| Camera Permission Denied | Manually grant camera permissions in Quest settings |
- Check Console: Look for error messages in Unity Console
- Validate Credentials: Ensure API credentials are correctly entered
- Network Connectivity: Test internet connection on Quest device
- SDK Version: Verify you're using the latest SDK version
- 📧 Technical Support: support@multiset.ai
- 📚 Documentation: docs.multiset.ai
- 🌐 Website: multiset.ai
- 👩💻 Developer Portal: developer.multiset.ai
Join our developer community for tips, best practices, and peer support.
- Package Manager → Find "MultiSet Quest SDK"
- Click "Update" when available
Remove and re-add with latest Git URL:
https://github.com/MultiSet-AI/multiset-quest-sdk.git#latest
This software is proprietary. See the LICENSE file for complete terms and conditions.
SDK Version: 1.15.2 Unity Compatibility: 6000.3.21f1 Platform: Meta Quest 3/3S Last Updated: August 2026





