Table of Contents

Pacchetto di estensione per visori EasyAR Unity

Questo documento introduce il concetto di pacchetto di estensione headset di EasyAR Unity, i suoi limiti di capacità e le conoscenze di base necessarie per creare un pacchetto di estensione per headset.

Prima di iniziare

Che cos'è il pacchetto di estensione headset di EasyAR Unity

Il pacchetto di estensione headset di EasyAR Unity è un Unity package che contiene una serie di codice ed esempi per aiutare a usare le funzionalità di EasyAR Sense sul proprio dispositivo headset. Con questo pacchetto, è possibile integrare nella propria piattaforma la maggior parte delle funzionalità di EasyAR Sense, come il tracking immagine e la mappa spaziale densa, sfruttando le potenti capacità AR di EasyAR.

L'uso del pacchetto di estensione headset di EasyAR Unity è uno dei modi per supportare gli headset in EasyAR. La figura seguente mostra l'architettura complessiva di EasyAR in Unity e la posizione del pacchetto di estensione headset al suo interno.

block
  columns 4
  block:groupApp:4
    block:groupAppWrapper
      space
      App1["EasyAR + Device A<br>App"]
      space
      App2["EasyAR<br>App"]
      space
      App3["EasyAR + Device B<br>App"]
    end
  end
  
  block:groupSensePluginExtension
    columns 1
    SensePluginExtension["EasyAR Sense Unity Plugin<br>Extension for Device A"]
    space
  end
  block:groupSensePlugin
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  
  block:groupDeviceAUnity
    columns 1
    DeviceAUnity["Device A<br>Unity SDK"]
    space
  end
  block:groupSense
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      MDeviceB["Device B<br>CameraDevice"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:4
    columns 1
    System["Native Library"]
    block:groupSystemWrapper
      space
      DeviceA["Device A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      space
      DeviceB["Device B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
    end
  end
  
  SensePluginExtension --> App1
  SensePlugin --> App1
  SensePlugin --> App2
  SensePlugin --> App3
  ARF --> App3
  XRI --> App1
  XRI --> App3
  groupSense --> SensePlugin
  groupDeviceAUnity --> SensePluginExtension
  SensePlugin --> SensePluginExtension
  DeviceA --> groupDeviceAUnity
  DeviceA --> XRSDK
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  DeviceB --> MDeviceB
  DeviceB --> XRSDK
  
  style groupApp fill:none,stroke:none,stroke-width:0px
  style groupAppWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePlugin fill:none,stroke:none,stroke-width:0px
  style groupARF fill:none,stroke:none,stroke-width:0px
  style groupXRI fill:none,stroke:none,stroke-width:0px
  style DeviceAUnity fill:none,stroke:none,stroke-width:0px
  style Sense fill:none,stroke:none,stroke-width:0px,color
  style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
  style XRSubsystem fill:none,stroke:none,stroke-width:0px
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePluginExtension fill:none,stroke:none,stroke-width:0px  

  classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
  class SensePluginExtension EasyAR

La figura mostra due modalità tipiche di supporto headset: l'integrazione con l'SDK del dispositivo tramite il pacchetto di estensione Unity (Device A) e l'integrazione diretta con l'SDK del dispositivo nella libreria EasyAR Sense (Device B). Questo documento descrive principalmente la prima.

Posso creare un mio pacchetto di estensione headset?

Al momento, nel settore AR/VR/MR/XR non esiste ancora una soluzione di interfaccia davvero uniforme. OpenXR è un buon candidato, ma l'evoluzione dello standard e le implementazioni industriali richiedono tempo. Perciò, in generale, i dispositivi commerciali non sono facili da far eseguire direttamente con EasyAR, e molto probabilmente mancheranno alcune interfacce dati. Con l'evoluzione del settore, alcuni dispositivi emergenti possono avere un buon supporto di interfaccia; per esempio, nel 2024 Apple ha aperto le relative interfacce di Vision Pro, già sufficienti per supportare EasyAR, anche se usarle richiede comunque una certa competenza professionale.

Se non è possibile valutare la situazione, si consiglia di contattare il produttore hardware o EasyAR Business per ottenere il supporto del dispositivo.

Se si è un produttore hardware e si desidera supportare le funzionalità EasyAR sul proprio dispositivo, si può fare riferimento ai documenti successivi per creare un pacchetto di estensione headset, in modo che la maggior parte delle funzionalità EasyAR possa essere eseguita sul proprio dispositivo. Questo documento fornisce specifiche sui dati e sulle interfacce, ma non vincola tutti i dettagli di implementazione: qualsiasi soluzione o definizione di interfaccia può essere discussa. Siamo lieti di parlarne tramite i canali commerciali.

L'hardware coperto da questo documento deve avere capacità di tracking del movimento o SLAM. Le funzionalità EasyAR devono eseguire un buon tracking del dispositivo; in genere non si consiglia di usare le funzionalità EasyAR per “migliorare” il tracking del dispositivo, perché si creerebbe una dipendenza circolare che teoricamente amplifica l'errore e rende l'intero sistema instabile. Se il dispositivo non ha capacità di tracking del movimento, la soluzione non rientra nell'ambito di questo documento; se necessario, se ne può discutere tramite i canali commerciali.

Limiti delle capacità del pacchetto di estensione headset

L'obiettivo del pacchetto di estensione headset è consentire alla maggior parte delle funzionalità di EasyAR Sense di funzionare sul vostro dispositivo. Per raggiungere questo obiettivo, è necessario capire i limiti delle sue capacità.

Cosa include il pacchetto di estensione headset

L'estensione che realizzerete è:

  • Una serie di codice che usa le funzionalità di fotocamera personalizzata per acquisire dati dall'SDK del dispositivo e inviarli a EasyAR Sense.
  • In Unity, l'estensione headset userà le sorgenti frame esterne e il flusso dati definito da EasyAR Sense Unity Plugin per semplificare lo sviluppo della fotocamera personalizzata.
  • In Unity, l'estensione headset è un Unity package che contiene script runtime, script editor e sample estesi, che voi o EasyAR potete distribuire agli utenti downstream.
Consiglio

Se non volete esporre i dettagli dell'integrazione ai sistemi esterni, potete contattare EasyAR per discuterne. L'integrazione diretta tramite interfaccia C all'interno di EasyAR Sense è possibile e ha precedenti.

Durante l'implementazione dell'estensione, potreste:

  • Modificare il design delle interfacce e l'implementazione interna del vostro SDK.
  • Discutere e confermare con il vostro team il modo in cui i dati vengono acquisiti e usati.
  • Passare molto tempo a verificare la correttezza dei dati invece che a scrivere codice.

Una volta completata l'estensione, vedrete che:

  • La maggior parte delle funzionalità di EasyAR Sense sarà disponibile sul vostro dispositivo e sfrutterà le capacità di tracking del movimento del dispositivo.
  • I servizi cloud EasyAR supportati internamente da EasyAR Sense saranno disponibili sul vostro dispositivo.
  • Potrà essere usata solo la license EasyAR XR. Le license personali, professionali e classiche non potranno essere usate sul vostro dispositivo.
  • Tutti i limiti delle license EasyAR, quando si usa una fotocamera personalizzata, si applicheranno al vostro dispositivo nello stesso modo.

Cosa non include il pacchetto di estensione headset

Questa estensione non può essere usata da sola senza EasyAR Sense:

  • Questo pacchetto di estensione non gira da solo; come dipendenza è richiesto anche EasyAR Sense. In Unity è obbligatorio usare EasyAR Sense Unity Plugin.
  • Non chiama direttamente le API dei servizi cloud EasyAR, come il servizio di localizzazione EasyAR Mega; queste chiamate vengono eseguite all'interno di EasyAR Sense.
  • In Unity, non chiama direttamente i metodi delle funzionalità AR, come il tracking immagine; questi vengono eseguiti all'interno di EasyAR Sense Unity Plugin.
  • In Unity, non modifica il transform degli oggetti o dei target tracciati nella scena; questo avviene all'interno di EasyAR Sense Unity Plugin.

Questa estensione non può essere usata senza l'SDK del vostro dispositivo:

  • In Unity, l'estensione headset o EasyAR Sense Unity Plugin non modifica il transform della camera nella scena; questo deve essere fatto nell'SDK del vostro dispositivo o nella sua catena di dipendenze.

Con l'estensione headset, alcune funzionalità EasyAR restano comunque non utilizzabili:

  • La funzionalità di surface tracking non sarà disponibile.
  • Il tracking del movimento di EasyAR non sarà disponibile.
  • Il rilevamento dei piani, che fa parte del tracking del movimento di EasyAR, non sarà disponibile.

Come usare Mega sul mio dispositivo?

Eseguire Mega sul dispositivo è una domanda che interessa molti utenti. In Unity, il servizio Mega è un modulo funzionale costruito sopra molte funzionalità di base di EasyAR Sense, quindi, se il vostro dispositivo supporta completamente EasyAR Sense, anche Mega sarà supportato.

In generale, non si consiglia di iniziare eseguendo direttamente l'esempio Mega sul dispositivo per verificare il supporto a Mega, perché Mega usa in modo combinato tutti i dati di input e ha una tolleranza relativamente ampia agli errori su questi dati. Eseguire direttamente l'esempio Mega può facilmente produrre risultati non realistici a causa di interfacce non corrispondenti o qualità dati insufficiente, e non permette di capire dove sia il problema, complicando molto il debugging futuro.

Importante

Il servizio Mega richiede una certa capacità di tracking del dispositivo. Se il tracking del dispositivo non è buono, anche Mega ne risentirà. In scenari AR di ampia area, bisogna prestare particolare attenzione alle differenze di comportamento tra interno ed esterno.

Importante

Mega è pensato in generale per scenari di grande spazio, quindi bisogna prestare grande attenzione all'effetto di visualizzazione degli oggetti distanti, degli oggetti fuori dal centro del campo visivo e degli oggetti osservati ruotando o muovendosi. Se l'errore del sistema di display del dispositivo è elevato, anche se Mega funziona correttamente, l'utente percepirà che gli oggetti virtuali non aderiscono bene a quelli reali.

Conoscenze di base richieste e configurazione del team

Creare un pacchetto di estensione headset non è un compito semplice e richiede un lavoro approfondito in più aree da parte vostra e del vostro team. In genere, per completare l'estensione headset, oltre agli sviluppatori Unity servono anche persone del team che lavorano fuori dallo sviluppo Unity. Poiché mancano standard, modificare solo il 3D engine di solito non basta per completare l'estensione headset: si consiglia di coinvolgere fin dal primo giorno ingegneri di sistema e sviluppatori SDK che lavorano a basso livello.

Costruire un dispositivo AR/VR richiede alcune conoscenze di dominio; allo stesso modo, eseguire e verificare EasyAR Sense sul dispositivo richiederà che voi o il vostro team siate esperti nei seguenti ambiti:

  • Struttura fisica e sistema di rendering del dispositivo
  • Geometria del sistema di fotocamere
  • Sviluppo SDK
  • Normali competenze di debug Android, come adb (Cina continentale, internazionale)

Se lavorate in Unity, dovreste anche conoscere:

Inoltre, una certa conoscenza di questi ambiti vi aiuterà a comprendere meglio il sistema, soprattutto come inviare a EasyAR i dati corretti:

Passi successivi

Negli articoli successivi vedrete il flusso completo per creare un pacchetto di estensione headset:

Argomenti correlati