Compartir a través de


Observador de comprensión de la escena: 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 1st Gen).

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 una malla de navegación para juegos de estilo plataforma
  • Proporcionar geometría compatible con el motor de física como cuadrantes
  • Acelerar el desarrollo evitando la necesidad de escribir algoritmos similares

Scene Understanding se introduce 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 de XR heredada como con la canalización del SDK de XR (openXR (a partir de MRTK 2.7) y el complemento XR de Windows). En ambos casos WindowsSceneUnderstandingObserver , se usa .

Nota

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

Información general del 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.

Configurar

Importante

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

  1. Asegúrate 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 Feature Tool.

Uso de Scene Understanding

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

Escena de ejemplo de descripción de la escena

En Unity, use el Explorador de proyectos para abrir el archivo de escena en Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity y presione 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 anteriormente (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 muestras serializada, consulte la sección configuring observer service siguiente 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 proporcionado de Scene Understanding Spatial Awareness System (DemoSceneUnderstandingSystemProfile) y los perfiles de Scene Understanding Observer (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 puedes confirmar que el AsyncCoroutineRunner componente está asociado al gameObject "Controlador de demostración" y 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 adjuntarlo al 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.

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

Ubicación de MRTK en el inspector

Estas opciones permitirán que una configure .WindowsSceneUnderstandingObserver

Script de ejemplo

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

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

Los botóns de alternancia 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 objetos Prefab, se mostrará la creación de objetos cuyo tamaño se ajuste a todos los objetos SpatialAwarenessSceneObject, recopilados perfectamente bajo un objeto primario.

Opciones del controlador de demostración

Notas de la aplicación compiladas

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

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

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

Ubicación de Device Portal del archivo de bytes

Bytes de escena serializados en observador

Consulte también