Usar EasyAR Mega no Unity para implementar oclusão
Oclusão (Occlusion) é uma tecnologia-chave para melhorar a imersão da integração entre virtual e real em AR. Este artigo descreve como implementar efeitos de oclusão no Unity por meio do EasyAR Mega.
Antes de começar
- Conclua começar rapidamente com o exemplo EasyAR Mega Unity.
- Ser capaz de criar conteúdo alinhado ao mundo real.
Como a oclusão é implementada
Modelagem offline: no sistema de coordenadas Block, crie geometry com correspondência 1:1 para entidades do mundo real, como paredes, colunas e grandes equipamentos; ou obtenha um modelo otimizado recortando e reduzindo faces do modelo denso do Block.
Alinhamento em runtime: em runtime, alinhe o sistema de coordenadas Block ao espaço real por cloud localization e carregue a geometry correspondente.
Substituição de material: atribua materiais especiais de oclusão a essas geometry.
Efeito visual: quando a GPU renderiza outros objetos virtuais, os pixels das partes ocluídas são automaticamente descartados porque não passam no depth test, fazendo com que objetos virtuais sigam a lógica de oclusão do espaço físico real.
Usar arquivos de máscara dos resultados de mapeamento
Siga as etapas abaixo para baixar o arquivo de máscara do resultado de mapeamento pela entrada Mask file download no banco de dados de localização em nuvem, usá-lo como modelo branco de oclusão e importá-lo para a cena. O arquivo pode ser usado diretamente ou recortado conforme necessário.
Nota
Este método de download se aplica apenas a resultados de mapping da versão 9.6 ou posterior.
Baixar o arquivo de máscara
Depois de adicionar o Block ao banco de dados de localização em nuvem, clique em Mask file download na coluna Action da linha correspondente.

Na janela, selecione a precisão padrão ou baixa conforme necessário e clique em Baixar para obter o arquivo compactado da máscara (zip). Extraia o arquivo para obter os modelos.

Nota
O arquivo compactado pode conter um ou mais modelos glb. É possível importá-los separadamente no Unity ou combiná-los antes em um software de criação de conteúdo digital, como o Blender.
[Opcional] Recortar o modelo
Os modelos baixados cobrem juntos todo o Block. Para ocluir todo o Block, pule esta etapa e importe-os diretamente no Unity. Para apenas uma área, recorte os modelos conforme as etapas a seguir.
Importe os arquivos de modelo extraídos em um software de criação de conteúdo digital, como o Blender.

Recorte os modelos, mantendo apenas as partes necessárias para a oclusão, e exporte-os em formato glb. Se houver vários modelos, você poderá combiná-los antes da exportação. Preserve posição, orientação e tamanho no sistema de coordenadas do Block para que se alinhem após a importação no Unity.

Importar o modelo para Unity
Importe os modelos no Unity e anexe-os como filhos do nó Block correspondente na cena. Se usar vários modelos, importe cada um e anexe todos ao mesmo nó Block.
Nota
Para importar um modelo glb para Unity é necessário o pacote com.unity.cloud.gltfast, versão 6.8 ou posterior. Instale ou atualize pelo Package Manager.
No painel Inspector, ajuste o Transform de cada modelo de oclusão, definindo posição, rotação e escala em relação ao nó Block:
- Defina
Positioncomo(0, 0, 0). - Defina
Rotationcomo(0, 180, 0). - Defina
Scalecomo(1, 1, 1).
Depois disso, o modelo de oclusão deve coincidir com a parte correspondente do modelo denso do Block.

Nota
O arquivo de máscara baixado usa uma definição de sistema de coordenadas diferente da Unity, portanto o componente Y de Rotation precisa ser definido como 180.
Atribuir material de oclusão ao modelo
Atribua um material de oclusão a cada modelo. Você pode usar o SpatialMappingOcclusion integrado do Unity.

Simular com dados EIF ou executar em um dispositivo real
Use a simulação com dados EIF ou um dispositivo real para verificar se os objetos virtuais são ocluídos pelas áreas reais correspondentes.
Usar geometry como oclusão
Siga as etapas abaixo para adicionar na cena uma geometry usada como oclusão e verificar o efeito.
Posicionar occlusion geometry
De acordo com o modelo denso do Mega Block, use built-in geometry ou custom geometry como oclusão e posicione-a no local correto no sistema de coordenadas Block.

[Optional] Ajustar a posição da geometry de acordo com o panorama

Atribuir material de oclusão à geometry
Altere o material da geometry para um material de oclusão. Você pode usar o SpatialMappingOcclusion integrado do Unity.

Simular execução com EIF data ou executar em dispositivo real
Ajuste a colocação do modelo de oclusão de acordo com o efeito de execução.
Usar modelo denso recortado e reduzido como oclusão
Siga as etapas abaixo para recortar e reduzir o modelo denso exportado do Mega Block, obter um modelo branco para oclusão e importá-lo na cena como oclusão.
Exportar em Mega Blocks
Clique no botão Export à direita de Mesh para exportar o modelo denso.

Modificar opções de exportação
Ao exportar, preste atenção em modificar as opções de exportação.
Na figura, 1 é o LOD level. Quanto menor o nível, mais simples o modelo e menor o número de faces. Se precisar da maior precisão, selecione o nível mais alto.
Na figura, 2 é a opção de exportação de textura. Aqui só é necessário o modelo branco como oclusão, sem necessidade de textura.
Recortar e reduzir o modelo
Recorte e reduza o modelo exportado em software de criação de conteúdo digital, como Blender, e salve como glb.
Dica
O exemplo usa o Decimate Modifier do Blender.

Após recorte e redução:

Importar o modelo de oclusão para Unity e montá-lo abaixo do nó Block na cena

Modificar o Transform do modelo
Modifique o Transform do modelo para que Position e Rotation sejam todos 0.
Neste momento, o modelo branco usado para oclusão deve se encaixar no modelo denso, porque as operações de recorte e redução no software de criação de conteúdo digital não alteraram a definição do sistema de coordenadas Block.

Atribuir material de oclusão ao modelo
Altere o material do modelo para um material de oclusão. Você pode usar o SpatialMappingOcclusion integrado do Unity.

Simular execução com EIF data ou executar em dispositivo real
Use EIF data para simular a execução ou execute em dispositivo real para ver o efeito.
Expectativa do efeito de oclusão
O efeito de oclusão é influenciado principalmente por:
- Precisão do localization tracking em si
- Precisão do posicionamento do modelo
- Precisão do próprio modelo, se não for uma geometry simples
Durante localization drift, desalinhamento de alguns centímetros é normal.
Modelo de oclusão com faces demais pode afetar facilmente a performance. Recomenda-se usar apenas em áreas necessárias e usar geometry simples como oclusão sempre que possível.


