Version: 1.0.2
Target Device: Youbiquo Leonardo XR
Base SDK: Snapdragon Spaces 1.0.4
It is recommended to use the Configuration Tool for the initial project setup (see Getting Started). This guide describes the equivalent manual steps for users who prefer direct control over the settings.
Play In Editor: For additional settings regarding the editor workflow, see the dedicated section in Getting Started.
Enable the features that must be active at runtime in OpenXR Settings. Each feature corresponds to an AR Foundation Manager and an XR Subsystem:
| Feature | AR Foundation Manager | XR Subsystem |
|---|---|---|
| Base Runtime | AR Session | XRSessionSubsystem |
| Camera Frame Access | AR Camera Manager | XRCameraSubsystem |
| Hit Testing | AR Raycast Manager | XRRaycastSubsystem |
| Image Tracking | AR Tracked Image Manager | XRImageTrackingSubsystem |
| Plane Detection | AR Plane Manager | XRPlaneSubsystem |
| Spatial Anchors | AR Anchor Manager | XRAnchorSubsystem |
| Spatial Meshing | AR Mesh Manager | XRMeshSubsystem |
Navigate to Edit > Project Settings > Snapdragon Spaces Launcher Settings to declare the features required or supported by your application, including: Hand Tracking, Eye Tracking, Passthrough, Controllers, and Room Scale.
Warning: By default, all
uses-featurevalues are set totrue. Set tofalseany features not used by the application to avoid incorrect feature declarations in the manifest.
Important: The Camera Frame Access sample requires unsafe code mode to be enabled in Player Settings > Android > Other Settings > Script Compilation > Allow ‘unsafe’ Code.
Passthrough allows you to view the physical environment as an image overlay on VR headsets. It is available on LeonardoXR for compatible devices.
OnPassthroughToggle() in MainMenuSampleController, which sets PassthroughToggle on BaseRuntimeFeature.WARNING: The session camera must have the Alpha channel of the Background set to 0 to use Passthrough correctly. An automatic warning will be logged if the settings are incorrect.
The delegate OnSpacesAppSpaceChange in BaseRuntimeFeature notifies when the device performs a recenter (triggered by holding down the menu button for 2 seconds on the VRX).
Note: This guide assumes prior knowledge of AR Foundation and OpenXR. Refer to the official AR Foundation and OpenXR documentation for basic concepts.
To enable positional head tracking on LeonardoXR, the following objects are required:
AR Session
XR Origin
└── Camera Offset
└── Main Camera (tagged as "MainCamera")
Create them by right-clicking in the Hierarchy window and selecting XR > AR Session or XR > XR Origin.
Warning: Disable the AR Camera Manager component if you are not retrieving RGB frames from the camera, to avoid lifecycle issues.
Important: Disable the AR Camera Background component — it is not supported and will be automatically disabled at runtime.
The Older Runtime Compatibility library prevents the application from launching when the SDK is not compatible with the OpenXR runtime installed on the device.
Upon launch, two entries are added to the Android manifest:
targetAPI — corresponds to the version of the OpenXR runtime included in the SDK.minAPI — the minimum runtime version supported by each feature.Version: Starting with Snapdragon Spaces 1.0.4, the
minAPIfor all features is0.22.0.
| Result | Description |
|---|---|
| Success | No incompatibility detected. |
| Error Runtime Failure | OpenXR runtime error. |
| Error Validation Failure | Older Runtime Compatibility validation error. |
| Error Uninitialized System | Error due to missing initialization. |
| Error Runtime Too Old For Application | The installed runtime is too old for the SDK. |
| Error Application Too Old For Runtime | The SDK is too old for the installed runtime. |
When an incompatibility is detected, a popup appears with an error message and a Quit button. For apps using Dual Render Fusion, the user is notified, but the application can still launch.
For issues not listed here, refer to the general known issues of the Snapdragon Spaces platform.
Adding a custom controller archive may cause Gradle caching errors. Deleting the Temp > gradleOut folder generally resolves the issue.
AR Foundation Issues
ARRaycastHit.trackableId always returns 0-0.AR Raycast Manager when an XR Raycast Interactor is present, enabling Spatial Meshing regardless of the EnableARRaycasting flag. This may reduce performance.AR Camera Manager enabled may cause freezing. Disable AR Camera Background to avoid rendering issues.