Criar e configurar sessão AR
Para usar AR no Unity, você precisa primeiro criar e configurar uma sessão AR na cena. Este artigo apresenta várias maneiras principais de criar e configurar uma sessão AR. Geralmente, após criar uma sessão com sucesso, você pode ver a seguinte estrutura na visualização Hierarchy:

Antes de começar
- Entenda os conceitos básicos, componentes e fluxo de trabalho da sessão através de Introdução ao ARSession.
Criar sessão com configuração padrão
Na visualização Hierarchy, clique com o botão direito em um espaço vazio e use o menu EasyAR Sense > [ Função AR ] > AR Session ([ Função ] Preset) para criar uma sessão pré-configurada. A sessão vem pré-configurada com componentes frame source e frame filter adequados para essa função.
Em scripts, você pode usar ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) para criar uma sessão.
Por exemplo, usando o menu EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset), você cria uma sessão para rastreamento de imagem.

O código de script correspondente é:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);
Note que ao usar ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder e ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder, você também precisa passar parâmetros de recursos. Por exemplo, este código cria uma sessão para construção espacial esparsa e especifica o material da nuvem de pontos:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });
Se o script for executado apenas no Editor, você pode usar recursos padrão do Editor:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());
O menu EasyAR Sense > AR Session (Preset) > ** lista todas as sessões predefinidas disponíveis para uso.

Nota
Várias sessões executando simultaneamente na mesma cena entrarão em conflito. Portanto, você deve ter no máximo uma sessão habilitada (GameObject.activeInHierarchy == true) na cena.
Adicionar componentes
Os componentes frame source e frame filter da sessão podem ser adicionados e removidos conforme necessário após a criação da sessão.
Na visualização Hierarchy, selecione AR Session (EasyAR), clique com o botão direito e use o menu EasyAR Sense > [ Função AR ] > ** para adicionar componentes frame source e frame filter adequados para essa função.
Em scripts, você pode usar ARSessionFactory.AddFrameSource<Source>(GameObject, bool) para adicionar um componente frame source, ou ARSessionFactory.AddFrameFilter<Filter>(GameObject, ARSessionFactory.Resources) para adicionar um componente frame filter.
Por exemplo, usando o menu EasyAR Sense > Image Tracking > Frame Filter : Image Tracker, você adiciona um novo rastreador de imagem à sessão selecionada.

O código de script correspondente é:
ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
Cuidado
A adição de componentes deve ser concluída antes do assemble. Após a sessão iniciar o assemble ou concluí-lo, qualquer adição ou remoção de componentes fará com que a sessão entre no estado Broken e pare de funcionar.
Note que ao adicionar SparseSpatialMapBuilderFrameFilter e DenseSpatialMapBuilderFrameFilter, você também precisa passar parâmetros de recursos. Por exemplo, este código cria um SparseSpatialMapBuilderFrameFilter para construção espacial esparsa e especifica o material da nuvem de pontos:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })
Se o script for executado apenas no Editor, você pode usar recursos padrão do Editor:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());
Após criar um frame filter, você pode usar ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset) para ajustar os parâmetros do frame filter de acordo com a predefinição.
Por exemplo, este código adiciona um novo rastreador de imagem à sessão e o configura com os parâmetros predefinidos de ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion:
var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);
Ao usar o menu para criação, você não pode ajustar os parâmetros por predefinição. Configure-os após a criação de acordo com as instruções específicas do componente.
Remover componentes
Para remover um componente da sessão, selecione o componente correspondente na visualização Hierarchy e pressione Delete, ou destrua (Destroy) o objeto correspondente no script.
Nota
Desabilitar (SetActive(false)) o GameObject do componente tem o mesmo efeito que removê-lo.
Por exemplo, para remover um rastreador de imagem da sessão, selecione Image Tracker e pressione Delete.

Cuidado
A remoção de componentes deve ser concluída antes do assemble. Após a sessão iniciar o assemble ou concluí-lo, qualquer adição ou remoção de componentes fará com que a sessão entre no estado Broken e pare de funcionar.
Impacto da ordenação de componentes
A ordem dos nós filhos frame filter da sessão não afeta a execução da sessão.
A ordem dos nós filhos frame source da sessão afeta a ordem de seleção durante o processo de assemble. Apenas o primeiro frame source disponível na ordem de transform será selecionado como o frame source real da sessão.
Nota
A ordem dos nós frame source só é eficaz se modificada antes do assemble. Após o assemble, ajustar a ordem não afeta o resultado da execução.
[Opcional] Criar sessão livremente
Se a sessão configurada por padrão não atender às suas necessidades, você pode criar e configurar uma sessão livremente conforme necessário.
Use o menu EasyAR Sense > AR Session (Preset) > AR Session (Empty) para criar uma sessão vazia sem componentes frame source ou frame filter.
Em scripts, você pode usar ARSessionFactory.CreateSession() para isso.
ARSessionFactory.CreateSession();
Em seguida, adicione os componentes frame source e frame filter apropriados conforme necessário.
Por exemplo, para criar uma sessão com recursos de construção espacial esparsa e densa, use este código:
var session = ARSessionFactory.CreateSession();
var group = new GameObject("Frame Source Group");
group.transform.SetParent(session.transform, false);
ARSessionFactory.AddFrameSource<XREALFrameSource>(session);
ARSessionFactory.AddFrameSource<AREngineFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<VisionOSARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<MotionTrackerFrameSource>(session);
List<GameObject> filters = new();
filters.Add(ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, resources));
filters.Add(ARSessionFactory.AddFrameFilter<DenseSpatialMapBuilderFrameFilter>(session, resources));
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder);
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder);
Isso criará uma estrutura de sessão como esta:

Próximos passos
Controle de execução
- Entenda os métodos e funções de inicialização
- Entenda como verificar disponibilidade e suporte do dispositivo
- Entenda os métodos para controlar a execução da sessão
Acessar componentes e resultados
- Experimente acessar componentes de função AR
- Entenda como obter resultados da execução da sessão
Referência de componentes
- Referência do componente ARSession