Compreensão da Cena no Unreal
A compreensão da cena fornece ao MRMesh aviões classificados com a sua utilização interpretada, como paredes, pisos, tectos e mesas. Os casos de utilização são semelhantes ao mapeamento espacial, mas as malhas têm estes metadados adicionais e serão apresentados como planos em vez de uma malha áspera.
Pode encontrar mais informações no documento Compreender o Cenário .
Nota
A partir da versão 2.8.0 Scene Understanding do Holographic Remoting é totalmente suportada.
Pré-requisitos
Importante
O Scene Understanding requer o plug-in Do Microsoft OpenXR e o Unreal 4.27.1 ou mais recente.
O plug-in do Microsoft OpenXR tem de ser utilizado, disponível no Unreal Marketplace ou no GitHub.
Em alternativa, comece com a aplicação de exemplo OpenXR que demonstra como utilizar o Scene Understanding.
Configuração
Para ativar a compreensão da cena no HoloLens:
- Abra Editar > Definições do Projeto e desloque-se para baixo até à secção Plataformas .
- Selecione HoloLens e, em seguida, selecione Perceção Espacial.
Para optar pela compreensão da cena e utilizar o MRMesh num jogo do HoloLens:
- Abra a ARSessionConfig e expanda a secção Mapeamento Mundial de ARSettings>.
- Selecione Gerar Dados de Malha a partir da Geometria Controlada, que indica ao plug-in do HoloLens para começar a compreender as cenas de forma assíncrona e a superá-la para Irreal através do MRMesh.
- Opcionalmente, selecione Compor Dados de Malha no Wireframe para mostrar um contorno de wireframe branco de cada triângulo no MRMesh.
- Na segunda lista pendente ARSettings , localize as caixas de verificação Deteção Horizontal de Planos e Deteção Vertical de Planos . Estes podem ser desativados seletivamente se a sua experiência apenas necessitar de planos horizontais ou verticais. Por predefinição, serão utilizados planos horizontais e verticais.
Definições ini opcionais
Pode modificar os seguintes parâmetros para atualizar o comportamento do runtime de mapeamento espacial:
- Abra Editar > Definições do Projeto, desloque-se para baixo até à secção Plataformas e, em seguida, selecione Mapeamento Espacial holoLens>:
- O Tamanho do Volume de Malha Espacial é o diâmetro de uma esfera à volta do leitor para compor e atualizar dados de compreensão da cena.
- Se se espera que o ambiente de runtime da aplicação seja grande, este valor poderá ter de ser grande para corresponder ao espaço do mundo real. O valor pode ser menor se a aplicação apenas precisar de colocar hologramas em superfícies imediatamente à volta do utilizador. À medida que o utilizador percorre o mundo, o volume de mapeamento espacial irá mover-se com eles.
Ao utilizar a compreensão da cena, grandes volumes de análise podem prejudicar o desempenho, uma vez que estão a ser geradas muitas mais malhas do que o mapeamento espacial. Para manter as chamadas de desenho mais baixas, pode ser utilizada uma definição ini adicional para restringir a altura do volume:
- No ficheiro Config/DefaultGame.ini do jogo, adicione uma secção [/Script/HoloLensSettings.SceneUnderstanding] com definições opcionais:
[/Script/HoloLensSettings.SceneUnderstanding]
SceneUnderstandingVolumeHeight=4
ShouldDoSceneUnderstandingMeshDetection=true
SceneUnderstandingVolumeHeight irá restringir a compreensão da cena do volume de análise a um prisma retangular com esta altura e os lados do comprimento Tamanho do Volume de Malha Espacial.
ShouldDoSceneUnderstandingMeshDetection irá adicionar malhas a cada um dos planos identificados. As malhas sobrepõem-se a algumas superfícies, como tabelas, com mais precisão do que os planos, mas incorrerão em chamadas de desenho e computação adicionais. Por predefinição, apenas os aviões serão detetados.
Trabalhar com o MRMesh
Primeiro, tem de iniciar a ARSession:
Em seguida, tem de começar a compreender o cenário:
Neste exemplo, verificamos a função CanDetectPlanes para verificar se devemos alternar a compreensão da cena ou o mapeamento espacial. Isto permitirá que o código funcione tanto na comunicação remota como num dispositivo HoloLens. Caso contrário, a compreensão da cena toggling quando remo não devolverá aviões.
Para obter acesso ao MRMesh no runtime:
- Adicione um componente ARTrackableNotify a um ator do Blueprint.
- Selecione o componente ARTrackableNotify e expanda a secção Eventos no painel Detalhes .
- Selecione o + botão nos eventos que pretende monitorizar.
Pode encontrar a lista completa de eventos na API de componente UARTrackableNotify .
Neste exemplo, à medida que os MRMeshes são identificados, a classificação de objetos é consultada e um material diferente é definido com base no tipo de superfície que é.
Para realizar testes de colisão em malhas de compreensão de cenas, pode utilizar LineTraceTrackedObjects3D:
Desative As Extensões do Plano de Teste para realizar testes de êxito apenas em malhas de compreensão de cenas, caso contrário, serão utilizadas malhas e aviões. Os aviões nem sempre cobrem geometria do mundo real, por isso podem causar uma falsa colisão se forem usados. Por exemplo, as portas abertas serão cobertas pelo avião da parede à sua volta.
A geometria registada e a classificação de objetos podem ser consultadas a partir do resultado do rastreio, para que possa executar funções diferentes com base no facto de ter batido numa parede ou numa tabela, por exemplo.
Neste exemplo, um sistema de coordenadas de depuração é desenhado no ponto de colisão na cena mais próxima, compreendendo a malha que foi atingida.