Funzionalità

Funzionalità — LeonardoXR SDK

Funzionalità

  • Versione 1.0.2
  • Dispositivo: Youbiquo Leonardo XR
  • Base SDK: Snapdragon Spaces 1.0.4

Questa pagina documenta le funzionalità disponibili nell’SDK LeonardoXR, organizzate in due sezioni:

Funzionalità di Snapdragon Spaces — funzionalità AR/XR fornite dalla piattaforma Snapdragon Spaces, accessibili tramite AR Foundation.
Funzionalità di LeonardoXR — funzionalità proprietarie specifiche di Leonardo XR.

Funzionalità di Snapdragon Spaces

Ancore locali

Come abilitare

Vai su Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Spatial Anchors e abilita la funzione.

Negozio Spaces Anchor

NOTA Guarda l’ambiente circostante per generare una mappa di tracking migliore e ridurre i tempi di salvataggio/caricamento. Salvare più anchor contemporaneamente blocca il thread principale — utilizza la callback per salvare gli anchor successivi in modo sequenziale.

namespace Qualcomm.Snapdragon.Spaces
{
    public class SpacesAnchorStore
    {
        public void ClearStore();
        public void SaveAnchor(ARAnchor anchor, string anchorName, Action<bool> onSavedCallback = null);
        public void SaveAnchorWithResult(ARAnchor anchor, string anchorName, Action<SaveAnchorResult> callback = null);
        public void DeleteSavedAnchor(string anchorName);
        public void LoadSavedAnchor(string anchorName, Action<bool> onLoadedCallback = null);
        public void LoadAllSavedAnchors(Action<bool> onLoadedCallback = null);
        public string[] GetSavedAnchorNames();
        public string GetSavedAnchorNameFromARAnchor(ARAnchor anchor);
    }
}

Riferimento API

MethodDescription
ClearStore()Clears the local anchor storage.
SaveAnchor(...)Saves an ARAnchor by name or generated hash; optional callback on completion.
SaveAnchorWithResult(...)Like SaveAnchor but returns a SaveAnchorResult enum.
DeleteSavedAnchor(name)Deletes a saved anchor by name.
LoadSavedAnchor(name, ...)Loads an anchor from storage and attempts to localise it; fires anchorsChanged.added.
LoadAllSavedAnchors(...)Loads all stored anchors.
GetSavedAnchorNames()Returns all saved anchor names.
GetSavedAnchorNameFromARAnchor(anchor)Returns the name of a saved anchor from a tracked ARAnchor, or empty string if not saved.

Valori di SaveAnchorResult

ValueMeaning
PENDINGAnchor is awaiting save.
SAVEDSuccessfully saved.
FAILURE_RUNTIME_ERRORRuntime error.
FAILURE_STORE_NOT_LOADEDAnchor Store failed to load.
FAILURE_INSUFFICIENT_QUALITYEnvironment map quality is insufficient.

Hit test

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Hit Testing.

Utilizza AR Raycast Manager di AR Foundation (XRRaycastSubsystem). Supporta hit testing continuo contro piani e mesh del mondo reale. Il sistema lancia un raggio dalla camera (o da un punto specificato) e restituisce le intersezioni con le superfici rilevate. Ogni hit contiene posizione, normale e tipo di superficie (piano o mesh).

List<ARRaycastHit> hits = new List<ARRaycastHit>();
if (raycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinPolygon))
{
Pose hitPose = hits[0].pose;
// Place AR content at hitPose.position
}

ATTENZIONE ARRaycastHit.trackableId restituisce sempre 0-0 (problema noto).

Tracciamento delle immagini

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Image Tracking. Utilizza AR Tracked Image Manager (XRImageTrackingSubsystem). Supporta librerie di immagini di riferimento statiche e modificabili (runtime).

// Mutable library example
var library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;
await library.ScheduleAddImageWithValidationJob(texture, "image-name", 0.1f); // 0.1f = physical width in metres
trackedImageManager.referenceLibrary = library;

Rilevamento aereo

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Plane Detection. Utilizza AR Plane Manager (XRPlaneSubsystem). L’opzione Use Scene Understanding Backend è abilitata di default.

arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical;

ATTENZIONE Plane Detection entra in un loop infinito di triangolazione mesh in AR Foundation 6.0. In Unity 6 + OpenXR 1.15.1, Plane Detection non funziona nelle app Dual Render Fusion.

