Descripción de escenas

La descripción de escenas aporta a los desarrolladores de realidad mixta una representación estructurada y general del entorno, diseñada para que el desarrollo para aplicaciones con control del entorno sea intuitivo. La comprensión de la escena lo hace combinando la eficacia de los entornos de ejecución de realidad mixta existentes, como la asignación espacial altamente precisa pero menos estructurada y los nuevos entornos de ejecución controlados por ia. Al combinar estas tecnologías, Scene understanding genera representaciones de entornos 3D similares a los que puede haber usado en marcos como Unity o ARKit/ARCore. El punto de entrada scene understanding comienza con un observador de escena, al que llama la aplicación para calcular una nueva escena. Hoy en día, la tecnología puede generar 3 categorías de objetos distintas pero relacionadas:

  • Mallas de entorno herméticas simplificadas que deducen la estructura de la sala plana sin desorden
  • Regiones de plano para la selección de ubicación a las que llamamos Quads
  • Instantánea de la malla de asignación espacial que se alinea con los datos cuadráteros o herméticos que se muestran

Malla de asignación espacial, superficies planas etiquetadas, malla hermética

Este documento está pensado para proporcionar información general sobre escenarios y aclarar la relación que comparten la comprensión de la escena y la asignación espacial. Si quiere ver Scene Understanding en acción, consulte nuestra demostración de vídeo Diseño de Hologramas - Reconocimiento espacial a continuación:

Este vídeo se tomó de la aplicación HoloLens 2 "Diseño de hologramas". Descargue y disfrute de la experiencia completa aquí.

Desarrollo con Scene Understanding

Este artículo solo sirve para introducir el entorno de ejecución y los conceptos de Scene Understanding. Si busca documentación sobre cómo desarrollar con Scene Understanding, puede que le interesen los siguientes artículos:

Introducción al SDK de Scene Understanding

Puede descargar la aplicación Scene Understanding Sample desde el sitio de GitHub de ejemplo:

Ejemplo de descripción de la escena

Si no tiene un dispositivo y desea acceder a escenas de ejemplo para probar Scene Understanding, hay escenas en la carpeta de recursos de ejemplo:

Escenas de ejemplo de descripción de la escena

SDK

Si busca detalles específicos sobre el desarrollo con Scene Understanding, consulte la documentación de información general del SDK de Scene Understanding .

Ejemplo

Compatibilidad con dispositivos

Característica HoloLens (1.ª generación) HoloLens 2 Cascos envolventes
Descripción de escenas ✔️

Escenarios de uso comunes

Ilustraciones de escenarios comunes de uso de asignación espacial: Ubicación, Oclusión, Física y Navegación
Escenarios comunes de uso de asignaciones espaciales: colocación, oclusión, física y navegación.


Muchos de los escenarios principales de las aplicaciones que reconocen el medio ambiente se pueden abordar mediante la asignación espacial y la comprensión de la escena. Estos escenarios principales incluyen la colocación, la oclusión, la física, etc. Una diferencia principal entre la comprensión de la escena y la asignación espacial es una compensación de la precisión máxima y la latencia de la estructura y la simplicidad. Si la aplicación requiere la latencia más baja posible y los triángulos de malla a los que solo desea acceder, use la asignación espacial directamente. Si va a realizar un procesamiento de nivel superior, puede considerar la posibilidad de cambiar al modelo de comprensión de la escena, ya que debe proporcionarle un superconjunto de funcionalidad. Siempre tendrá acceso a los datos de asignación espacial más completos y precisos posibles, ya que Scene understanding proporciona una instantánea de la malla de asignación espacial como parte de su representación.

En las secciones siguientes se revisan los escenarios principales de asignación espacial en el contexto del nuevo SDK de Scene Understanding.

Selección de ubicación

La comprensión de la escena proporciona nuevas construcciones diseñadas para simplificar los escenarios de selección de ubicación. Una escena puede calcular primitivos denominados SceneQuads, que describen superficies planas en las que se pueden colocar hologramas. SceneQuads se han diseñado en torno a la colocación y describen una superficie 2D y proporcionan una API para colocarla en esa superficie. Anteriormente, cuando se usaba la malla de triángulos para realizar la colocación, uno tenía que examinar todas las áreas del cuadráculo y hacer relleno de agujeros/posprocesamiento para identificar buenas ubicaciones para la colocación de objetos. Esto no siempre es necesario con Quads, ya que el entorno de ejecución De comprensión de la escena deduce qué áreas cuádruples no se examinaron y invalidar áreas que no forman parte de la superficie.

SceneQuads con inferencia deshabilitada, capturando áreas de selección de ubicación para regiones escaneadas.
Imagen n.º 1 : SceneQuads con inferencia deshabilitada, capturando áreas de selección de ubicación para regiones escaneadas.

