Supporto di EasyAR per il framework Unity XR
EasyAR non dipende dal framework Unity XR per fornire funzioni AR, ma può supportare alcuni pacchetti di componenti nel framework Unity XR, in modo che quando si usano le funzioni AR di EasyAR in Unity sia possibile sfruttare le funzionalità offerte da Unity XR. Il contenuto seguente introduce il supporto di EasyAR per Unity XR e in quali casi si può considerare AR Foundation.
Supporto Unity XR
Unity supporta lo sviluppo XR tramite il suo plugin framework e una serie di feature package e toolkit. EasyAR supporta anche questi pacchetti di componenti Unity XR, così quando si usano le funzioni AR di EasyAR in Unity si possono sfruttare le funzionalità del framework Unity XR.
EasyAR supporta i seguenti pacchetti di componenti Unity XR:
| Nome visualizzato | Nome pacchetto | Versione minima supportata | Necessario | Uso |
|---|---|---|---|---|
| XR Core Utilities | com.unity.xr.core-utils | 2.0.0 | No | Fornisce supporto per Unity.XR.CoreUtils.XROrigin |
| AR Foundation | com.unity.xr.arfoundation | 5.0.0 | No | Fornisce supporto AR Foundation |
| XR Plugin Management | com.unity.xr.management | 3.0.0 | No | Fornisce compatibilità per la gestione ARCore SDK e ottiene il tipo XR Loader in runtime |
| XR Interaction Toolkit | com.unity.xr.interaction.toolkit | 2.0.0 | No | Non usato direttamente |
| PolySpatial visionOS | com.unity.polyspatial.visionos | 2.0.41 | No | Non usato direttamente |
| Apple visionOS XR Plugin | com.unity.xr.visionos | 2.0.41 | No | Non usato direttamente |
| Apple ARKit XR Plugin | com.unity.xr.arkit | 5.0.0 | No | Non usato direttamente |
| Google ARCore XR Plugin | com.unity.xr.arcore | 5.0.0 | No | Fornisce compatibilità per la gestione ARCore SDK |
Nota
EasyAR non dipende dal framework Unity XR per fornire funzioni AR. Pertanto, quando non è necessario usare componenti Unity XR come AR Foundation, questi pacchetti possono non essere installati; EasyAR continuerà a funzionare normalmente sui dispositivi supportati.
Supporto AR Foundation
AR Foundation è il framework di sviluppo AR fornito da Unity. Le sue funzioni AR sono implementate tramite il sistema sottostante o terze parti, ed è spesso usato per supportare ARCore, ARKit e alcuni headset.
Relazione tra EasyAR e AR Foundation
block
columns 6
block:groupApp:6
block:groupAppWrapper
space
App1["EasyAR<br>App"]
space
App2["EasyAR + AR Foundation<br>App"]
space
App3["AR Foundation<br>App"]
end
end
block:groupSensePlugin:4
columns 1
SensePlugin["EasyAR Sense Unity Plugin"]
space
end
block:groupARF
columns 1
ARF["AR Foundation"]
space
end
block:groupXRI
columns 1
XRI["XR Interaction Toolkit"]
space
end
block:groupAREngineInterop
columns 1
AREngineInterop["EasyAR<br>AR Engine Interop"]
space
end
block:groupSense:3
columns 1
Sense["EasyAR Sense"]
block:groupSenseWrapper
Image["Image<br>Tracker"]
Object["Sparse<br>SpatialMap"]
MotionTracker["Motion<br>Tracker"]
MARCore["ARCore"]
MARKit["ARKit"]
Others["..."]
end
end
block:groupXRSubsystem:2
columns 1
XRSubsystem["XR Subsystems"]
XRSDK["Unity XR SDK"]
end
block:groupSystem:6
columns 1
System["System Library"]
block:groupSystemWrapper
space
AREngine["AR Engine<br> Library "]
space
ARCore["ARCore<br> Library "]
space
ARKit["ARKit<br> Library "]
space
end
end
SensePlugin --> App1
SensePlugin --> App2
ARF --> App2
ARF --> App3
groupSense --> SensePlugin
groupAREngineInterop --> SensePlugin
AREngine --> groupAREngineInterop
XRSubsystem --> ARF
XRSubsystem --> XRI
ARCore --> MARCore
ARKit --> MARKit
ARCore --> XRSDK
ARKit --> 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 AREngineInterop fill:none,stroke:none,stroke-width:0px,color:#fff
style Sense fill:none,stroke:none,stroke-width:0px,color:#fff
style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
style XRSubsystem fill:none,stroke:none,stroke-width:0px,color:#fff
style System fill:none,stroke:none,stroke-width:0px
style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
class groupAREngineInterop EasyAR
class groupSense EasyAR
class SensePlugin EasyAR
classDef Unity fill:#636,stroke:#333,color:#fff
class groupXRSubsystem Unity
class ARF Unity
class XRI Unity
EasyAR e AR Foundation sono due framework AR indipendenti. EasyAR non dipende da AR Foundation per implementare le proprie funzioni AR. EasyAR può anche implementare motion tracking tramite librerie di sistema come ARKit e ARCore. Allo stesso tempo, EasyAR fornisce due implementazioni di motion tracking che AR Foundation non possiede: l'implementazione motion tracking propria di EasyAR e quella fornita tramite AR Engine, offrendo un supporto di dispositivi più ampio rispetto ad AR Foundation.
Allo stesso tempo, EasyAR può ottenere dati runtime da AR Foundation e usare la capacità di motion tracking fornita da AR Foundation runtime per guidare altre funzioni AR, fornendo compatibilità con AR Foundation. Queste funzioni includono:
- Mega
- Sparse spatial map
- Dense spatial map
- Image tracking e object tracking con motion fusion
Fare riferimento a motion tracking e funzioni EasyAR per comprendere più in dettaglio la relazione tra motion tracking e funzioni EasyAR.
Quando è necessario usare AR Foundation
Nella maggior parte dei casi è possibile non usare AR Foundation; EasyAR funziona normalmente su un insieme di dispositivi più ampio di quello supportato da AR Foundation. Di solito AR Foundation può essere considerato nelle due situazioni seguenti:
È necessario usare funzioni ARKit o ARCore non incapsulate da EasyAR
Se alcune funzioni ARCore o ARKit necessarie non sono incapsulate in EasyAR, è possibile usare AR Foundation. Ad esempio, AR Foundation fornisce supporto per il face tracking ARKit tramite ARFaceManager, mentre EasyAR non incapsula questa funzione.
Usare ARCore invece del motion tracking implementato da EasyAR su alcuni telefoni Xiaomi con problemi di sistema
Se è necessario usare ARCore su tutti i telefoni Xiaomi e Redmi che supportano ARCore, si può considerare l'abilitazione di AR Foundation. A causa di problemi di sistema su alcuni telefoni Xiaomi e Redmi, l'incapsulamento ARCore di EasyAR non supporta questi dispositivi, incluse le serie Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40 e altre (l'elenco non è completo e il supporto dei dispositivi continuerà ad aggiornarsi). Su questi telefoni ARCore non verrà usato nella configurazione predefinita; sui telefoni che supportano EasyAR motion tracking verrà usato EasyAR motion tracking.
Quando si usa AR Foundation, l'effetto delle funzioni EasyAR non è ottimale. Ci sono due casi:
- Su quella parte di telefoni Xiaomi e Redmi non supportati direttamente da EasyAR, i dati in input per EasyAR sono immagini in scala di grigi invece di immagini a colori, e ciò influenza alcuni algoritmi. Poiché si tratta di un problema del dispositivo, non può essere risolto tramite configurazione.
- Quando si usa Mega, la configurazione usata di default da AR Foundation non è ottimale.
Attenzione
È possibile ottenere dati di input migliori modificando ARCameraManager.currentConfiguration di AR Foundation. Abilitare ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking può completare automaticamente la selezione della migliore ARCameraManager.currentConfiguration. Tuttavia occorre notare che alcuni telefoni (ad esempio Mi 10) hanno problemi propri: dopo aver modificato la configurazione non è possibile ottenere immagini e EasyAR non potrà essere usato (l'app ha uno sfondo immagine ma le funzioni EasyAR non reagiscono). Perciò di solito non è consigliato abilitarlo; se è necessario usarlo, preparare un fallback per quando EasyAR non può essere usato.
Supporto headset
Poiché il framework Unity XR non fornisce interfacce dati sufficientemente complete, EasyAR non supporta gli headset tramite il framework Unity XR.
Sugli headset che supportano il framework Unity XR, EasyAR supporta l'uso di Unity.XR.CoreUtils.XROrigin tramite XR Core Utilities, ma non usa il framework Unity XR per implementare il supporto headset. EasyAR non influisce sulle funzioni di XR Interaction Toolkit; finché il dispositivo lo supporta, può essere usato normalmente.
In generale, i produttori di headset forniscono ciascuno SDK o interfacce di sistema per fornire questi dati. EasyAR supporta gli headset tramite interfacce di sistema e SDK dei produttori. A volte questi SDK non sono completamente pubblici; EasyAR collaborerà con i produttori per fornire supporto completo. Supporto headset in Unity presenta gli headset supportati da EasyAR e come usarli.
Passaggi successivi
- Scoprire come abilitare AR Foundation in un progetto EasyAR
- Conoscere la configurazione scene e l'uso di AR Foundation nei progetti EasyAR
- Scoprire come cambiare automaticamente AR Foundation in base al supporto del dispositivo