Mapeamento espacial no UnrealSpatial Mapping in Unreal

Visão geralOverview

O mapeamento espacial torna possível posicionar objetos em superfícies no mundo físico, mostrando o mundo em todo o HoloLens, o que torna os hologramas mais reais para o usuário.Spatial mapping makes it possible to place objects on surfaces in the physical world by showing the world around the HoloLens, which makes holograms seem more real to the user. O mapeamento espacial também ancora objetos no mundo do usuário, tirando proveito de indicações de profundidade do mundo real. Isso ajuda a convencer o usuário de que esses hologramas estão na verdade no espaço dele; hologramas que flutuam no espaço ou se movem com o usuário não parecem tão reais.Spatial mapping also anchors objects in the user's world by taking advantage of real world depth cues. This helps convince the user that these holograms are actually in their space; holograms floating in space or moving with the user will not feel as real. Sempre que possível, convém que você posicione os itens a fim de obter um maior conforto.You want to place items for comfort whenever possible.

No documento Mapeamento espacial, você pode encontrar mais informações sobre posicionamento, oclusão, renderização e qualidade do mapeamento espacial, além de outras informações.You can find more information on spatial mapping quality, placement, occlusion, rendering, and more, in the Spatial mapping document.

Como habilitar o mapeamento espacialEnabling Spatial Mapping

Para habilitar o mapeamento espacial no HoloLens:To enable spatial mapping on HoloLens:

  • Abra Editar > Configurações do Projeto e role para baixo até a seção Plataformas.Open Edit > Project Settings and scroll down to the Platforms section.
    • Selecione HoloLens e marque Percepção Espacial.Select HoloLens and check Spatial Perception.

Para aceitar o mapeamento espacial e depurar o MRMesh em um jogo do HoloLens:To opt into spatial mapping and debug the MRMesh in a HoloLens game:

  1. Abra o ARSessionConfig e expanda a seção ARSettings > Mapeamento do Mundo.Open the ARSessionConfig and expand the ARSettings > World Mapping section.

  2. Verifique Gerar Dados de Malha de Geometria Rastreada, que diz ao plug-in do HoloLens para iniciar a obtenção assíncrona de dados de mapeamento espacial e exibi-los no Unreal por meio do MRMesh.Check Generate Mesh Data from Tracked Geometry, which tells the HoloLens plugin to start asynchronously getting spatial mapping data and surface it to Unreal through the MRMesh.

  3. Marque Renderizar Dados de Malha em Grade de Linhas para mostrar um contorno de grade de linhas branco de todos os triângulos no MRMesh.Check Render Mesh Data in Wireframe to show a white wireframe outline of every triangle in the MRMesh.

Armazenamento de âncoras espaciais pronto

Mapeamento espacial em runtimeSpatial Mapping at runtime

Você pode modificar os seguintes parâmetros para atualizar o comportamento do runtime de mapeamento espacial:You can modify the following parameters to update the spatial mapping runtime behavior:

  • Abra Editar > Configurações de Projeto, role para baixo até a seção Plataformas e selecione HoloLens > Mapeamento Espacial:Open Edit > Project Settings, scroll down to the Platforms section and select HoloLens > Spatial Mapping:

Configurações do projeto de âncoras espaciais

  • A opção Máximo de Triângulos por Metro Cúbico atualiza a densidade dos triângulos na malha de mapeamento espacial.Max Triangles Per Cubic Meter updates the density of the triangles in the spatial mapping mesh.
  • A opção Tamanho do Volume de Malha Espacial é o tamanho do cubo em volta do jogador para renderizar e atualizar os dados de mapeamento espacial.Spatial Meshing Volume Size is the size of the cube around the player to render and update spatial mapping data.
    • Se for previsto que o ambiente do runtime do aplicativo será grande, esse valor precisará ser grande para corresponder ao espaço do mundo real.If the expected application runtime environment is expected to be large, this value may need to be large to match the real-world space. Por outro lado, se o aplicativo precisar apenas posicionar hologramas nas superfícies imediatamente próximas do usuário, esse campo poderá ser menor.On the other hand, this value can be smaller if the application only needs to place holograms on surfaces immediately around the user. À medida que o usuário se movimenta pelo mundo, o volume de mapeamento espacial se moverá com ele.As the user walks around the world, the spatial mapping volume will move with them.

Como trabalhar com o MRMeshWorking with MRMesh

Para obter acesso ao MRMesh em runtime:To get access to the MRMesh at runtime:

  1. Adicione um componente ARTrackableNotify a um ator do Blueprint.Add an ARTrackableNotify Component to a Blueprint actor.

AR Trackable Notify de âncoras espaciais

  1. Selecione o componente ARTrackableNotify e expanda a seção Eventos no painel Detalhes.Select the ARTrackableNotify component and expand the Events section in the Details panel.
    • Clique no botão + nos eventos que você deseja monitorar.Click the + button on the events you want to monitor.

Eventos de âncoras espaciais

Nesse caso, o evento adicionar geometria rastreada está sendo monitorado, o qual procura malhas válidas do mundo que correspondem aos dados de mapeamento espacial.In this case, the On Add Tracked Geometry event is being monitored, which looks for valid world meshes matching to spatial mapping data. Você pode encontrar a lista completa de eventos na API do componente UARTrackableNotify.You can find the full list of events in the UARTrackableNotify component API.

Você pode alterar o material da malha no Gráfico de Eventos do Blueprint ou no C++.You can change the mesh’s material in the Blueprint Event Graph or in C++. A captura de tela a seguir mostra a rota de Blueprint:The screenshot below shows the Blueprint route:

Exemplo de âncoras espaciais

No C++, você pode assinar o delegado OnTrackableAdded para obter a ARTrackedGeometry assim que ela estiver disponível, conforme mostrado no código abaixo.In C++, you can subscribe to the OnTrackableAdded delegate to get the ARTrackedGeometry as soon as it is available, shown in the code below.

Importante

O arquivo build.cs do projeto PRECISA ter AugmentedReality na lista PublicDependencyModuleNames.The project’s build.cs file MUST have AugmentedReality in the PublicDependencyModuleNames list.

  • Isso inclui ARBlueprintLibrary.h e MRMeshComponent.h, o que permite a você inspecionar o componente MRMesh do UARTrackedGeometry.This includes ARBlueprintLibrary.h and MRMeshComponent.h, which lets you inspect the MRMesh component of the UARTrackedGeometry.

Código de exemplo de âncoras espaciais em C++

O mapeamento espacial não é o único tipo de dados que é exibido por meio de ARTrackedGeometries.Spatial mapping is not the only type of data that gets surfaced through ARTrackedGeometries. Você pode verificar que o EARObjectClassification é World, o que significa que isso é a geometria de mapeamento espacial.You can check that the EARObjectClassification is World, which means this is spatial mapping geometry.

Há delegados semelhantes para eventos atualizados e removidos:There are similar delegates for updated and removed events:

  • AddOnTrackableUpdatedDelegate_Handle
  • AddOnTrackableRemovedDelegate_Handle.AddOnTrackableRemovedDelegate_Handle.

Você pode encontrar a lista completa de eventos na API de UARTrackedGeometry.You can find the full list of events in the UARTrackedGeometry API.

Veja tambémSee also