Samples Guide — LeonardoXR SDK

Samples Guide — LeonardoXR SDK

Samples Guide — LeonardoXR SDK

Version: 1.0.2 Target Device: Youbiquo Leonardo XR
Base SDK: Snapdragon Spaces 1.0.4

I sample sono organizzati in due sezioni:

  • LeonardoXR Samples — sample specifici per le features proprietarie di Leonardo XR.
  • Snapdragon Spaces Core Samples — sample forniti da Qualcomm per le features AR/XR di base.

Importazione dei Samples

Snapdragon Spaces Core Samples

Il pacchetto Core Samples è importabile da Window > Package Manager > Snapdragon Spaces > Core Samples. Dopo l’import, aggiungi tutte le scene al build tramite Window > XR > Snapdragon Spaces > Add Scenes to Build Settings.

LeonardoXR Core Samples

Il pacchetto LeonardoXR Core Samples è importabile da Window > Package Manager > LeonardoXR > Core Samples. Dopo l’import, le scene sono disponibili nella cartella Samples/LeonardoXR/[versione]/Core Samples/Scenes/.


LeonardoXR Samples

Dual Camera Access Sample

⚠️ Documentazione in preparazione.

Questo sample dimostrerà come accedere ai frame sincronizzati delle due camere di Leonardo XR tramite la feature Dual Camera Access.

Scena: Samples/LeonardoXR/.../Core Samples/Scenes/DualCameraAccess
Prerequisiti: Feature Dual Camera Access abilitata in LeonardoXR feature group.


QNN Inference Sample

⚠️ Documentazione in preparazione.

Questo sample dimostrerà come caricare ed eseguire un modello di inferenza neurale sull’NPU di Leonardo XR tramite il QNN Inference Plugin.

Scena: Samples/LeonardoXR/.../Core Samples/Scenes/QnnInference
Prerequisiti: Feature QNN Inference Plugin abilitata in LeonardoXR feature group.


Intercept OpenXR Function Sample

⚠️ Documentazione in preparazione.

Questo sample dimostrerà come intercettare funzioni OpenXR a basso livello tramite la feature InterceptOpenXRFunction.

Scena: Samples/LeonardoXR/.../Core Samples/Scenes/InterceptOpenXRFunction
Prerequisiti: Feature Intercept OpenXR Function abilitata in LeonardoXR feature group.



Snapdragon Spaces Core Samples

Local Anchors Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/Anchor

Questo sample dimostra come creare e distruggere anchor locali per tracciare con precisione un punto nel mondo reale. Richiede la feature Spatial Anchors abilitata in OpenXR.

Come Funziona

Un gizmo di posizionamento trasparente fluttua a 1 metro davanti alla camera. Quando Place anchor on surfaces è abilitato, viene proiettato un ray in avanti ogni frame. Quando una superficie viene colpita il gizmo diventa giallo. Toccare il touchpad o usare il gaze interactor crea un ARAnchor con un gizmo di tracking.

private void OnAnchorsChanged(ARAnchorsChangedEventArgs args)
{
    foreach (var anchor in args.updated)
    {
        Destroy(anchor.transform.GetChild(0).gameObject);
        var newGizmo = Instantiate(
            anchor.trackingState == TrackingState.None
                ? GizmoUntrackedAnchor
                : GizmoTrackedAnchor);
        newGizmo.transform.SetParent(anchor.transform, false);
    }
}
Salvataggio, Eliminazione e Caricamento degli Anchor
  • Abilita Save new anchors to local store per persistere ogni nuovo anchor.
  • Un cubo bianco sul gizmo = anchor salvato e tracciato; cubo rosso = non tracciato.
  • Load All Saved Anchors — carica e tenta di localizzare tutti gli anchor memorizzati.
  • Clear Store — elimina tutti gli anchor memorizzati (non distrugge gli anchor già caricati).
  • Destroy All Anchors — distrugge tutti i GameObject anchor attivi (con un breve ritardo).

Hand Tracking Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/HandTracking

Dimostra la visualizzazione delle giunture della mano e il riconoscimento dei gesti tramite il pacchetto di interazione QCHT. Richiede la feature Hand Tracking e i pacchetti QCHT / XR Hands.


Hit Testing Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/HitTesting

Dimostra l’hit testing continuo tramite raycast contro piani e mesh del mondo reale usando ARRaycastManager. Il sample mostra come posizionare oggetti virtuali sulle superfici rilevate.


Image Tracking Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/ImageTracking

Dimostra il tracking di immagini di riferimento stampate e la sovrapposizione di contenuto virtuale. Supporta librerie di immagini statiche e mutabili.


Plane Detection Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/PlaneDetection

Dimostra il rilevamento e la visualizzazione di piani orizzontali e verticali tramite ARPlaneManager. Supporta modalità di rilevamento e piani convex hull opzionali.


Camera Frame Access Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/CameraFrameAccess

Dimostra il recupero di frame camera raw (YUV / YUYV) dal dispositivo usando ARCameraManager. Include estrinseci del sensore, query sul numero di camere e accesso ai frame accelerato da GPU.

Importante: Richiede Allow ‘unsafe’ Code abilitato in Player Settings.


Spatial Meshing Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/SpatialMeshing

Dimostra il meshing ambientale in tempo reale usando ARMeshManager. Include uno slider di opacità e il componente opzionale SpacesARMeshManagerConfig.


QR Code Tracking Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/QRCodeTracking

Dimostra la scansione e il tracking di QR code tramite SpacesQrCodeManager. Sono disponibili multiple modalità di tracking.


XR Interaction Toolkit Sample

Scena: Samples/Snapdragon Spaces/.../Core Samples/Scenes/XRInteractionToolkit

Dimostra le interazioni standard XR Interaction Toolkit (ray interactors, direct interactors, teleportation) in un progetto Snapdragon Spaces. Compatibile con la configurazione LeonardoXR.


Componenti di Interazione

Composition Layer Components

Il Spaces Composition Layer renderizza texture direttamente all’HMD bypassando i passi di post-processing. I tipi di geometria supportati sono Quad, Cylinder, Sphere e Cube. Utile per UI ad alta nitidezza o elementi che devono mantenere qualità indipendentemente dagli effetti di scena.


Sample Aggiuntivi

SampleDescrizione
Display Refresh RateQuery e impostazione runtime del refresh rate del display tramite l’estensione XR_EXT_display_refresh_rate.
Performance SettingsImpostazione dei livelli di performance CPU/GPU tramite l’estensione XR_EXT_performance_settings.