Configuración y ejecución de los ejemplos de WLT+ASA

Resumen

World Locking Tools para Unity (WLT) proporciona un sistema de coordenadas estable basado en el seguimiento local. Cuando se combina con Azure Spatial Anchors (ASA), ese sistema de coordenadas estable puede conservarse entre sesiones y compartirse entre dispositivos.

Este vídeo puede darle una idea de lo que puede esperar al ejecutar el ejemplo.

¿Qué hay en este ejemplo?

Este ejemplo proporciona recursos y scripts para:

  1. Configurar el sistema de coordenadas global de Unity con respecto al entorno físico.
  2. Publicar esa configuración del sistema de coordenadas en Azure mediante Azure Spatial Anchors.
  3. Recuperar los datos de Azure para restaurar el sistema de coordenadas en sesiones posteriores o en otros dispositivos.

Estructura de este documento

  1. Instalación: cómo instalar e implementar la aplicación de ejemplo.
  2. Notas sobre la ejecución de la aplicación, junto con los pasos sugeridos.
  3. Descripción de la arquitectura de los scripts auxiliares.

Instalación y versiones probadas

Este ejemplo se ha desarrollado y probado con los siguientes recursos:

  • Unity 2020.3.8f1
  • Azure Spatial Anchors (ASA) v2.9.0 - v2.10.2.
  • Mixed Reality Toolkit v2.7.2
  • World Locking Tools para Unity v1.4.1
  • FrozenWorldEngine v1.1.1

Puede instalar WLT y este ejemplo con el archivo .unitypackage de la sección de versiones de WLT o mediante la herramienta de características de Mixed Reality. Si realiza la instalación con la herramienta de características, no solo debe instalar la dependencia de la capa Examples de WLT (automática), sino también importar los ejemplos en el proyecto. Consulte Instalación desde la herramienta de características de MR para obtener más información.

Instalación del archivo DLL de Frozen World Engine en el proyecto

El primer paso es instalar el archivo DLL de Frozen World Engine, versión 1.1.1. Aquí se proporcionan las instrucciones para la instalación, ya sea mediante NuGet for Unity o con el archivo nuget.exe de la línea de comandos.

Instalación de ASA

Creación de recursos de anclaje espacial

Esta guía de inicio rápido indica los pasos para crear una cuenta de Azure y los recursos de anclaje espacial necesarios. Para ejecutar el ejemplo, serán necesarios el identificador, el dominio y la clave de la cuenta. Debe agregarlos a los campos correspondientes del script "Spatial Anchor Manager", en el objeto SpacePinBinder de la escena. Se admiten otros métodos de autenticación, pero el identificador, el dominio y la clave de la cuenta son la forma más fácil cuando se empieza.

Campos de credenciales

Instalar el SDK

A continuación, instale Azure Spatial Anchors v2.9.0 siguiendo alguno de los métodos que se explican en estas instrucciones. Yo he usado la herramienta de características de MR.

Configuración adicional para la relocalización general

Cuando se utiliza la relocalización general, se requiere cierta configuración adicional para la implementación en Android o HoloLens2.

¿Qué es la relocalización general?

La relocalización general es una tecnología que permite buscar anclajes en la nube creados previamente dentro de su proximidad actual. Puede consultar información detallada sobre la relocalización general en la sección Relocalización general de la documentación de Azure Spatial Anchors.

Este ejemplo muestra cómo buscar anclajes en la nube mediante la relocalización general o explícitamente por identificador de anclaje en la nube (GUID). Si la relocalización general está habilitada, son necesarios los siguientes pasos de configuración adicionales. Si no está interesado en la relocalización general, puede deshabilitarla en el componente "Publisher ASA" del objeto SpacePinBinder.

Deshabilitación de la reubicación general

Pasos de configuración adicionales para HoloLens2

Para habilitar la relocalización general en HoloLens2, debe agregar un permiso al archivo Package.appxmanifest generado en ARM/WorldLockingTools/Package.appxmanifest (suponiendo que seleccionó la carpeta ARM como destino de la compilación). Si este proyecto es suyo, sustituya el nombre correspondiente por WorldLockingTools en esa ruta de acceso. Agregue la siguiente línea a la sección Capabilities:

    <DeviceCapability Name="wiFiControl"/>

Para obtener más información, lea esta entrada de blog en GitHub.

