Criar e configurar AR session
Para usar AR no Unity, primeiro é preciso criar e configurar uma AR session na cena. Este artigo apresenta as principais formas de criar e configurar uma AR session. Em geral, depois de criada com sucesso, você verá a seguinte estrutura na vista Hierarchy:

Antes de começar
- Entenda os conceitos básicos, a composição e o fluxo de trabalho de session por meio de Introdução ao ARSession.
Criar uma session com configuração padrão
Na vista Hierarchy, clique com o botão direito em uma área vazia e use o menu EasyAR Sense > [ AR função ] > AR Session ([ função ] Preset) para criar uma session pré-configurada. A session já vem com os componentes frame source e frame filter adequados para essa função.
No código, você pode usar ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) para criar uma session.
Por exemplo, em EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset) você pode criar uma session para image tracking.

O código correspondente é o seguinte:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);
Observe que, ao usar os presets ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder e ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder, também é necessário passar os parâmetros de resource. Por exemplo, o código abaixo cria uma session para sparse spatial mapping e especifica o material da point cloud:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });
Se o script for executado apenas no editor, você também pode usar os resources padrão do editor:
ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());
O menu EasyAR Sense > AR Session (Preset) > ** lista todos os presets de session disponíveis e pode ser usado como referência.

Nota
Várias sessions executadas ao mesmo tempo na mesma cena entrarão em conflito entre si, então a cena só pode ter uma session habilitada (GameObject.activeInHierarchy == true) por vez.
Adicionar componentes
Os componentes frame source e frame filter da session podem ser adicionados ou removidos conforme necessário depois que a session é criada.
Na vista Hierarchy, selecione AR Session (EasyAR) e clique com o botão direito; depois, pelo menu EasyAR Sense > [ AR função ] > **, você pode adicionar os componentes frame source e frame filter adequados para essa função.
No código, 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, em EasyAR Sense > Image Tracking > Frame Filter : Image Tracker, você pode adicionar um novo image tracker à session selecionada.

O código correspondente é o seguinte:
ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
Cuidado
A adição de componentes deve ser concluída antes de assemble. Depois que a session começa a executar assemble e após sua conclusão, qualquer adição ou remoção de componentes fará a session entrar no estado Broken e parar de funcionar.
Observe que, ao adicionar SparseSpatialMapBuilderFrameFilter e DenseSpatialMapBuilderFrameFilter, também é preciso passar parâmetros de resource. Por exemplo, o código abaixo cria um SparseSpatialMapBuilderFrameFilter para sparse spatial mapping e especifica o material da point cloud:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })
Se o script for executado apenas no editor, você também pode usar os resources padrão do editor:
ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());
Depois de criar um frame filter, você pode usar ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset) para ajustar os parâmetros do frame filter de acordo com o preset.
Por exemplo, o código abaixo adiciona um novo image tracker à session e o configura com os parâmetros do preset ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion.
var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);
Ao criar pelo menu, os parâmetros não podem ser ajustados de acordo com o preset, então depois de criar o componente é preciso configurá-lo conforme a documentação de cada componente.
Remover componentes
Para remover um componente da session, você pode selecionar o componente correspondente na vista Hierarchy e pressionar Delete, ou destruir (Destroy) o objeto correspondente no script.
Nota
Desativar o GameObject de um componente com SetActive(false) tem o mesmo efeito que removê-lo.
Por exemplo, para remover o image tracker da session, você pode selecionar Image Tracker e pressionar Delete.

Cuidado
A remoção de componentes também deve ser concluída antes de assemble. Depois que a session começa a executar assemble e após sua conclusão, qualquer adição ou remoção de componentes fará a session entrar no estado Broken e parar de funcionar.
Efeito da ordem dos componentes
A ordem dos nós filhos de frame filter da session não tem nenhum efeito sobre a execução da session.
A ordem dos nós filhos de frame source afeta a ordem de seleção de frame source durante o processo de assemble. Apenas o primeiro frame source disponível segundo a ordem de transform será selecionado como frame source real da session.
Nota
A ordem dos nós frame source só é válida se for alterada antes de assemble. Depois de assemble, mudar a ordem não afeta o resultado de execução.
[Opcional] Criar session livremente
Se a session com configuração padrão não atender às suas necessidades, você também pode criar e configurar livremente uma session conforme necessário.
Você pode usar o menu EasyAR Sense > AR Session (Preset) > AR Session (Empty) para criar uma session vazia sem componentes frame source nem frame filter.
No código, você pode usar ARSessionFactory.CreateSession() para isso.
ARSessionFactory.CreateSession();
Depois adicione os componentes frame source e frame filter adequados às suas necessidades reais.
Por exemplo, se você quiser criar uma session que inclua sparse spatial mapping e dense spatial mapping, pode usar o código abaixo:
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 session como esta:

Próximos passos
Controle de execução
- Aprenda o método e o efeito de inicialização
- Aprenda como determinar disponibilidade e compatibilidade do dispositivo
- Aprenda o método para controlar a execução de session
Acesso a componentes e resultados
- Experimente acessar componentes de recursos AR
- Aprenda como obter o resultado de execução de session
Referência de componentes
- Referência do componente ARSession