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
- Leggere Supporto headset di EasyAR per conoscere i tipi di headset già supportati da EasyAR e le funzionalità EasyAR eseguibili sugli headset.
- Leggere Supporto headset di EasyAR in Unity per conoscere l'architettura complessiva del supporto headset EasyAR in Unity.
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> Library "]
space
space
DeviceB["Device B<br> Library "]
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 Pluginper 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 Sensesarà disponibile sul vostro dispositivo e sfrutterà le capacità di tracking del movimento del dispositivo. - I servizi cloud EasyAR supportati internamente da
EasyAR Sensesaranno 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 usareEasyAR 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 Pluginnon 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:
- Fondamenti dello sviluppo Unity e uso dei package
- Sviluppo di Unity package
- Fondamenti del linguaggio C#, incluso IDisposable
Inoltre, una certa conoscenza di questi ambiti vi aiuterà a comprendere meglio il sistema, soprattutto come inviare a EasyAR i dati corretti:
- Sviluppo Android (Cina continentale, internazionale)
- Visione geometrica, in particolare image matching e ricostruzione 3D
Passi successivi
Negli articoli successivi vedrete il flusso completo per creare un pacchetto di estensione headset:
- Supporto EasyAR per visori descrive come usare un template per creare un nuovo pacchetto di estensione headset e completare lo sviluppo di base dell'estensione di input
- Bring-up dell'estensione headset descrive come verificare su un dispositivo la correttezza dell'estensione di input
- Pubblicare il pacchetto di estensione descrive come impacchettare e distribuire il pacchetto di estensione headset agli utenti downstream