Table of Contents

Automatizar a troca de objetos Unity XR em cenas Unity

Os componentes XR do Unity (incluindo AR Foundation) têm suporte limitado a dispositivos. Para usar AR Foundation em dispositivos suportados enquanto mantém funcionalidade AR em muitos outros dispositivos, o EasyAR fornece a funcionalidade de troca automática de objetos Unity XR. O conteúdo a seguir descreve as alterações nos objetos de cena e como usar esta funcionalidade.

Antes de começar

Funcionalidade

Como a implementação subjacente do AR Foundation do Unity em telefones é ARCore e ARKit, ele só pode ser usado em dispositivos limitados, especialmente em muitos telefones Android chineses onde não funciona. Portanto, geralmente recomenda-se habilitar o AR Foundation e scripts relacionados apenas em dispositivos suportados. A funcionalidade de troca automática de objetos Unity XR implementa esta operação, projetada principalmente para AR móvel, sendo desabilitada por padrão em headsets.

Quando totalmente habilitada:

Na configuração padrão, as condições de habilitação são:

  • Habilitado no Windows/Mac.
  • Habilitado se o loader de AR móvel (ARKit/ARCore) estiver ativo na inicialização do switcher.
  • Desabilitado se existir outro loader além do AR móvel (ARKit/ARCore) na inicialização do switcher, mas nenhum loader estiver ativo.
Nota

Os componentes do XR Interaction Toolkit não são controlados por esta funcionalidade, e sua usabilidade no EasyAR não foi verificada. Teoricamente, funcionalidades que usam apenas o GameObject Unity.XR.CoreUtils.XROrigin e sua Camera devem funcionar. Se houver comportamento anômalo, tente definir ARSession.ARCenterMode como ARSession.ARCenterMode.SessionOrigin. Se ainda não funcionar, será necessário implementar controle personalizado para componentes do XR Interaction Toolkit, desabilitando-os quando o FrameSource não herdar de ARFoundationFrameSource.

Método de configuração

Esta funcionalidade pode ser habilitada ou desabilitada através das opções em Project Settings > EasyAR > Sense > Unity XR > Unity XR Auto Switch.

alt text

As opções configuram o comportamento da seguinte forma:

  • Editor: opções de modo de edição
  • Player: opções de modo de execução
    • Enable: habilita controle em tempo de execução. Nota: componentes desabilitados no modo de edição não serão restaurados quando esta opção estiver desligada.
    • Enable If Desktop: habilita no Windows/Mac.
    • Enable If Mobile AR On Startup: habilita se o loader de AR móvel (ARKit/ARCore) estiver ativo na inicialização do switcher. Normalmente requer Initialize XR on Startup marcado em Project Settings > XR Plug-in Management.
    • Disable If Non Mobile AR Post Startup: desabilita se existir outro loader além do AR móvel (ARKit/ARCore) na inicialização do switcher, mas nenhum loader estiver ativo. Normalmente usado quando Initialize XR on Startup em Project Settings > XR Plug-in Management está desmarcado.
    • Restore AR Session When Disabled: quando a funcionalidade estiver desabilitada, restaura (habilita) todos os UnityEngine.XR.ARFoundation.ARSession desabilitados (independentemente de terem sido desabilitados pelo EasyAR). Normalmente usado para restaurar componentes desabilitados durante a edição.

Usando métodos de controle personalizados

Se for necessário personalizar a troca destes componentes ou se o comportamento do EasyAR interferir no funcionamento de alguns componentes, desative estas opções e siga estas regras básicas para personalização:

  1. Desabilite UnityEngine.XR.ARFoundation.ARSession no editor (ele executa antes de todos os outros scripts)
  2. Desabilite todos os componentes Unity XR Core, do AR Foundation e componentes/funcionalidades relacionados antes do AR Foundation começar a funcionar
  3. Se easyar.ARSession.Assemble() selecionar ARCoreARFoundationFrameSource ou ARKitARFoundationFrameSource, habilite todos os componentes/funcionalidades previamente desabilitados antes de StartSession() completar (recomenda-se fazer isso no manipulador de eventos easyar.ARSession.AssembleUpdate)
  4. Se easyar.ARSession.Assemble() selecionar outro FrameSource, mantenha-os desabilitados

Tópicos relacionados