Accesso alla cornice della fotocamera

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Camera Frame Access. Utilizza AR Camera Manager (XRCameraSubsystem).

Funzionalità principali:

  • Accesso ai frame raw della camera nei formati YUV (Y’UV420sp) e YUYV / YUY2
  • XRCpuImage.GetPlane(int) per accesso lato CPU
  • XRCpuImage.ConvertAsync per conversione asincrona
  • Accesso a frame RGB accelerato via GPU per dispositivi AiO (tramite OpenGL)
  • Recupero di extrinsics / posa del sensore tramite InputBindings

NOTA Abilita Allow ‘unsafe’ Code in Player Settings > Android > Other Settings > Script Compilation quando utilizzi il sample Camera Frame Access. Disabilita AR Camera Background per evitare problemi di rendering.

void OnCameraFrameReceived(ARCameraFrameEventArgs args)
{
if (cameraManager.TryAcquireLatestCpuImage(out XRCpuImage image))
{
using (image)
{
XRCpuImage.Plane yPlane = image.GetPlane(0); // Luminance plane
// yPlane.data contains the raw data
}
}
}

Mesh spaziale

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Spatial Meshing. Utilizza AR Mesh Manager (XRMeshSubsystem). Il componente opzionale SpacesARMeshManagerConfig controlla le caratteristiche della mesh e gli offset di altezza della camera per TrackingOriginMode.Floor.

Monitoraggio del codice QR

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > QR Code Tracking. Utilizza il componente personalizzato SpacesQrCodeManager. Supporta diverse modalità di tracking per controllare la frequenza di aggiornamento dell’algoritmo.

// Editor build workaround (no simulation subsystem for QR Code Tracking)
bool CheckSubsystem()
{
#if UNITY_EDITOR
return arQrCodeManager.subsystem?.running ?? false;
#else
return true;
#endif
}

Tracciamento delle mani

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Hand Tracking. Il tracking delle mani è fornito dai pacchetti plugin QCHT (Qualcomm Hand Tracking). LeonardoXR utilizza il pacchetto Unity XR Hands (v1.7.2) come livello di accesso ai dati delle articolazioni, integrato con estensioni QCHT.

NOTA Per far funzionare correttamente Hand Tracking su LeonardoXR, l’opzione Hand Tracking Subsystem deve essere attiva in All Features di OpenXR.

Per l’integrazione completa con XR Interaction Toolkit, consulta il documento Interaction Package Guides.

Rendering fovetato

Abilita tramite Project Settings > XR Plug-in Management > OpenXR (Android) > Snapdragon Spaces > Foveated Rendering. Riduce il carico GPU renderizzando la periferia del campo visivo a risoluzione inferiore. Le impostazioni persistono dopo pausa e ripresa dell’applicazione.

LevelDescription
NoneNo reduction.
LowLight reduction, imperceptible to most users.
MediumGood quality/performance trade-off.
HighMaximum reduction; recommended only for heavily 3D content scenes.

Funzionalità di LeonardoXR

Le seguenti funzionalità sono specifiche di Leonardo XR e non fanno parte della piattaforma base Snapdragon Spaces. Abilitarle tramite Project Settings > XR Plug-in Management > OpenXR (Android) > gruppo di funzionalità LeonardoXR.

Accesso alla doppia fotocamera

DOCUMENTAZIONE IN CORSO Questa funzionalità fornisce accesso sincronizzato ai frame di entrambe le camere Leonardo XR. Documentazione API dettagliata, configurazione ed esempi saranno disponibili in una futura release.

Plugin di inferenza QNN

DOCUMENTAZIONE IN CORSO Questa funzionalità espone le capacità hardware di inferenza neurale di Leonardo XR tramite il runtime Qualcomm Neural Network (QNN), consentendo l’esecuzione di modelli AI/ML direttamente sulla NPU del dispositivo. Documentazione API dettagliata, workflow di conversione dei modelli ed esempi saranno disponibili in una futura release.

Intercetta la funzione OpenXR

DOCUMENTAZIONE IN CORSO Questa funzionalità avanzata fornisce un meccanismo per intercettare e sovrascrivere funzioni OpenXR a basso livello. È destinata a casi d’uso specializzati che richiedono controllo diretto sul layer OpenXR. La documentazione dettagliata sarà disponibile in una futura release.