VR/MR - LeonardoXR SDK
VR/MR — LeonardoXR SDK
VR/MR — LeonardoXR SDK
Version: 1.0.2
Target Device: Youbiquo Leonardo XR
Base SDK: Snapdragon Spaces 1.0.4
Configurazione Manuale del Progetto Unity
È raccomandato usare il Configuration Tool per la configurazione iniziale del progetto (vedi Getting Started). Questa guida descrive i passi manuali equivalenti per chi preferisce un controllo diretto sulle impostazioni.
Modifica le Project Settings
- Vai su Edit > Project Settings > XR Plug-in Management e apri la scheda Android.
- Abilita il plug-in OpenXR e il Snapdragon Spaces feature group.
- Clicca sul punto esclamativo rosso accanto a OpenXR per aprire la finestra OpenXR Project Validation.
- Clicca Fix accanto a ciascuna voce.
- Applica l’impostazione “Enable both Input Systems” per ultima, poiché richiede un riavvio dell’editor.
Play In Editor: Per le impostazioni aggiuntive relative al workflow in editor vedi la sezione dedicata in Getting Started.
Abilita le Spaces Features
Abilita le features che devono essere attive a runtime in OpenXR Settings. Ciascuna feature corrisponde a un AR Foundation Manager e un 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 |
Aggiungi i Feature Usage Data all’Android Manifest
Vai su Edit > Project Settings > Snapdragon Spaces Launcher Settings per dichiarare le features richieste o supportate dall’applicazione per: Hand Tracking, Eye Tracking, Passthrough, Controllers e Room Scale.
Attenzione: Per default tutti i valori
uses-featuresono impostati sutrue. Imposta sufalsele features non utilizzate dall’applicazione per evitare falsi requisiti nel manifest.
Importa i Samples
- Apri Window > Package Manager, seleziona il pacchetto Snapdragon Spaces.
- Clicca Import su Core Samples.
- Aggiungi tutte le scene al build tramite Window > XR > Snapdragon Spaces > Add Scenes to Build Settings.
Importante: Il sample Camera Frame Access richiede la modalità unsafe abilitata in Player Settings > Android > Other Settings > Script Compilation > Allow ‘unsafe’ Code.
Passthrough Setup
Il Passthrough permette di visualizzare l’ambiente fisico come overlay di immagine su dispositivi VR. Su LeonardoXR è disponibile sui dispositivi compatibili.
- Si attiva tramite il pannello Extend Content nell’UI in-app (visibile solo su dispositivi compatibili con Passthrough).
- Può essere attivato anche con i tasti X e A del controller.
- La funzione di abilitazione è
OnPassthroughToggle()inMainMenuSampleController, che impostaPassthroughTogglesuBaseRuntimeFeature.
ATTENZIONE: La camera della sessione deve avere il canale Alpha del Background impostato su 0 per usare il Passthrough correttamente. Viene registrato un avviso automatico se le impostazioni sono errate.
Il delegate OnSpacesAppSpaceChange in BaseRuntimeFeature notifica quando il dispositivo esegue un recenter (attivato tenendo premuto il tasto menu per 2 secondi sul VRX).
Scene Setup
Nota: Questa guida presuppone conoscenza pregressa di AR Foundation e OpenXR. Consulta la documentazione ufficiale di AR Foundation e OpenXR per i concetti base.
Gerarchia Minima della Scena
Per abilitare il positional head tracking su LeonardoXR sono necessari i seguenti oggetti:
AR Session
XR Origin
└── Camera Offset
└── Main Camera (tagged as "MainCamera")
Creali facendo clic destro nella Hierarchy e selezionando XR > AR Session oppure XR > XR Origin.
Attenzione: Disabilita il componente AR Camera Manager se non stai recuperando frame RGB dalla camera, per evitare problemi nel lifecycle.
Importante: Disabilita il componente AR Camera Background — non è supportato e verrà disabilitato automaticamente a runtime.
Application Lifecycle — Compatibilità con Runtime Precedenti
La libreria Older Runtime Compatibility impedisce l’avvio dell’applicazione quando l’SDK non è compatibile con il runtime OpenXR installato sul dispositivo.
All’avvio vengono aggiunte due voci all’Android manifest:
targetAPI— corrisponde alla versione del runtime OpenXR inclusa nell’SDK.minAPI— la versione minima del runtime che ciascuna feature supporta.
Versione: A partire da Snapdragon Spaces 1.0.4, il
minAPIper tutte le features è0.22.0.
Risultati di Compatibilità
| Risultato | Descrizione |
|---|---|
| Success | Nessuna incompatibilità rilevata. |
| Error Runtime Failure | Errore del runtime OpenXR. |
| Error Validation Failure | Errore nella validazione Older Runtime Compatibility. |
| Error Uninitialized System | Errore per mancanza di inizializzazione. |
| Error Runtime Too Old For Application | Il runtime installato è troppo vecchio per l’SDK. |
| Error Application Too Old For Runtime | L’SDK è troppo vecchio per il runtime installato. |
Quando viene rilevata un’incompatibilità compare un popup con un messaggio di errore e un pulsante Quit. Per le app con Dual Render Fusion l’utente viene informato ma l’applicazione può comunque avviarsi.
Known Issues — VR/MR su LeonardoXR
Per problemi non elencati qui, consulta le known issues generali della piattaforma Snapdragon Spaces.
Gradle Build Issue
L’aggiunta di un archivio controller personalizzato può causare errori di caching Gradle. Eliminare la cartella Temp > gradleOut risolve generalmente il problema.
AR Foundation Issues
- AR Raycast Hit restituisce Trackable ID errato —
ARRaycastHit.trackableIdrestituisce sempre0-0. - Plane Detection bloccata — La triangolazione mesh entra in un loop infinito in AR Foundation 6.2.1.
XRIT Issues
- AR Raycast Manager aggiunto automaticamente — XRIT 3.x aggiunge un
AR Raycast Managerquando è presente unXR Raycast Interactor, abilitando lo Spatial Meshing indipendentemente dal flagEnableARRaycasting. Questo può ridurre le performance. - Proprietà AR Mesh Manager non supportate — L’uso di proprietà non supportate genera avvisi a runtime.
- AR Camera Manager / AR Camera Background Issues — Spostarsi tra scene con
AR Camera Managerabilitato può causare freeze. DisabilitaAR Camera Backgroundper evitare problemi di rendering.
Play In Editor Known Issues
- Memory Leak in Camera Access Simulation — Risolto in AR Foundation 6.0+.
- AR Mesh Manager crash senza Normals — Aggiorna AR Foundation o abilita le normals.
- QR Code Tracking non caricato in Simulation — Non esiste un subsystem di simulazione; aggira i controlli nelle build editor.
- ScriptableSingleton Warning — Risolto in AR Foundation 5.1.2+.