Table of Contents

Suporte do EasyAR ao framework Unity XR

O EasyAR não depende do framework Unity XR para fornecer funções AR, mas pode oferecer suporte a alguns pacotes de componentes no framework Unity XR, para que, ao usar as funções AR do EasyAR no Unity, seja possível aproveitar as funcionalidades fornecidas pelo Unity XR. O conteúdo a seguir apresenta o suporte do EasyAR ao framework Unity XR e em quais casos considerar o uso do AR Foundation.

Suporte Unity XR

O Unity oferece suporte ao desenvolvimento XR por meio de seu plugin framework e uma série de feature packages e toolkits. O EasyAR também oferece suporte a esses pacotes de componentes Unity XR, para que, ao usar as funções AR do EasyAR no Unity, seja possível aproveitar as funcionalidades do framework Unity XR.

O EasyAR oferece suporte aos seguintes pacotes de componentes Unity XR:

Nome exibido Nome do pacote Versão mínima suportada Obrigatório Uso
XR Core Utilities com.unity.xr.core-utils 2.0.0 Não Fornece suporte a Unity.XR.CoreUtils.XROrigin
AR Foundation com.unity.xr.arfoundation 5.0.0 Não Fornece suporte ao AR Foundation
XR Plugin Management com.unity.xr.management 3.0.0 Não Fornece compatibilidade de gerenciamento do ARCore SDK e obtém o tipo de XR Loader em runtime
XR Interaction Toolkit com.unity.xr.interaction.toolkit 2.0.0 Não Não usado diretamente
PolySpatial visionOS com.unity.polyspatial.visionos 2.0.41 Não Não usado diretamente
Apple visionOS XR Plugin com.unity.xr.visionos 2.0.41 Não Não usado diretamente
Apple ARKit XR Plugin com.unity.xr.arkit 5.0.0 Não Não usado diretamente
Google ARCore XR Plugin com.unity.xr.arcore 5.0.0 Não Fornece compatibilidade de gerenciamento do ARCore SDK
Nota

O EasyAR não depende do framework Unity XR para fornecer funções AR. Portanto, quando não houver necessidade de usar componentes Unity XR como AR Foundation, esses pacotes podem não ser instalados, e o EasyAR ainda funcionará normalmente em dispositivos suportados.

Suporte AR Foundation

AR Foundation é o framework de desenvolvimento AR fornecido pelo Unity. Suas funções AR são implementadas pelo sistema subjacente ou por terceiros, e ele costuma ser usado para oferecer suporte a ARCore, ARKit e alguns headsets.

Relação entre 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 são dois frameworks AR independentes. O EasyAR não depende do AR Foundation para implementar suas funções AR. O EasyAR também pode implementar motion tracking por meio de bibliotecas do sistema, como ARKit e ARCore. Ao mesmo tempo, o EasyAR fornece duas implementações de motion tracking que o AR Foundation não possui: a implementação própria de motion tracking do EasyAR e a implementação fornecida pelo AR Engine, oferecendo suporte a dispositivos mais amplo que o AR Foundation.

Ao mesmo tempo, o EasyAR pode obter dados runtime do AR Foundation e usar a capacidade de motion tracking fornecida pelo runtime do AR Foundation para conduzir outras funções AR, oferecendo compatibilidade com o AR Foundation. Essas funções incluem:

  • Mega
  • Sparse spatial map
  • Dense spatial map
  • Image tracking e object tracking usando motion fusion

Consulte motion tracking e funções EasyAR para entender com mais detalhes a relação entre motion tracking e funções EasyAR.

Quando é necessário usar AR Foundation

Na maioria dos casos, não é necessário usar AR Foundation; o EasyAR funciona normalmente em uma gama de dispositivos mais ampla do que a suportada pelo AR Foundation. Em geral, pode-se considerar o AR Foundation nas duas situações a seguir:

  1. É necessário usar funções ARKit ou ARCore que o EasyAR não encapsulou

    Se algumas funções do ARCore ou ARKit necessárias não estiverem encapsuladas no EasyAR, é possível usar o AR Foundation. Por exemplo, o AR Foundation fornece suporte a face tracking do ARKit por meio de ARFaceManager, enquanto o EasyAR não encapsula essa função.

  2. Usar ARCore em vez do motion tracking implementado pelo EasyAR em alguns telefones Xiaomi com problemas de sistema

    Se for necessário usar ARCore em todos os telefones Xiaomi e Redmi que suportam ARCore, pode-se considerar habilitar AR Foundation. Devido a problemas de sistema em alguns telefones Xiaomi e Redmi, o encapsulamento ARCore do EasyAR não suporta esses dispositivos, incluindo as séries Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40 etc. (a lista não é completa, e o suporte de dispositivos continuará sendo atualizado). Nesses telefones, ARCore não será usado na configuração padrão; em telefones que suportam EasyAR motion tracking, será usado EasyAR motion tracking.

Ao usar AR Foundation, o efeito das funções do EasyAR não é ideal. Há duas situações:

  1. Em parte dos telefones Xiaomi e Redmi que o EasyAR não suporta diretamente, os dados de entrada para o EasyAR são imagens em escala de cinza em vez de imagens coloridas, o que afeta alguns algoritmos. Como isso é um problema do próprio dispositivo, não pode ser resolvido por configuração.
  2. Ao usar Mega, a configuração padrão usada pelo AR Foundation não é ideal.
Cuidado

É possível obter dados de entrada melhores modificando ARCameraManager.currentConfiguration do AR Foundation. Habilitar ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking pode selecionar automaticamente a melhor ARCameraManager.currentConfiguration. No entanto, observe que alguns telefones em si (por exemplo, Mi 10) têm problemas: depois de modificar a configuração, não é possível obter imagens e o EasyAR não poderá ser usado (o app tem background de imagem, mas as funções EasyAR não respondem). Portanto, normalmente não é recomendado habilitar; se for necessário usar, prepare uma solução de fallback quando o EasyAR não puder ser usado.

Suporte a headsets

Como o framework Unity XR não fornece interfaces de dados suficientemente completas, o EasyAR não oferece suporte a headsets por meio do framework Unity XR.

Em headsets que suportam o framework Unity XR, o EasyAR oferece suporte ao uso de Unity.XR.CoreUtils.XROrigin por meio de XR Core Utilities, mas não usa o framework Unity XR para implementar o suporte a headsets. O EasyAR não afeta as funções do XR Interaction Toolkit; desde que o dispositivo suporte, ele pode ser usado normalmente.

Em geral, fabricantes de headsets fornecem seus próprios SDKs ou interfaces de sistema para fornecer esses dados. O EasyAR oferece suporte a headsets por meio de interfaces de sistema e SDKs dos fabricantes. Às vezes esses SDKs não são totalmente públicos, e o EasyAR coopera com os fabricantes para fornecer suporte completo. Suporte a headsets no Unity apresenta os headsets suportados pelo EasyAR e como usá-los.

Próximas etapas

Tópicos relacionados


  1. No Unity 6 e versões posteriores, a versão mínima suportada é 2.0.4. No Unity 2022.3, a versão mínima suportada é 1.2.3, e 1.3.x não é suportada.