Table of Contents

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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      ARCore["ARCore<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      ARKit["ARKit<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
  
  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:

  1. È 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.

  2. 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:

  1. 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.
  2. 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

Argomenti correlati


  1. In Unity 6 e versioni successive, la versione minima supportata è 2.0.4. In Unity 2022.3, la versione minima supportata è 1.2.3 e 1.3.x non è supportata.