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.
- Asegúrate de que la plataforma esté establecida en UWP en la configuración de compilación.
- 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.
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.
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.