Bloqueo del mundo y anclajes espaciales en Unity

Imagen prominente de herramientas de bloqueo mundial

Conseguir que los hologramas permanezcan en su lugar, se muevan con usted o, en algunos casos, se coloquen en relación con otros hologramas es una gran parte de la creación de aplicaciones Mixed Reality. Este artículo le llevará a través de nuestra solución recomendada mediante Herramientas de bloqueo mundial, pero también trataremos la configuración manual de anclajes espaciales en los proyectos de Unity. Antes de pasar a cualquier código, es importante comprender cómo Unity controla el espacio de coordenadas y los anclajes en su propio motor.

Sistemas de coordenadas a escala mundial

Hoy en día, al escribir juegos, aplicaciones de visualización de datos o aplicaciones de realidad virtual, el enfoque típico es establecer un sistema de coordenadas del mundo absoluto al que todas las demás coordenadas pueden volver a asignarse de forma confiable. En ese entorno, siempre puede encontrar una transformación estable que defina una relación entre cualquiera de los dos objetos de ese mundo. Si no mueve esos objetos, sus transformaciones relativas siempre seguirán siendo las mismas. Este tipo de sistema de coordenadas global es fácil de conseguir cuando se representa un mundo puramente virtual donde se conoce toda la geometría de antemano. Las aplicaciones de VR a escala de sala actualmente suelen establecer este tipo de sistema de coordenadas de escala de sala absoluta con su origen en el suelo.

Por el contrario, un dispositivo de realidad mixta no anclada, como HoloLens, tiene una comprensión dinámica controlada por sensores del mundo, ajustando continuamente su conocimiento a lo largo del tiempo de los alrededores del usuario a medida que caminan muchos metros a través de un piso completo de un edificio. En una experiencia a escala mundial, si colocaste todos tus hologramas en un sistema de coordenadas rígidas naïve, esos hologramas acabarían desfasándose con el tiempo, ya sea en función del mundo o en relación entre sí.

Por ejemplo, los auriculares pueden creer que dos ubicaciones del mundo están separadas por 4 metros y, después, refinar esa comprensión, aprendiendo que las ubicaciones están de hecho a 3,9 metros de distancia. Si esos hologramas se hubieran colocado inicialmente a 4 metros de distancia en un único sistema de coordenadas rígidas, uno de ellos siempre aparecería a 0,1 metros del mundo real.

Puede colocar manualmente anclajes espaciales en Unity para mantener la posición de un holograma en el mundo físico cuando el usuario es móvil. Sin embargo, esto sacrifica la autocoherencia dentro del mundo virtual. Los anclajes diferentes se mueven constantemente en relación entre sí y también se mueven a través del espacio de coordenadas global. En este escenario, las tareas sencillas, como el diseño, se vuelven difíciles. La simulación física también puede ser problemática.

World Locking Tools (WLT) le lleva lo mejor de ambos mundos, estabilizando un único sistema de coordenadas rígido usando una fuente interna de anclajes espaciales distribuidos en toda la escena virtual a medida que el usuario se mueve. WLT analiza las coordenadas de la cámara y esos anclajes espaciales cada fotograma. En lugar de cambiar las coordenadas de todo el mundo para compensar las correcciones en las coordenadas de la cabeza del usuario, WLT corrige las coordenadas de la cabeza en su lugar.

Elección del enfoque de bloqueo del mundo

Si es posible, use World Locking Tools para el posicionamiento de hologramas.

World Locking Tools proporciona un sistema de coordenadas estable que minimiza las incoherencias visibles entre los marcadores del mundo virtual y real. World Locking Tools bloquea la escena completa con un grupo compartido de anclajes, en lugar de bloquear cada grupo de objetos con el propio delimitador individual del grupo.

World Locking Tools controla automáticamente la creación y administración interna de anclajes espaciales. No es necesario interactuar con ARAnchorManager ni WorldAnchor para mantener bloqueados el mundo de los hologramas.

  • Para Unity 2019/2020 con OpenXR o el complemento XR de Windows, use ARAnchorManager.
  • Para versiones anteriores de Unity o proyectos de WSA, use WorldAnchor.

Configuración del bloqueo mundial

Para empezar a usar World Locking Tools, descargue la herramienta de características de Mixed Reality. Para obtener más información sobre los conceptos básicos, consulte la página principal de documentación de World Locking Tools para obtener vínculos a Información general, Inicio rápido y otros temas útiles.

Configuración automatizada

Cuando el proyecto esté listo para usarse, ejecute la utilidad configurar escena desde Mixed Reality > World Locking Tools:

Editor de Unity con el menú Mixed Reality Toolkit seleccionado

Importante

La utilidad "Configure scene" (Configurar escena) se puede volver a ejecutar en cualquier momento. Por ejemplo, debe volver a ejecutarse si el destino de AR ha cambiado de Legacy a XR SDK. Si la escena ya está configurada correctamente, la ejecución de la utilidad no tiene ningún efecto.

Visualizadores

Durante el desarrollo temprano, agregar visualizadores puede ser útil para asegurarse de que WLT está configurado y funcionando correctamente. Más tarde, se pueden eliminar para mejorar el rendimiento en producción, o si por alguna razón ya no son necesarios, con la utilidad "Remove visualizers" (Quitar visualizadores). Puede encontrar más detalles sobre los visualizadores en la documentación de las herramientas.

Bloqueo del mundo persistente

Los delimitadores espaciales guardan hologramas en un espacio real entre sesiones de aplicación. Una vez guardados en el almacén de anclajes de HoloLens, los delimitadores espaciales se pueden encontrar y cargar en sesiones diferentes y son una reserva ideal cuando no hay conectividad a Internet.

Importante

Los anclajes locales se almacenan en el dispositivo, mientras que los Azure Spatial Anchors se almacenan en la nube. Puede tener anclajes locales y de Azure en el mismo proyecto sin conflictos. Para más información sobre cómo integrar los servicios en la nube de Azure para almacenar los anclajes, consulte Azure Spatial Anchors.

De forma predeterminada, World Locking Tools restaura el sistema de coordenadas de Unity en relación con el mundo físico entre sesiones en dispositivos que admiten la persistencia de anclajes espaciales locales. Para que un holograma aparezca en el mismo lugar en el mundo físico después de salir y volver a ejecutar la aplicación, la aplicación solo necesita restaurar la misma posición en el holograma.

Componente de contexto de bloqueo mundial en el inspector de Unity

Si la aplicación necesita un control más preciso, puede deshabilitar Auto Save y Auto-Load en el inspector y administrar la persistencia desde un script. Para obtener más información, consulte Persist spatial coordinate systems (Conservar sistemas de coordenadas espaciales).

World Locking Tools solo admite la persistencia de anclaje local en dispositivos HoloLens. Para dispositivos Android, iOS y HoloLens, se integran con Azure Spatial Anchors para admitir la persistencia y el uso compartido de espacios de coordenadas entre sesiones y dispositivos. Para más información y ejemplos de uso de Herramientas de bloqueo mundial con Azure Spatial Anchors, consulte Herramientas de bloqueo mundial (WLT) combinadas con Azure Spatial Anchors (ASA).

Pasos siguientes

Compartir un espacio de coordenadas bloqueado por el mundo:

Más información sobre la asignación espacial:

Volver a los puntos de control de desarrollo de Unity:

Consulte también