Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La descripción de escenas proporciona a MRMesh planos que se clasifican con su uso interpretado, como las paredes, los suelos, los techos y las mesas. Los casos de uso son similares a los de la asignación espacial, pero las mallas tienen estos metadatos adicionales y aparecerán como planos en lugar de como mallas aproximadas.
Puede encontrar más información en el documento Descripción de escenas.
Nota:
A partir de la versión 2.8.0 de Holographic Remoting, Scene Understanding es totalmente compatible.
Requisitos previos
Importante
La descripción de escenas requiere el complemento de Microsoft OpenXR y Unreal 4.27.1 o posterior.
Se debe usar el complemento de Microsoft OpenXR (disponible en Unreal Marketplace o GitHub).
Como alternativa, comience con la aplicación de ejemplo de OpenXR, que muestra cómo usar la descripción de escenas.
Configurar
Para habilitar la descripción de escenas en HoloLens:
- Abra Editar Configuración del proyecto y desplácese hacia abajo hasta la sección Plataformas.
- Seleccione HoloLens y luego seleccione Percepción espacial.
Para hacer uso de la descripción de escenas y usar MRMesh en un juego HoloLens:
- Abra ARSessionConfig y expanda la sección ARSettings World Mapping (Mapeo del mundo).
- Active Generate Mesh Data from Tracked Geometry (Generar datos de malla a partir de la geometría de seguimiento), que indica al complemento de HoloLens que empiece a obtener los datos de descripción de escenas de forma asincrónica y los exponga en Unreal a través de MRMesh.
- Opcionalmente, marque Render Mesh Data in Wireframe (Representar datos de malla en contorno reticular) para mostrar un contorno reticular blanco de cada triángulo de MRMesh.
- En la segunda lista desplegable ARSettings, busque las casillas Horizontal Plane Detection (Detección de plano horizontal) y Vertical Plane Detection (Detección de plano vertical). Estas se pueden deshabilitar de forma selectiva si la experiencia solo requiere planos horizontales o verticales. De forma predeterminada, se usarán ambos planos.
Configuración opcional del archivo ini
Puede modificar los parámetros siguientes para actualizar el comportamiento en tiempo de ejecución del mapeo espacial:
- Abra Edit (Editar)> Project Settings (Configuración del proyecto), desplácese hacia abajo hasta la sección Platforms (Plataformas) y seleccione HoloLens > Spatial Mapping (Asignación espacial):
- Spatial Meshing Volume Size (Tamaño del volumen de la malla espacial) es el diámetro de una esfera alrededor del jugador para representar y actualizar los datos de descripción de escenas.
- Si se espera que el entorno en tiempo de ejecución de la aplicación sea elevado, es posible que este valor tenga que ser grande para que coincida con el espacio del mundo real. El valor puede ser menor si la aplicación solo necesita colocar hologramas en superficies inmediatamente alrededor del usuario. A medida que el usuario se desplaza por el mundo, el volumen de mapeo espacial se moverá con él.
Al usar la descripción de escenas, los grandes volúmenes de análisis pueden afectar negativamente al rendimiento, ya que se generan muchas más mallas que asignación espacial. Para reducir las llamadas a Draw, se puede usar una configuración de ini adicional para restringir la altura del volumen:
- En el archivo Config/DefaultGame.ini del juego, agregue una sección [/Script/HoloLensSettings.SceneUnderstanding] con una configuración opcional:
[/Script/HoloLensSettings.SceneUnderstanding]
SceneUnderstandingVolumeHeight=4
ShouldDoSceneUnderstandingMeshDetection=true
SceneUnderstandingVolumeHeight restringirá el volumen de análisis de la descripción de escenas a un prisma rectangular con esta altura y longitud de los lados Tamaño del volumen de malla Spatial Meshing Volume Size (Tamaño del volumen de la malla espacial).
ShouldDoSceneUnderstandingMeshDetection agregará mallas a cada uno de los planos identificados. Las mallas se superponen a algunas superficies, como las mesas, con más precisión que los planos, pero incurrirán en llamadas de proceso y a Draw adicionales. De forma predeterminada, solo se detectarán planos.
Trabajar con MRMesh
En primer lugar, debe iniciar ARSession:
Después, debe empezar la descripción de escenas:
En este ejemplo, se comprueba la función CanDetectPlanes para que compruebe si se debe alternar entre descripción de escenas o asignación espacial. Esto permitirá que el código funcione tanto en comunicación remota como en un dispositivo HoloLens. De lo contrario, alternar a descripción de escenas cuando se usa la comunicación remota no devolverá ningún plano.
Para obtener acceso a MRMesh en tiempo de ejecución:
- Agregue un componente ARTrackableNotify a un actor de Blueprint.
- Seleccione el componente ARTrackableNotify y expanda la sección Eventos en el panel Detalles.
- Seleccione el botón + en los eventos que quiera supervisar.
Puede encontrar la lista completa de eventos en la API de componente UARTrackableNotify.
En este ejemplo, a medida que se identifican componentes de MRMesh, se consulta su clasificación de objetos y se establece un material diferente en función del tipo de superficie que sea.
Para realizar pruebas de colisión en mallas de descripción de escenas se puede usar LineTraceTrackedObjects3D:
Deshabilite Test Plane Extents (Extensiones del plano de prueba) para realizar pruebas de posicionamiento solo en las mallas de descripción de escenas; de lo contrario, se usarán mallas y planos. Los planos no siempre abarcan la geometría del mundo real, por lo que podrían provocar una falsa colisión si se usan. Por ejemplo, las puertas abiertas las cubrirá el plano de la pared que lo rodea.
La clasificación de objetos y geometría con seguimiento se puede consultar a partir del resultado del seguimiento, por lo que puede realizar diferentes funciones en base a si se ha llegado hasta una pared o una mesa, por ejemplo.
En este ejemplo, se dibuja un sistema de coordenadas de depuración en el punto de colisión de la escena más cercana de la malla de descripción de escenas que se ha tocado.