Table of Contents

Pacchetto di estensione per visori easyar unity

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

Prima di iniziare

Che cos'è l'estensione EasyAR Unity per visore

L'estensione EasyAR Unity per visore è un pacchetto Unity che contiene una serie di codice ed esempi per aiutarti a utilizzare le funzionalità di EasyAR Sense sul tuo dispositivo visore. Con questa estensione, puoi integrare la maggior parte delle funzionalità di EasyAR Sense (come il tracciamento delle immagini, la mappa spaziale densa, ecc.) nel tuo dispositivo, sfruttando così le potenti funzionalità AR fornite da EasyAR.

L'utilizzo dell'estensione EasyAR Unity per visore è uno dei modi in cui EasyAR supporta i visori. La figura seguente mostra l'architettura complessiva di EasyAR in Unity e la posizione dell'estensione per visore 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 elenca due modi tipici di supporto per visori: tramite l'estensione Unity per visore che si interfaccia con l'SDK del dispositivo (Device A), e direttamente nella libreria EasyAR Sense che si interfaccia con l'SDK del dispositivo (Device B). Questo documento si concentra principalmente sul primo.

Posso creare il mio pacchetto di estensione per visori?

Attualmente, l'industria AR/VR/MR/XR non ha ancora sviluppato uno schema di interfaccia veramente unificato. Sebbene OpenXR sia un ottimo candidato, l'evoluzione delle specifiche e l'implementazione nel settore richiedono ancora tempo. Pertanto, generalmente non è così semplice far funzionare direttamente EasyAR su dispositivi commerciali, ed è probabile che si verifichino carenze nell'interfaccia dati. Con lo sviluppo del settore, alcuni dispositivi emergenti potrebbero offrire un buon supporto per le interfacce. Ad esempio, nel 2024 Apple ha aperto le interfacce relative a Vision Pro, interfacce che sono già sufficienti per supportare l'esecuzione di EasyAR, sebbene il loro utilizzo richieda comunque una certa competenza tecnica.

Se non riesci a valutare la situazione, ti consigliamo di contattare il produttore dell'hardware o l'area commerciale di EasyAR per ottenere il supporto adeguato per il dispositivo.

Se sei un produttore di hardware e desideri supportare le funzionalità di EasyAR sul tuo dispositivo, puoi fare riferimento alla documentazione successiva per creare un pacchetto di estensione per visori, permettendo così alla maggior parte delle funzioni di EasyAR di funzionare sul tuo dispositivo. Questo documento fornisce specifiche per dati e interfacce senza vincolare tutti i dettagli implementativi; qualsiasi metodo di implementazione o definizione di interfaccia può essere discusso. Siamo benvenuti a contattarci tramite i canali commerciali per comunicazioni.

L'hardware coperto da questo documento deve possedere intrinsecamente capacità di tracciamento del movimento o SLAM. Le funzioni di EasyAR necessitano di essere eseguite su solide capacità di tracciamento del dispositivo. Generalmente non è consigliabile affidarsi alle funzionalità di EasyAR per ottimizzare il tracciamento dell'hardware, poiché ciò creerebbe una dipendenza circolare che teoricamente amplificherebbe gli errori e porterebbe l'intero sistema a diventare instabile. Se il dispositivo stesso non possiede capacità di tracciamento del movimento, lo schema di supporto non rientra nell'ambito di questo documento. Se necessario, contattaci tramite i canali commerciali per discutere.

Limiti delle funzionalità del pacchetto di estensione per visori

L'obiettivo del pacchetto di estensione per visori è far funzionare la maggior parte delle funzionalità di EasyAR Sense sul tuo dispositivo. Per raggiungere questo obiettivo, è necessario comprendere i limiti delle funzionalità del pacchetto di estensione per visori.

Contenuto del pacchetto di estensione per headset

L'estensione che implementerai consiste in:

  • Codice che utilizza la funzionalità fotocamera personalizzata per acquisire dati dalla tua API del dispositivo e inviarli a EasyAR Sense.
  • In Unity, l'estensione per headset utilizza un'origine frame esterna e un flusso di dati EasyAR Sense definito dal EasyAR Sense Unity Plugin per semplificare lo sviluppo della fotocamera personalizzata.
  • In Unity, l'estensione per headset è un pacchetto Unity contenente script di runtime, script dell'editor e un esempio dell'estensione, che tu o EasyAR potete distribuire agli utenti downstream.
Consiglio

Se non desideri esporre i dettagli di integrazione a sistemi esterni, puoi contattare EasyAR per discutere. L'integrazione diretta utilizzando l'interfaccia C all'interno di EasyAR Sense è fattibile e ha precedenti.

Durante l'implementazione dell'estensione, potresti:

  • Modificare la progettazione dell'interfaccia e l'implementazione interna del tuo SDK.
  • Discutere e confermare con il tuo team le strategie per l'acquisizione e l'utilizzo dei dati.
  • Dedicare molto tempo alla verifica della correttezza dei dati piuttosto che alla scrittura del codice.