Quads con inferencia habilitada, la colocación ya no se limita a las áreas escaneadas.
Imagen n.º 2 : cuadrantes con inferencia habilitada, la colocación ya no se limita a las áreas escaneadas.


Si la aplicación pretende colocar hologramas 2D o 3D en estructuras rígidas de su entorno, la simplicidad y comodidad de SceneQuads para la colocación es preferible calcular esta información desde la malla de asignación espacial . Para obtener más información sobre este tema, consulte la referencia del SDK de Scene understanding.

Nota Para el código de colocación heredado que depende de la malla de asignación espacial, la malla de asignación espacial se puede calcular junto con SceneQuads estableciendo la opción EnableWorldMesh. Si scene understanding API no satisface los requisitos de latencia de la aplicación, se recomienda seguir usando la API de asignación espacial.

Oclusión

La oclusión de asignación espacial sigue siendo la forma menos latente de capturar el estado en tiempo real del entorno. Aunque esto puede ser útil para proporcionar oclusión en escenas muy dinámicas, es posible que desee considerar la comprensión de la escena por varias razones. Si usa la malla de asignación espacial generada por Scene Understanding, puede solicitar datos de la asignación espacial que no se almacenarían en la caché local y no están disponibles en las API de percepción. El uso de la asignación espacial para la oclusión junto con mallas herméticas proporcionará un valor adicional, específicamente la finalización de la estructura de la sala sin examinar.

Si los requisitos pueden tolerar el aumento de la latencia de la comprensión de la escena, los desarrolladores de aplicaciones deben considerar el uso de la malla de asignación espacial y la malla de asignación espacial en unísono con representaciones planares. Esto proporcionaría un escenario "mejor de ambos mundos" en el que la oclusión hermética simplificada está casada con geometría noplanar más fina que proporciona los mapas de oclusión más realistas posibles.

Física

La comprensión de la escena genera mallas herméticas que descomponen el espacio con semántica, específicamente para abordar muchas limitaciones de la física que imponen las mallas de asignación espacial. Las estructuras herméticas garantizan que las conversiones de rayos físicos siempre se alcancen, y la descomposición semántica permite una generación más sencilla de mallas de navegación para la navegación interior. Como se describe en la sección sobre oclusión, la creación de una escena con EnableSceneObjectMeshes y EnableWorldMesh producirá la malla más completa posible. La propiedad hermética de la malla de entorno impide que las pruebas de posicionamiento no alcancen superficies. Los datos de malla garantizarán que la física interactúe con todos los objetos de la escena y no solo con la estructura de la sala.

Las mallas planar descomponidas por clase semántica son construcciones ideales para la navegación y el planeamiento de rutas de acceso, lo que facilita muchos de los problemas descritos en la introducción a la navegación de asignación espacial . Los objetos SceneMesh calculados en la escena se descompilan por tipo de superficie, lo que garantiza que la generación de malla de navegación está limitada a las superficies en las que se puede recorrer. Debido a la simplicidad de las estructuras de piso, la generación dinámica de malla de navegación en motores 3d como Unity se pueden alcanzar en función de los requisitos en tiempo real.

Actualmente, la generación de mallas de navegación precisas requiere posprocesamiento, es decir, las aplicaciones deben seguir proyectando ocluders en el suelo para asegurarse de que la navegación no pasa por desorden o tablas, etc. La manera más precisa de lograr esto es proyectar los datos de malla del mundo, que se proporciona si la escena se calcula con la marca EnableWorldMesh.

Visualización

Aunque la visualización de la asignación espacial se puede usar para los comentarios en tiempo real del entorno, hay muchos escenarios en los que la simplicidad de los objetos planar y herméticos proporciona más rendimiento o calidad visual. Las técnicas de proyección de sombras y de tierra que se describen mediante la asignación espacial pueden ser más agradables si se proyectan en las superficies planas proporcionadas por Quads o la malla de agua plana. Esto es especialmente cierto para entornos o escenarios en los que el análisis previo exhaustivo no es óptimo porque la escena deducirá y los entornos completos y las suposiciones planar minimizarán los artefactos.

Además, el número total de superficies devueltas por la asignación espacial está limitada por la caché espacial interna, mientras que la versión de Scene understanding de la malla de asignación espacial puede acceder a los datos de asignación espacial que no están almacenados en caché. Por este motivo, la comprensión de la escena es más adecuada para capturar representaciones de malla para espacios más grandes (por ejemplo, más grandes que una sola sala) para la visualización o el procesamiento de malla adicional. La malla mundial devuelta con EnableWorldMesh tendrá un nivel de detalle coherente a lo largo de todo, lo que puede producir una visualización más agradable si se representa como wireframe.

Consulte también