Tecnología geoespacial con el proyecto Anywhere XR

Tecnología geoespacial con el proyecto Anywhere XR. Con Unreal Engine y HoloLens 2, aprendes a usar la tecnología geoespacial y la transmisión de datos con grandes conjuntos de datos. Todo en realidad aumentada a través del ejemplo Proyecto Anywhere XR. Que ahora está a tu alcance como descarga gratuita.

Imagina que eres Supermán y que puedes volar sin moverte de la silla. El proyecto Anywhere XR te permite hacerlo utilizando la tecnología de realidad aumentada. Tecnología desarrollada por Epic Games, Microsoft, Nvidia y Cesium. El proyecto Anywhere XR utiliza datos geoespaciales del mundo real para reconstruir el planeta Tierra en 3D. Pudiendo verlo desde una vista espacial y hasta a nivel del suelo.

Resumiendo mucho el tema, podríamos decir que es como Google Maps, pero con tecnología inmersa como es la realidad virtual.

Epic Games ha publicado proyecto Anywhere XR, un proyecto gratuito de Unreal Engine que te permite navegar a cualquier punto del planeta en realidad aumentada.

Ya habíamos hablado anteriormente de este proyecto y tecnología empleada, pero ahora la información es mucho más amplia y precisa.

Tecnología geoespacial con el proyecto Anywhere XR
Tecnología geoespacial con el proyecto Anywhere XR

Proyecto Anywhere XR utiliza HoloLens 2 de realidad aumentada

El proyecto se puede ver utilizando los auriculares de realidad mixta HoloLens 2 de Microsoft. Utiliza el nuevo complemento Cesium para Unreal. Lo usa para transmitir datos geoespaciales a Unreal Engine en tiempo real.

Navega por el planeta con datos geoespaciales

Utiliza el nuevo complemento gratuito Cesium para Unreal, para transmitir datos de los conjuntos de datos Cesium World Terrain y Cesium OSM Buildings a Unreal Engine.

Los 350 millones de edificios que ofrece Cesium están basados en OpenStreetMapse. Se complementan con conjuntos de datos de fotogrametría más detallados de Denver, Ee. UU. y Melbourne, Australia.

La reconstrucción resultante de la Tierra permite navegar en tiempo real con los auriculares HoloLens 2 de Microsoft. Utilizando controles simples basados en gestos manuales para teletransportarse.

Epic Games describe el proyecto como una base a partir de la cual los desarrolladores pueden construir sus propios proyectos de realidad extendida. Pero incluso parece divertido de utilizar aunque no sea para trabajar.

El proyecto Anywhere XR es compatible con Unreal Engine 4.27 cuando se ejecuta en Windows 10. Requiere la herramienta Cesium para los complementos de Unreal y Mixed Reality UX Tools.

Tecnología geoespacial con el proyecto gratuito

El ejemplo propuesto está en descarga gratuita y tiene licencia para uso comercial si el proyecto está basado en Unreal Engine. Descarga la muestra gratuita de proyecto Anywhere XR del mercado de Unreal Engine.

Con Unreal Engine y HoloLens 2, aprendes a usar la tecnología geoespacial y la transmisión de datos. Utilizando grandes conjuntos de datos en realidad aumentada a través de la muestra Project Anywhere XR.

Proyecto Anywhere XR es una prueba de concepto para demostrar la tecnología geoespacial. El terreno 3D global y la transmisión de datos para visualizar el mundo como mosaicos 3D en Unreal Engine. Esta versión del Proyecto Anywhere demuestra que es posible usar conjuntos de datos a gran escala en una aplicación HoloLens 2.

Este proyecto aprovecha una serie de plugins para llevar un planeta Tierra virtual a tu mesa de trabajo en realidad aumentada

Asegúrate de que tienes la siguiente configuración

Puedes encontrar los complementos de 3rd party requeridos en Unreal Engine Marketplace. Si inicias el proyecto sin ellos, se te pedirá que los descargues e instales.

Si no tienes un dispositivo HoloLens 2, aún puedes ejecutar el proyecto con emulación en el editor. Utilizando la simulación de entrada de Microsoft incluida en el complemento Mixed Reality UXTools.

Configuración del Proyecto Anywhere XR

Sigue estos pasos para configurar un proyecto con el contenido de ejemplo de Project Anywhere XR y conecta los activos a su cuenta de Cesium Ion.

Visualización del Proyecto Anywhere XR

