Table of Contents

Adicionar um grupo de fontes de dados de frame

Uma AR Session pode conter vários componentes de fonte de dados de frame, chamados de frame source group. Em runtime, a session seleciona no frame source group a fonte de dados de frame mais adequada com base no dispositivo atual e nas funções AR habilitadas. Este artigo explica como usar e gerenciar um frame source group.

Antes de começar

  • Entenda os conceitos básicos, os tipos e os métodos de seleção em runtime de frame source.

Usar o frame source group de uma AR Session preset

As sessions criadas com a configuração padrão já vêm com um grupo de fontes de dados de frame, geralmente suficiente ao usar uma única função AR.

As fontes de dados de frame incluídas em diferentes preset sessions são diferentes.

Uma session criada com o preset ARSessionFactory.ARSessionPreset.ImageTracking ou pelo menu AR Session (Image Tracking Preset) tem apenas uma fonte de dados de frame:

alt text

A scene hierarchy de uma session criada com o preset ARSessionFactory.ARSessionPreset.MegaBlock_MotionTracking_Inertial ou pelo menu AR Session (Mega Block Default Preset) contém vários componentes de fonte de dados de frame:

alt text

Se inicialmente a scene usou um preset para criar a session, ao adicionar outras funções durante a iteração, além de adicionar os componentes frame filter correspondentes, também é necessário adicionar componentes de fonte de dados de frame adequados conforme necessário.

Importante

Após atualizar a partir da versão 4.7 ou anterior, é necessário excluir toda a session e recriá-la pelo menu ou por ARSessionFactory para usar o frame source group preset.

A seguir estão listados os componentes de fonte de dados de frame configurados por padrão para todos os recursos AR predefinidos. Observe que a ordem na lista é igual à ordem dos componentes de fonte de dados de frame na cena:

Predefinição Grupo de fontes de dados de frame
  1. CameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. EditorCameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. InertialCameraDeviceFrameSource
  10. EditorCameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. InertialCameraDeviceFrameSource
  10. ThreeDofCameraDeviceFrameSource
  11. EditorCameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. InertialCameraDeviceFrameSource
  10. ThreeDofCameraDeviceFrameSource
  11. CameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. CameraDeviceFrameSource
Nota

A ordem dos componentes criados pelo preset garante que a fonte de dados de frame ideal seja usada em todos os dispositivos suportados por built-in frame source.

Usar a configuração padrão de frame source

Ao usar parâmetros padrão, a configuração de frame source é ajustada automaticamente de acordo com o dispositivo e as funções AR habilitadas em runtime.

Se os parâmetros de frame source foram modificados manualmente, quando as funções AR da session mudarem (por exemplo, ao adicionar motion tracking a uma session que originalmente continha apenas image tracking), talvez seja necessário ajustar manualmente os parâmetros de frame source para atender aos novos requisitos, para que todas as funções AR possam funcionar com o melhor resultado.

Importante

Após atualizar a partir da versão 4.7 ou anterior, é necessário excluir toda a session e recriá-la pelo menu ou por ARSessionFactory para usar os parâmetros padrão corretos.

Adicionar um frame source group

Na visualização Hierarchy, selecione AR Session (EasyAR) e clique com o botão direito. Pelo menu EasyAR Sense > [ AR Feature ] > Frame Source : *, é possível adicionar um componente frame source adequado para essa função. Também é possível usar o menu EasyAR Sense > Frame Source by Transform Type > * Dof > Frame Source : * para adicionar o componente frame source necessário.

Em scripts, use ARSessionFactory.AddFrameSource<Source>(GameObject, bool) para adicionar componentes frame source.

Por exemplo, o menu EasyAR Sense > Frame Source by Transform Type > 3 Dof Rot-Only > Frame Source : Three Dof Camera Device pode adicionar um ThreeDofCameraDeviceFrameSource à session selecionada no momento.

alt text

O código de script correspondente é:

ARSessionFactory.AddFrameSource<ThreeDofCameraDeviceFrameSource>(session);

Ordenação de frame source

Durante o assembly da session, apenas uma fonte de dados de frame no frame source group será finalmente selecionada e montada na session. A regra de seleção depende do valor da propriedade AssembleOptions.FrameSourceSelection. Na configuração padrão, é possível influenciar o frame source finalmente selecionado ajustando a ordem dos componentes no frame source group.

Geralmente, é possível mover diretamente os objetos frame source para ordená-los usando o método de ordenar objetos na scene na visualização Hierarchy.

Em scripts, use Transform.SetSiblingIndex(int) para ajustar a ordem dos objetos.

Por exemplo, para colocar MotionTrackerFrameSource antes de outros frame sources, selecione o objeto Motion Tracker na visualização Hierarchy e arraste-o para a posição superior.

O mesmo efeito também pode ser obtido com o seguinte código de script:

motionTrackerFrameSource.transform.SetSiblingIndex(0);

Também há alguns métodos de ordenação predefined disponíveis. Na visualização Hierarchy, selecione AR Session (EasyAR) e clique com o botão direito. Pelo menu EasyAR Sense > Utility > Sort Frame Source : * > *, é possível ordenar determinados componentes frame source.

Em scripts, use ARSessionFactory.SortFrameSource(GameObject, ARSessionFactory.FrameSourceSortMethod) para obter o mesmo efeito.

Por exemplo, o menu EasyAR Sense > Utility > Sort Frame Source : Motion Tracker > System SLAM pode colocar MotionTrackerFrameSource antes de ARCoreFrameSource, ARCoreARFoundationFrameSource, ARKitFrameSource, ARKitARFoundationFrameSource e AREngineFrameSource.

alt text

O código de script correspondente é:

ARSessionFactory.SortFrameSource(session, new ARSessionFactory.FrameSourceSortMethod { MotionTracker = ARSessionFactory.FrameSourceSortMethod.MotionTrackerSortMethod.PreferEasyAR });

Após a ordenação acima, a scene hierarchy fica:

alt text

Tópicos relacionados