Table of Contents

Suporte da EasyAR para a estrutura de XR da Unity

A EasyAR não depende da estrutura de XR da Unity para fornecer funcionalidades de RA, mas pode suportar alguns pacotes de componentes da estrutura de XR da Unity, permitindo aproveitar as funcionalidades fornecidas pela estrutura de XR da Unity ao usar as funcionalidades de RA da EasyAR no Unity. O conteúdo abaixo descreve o suporte da EasyAR para a estrutura de XR da Unity e quando considerar o uso da AR Foundation.

Suporte de XR da Unity

A Unity suporta desenvolvimento de XR através de sua estrutura de plug-ins e uma série de pacotes de recursos e kits de ferramentas. A EasyAR também suporta esses pacotes de componentes de XR da Unity, permitindo aproveitar as funcionalidades fornecidas pela estrutura de XR da Unity ao usar as funcionalidades de RA da EasyAR no Unity.

A EasyAR suporta os seguintes pacotes de componentes de XR da Unity:

Nome de exibição Nome do pacote Versão mínima suportada Necessário Propósito
XR Core Utilities com.unity.xr.core-utils 2.0.0 Não Fornece suporte para Unity.XR.CoreUtils.XROrigin
AR Foundation com.unity.xr.arfoundation 5.0.0 Não Fornece suporte para AR Foundation
XR Plugin Management com.unity.xr.management 3.0.0 Não Fornece compatibilidade com gerenciamento de SDK ARCore e obtenção do tipo de XR Loader em tempo de execução
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 com gerenciamento de SDK ARCore
Nota

A EasyAR não depende da estrutura de XR da Unity para fornecer funcionalidades de RA. Portanto, quando não houver necessidade de usar componentes de XR da Unity como AR Foundation, esses pacotes de componentes podem não ser instalados, e a EasyAR continuará funcionando normalmente em dispositivos suportados.

Suporte para AR Foundation

A AR Foundation é a estrutura de desenvolvimento de RA fornecida pela Unity, cujas funcionalidades de RA são implementadas através de sistemas subjacentes ou de terceiros, frequentemente usada para suportar 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["Plugin Unity EasyAR Sense"]
    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["Rastreador de<br>imagem"]
      Object["Mapa espacial<br>esparso"]
      MotionTracker["Rastreador de<br>movimento"]
      MARCore["ARCore"]
      MARKit["ARKit"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["Subsistemas XR"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:6
    columns 1
    System["Biblioteca do sistema"]
    block:groupSystemWrapper
      space
      AREngine["Biblioteca do motor AR"]
      space
      ARCore["Biblioteca ARCore"]
      space
      ARKit["Biblioteca ARKit"] 
      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

A EasyAR e a AR Foundation são duas estruturas de RA independentes; a EasyAR não depende da AR Foundation para implementar suas funcionalidades de RA. A EasyAR também pode implementar capacidades de rastreamento de movimento através de bibliotecas do sistema como ARKit e ARCore. Além disso, a EasyAR fornece duas implementações de rastreamento de movimento que a AR Foundation não possui: a implementação própria de rastreamento de movimento da EasyAR e a implementação fornecida pelo AR Engine, oferecendo suporte a mais dispositivos em comparação com a AR Foundation.

Simultaneamente, a EasyAR pode obter dados de tempo de execução da AR Foundation e usar sua capacidade de rastreamento de movimento para impulsionar outras funcionalidades de RA durante a execução da AR Foundation, proporcionando compatibilidade com a AR Foundation. Essas funcionalidades incluem:

  • Mega
  • Mapa espacial esparso
  • Mapa espacial denso
  • Rastreamento de imagem e objeto usando fusão de movimento

Consulte Rastreamento de movimento e funcionalidades da EasyAR para entender a relação detalhada entre rastreamento de movimento e funcionalidades da EasyAR.

Quando usar AR Foundation

Na maioria dos casos, a AR Foundation não é necessária, pois a EasyAR funcionará em uma gama mais ampla de dispositivos do que os suportados pela AR Foundation. Geralmente, considere usar AR Foundation em duas situações:

  1. Quando precisar de funcionalidades do ARKit ou ARCore não encapsuladas pela EasyAR

    Se precisar usar algumas funcionalidades fornecidas pelo ARCore ou ARKit que não foram encapsuladas na EasyAR, você pode usar a AR Foundation. Por exemplo, a AR Foundation fornece suporte para rastreamento facial do ARKit ARFaceManager, que não foi encapsulado pela EasyAR.

  2. Quando usar rastreamento de movimento implementado com ARCore em vez da EasyAR em alguns telefones Xiaomi com problemas no sistema

    Se precisar usar ARCore em todos os telefones Xiaomi e Redmi que suportam ARCore, considere ativar a AR Foundation. Devido a problemas no sistema de alguns telefones Xiaomi e Redmi, o encapsulamento do ARCore da 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 é exaustiva; o suporte a dispositivos é atualizado continuamente). Nestes telefones, na configuração padrão, o ARCore não será usado; em telefones que suportam o rastreamento de movimento da EasyAR, o rastreamento de movimento da EasyAR será usado.

O desempenho das funcionalidades da EasyAR não é ideal ao usar AR Foundation. Existem duas situações:

  1. Na parte dos telefones Xiaomi e Redmi que a EasyAR não suporta diretamente, os dados de entrada para a EasyAR são imagens em tons de cinza em vez de coloridas, o que afeta a eficácia de alguns algoritmos. Devido a problemas inerentes ao dispositivo, isso não pode ser resolvido por configuração.
  2. Ao usar o Mega, a configuração padrão usada pela AR Foundation não é ideal.
Cuidado

É possível modificar ARCameraManager.currentConfiguration da AR Foundation para obter dados de entrada mais otimizados. Ativar ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking pode escolher automaticamente a melhor ARCameraManager.currentConfiguration. No entanto, note que alguns telefones (como o Xiaomi 10) têm problemas próprios e não conseguem obter imagens após modificar a configuração, tornando a EasyAR inutilizável (o aplicativo tem fundo de imagem, mas as funcionalidades da EasyAR não respondem). Portanto, geralmente não é recomendado ativar isso; se for necessário usar, é essencial ter um plano de contingência caso a EasyAR não funcione.

Suporte para headsets

Como a estrutura de XR da Unity não fornece interfaces de dados suficientemente abrangentes, a EasyAR não suporta headsets através da estrutura de XR da Unity.

Em headsets que suportam a estrutura de XR da Unity, a EasyAR suportará o uso de Unity.XR.CoreUtils.XROrigin através do XR Core Utilities, mas não usa a estrutura de XR da Unity para implementar o suporte a headsets. A EasyAR não afeta as funcionalidades do XR Interaction Toolkit, que podem ser usadas normalmente se o dispositivo suportar.

Geralmente, os fabricantes de headsets fornecem SDKs ou interfaces de sistema para fornecer esses dados, e a EasyAR suporta headsets através de interfaces de sistema e SDKs dos fabricantes. Às vezes, esses SDKs não são totalmente públicos, e a EasyAR colabora com os fabricantes para fornecer suporte completo. O Suporte a headsets no Unity introduz os headsets suportados pela EasyAR e como usá-los.

Próximas etapas

Tópicos relacionados


  1. No Unity 6 e versões posteriores, suporte mínimo 2.0.4. No Unity 2022.3, suporte mínimo 1.2.3, não suporta 1.3.x.