Esta aplicación fue diseñada para transmitir contenido desde un ordenador al dispositivo HoloLens 2 a través del Holographic Remoting Player de Microsoft. Al transmitir contenido, puedes cargar grandes conjuntos de datos en tu ordenador para crear el renderizado. A continuación, enviar los fotogramas renderizados al dispositivo a través de la red. Si empaquetas el proyecto como una aplicación y lo implementas en el dispositivo, los conjuntos de datos deben ajustarse a la capacidad de memoria del dispositivo.

Para obtener instrucciones sobre cómo transmitir al dispositivo desde el editor Unreal con el reproductor de comunicación remota holográfica, consulta la información sobre la transmisión a dispositivo con el reproductor de comunicación remota holográfica.

Al transmitir al dispositivo, aumenta la velocidad de transferencia de red a 15000 Kb por segundo para mejorar la experiencia con imágenes de mayor calidad.

Visualización del Proyecto Anywhere XR
Visualización del Proyecto Anywhere XR

Si no tienes un dispositivo HoloLens 2 conectado a tu ordenador, puedes ver el proyecto con emulación en el editor y entrada de teclado y ratón. Para habilitar la emulación en el editor debes seguir estos pasos:

  • En el menú principal, elije Editar > Configuración del proyecto para abrir la ventana configuración del proyecto.
  • La ventana Configuración del proyecto, en plataformas, seleccione Windows Mixed Reality.
  • En la sección Holographic Remoting, establece Enable Input Simulation en True.
sección Holographic Remoting
sección Holographic Remoting

Consulta la documentación de Microsoft sobre simulación de entrada para obtener más detalles sobre cómo usar la emulación en el editor.

La emulación en el editor de este proyecto tiene limitaciones

La emulación en el editor no admite la calibración. Para colocar automáticamente la mesa, la calibración requiere una malla espacial que la aplicación crea cuando escanea tu entorno.

Las aplicaciones no reciben eventos de interacción de utilizados para seleccionar marcadores cuando se reproduce en el editor. Pero puedes emular estas interacciones para ambas manos utilizando las teclas 1 y 2 en tu teclado.

Cuando se inicia el proyecto, aparece una mesa virtual. Se muestra una sección del mundo en la tabla como un mapa con la siguiente información:

Las coordenadas geográficas para el centro del mapa, presentadas en el formato: latitud, longitud y altitud.

La longitud del mundo real del área que se muestra en el mapa.

altitud y longitud del mundo real
altitud y longitud del mundo real

Uso del menú de manos en el Proyecto Anywhere XR

El proyecto incluye un menú al que puedes acceder abriendo una de tus manos. El menú contiene un modelo del planeta Tierra con pines pulsadores que marcan ubicaciones específicas que puede seleccionar para actualizar el mapa. Un control deslizante para girar el modelo del planeta Tierra y botones para mover la tabla u obtener información sobre los datos mostrados. El menú se define en el blueprint BP_HandMenu, utilizando el menú de mano UXTool para HoloLens 2.

menú de mano UXTool en el proyecto Anywhere XR
menú de mano UXTool en el proyecto Anywhere XR

Ir a ubicación específica con marcadores

El modelo Earth tiene pines push que marcan ubicaciones específicas en el mundo que puede seleccionar y ver en la mesa.

Para seleccionar una ubicación, acerca la mano a un pin hasta que se ponga rojo y se muestre la información sobre herramientas con el nombre de la ubicación. Pellizca con los dedos para que la mesa actualice tu mapa con esta ubicación.

ubicación específica con marcadores
ubicación específica con marcadores

Para girar el modelo del planeta Tierra localmente alrededor de su eje, pellizca y arrastre el control deslizante debajo del modelo. Luego suelta el control deslizante para detener la rotación.

girar el modelo del planeta Tierra
girar el modelo del planeta Tierra

Cuando se inicia la aplicación, los pushpins se generan dinámicamente en función de las entradas de la tabla de datos de marcadores del BP_HandMenu Actor. El plano de la chincheta BP_Bookmark_Button se adjunta al componente de la esfera para que las chinchetas giren con el planeta Tierra automáticamente. DT_Bookmarks_PAXRUxtPressableButton

Botones de menú

Los siguientes botones ofrecen información sobre los datos utilizados y la capacidad de mover la mesa en tu entorno.

Atribución de datos: Puedes leer la atribución de datos para el mapa mostrado haciendo clic en el botón Atribución de datos en el menú de su mano.

Calibrar: Cuando inicias la aplicación por primera vez, la tabla holográfica se muestra en una ubicación predeterminada de tu habitación. Puedes presionar este botón para reposicionar automáticamente la tabla directamente frente a tu vista. Consulta la siguiente sección para mover o desplazar la mesa virtual en tu habitación para obtener más detalles.

