Compartir a través de


Observador de comprensión de escenas: MRTK2

Scene Understanding devuelve una representación semántica de las entidades de escena, así como sus formas geométricas en HoloLens 2 (no se admite HoloLens 1.ª generación).

Algunos casos de uso esperados de esta tecnología son:

  • Colocar objetos en la superficie más cercana de un tipo determinado (por ejemplo, pared y suelo)
  • Construcción de nav-mesh para juegos de estilo de plataforma
  • Proporcionar geometría apta para el motor de física como quads
  • Acelerar el desarrollo evitando la necesidad de escribir algoritmos similares

Scene Understanding se presenta como una característica experimental en MRTK 2.6. Se integra en MRTK como observador espacial denominado WindowsSceneUnderstandingObserver. Scene Understanding funciona tanto con la canalización XR heredada como con la canalización del SDK de XR (tanto OpenXR (a partir de MRTK 2.7) como con el complemento XR de Windows. En ambos casos WindowsSceneUnderstandingObserver se usa .

Nota:

El uso de Scene Understanding en la comunicación remota solo se admite en MRTK 2.7.3 y versiones posteriores. Solo se admiten proyectos que usan OpenXR. Los proyectos que usan la canalización XR heredada o el complemento XR de Windows no se admiten.

Introducción al observador

Cuando se le pregunte, WindowsSceneUnderstandingObserver devolverá SpatialAwarenessSceneObject con atributos útiles para que la aplicación comprenda su entorno. La frecuencia de observación, el tipo de objeto devuelto (por ejemplo, pared, suelo) y otros comportamientos de observador dependen de la configuración del observador a través del perfil. Por ejemplo, si se desea la máscara de oclusión, el observador debe configurarse para generar quads. La escena observada se puede guardar como archivo serializado que se puede cargar más adelante para volver a crear la escena en modo de reproducción del editor.

Instalación

Importante

Scene Understanding solo se admite en HoloLens 2 y Unity 2019.4 y versiones posteriores.

  1. Asegúrese de que la plataforma está establecida en UWP en la configuración de compilación.
  2. Adquiera el paquete Scene Understanding a través de Mixed Reality Herramienta de características.

Uso de Scene Understanding

La manera más rápida de empezar a trabajar con Scene Understanding es consultar la escena de ejemplo.

Escena descripción de la escena de ejemplo

En Unity, use el Explorador de proyectos para abrir el archivo de escena y Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity presionar reproducir.

Importante

Solo se aplica a MRTK 2.6.0: cuando se usa la herramienta de características de Mixed Reality o se importa a través de UPM, importe el ejemplo Demos - SpatialAwareness antes de importar el ejemplo Experimental - SceneUnderstanding debido a un problema de dependencia. Consulte este problema de GitHub para obtener más información.

La escena muestra lo siguiente:

  • Visualización de objetos de escena observados con en la interfaz de usuario de la aplicación para configurar el observador
  • Script de ejemplo DemoSceneUnderstandingController que muestra cómo cambiar la configuración del observador y escuchar eventos pertinentes
  • Guardar datos de escena en el dispositivo para el desarrollo sin conexión
  • Carga de datos de escena guardados previamente (archivos .bytes) para admitir el flujo de trabajo de desarrollo en el editor

Importante

De forma predeterminada, la ShouldLoadFromFile propiedad del observador se establece en false. Para ver la visualización de una sala de ejemplo serializada, consulte la sección configuración del servicio de observador a continuación y establezca la propiedad en true en el editor.

Nota:

La escena de ejemplo se basa en la canalización XR heredada. Si usa la canalización del SDK de XR, debe modificar los perfiles en consecuencia. El perfil del sistema de reconocimiento espacial (DemoSceneUnderstandingSystemProfile) de Scene Understanding proporcionado y los perfiles de observador de Scene Understanding (DefaultSceneUnderstandingObserverProfile y DemoSceneUnderstandingObserverProfile) funcionan para ambas canalizaciones.

Nota:

La escena de ejemplo registra una There is no active AsyncCoroutineRunner when an action is posted. advertencia en determinadas circunstancias debido al orden de ejecución de inicialización o subproceso. Si puede confirmar que el AsyncCoroutineRunner componente está conectado al objeto GameObject "Demo Controller" y que el componente/GameObject permanece habilitado/activo en la escena (el caso predeterminado), la advertencia se puede omitir de forma segura. Sin embargo, al crear una nueva escena con Scene Understanding, asegúrese de crear un GameObject vacío en la raíz y adjuntarle el AsyncCoroutineRunner script; de lo contrario, es posible que Scene Understanding no funcione correctamente.

Configuración del servicio de observador

Seleccione el objeto de juego "MixedRealityToolkit" y compruebe el inspector.

descripción de la ubicación de la escena en la jerarquía

Ubicación de MRTK en el inspector

Estas opciones permitirán que uno configure .WindowsSceneUnderstandingObserver

Script de ejemplo

El script de ejemplo DemoSceneUnderstandingController.cs muestra los conceptos principales para trabajar con el servicio Scene Understanding.

  • Suscripción a eventos de Scene Understanding
  • Control de eventos de Scene Understanding
  • Configuración de en tiempo de WindowsSceneUnderstandingObserver ejecución

Las alternancias en el panel de la escena cambian el comportamiento del observador de comprensión de la escena mediante una llamada a funciones públicas de este script de ejemplo.

Al activar Crear instancias de prefabs, se mostrará cómo crear objetos de tamaño para ajustarse a todos los SpatialAwarenessSceneObject, recopilados perfectamente bajo un objeto primario.

Opciones del controlador de demostración

Notas de la aplicación compilada

Compile e implemente en HoloLens de la manera estándar. Una vez en ejecución, debería aparecer una serie de botones para reproducirse con las características.

Tenga en cuenta que hay algunas caídas de pozo en la realización de consultas al observador. La configuración incorrecta de una solicitud de captura da lugar a que la carga del evento no contenga los datos esperados. Por ejemplo, si no se solicitan quads, no habrá texturas de máscara de oclusión. Como es aconsejable, no aparecerá ninguna malla de mundo si el observador no está configurado para solicitar mallas. El DemoSceneUnderstandingController script se encarga de algunas de estas dependencias, pero no de todas.

Se puede acceder a los archivos de escena guardados a través del portal de dispositivos en User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Estos archivos de escena se pueden usar en el editor especificándolos en el perfil de observador que se encuentra en el inspector.

Ubicación del portal de dispositivos del archivo de bytes

Bytes de escena serializados en observer

Consulta también