Table of Contents

Prise en charge du framework Unity XR par EasyAR

EasyAR ne dépend pas du framework Unity XR pour fournir des fonctions AR, mais il peut prendre en charge certains packages de composants du framework Unity XR, afin que les fonctions offertes par Unity XR puissent être utilisées lorsque vous utilisez les fonctions AR d'EasyAR dans Unity. Le contenu suivant présente la prise en charge du framework Unity XR par EasyAR et les cas où l'utilisation d'AR Foundation peut être envisagée.

Prise en charge de Unity XR

Unity prend en charge le développement XR via son plugin framework ainsi qu'une série de feature packages et toolkits. EasyAR prend également en charge ces packages de composants Unity XR afin que vous puissiez utiliser les fonctions fournies par le framework Unity XR lorsque vous utilisez les fonctions AR d'EasyAR dans Unity.

EasyAR prend en charge les packages de composants Unity XR suivants:

Nom affiché Nom du package Version minimale prise en charge Obligatoire Usage
XR Core Utilities com.unity.xr.core-utils 2.0.0 Non Fournit la prise en charge de Unity.XR.CoreUtils.XROrigin
AR Foundation com.unity.xr.arfoundation 5.0.0 Non Fournit la prise en charge d'AR Foundation
XR Plugin Management com.unity.xr.management 3.0.0 Non Fournit la compatibilité de gestion ARCore SDK et récupère le type XR Loader au runtime
XR Interaction Toolkit com.unity.xr.interaction.toolkit 2.0.0 Non Non utilisé directement
PolySpatial visionOS com.unity.polyspatial.visionos 2.0.41 Non Non utilisé directement
Apple visionOS XR Plugin com.unity.xr.visionos 2.0.41 Non Non utilisé directement
Apple ARKit XR Plugin com.unity.xr.arkit 5.0.0 Non Non utilisé directement
Google ARCore XR Plugin com.unity.xr.arcore 5.0.0 Non Fournit la compatibilité de gestion ARCore SDK
Note

EasyAR ne dépend pas du framework Unity XR pour fournir des fonctions AR. Par conséquent, si vous n'avez pas besoin d'utiliser des composants Unity XR tels qu'AR Foundation, ces packages peuvent ne pas être installés; EasyAR peut toujours fonctionner normalement sur les appareils pris en charge.

Prise en charge d'AR Foundation

AR Foundation est le framework de développement AR fourni par Unity. Ses fonctions AR sont implémentées via le système sous-jacent ou des tiers, et il est souvent utilisé pour prendre en charge ARCore, ARKit et certains headsets.

Relation entre EasyAR et 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 et AR Foundation sont deux frameworks AR indépendants. EasyAR ne dépend pas d'AR Foundation pour implémenter ses fonctions AR. EasyAR peut aussi implémenter motion tracking via des bibliothèques système telles qu'ARKit et ARCore. En même temps, EasyAR fournit deux implémentations de motion tracking qu'AR Foundation ne possède pas: l'implémentation motion tracking propre à EasyAR et l'implémentation fournie par AR Engine, ce qui offre une prise en charge d'appareils plus large qu'AR Foundation.

En même temps, EasyAR peut obtenir les données runtime d'AR Foundation et utiliser la capacité de motion tracking fournie par AR Foundation runtime pour piloter d'autres fonctions AR, offrant ainsi une compatibilité avec AR Foundation. Ces fonctions incluent:

  • Mega
  • Sparse spatial map
  • Dense spatial map
  • Image tracking et object tracking utilisant motion fusion

Vous pouvez consulter motion tracking et fonctions EasyAR pour comprendre plus en détail la relation entre motion tracking et les fonctions EasyAR.

Quand utiliser AR Foundation

Dans la plupart des cas, AR Foundation n'est pas nécessaire; EasyAR fonctionne normalement sur une gamme d'appareils plus large que celle prise en charge par AR Foundation. En général, AR Foundation peut être envisagé dans les deux situations suivantes:

  1. Vous devez utiliser des fonctions ARKit ou ARCore qu'EasyAR n'a pas encapsulées

    Si certaines fonctions ARCore ou ARKit nécessaires ne sont pas encapsulées dans EasyAR, vous pouvez utiliser AR Foundation. Par exemple, AR Foundation fournit la prise en charge du face tracking ARKit via ARFaceManager, tandis qu'EasyAR n'encapsule pas cette fonction.

  2. Utiliser ARCore plutôt que le motion tracking implémenté par EasyAR sur certains téléphones Xiaomi présentant des problèmes système

    Si vous devez utiliser ARCore sur tous les téléphones Xiaomi et Redmi prenant en charge ARCore, vous pouvez envisager d'activer AR Foundation. En raison de problèmes système sur certains téléphones Xiaomi et Redmi, l'encapsulation ARCore d'EasyAR ne prend pas en charge ces appareils, notamment les séries Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40, etc. (la liste n'est pas complète et la prise en charge des appareils continuera d'être mise à jour). Sur ces téléphones, ARCore ne sera pas utilisé avec la configuration par défaut; sur les téléphones prenant en charge EasyAR motion tracking, EasyAR motion tracking sera utilisé.

Lorsque vous utilisez AR Foundation, l'effet des fonctions EasyAR n'est pas optimal. Il existe deux cas:

  1. Sur certains téléphones Xiaomi et Redmi qu'EasyAR ne prend pas directement en charge, les données envoyées à EasyAR sont des images en niveaux de gris plutôt que des images couleur, ce qui affecte certains algorithmes. Comme il s'agit d'un problème propre à l'appareil, il ne peut pas être résolu par configuration.
  2. Lors de l'utilisation de Mega, la configuration utilisée par défaut par AR Foundation n'est pas optimale.
Attention

Vous pouvez obtenir de meilleures données d'entrée en modifiant ARCameraManager.currentConfiguration d'AR Foundation. Activer ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking peut sélectionner automatiquement le meilleur ARCameraManager.currentConfiguration. Cependant, certains téléphones eux-mêmes (par exemple Mi 10) présentent des problèmes: après modification de la configuration, aucune image ne peut être obtenue et EasyAR ne peut pas être utilisé (l'application a un arrière-plan image, mais les fonctions EasyAR ne réagissent pas). Il n'est donc généralement pas recommandé de l'activer; si vous devez l'utiliser, préparez une solution de repli lorsque EasyAR ne peut pas être utilisé.

Prise en charge des headsets

Comme le framework Unity XR ne fournit pas d'interfaces de données suffisamment complètes, EasyAR ne prend pas en charge les headsets via le framework Unity XR.

Sur les headsets prenant en charge le framework Unity XR, EasyAR prend en charge l'utilisation de Unity.XR.CoreUtils.XROrigin via XR Core Utilities, mais n'utilise pas le framework Unity XR pour implémenter la prise en charge des headsets. EasyAR n'affecte pas les fonctions de XR Interaction Toolkit; tant que l'appareil le prend en charge, il peut être utilisé normalement.

En général, les fabricants de headsets fournissent chacun un SDK ou des interfaces système pour fournir ces données. EasyAR prend en charge les headsets via les interfaces système et les SDK des fabricants. Parfois, ces SDK ne sont pas entièrement publics; EasyAR coopère alors avec les fabricants pour fournir une prise en charge complète. Prise en charge des headsets dans Unity présente les headsets pris en charge par EasyAR et leur mode d'utilisation.

Étapes suivantes

Sujets connexes


  1. Dans Unity 6 et versions ultérieures, la version minimale prise en charge est 2.0.4. Dans Unity 2022.3, la version minimale prise en charge est 1.2.3, et 1.3.x n'est pas pris en charge.