Si omite este paso, el publicador nunca alcanzará el estado "Ready" (Listo), la velocidad de fotogramas será extremadamente baja y el archivo unityPlayer.log (si se genera) estará lleno de excepciones como las siguientes:

InvalidOperationException: CoarseReloc: WiFi access has been declined. Request CV: . Response CV: .

Deberá agregar esa funcionalidad al archivo Package.appxmanifest cada vez que la solución se compile desde cero. Pero las compilaciones posteriores desde Unity conservarán la funcionalidad.

En Project Settings/XR Plugin Management (Configuración del proyecto/Administración de complementos de XR), asegúrese de que Windows Mixed Reality sea el proveedor de complementos seleccionado en la pestaña UWP (también se admite OpenXR para WLT con ASA).

El perfil de MRTK XAmple XRSDK ToolkitConfigurationProfile en XAmpleApp/CustomProfiles es válido para la ejecución en HoloLens2.

Pasos de configuración adicionales para Android

Para habilitar la relocalización general en Android, siga estas instrucciones para configurar el archivo Assets/Plugins/Android/mainTemplate.gradle.

Además, en el archivo Assets/Plugins/Android/AndroidManifest.xml, deben habilitarse muchos permisos para permitir el acceso a la conexión Wi-Fi en Android. De nuevo, si va a incorporar elementos de este proyecto a su propio proyecto, debe seguir también estos pasos para usar la relocalización general. En esta entrada de blog, se proporcionan más detalles sobre los permisos necesarios para acceder a la conexión Wi-Fi en Android y la entrada a la que está vinculada.

En el proyecto de ejemplo de WLT-ASA, que está configurado específicamente para usar WLT y ASA juntos, se incluyen ejemplos de los archivos mainTemplate.gradle y AndroidManifest.xml modificados. Los puede copiar directamente en su proyecto después de habilitar las opciones "Custom Main Manifest" (Manifiesto principal personalizado) y "Custom Main Gradle Template" (Plantilla principal personalizada de Gradle) en el cuadro de diálogo Player Publishing Settings (Configuración de publicación del reproductor) como se indica.

Al presionar Compilar & Ejecutar, si se produce un error de sombreador en el material de MRTK_Standard, intente compilar & Ejecutar de nuevo. A mí me funciona la segunda vez. Hay alguna información al respecto en los problemas de MRTK, pero, hasta donde yo sé, toda la información que hay ahí es incorrecta.

En Project Settings/XR Plugin Management (Configuración del proyecto/Administración de complementos de XR), asegúrese de que ARCore sea el proveedor de complementos seleccionado en la pestaña Android.

El perfil de MRTK XAmple AR ToolkitConfigurationProfile es válido para la ejecución en dispositivos móviles. No olvide ejecutar el script Mixed Reality/Utilities/UnityAR/Update Scripting Defines después de cambiar a Android o iOS.

Qué hacen los botones

Listo

  • Toggle Pins (Alternar marcadores): cuando los marcadores espaciales no están activos, se pueden ocultar sus manipuladores.
  • Publish (Publicar): guarda la configuración actual, lo que permite recuperarla en una sesión posterior o en otros dispositivos.
  • Load from file (Cargar desde un archivo): permite usar enlaces almacenados previamente para restaurar una configuración espacial.
  • Clear file (Borrar archivo): elimina todos los recursos de respaldo, especialmente los anclajes espaciales de Azure, y borra el archivo de enlaces.
  • Search (Buscar): busca todos los anclajes espaciales de Azure en las proximidades y restaura la configuración espacial con ellos.
  • Purge (Purgar): busca todos los anclajes espaciales de Azure en las proximidades y los borra.
  • Reset Pins (Restablecer marcadores): deshace cualquier manipulación de los marcadores espaciales. No borra ningún anclaje espacial de Azure.

El menú de los dispositivos móviles tiene una forma ligeramente diferente, pero la posición y el significados de los botones son iguales.

Demostración: Publicación desde HoloLens2

Colocación de la escena con marcadores espaciales

Cuando se inicia el ejemplo, el sistema de coordenadas se coloca y orienta en función de la posición del recurso de seguimiento de la cabeza al inicio. Es decir, es bastante arbitrario. Lo primero que hay que hacer es ajustar el sistema de coordenadas al estado de referencia deseado.