Desplazar hacia arriba: Mueve gradualmente la posición de la tabla hacia arriba a lo largo del eje Z.

Desplazar hacia abajo: Mueve gradualmente la posición de la tabla hacia abajo a lo largo del eje Z.

Girar a la izquierda: Gira incrementalmente la tabla izquierda alrededor del eje Z.

Girar a la derecha: Gira incrementalmente la tabla alrededor del eje Z.

Explora el BP_HandMenu Blueprint

El menú se define en el BP_HandMenu Blueprint, basado en el menú de mano de UXTool para HoloLens 2. El menú muestra y oculta cuando UxtPalmUpConstraint está activado o desactivado.

Las interacciones de los botones se redirigen a las acciones apropiadasen BP_AnywhereXRPlayerController. En BeginPlay, BP_HandMenu inicializa lo siguiente:

  • Almacena una referencia al BP_AnywhereXRPlayerController en la variable MRAnywhere Player Controller.
  • Crea y oculta el widget de atribución de datos.
  • Enlaza todos los eventos de menú a sus controladores de eventos correspondientes.
  • Enlaza el evento deslizante a la rotación del modelo De la Tierra.
  • Lee todas las entradas de la tabla de datos y las utiliza para generar los marcadores correspondientes. DT_Bookmarks_PAXR

Mover la mesa virtual en tu habitación

Cuando inicias la aplicación por primera vez, la mesa virtual se muestra en una ubicación predeterminada de la habitación. Puedes cambiar la posición a una mejor ubicación en tu habitación. Hazlo preferiblemente en una mesa oscura, ya sea a través del botón Calibrar en el menú o con los botones Mover y Rotar en el menú. Cuando colocas la mesa, los ARPins la anclan al planeta Tierra.

En el menú de la mano, pulsa el botón Calibrar para comenzar la calibración. Esto ocultará la mesa actual, luego la reemplazará con una nueva mesa virtual para el proceso de calibración. La nueva mesa tendrá la misma forma y tamaño que la anterior. Además estará orientada en la dirección de visualización. El vector entre la ubicación de la cabeza y el punto de anclaje determina la dirección norte en el mapa de la mesa.

Para confirmar la ubicación de la mesa y la dirección norte

Mueve la mesa de calibración a la ubicación de tu elección moviendo la cabeza. La malla espacial de tu habitación se utiliza durante esta operación.

Toca de nuevo para soltar la mesa de calibración y establecer la ubicación de la mesa.

calibrar la mesa de trabajo
calibrar la mesa de trabajo

Si quieres ajustar la ubicación de la mesa, pulsa los botones Mover y Girar del menú para realizar cambios incrementales.

ajustar la ubicación de la mesa de trabajo
ajustar la ubicación de la mesa de trabajo

El Blueprint BP_AnywhereXRPlayerController contiene la lógica para calibrar y mover la tabla. En la siguiente sección se explican algunas de las funciones utilizadas para la calibración.

Funciones de calibración

La función se llama desde el botón Calibrar del menú de la mano. Cuando se llama, realiza las siguientes acciones: StartTable Calibration

Genera BP_AnchorGizmo y entra automáticamente en modo de calibración, siguiendo la dirección del dispositivo.

Se enlaza al evento Anchor Placed desencadenado por el toque para colocar de BP_AnchorGizmo.

Desactiva la mesa virtual para que quede oculta y no colisione.

funciones de calibración
funciones de calibración

Gráfico blueprint de la función StartTable Calibration. Haces clic en la imagen para ver el tamaño completo.

Se llama a la función cuando el usuario coloca un BP_AnchorGizmo. Cuando se llama, realiza las siguientes acciones: OnAnchorPlaced

  • Coge la transformación de la ubicación confirmada y llama a la función ChangeTableOrigin.
  • Destruye BP_AnchorGizmo.
  • Habilita la mesa en su nueva ubicación para que ya no esté oculta y vuelva a tener colisiones.
BP_AnchorGizmo
BP_AnchorGizmo

La función es llamada por OnAnchorPlaced. Cuando se llama, realiza las siguientes acciones: ChangeTableOrigin

Llama a una función de teletransporte específica en la mesa, para garantizar que cada objeto dependiente se reubique adecuadamente.

Almacena la ubicación del ARPin en la tienda local.

Tecnología geoespacial con el proyecto Anywhere XR ubicación del ARPin
Tecnología geoespacial con el proyecto Anywhere XR ubicación del ARPin

Interacción con el mapa en la tabla virtual

