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> 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 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:
É 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.
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:
- 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.
- 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
- Saiba como habilitar AR Foundation em um projeto EasyAR
- Entenda a configuração de scene e o uso do AR Foundation em projetos EasyAR
- Saiba como alternar automaticamente o AR Foundation de acordo com o suporte do dispositivo