El sofá de la escena PinTestSofa tiene 2,18 metros de largo, 0,78 metros de alto y 1 metro de profundidad. Los manipuladores del marcador espacial situados en cada extremo de la parte superior del sofá están, por tanto, a 2,18 metros de distancia entre sí y a 0,78 m del suelo. Se recomienda medir y colocar marcadores temporales con una separación de 2,18 metros, a una altura conveniente. Como alternativa, puede ajustar la escena a su espacio físico.

Después de haber compilado la aplicación y haberla implementado en un dispositivo HoloLens2, espere hasta que el estado del menú flotante indique Ready (Listo). Sugerencia: La línea de estado cambiará de rojo a blanco cuando esté listo.

No está listo

De uno en uno, tome cada uno de los manipuladores del marcador espacial (esferas reticulares blancas) y arrástrelo hasta la posición relativa a los marcadores de referencia.

Después de soltar cada uno de los marcadores en su posición, la escena debe haber cambiado para restaurar el respaldo del sofá con respecto al marcador espacial. Los objetos de la escena no se mueven, se ajusta todo el espacio de coordenadas para que las coordenadas originales de los marcadores espaciales estén en la ubicación del mundo físico al que los arrastró.

Publicación del espacio de coordenadas

Una vez establecido el espacio deseado, ya puede publicarlo para que esté disponible en sesiones posteriores y en otros dispositivos.

Si utiliza la relocalización general, es aconsejable borrar ahora los anclajes en la nube creados previamente. Presione el botón "Purge from Search" (Purgar desde la búsqueda) y espere a que finalice la operación.

Ahora, en el menú flotante, presione el botón "Publish" (Publicar) y espere a que finalice la operación.

Listo

Demostración: Consumo desde HoloLens2 con relocalización general

Vuelva a iniciar la aplicación en otro dispositivo HoloLens2, o bien en el mismo dispositivo después de cerrar la sesión anterior. Cuando el estado indique Ready (Listo), presione el botón "Load from Search" (Cargar desde la búsqueda). Cuando finalice la operación, el sistema de coordenadas global de Unity se habrá alineado con el entorno físico como estaba en la sesión anterior (publicada).

Demostración: Consumo desde HoloLens2 con IBindingOracle (SpacePinBinderFile)

Cuando los enlaces se publican en un dispositivo (o cuando se restauran desde la búsqueda), se registran en un elemento IBindingOracle. Este ejemplo incluye el elemento Oracle más básico, que simplemente escribe los enlaces en un archivo de texto.

Reinicie la aplicación en una nueva sesión. Si este es el mismo dispositivo HoloLens2 desde el que se realizó la publicación, debe de quedar un archivo de enlaces después de la publicación. Si se trata de otro dispositivo HoloLens2, pero se realizó una búsqueda satisfactoria en una sesión anterior, debe de quedar el archivo de enlaces encontrado.

Presione el botón "Load from File" (Cargar desde un archivo) para cargar los enlaces registrados anteriormente y restaurar ese espacio de coordenadas.

Demostración: Consumo desde Android con relocalización general

La experiencia de usuario es ligeramente diferente en Android, pero funciona exactamente igual. La principal diferencia es que es necesario analizar un poco más el entorno al principio con respecto a HoloLens2, para que ASA pueda continuar.

Cuando el sistema indique Ready (Listo), puede hacer clic en el botón azul (tercero por la derecha) para buscar los enlaces publicados anteriormente y restaurar el sistema de coordenadas.

Demostración: Consumo desde Android con IBindingOracle (SpacePinBinderFile)

Después de realizar satisfactoriamente una carga desde la búsqueda, debe de quedar un archivo de enlaces en el dispositivo. En sesiones posteriores, solo tiene que hacer clic en Load from File (Cargar desde un archivo) para restaurar el sistema de coordenadas.

Como alternativa, puede simplemente copiar el archivo de texto de enlaces del dispositivo de la publicación en el dispositivo que lo va a consumir. La ubicación predeterminada del archivo de texto de enlaces es:

HoloLens2: carpetas de usuario/LocalAppData/WLT-ASA/LocalState/BinderFile.txt

Android: Almacenamiento interno compartido/Android/data/com. WorldLockingTools.WLTASA/files/BinderFile.txt

Vea también