El mapa en la tabla virtual admite interacciones manuales para desplazarse y hacer zoom. La rotación no está implementada. Por lo que la dirección del norte no cambiará para el mapa. Aparecen sugerencias visuales en el mapa que le permiten saber que puede interactuar con él. Las interacciones trazan la geometría de la mesa plana, en lugar del terreno.

Interacción con el mapa en la tabla virtual
Interacción con el mapa en la tabla virtual

Para desplazarse por el mapa, pellizca con una mano y mueve la mano en la dirección en la que deseas mover el mapa. Suelta tu pellizco para liberar el mapa.

Tecnología geoespacial con el proyecto Anywhere XR
Tecnología geoespacial con el proyecto Anywhere XR

Para acercar y alejar el mapa, pellizca con ambas manos y aleja una mano de la otra para alejarlo, y las juntas para acercarlo. Suelta tu pellizco para liberar el mapa.

Tecnología geoespacial con el proyecto Anywhere XR
Tecnología geoespacial con el proyecto Anywhere XR

Una iteración lógica con la tecnología geoespacial

La lógica de interacción para el mapa se define en el BP_HolographicTable. Las siguientes consideraciones informan de las opciones de diseño cuando el equipo implementó las interacciones del mapa:

Las manipulaciones de HoloLens funcionan solo para un solo objeto. Pero los mosaicos Cesium 3D están hechos de varios actores. La aplicación intercepta las interacciones de manipulación de HoloLens mientras mantiene la tabla fija. Luego aplica las traducciones de entrada y escala las acciones a los mosaicos en consecuencia.

Dado que la Tierra es redonda, aprovechando la tecnología geoespacial, si la desplazas constantemente, el movimiento horizontal eventualmente te alejará de la superficie de la Tierra. A pequeña escala, esto no es un problema, pero cuando se aleja a la escala máxima, se nota. El movimiento de la panorámica debe tener en cuenta la curva de la Tierra, pero aplicar esta curva en cada paso puede ser costoso en cuanto a recursos de hardware.

Para resolver esto, tan pronto como el movimiento excede un umbral establecido, la aplicación reubica el origen de los actores del conjunto de mosaicos en el centro de la tabla. El efecto no se nota y garantiza que los cálculos sigan siendo correctos.

Solventar los problemas del zoom

Dado que el mapa puede mostrar montañas, la altura entre el elipsoide y la superficie del suelo es una variable. Si haces zoom y mantienes su origen elipsoide en el centro de la mesa, la superficie del suelo flota demasiado por encima de la mesa. Este desplazamiento es diferente en cada ubicación de la Tierra. Los mosaicos se pueden mover verticalmente para asegurarte de que siempre quepan en la mesa, pero no hay forma de saber la altitud mínima en cualquier encuadre.

Para resolver esto aprovechando la tecnología geoespacial, la aplicación determina la altura del suelo trazando líneas. Luego aplica un algoritmo de control para que se adhiera a la tabla. Independientemente de la ubicación o escala actual.

Las interacciones de HoloLens 2 chocan contra cualquier geometría visible. De forma predeterminada, el terreno que se muestra en el mapa bloquearía los raycasts de HoloLens 2 y evitaría que golpearan la mesa.

Para resolver esto, hay un canal de colisión personalizado llamado TileSets en la configuración del proyecto. Las propiedades de colisión para cada Cesium3DTiles solo bloquean las colisiones mediante el canal TileSets. Pero ignoran el canal de visibilidad para ellas.

Debido a estas opciones de diseño, cuando interactúas con la mesa virtual, obtendrás una lista de todos los mosaicos 3D. Los moverá horizontal y verticalmente y los escalará para aplicar un efecto de zoom. Lo hará sobre un umbral de desplazamiento, rehubicandolo todo para asegurarse de que el mapa permanezca horizontal.

Problemas conocidos en el Proyecto Anywhere XR

Si empaquetas la aplicación para enviarla a otra persona y recibes un mensaje de error grave al inicio, hay dos formas de evitar este problema:

Cierra todas las instancias de Unreal Editor que utilizan el complemento Cesium para Unreal y elimina los archivos de caché utilizados por Cesium ubicados en %LOCALAPPDATA%\UnrealEngine\4.27

Empaquetar la aplicación para desarrollo

Si obtienes una vista previa de la aplicación utilizando el editor con VR Preview y el seguimiento manual funciona pero las interacciones no están registradas, reinicie tanto el dispositivo HoloLens 2 como la aplicación Unreal.

Tienes más información y comentarios sobre la tecnología geoespacial con el proyecto Anywhere XR en el foro, sigue leyendo...

Tecnología geoespacial con el proyecto Anywhere XR