Dopo aver completato l'estensione, vedrai:

  • La maggior parte delle funzionalità di EasyAR Sense utilizzabili sul tuo dispositivo, sfruttando le capacità di tracciamento del movimento del dispositivo.
  • I servizi cloud EasyAR supportati all'interno di EasyAR Sense utilizzabili sul tuo dispositivo.
  • Possibilità di utilizzare solo licenze EasyAR XR. Le licenze Personal, Professional e Classic non funzioneranno sul tuo dispositivo.
  • Tutte le limitazioni delle licenze EasyAR quando si utilizza una fotocamera personalizzata si applicano allo stesso modo al tuo dispositivo.

Cosa non è incluso nel pacchetto di estensione per visori

Questa estensione non può funzionare senza EasyAR Sense:

  • Questa estensione per visori non funziona in modo autonomo; come dipendenza, EasyAR Sense è necessario. In Unity, il EasyAR Sense Unity Plugin deve essere utilizzato.
  • Non chiama direttamente le API dei servizi cloud EasyAR (ad esempio, il servizio di localizzazione EasyAR Mega); queste chiamate vengono gestite internamente da EasyAR Sense.
  • In Unity, non chiama direttamente i metodi delle interfacce per le funzionalità AR (come il tracciamento delle immagini); queste vengono gestite internamente nel EasyAR Sense Unity Plugin.
  • In Unity, non modifica il transform degli oggetti nella scena o dei target di tracciamento; questo viene gestito internamente nel EasyAR Sense Unity Plugin.

Questa estensione non può funzionare senza il tuo SDK del dispositivo:

  • In Unity, l'estensione per visori o il EasyAR Sense Unity Plugin non modificano il transform della camera nella scena; questo deve essere gestito nel tuo SDK del dispositivo o nel suo percorso di dipendenze.

Attraverso l'estensione per visori, alcune funzionalità di EasyAR rimangono non disponibili:

  • La funzionalità di tracciamento delle superfici non sarà utilizzabile.
  • Il tracciamento del movimento nativo di EasyAR non sarà utilizzabile.
  • Il rilevamento del piano (parte del tracciamento del movimento di EasyAR) non sarà utilizzabile.

Come utilizzare Mega sul mio dispositivo?

L'esecuzione di Mega sul dispositivo è una preoccupazione comune per molti utenti. In Unity, il servizio Mega è un modulo funzionale che opera su molte funzionalità di base di EasyAR Sense. Pertanto, finché il tuo dispositivo supporta completamente EasyAR Sense, anche Mega sarà supportato.

Generalmente, non è consigliabile verificare inizialmente il supporto del dispositivo per Mega eseguendo direttamente l'esempio Mega sul dispositivo. Questo perché Mega utilizza in modo combinato tutti i dati di input ed è relativamente tollerante agli errori in questi dati. L'esecuzione diretta dell'esempio Mega potrebbe facilmente portare a risultati insoddisfacenti a causa di incompatibilità nelle interfacce dati o di scarsa qualità dei dati, rendendo difficile identificare la causa del problema e complicando il debug futuro.

Importante

Il servizio Mega richiede un certo livello di capacità di tracciamento del movimento del dispositivo. Se le capacità di tracciamento del movimento del dispositivo sono scarse, anche le prestazioni di Mega ne risentiranno. Negli scenari AR su larga scala, è necessario prestare particolare attenzione alle differenze di prestazioni tra ambienti interni ed esterni.

Importante

Mega è generalmente utilizzato per scenari spaziali ampi, pertanto è necessario prestare particolare attenzione agli oggetti a lunga distanza e all'effetto di visualizzazione degli oggetti quando si ruota la testa o ci si sposta. Se il sistema di visualizzazione del dispositivo presenta errori significativi, anche se Mega funziona correttamente, l'utente percepirà che gli oggetti virtuali non si allineano correttamente con gli oggetti reali.

Conoscenze di base necessarie e configurazione del team

Creare un pacchetto di estensione per head-mounted display non è un compito semplice e richiede un lavoro approfondito da parte tua e del tuo team in più aree. In genere, per completare un'estensione head-mounted, è necessario coinvolgere sia lo sviluppo Unity che personale di team esterno allo sviluppo Unity. A causa della mancanza di standard, modificare solo il motore 3D di solito non è sufficiente per completare l'estensione head-mounted. Si consiglia di coinvolgere fin dal primo giorno ingegneri di sviluppo di basso livello come ingegneri di sistema e ingegneri SDK.

Costruire dispositivi AR/VR richiede conoscenze di dominio specifiche. Allo stesso modo, per eseguire e convalidare EasyAR Sense sul dispositivo, tu o il tuo team dovrete essere esperti nelle seguenti aree:

  • La struttura fisica e il sistema di rendering del vostro dispositivo
  • La geometria del sistema fotografico
  • Lo sviluppo SDK
  • Competenze di debug Android di base, come adb (Mainland China, International)

Se lavori su Unity, avrai anche bisogno di conoscere:

Inoltre, una certa conoscenza in queste aree ti aiuterà a comprendere meglio il sistema, in particolare come inviare i dati corretti a EasyAR:

  • Sviluppo Android (Mainland China, International)
  • Visione geometrica, in particolare il riconoscimento delle immagini e la ricostruzione 3D

Prossimi passi

Nei prossimi articoli, apprenderai il flusso completo per creare un pacchetto di estensione per headset:

Argomenti correlati