Estabilidad de hologramas

Para lograr hologramas estables, HoloLens tiene una canalización integrada de estabilización de imágenes. La canalización de estabilización funciona automáticamente en segundo plano, por lo que no es necesario realizar ningún paso adicional para habilitarla. Sin embargo, debe ejercer técnicas que mejoren la estabilidad del holograma y eviten escenarios que reduzcan la estabilidad.

Terminología de calidad de hologramas

La calidad de los hologramas es el resultado de un buen entorno y un buen desarrollo de aplicaciones. Las aplicaciones que se ejecutan en una constante de 60 fotogramas por segundo en un entorno donde HoloLens puede realizar un seguimiento de los alrededores garantiza que el holograma y el sistema de coordenadas coincidente estén sincronizados. Desde la perspectiva de un usuario, los hologramas que están diseñados para estar estacionados no se moverán en relación con el entorno.

La terminología siguiente puede ayudarle a identificar problemas con el entorno, tasas de representación incoherentes o bajas, o cualquier otra cosa.

  • La precisión. Una vez que el holograma está bloqueado y colocado en el mundo real, debe permanecer donde se coloca en relación con el entorno circundante e independiente del movimiento del usuario o cambios en el entorno pequeño y disperso. Si un holograma aparece más adelante en una ubicación inesperada, se trata de un problema de precisión . Estos escenarios pueden ocurrir si dos salas distintas tienen un aspecto idéntico.
  • Jitter. Los usuarios observan vibración como agitación de alta frecuencia de un holograma, lo que puede ocurrir cuando el seguimiento del entorno se degrada. Para los usuarios, la solución está ejecutando el ajuste del sensor.
  • Judder. Las frecuencias de representación bajas dan lugar a un movimiento desigual e imágenes dobles de hologramas. Judder es especialmente notable en hologramas con movimiento. Los desarrolladores deben mantener una constante de 60 FPS.
  • Deriva. Los usuarios ven el desfase como un holograma parece alejarse de donde se colocó originalmente. El desfase se produce cuando se colocan hologramas lejos de los anclajes espaciales, especialmente en partes no asignadas del entorno. La creación de hologramas cerca de anclajes espaciales reduce la probabilidad de desfase.
  • Saltando. Cuando un holograma "pops" o "salta" de su ubicación ocasionalmente. La salto puede producirse a medida que el seguimiento ajusta los hologramas para que coincidan con la comprensión actualizada de su entorno.
  • Nadar. Cuando aparece un holograma que corresponde al movimiento de la cabeza del usuario. La natación se produce cuando la aplicación no ha implementado completamente la reproyecto y si HoloLens no está calibrada para el usuario actual. El usuario puede volver a ejecutar la aplicación de calibración para corregir el problema. Los desarrolladores pueden actualizar el plano de estabilización para mejorar aún más la estabilidad.
  • Separación de colores. Las pantallas de HoloLens son pantallas secuenciales de color, que canales de color flash de color rojo-verde-azul-verde a 60 Hz (los campos de color individuales se muestran a 240 Hz). Cada vez que un usuario realiza un seguimiento de un holograma móvil con sus ojos, los bordes iniciales y finales de ese holograma se separan en sus colores constituyentes, lo que produce un efecto arco iris. El grado de separación depende de la velocidad del holograma. En algunos casos más raros, mover una cabeza rápidamente mientras observa un holograma estacionario también puede dar lugar a un efecto arco iris, que se denomina separación de colores.

Velocidad de fotogramas

La velocidad de fotogramas es el primer pilar de estabilidad del holograma. Para que los hologramas aparezcan estables en el mundo, cada imagen presentada al usuario debe tener los hologramas dibujados en el lugar correcto. Las pantallas de HoloLens se actualizan 240 veces por segundo, mostrando cuatro campos de color independientes para cada imagen recién representada, lo que da como resultado una experiencia de usuario de 60 FPS (fotogramas por segundo). Para proporcionar la mejor experiencia posible, los desarrolladores de aplicaciones deben mantener 60 FPS, lo que se traduce en proporcionar de forma coherente una nueva imagen al sistema operativo cada 16 milisegundos.

60 FPS Para dibujar hologramas que parezcan estar sentados en el mundo real, HoloLens debe representar imágenes de la posición del usuario. Dado que la representación de imágenes tarda tiempo, HoloLens predice dónde se mostrará la cabeza de un usuario cuando se muestren las imágenes en las pantallas. Sin embargo, este algoritmo de predicción es una aproximación. HoloLens tiene hardware que ajusta la imagen representada para tener en cuenta la discrepancia entre la posición prevista de la cabeza y la posición real de la cabeza. El ajuste hace que la imagen que ve el usuario aparezca como si se representara desde la ubicación correcta y los hologramas se sienten estables. Las actualizaciones de imagen funcionan mejor con pequeños cambios y no puede corregir completamente ciertas cosas en la imagen representada como el parallax de movimiento.

Al representar a 60 FPS, estás haciendo tres cosas para ayudar a crear hologramas estables:

  1. Minimizar la latencia general entre la representación de una imagen y esa imagen que ve el usuario. En un motor con un juego y un subproceso de representación que se ejecuta en lockstep, la ejecución en 30FPS puede agregar 33,3 ms de latencia adicional. La reducción de la latencia reduce el error de predicción y aumenta la estabilidad del holograma.
  2. Hacer que cada imagen alcance los ojos del usuario tenga una cantidad coherente de latencia. Si se representa a 30 fps, la pantalla sigue mostrando imágenes a 60 FPS, lo que significa que la misma imagen se mostrará dos veces en una fila. El segundo fotograma tendrá 16,6 ms más latencia que el primer fotograma y tendrá que corregir una cantidad de error más pronunciado. Esta incoherencia en la magnitud del error puede causar judder de 60 Hz no deseados.
  3. Al reducir la aparición de interrupciones, que se caracterizan por un movimiento desigual e imágenes dobles. El movimiento de hologramas más rápido y las velocidades de representación más bajas se asocian a interrupciones más pronunciadas. Esforzarse por mantener 60 FPS en todo momento ayudará a evitar judder para un holograma móvil determinado.

Coherencia de velocidad de fotogramas La coherencia de la velocidad de fotogramas es tan importante como un fotograma alto por segundo. En ocasiones, los fotogramas descartados son inevitables para cualquier aplicación enriquecida en contenido y HoloLens implementa algunos algoritmos sofisticados para recuperarse de errores ocasionales. Sin embargo, una velocidad de fotogramas fluctuante constantemente es mucho más notable para un usuario que ejecutar de forma coherente a velocidades de fotogramas más bajas. Por ejemplo, una aplicación que se representa sin problemas para cinco fotogramas (60 FPS durante la duración de estos cinco fotogramas) y, a continuación, quita todos los demás fotogramas para los próximos 10 fotogramas (30 FPS durante la duración de estos 10 fotogramas) aparecerán más inestables que una aplicación que se representa de forma coherente a 30 FPS.

En una nota relacionada, el sistema operativo limita las aplicaciones a 30 FPS cuando se ejecuta la captura de realidad mixta .

Análisis de rendimiento Hay diferentes tipos de herramientas que se pueden usar para realizar pruebas comparativas de la velocidad de fotogramas de la aplicación, como:

  • GPUView
  • Depurador de gráficos de Visual Studio
  • Generadores de perfiles integrados en motores 3D como Unity

Distancias de representación de hologramas

El sistema visual humano integra varias señales dependientes de la distancia cuando fija y se centra en un objeto.

  • Alojamiento - El foco de un ojo individual.
  • Convergencia : dos ojos que se mueven hacia adentro o hacia afuera hasta centrarse en un objeto.
  • Visión prismático : disparidades entre las imágenes de los ojos izquierdo y derecho que dependen de la distancia de un objeto desde el punto de fijación.
  • Sombreado, tamaño angular relativo y otras indicaciones monoculares (ojo único).

La convergencia y el alojamiento son únicos porque sus indicaciones extra-retinales relacionadas con cómo cambian los ojos para percibir objetos a diferentes distancias. En vistas naturales, la convergencia y el alojamiento están vinculados. Cuando los ojos ven algo cerca (por ejemplo, la nariz), los ojos cruzan y se adaptan a un punto cercano. Cuando los ojos ven algo en el infinito, los ojos se vuelven paralelos y el ojo se adapta al infinito.

Los usuarios que usan HoloLens siempre se adaptarán a 2,0 m para mantener una imagen clara porque las pantallas de HoloLens se fijan a una distancia óptica aproximadamente de 2,0 m del usuario. Los desarrolladores de aplicaciones controlan dónde convergen los ojos de los usuarios colocando contenido y hologramas en varias profundidades. Cuando los usuarios se adaptan y convergen a diferentes distancias, el vínculo natural entre las dos indicaciones se rompe, lo que puede provocar molestias visuales o fatiga, especialmente cuando la magnitud del conflicto es grande.

Las molestias del conflicto de vergencia-alojamiento pueden evitarse o minimizarse manteniendo el contenido convergente lo más cerca posible de 2,0 m (es decir, en una escena con mucha profundidad coloca las áreas de interés cerca de 2,0 m, siempre que sea posible). Cuando el contenido no se puede colocar cerca de 2,0 m, la molestia del conflicto de alojamiento de vergencia es mayor cuando la mirada del usuario hacia atrás y hacia delante entre diferentes distancias. En otras palabras, es mucho más cómodo ver un holograma estático que se mantiene a 50 cm de distancia que mirar un holograma a 50 cm que se acerca y se aleja del usuario con el tiempo.

Colocar contenido a 2,0 m también es ventajoso porque las dos pantallas están diseñadas para superponerse completamente a esta distancia. En el caso de las imágenes colocadas fuera de este plano, a medida que se mueven fuera del lado del marco holográfico, aparecerán de una pantalla mientras siguen siendo visibles en la otra. Esta rivalidad prismático puede ser perjudicial para la percepción de profundidad del holograma.

Distancia óptima para colocar hologramas respecto al usuario

Distancia óptima para colocar hologramas del usuario

Planos de recorte Para mayor comodidad, se recomienda recortar distancia de representación a 85 cm con atenuación de contenido a partir de 1 m. En las aplicaciones en las que los hologramas y los usuarios son fijos, los hologramas se pueden ver cómodamente cerca de 50 cm. En esos casos, las aplicaciones deben colocar un plano de recorte no más de 30 cm y desaparecer deben comenzar al menos 10 cm lejos del plano de recorte. Cada vez que el contenido está más cerca de 85 cm, es importante asegurarse de que los usuarios no se muevan con frecuencia más cerca o más lejos de hologramas o que los hologramas no se muevan con frecuencia más cerca o más lejos del usuario, ya que es más probable que estas situaciones provoquen molestias del conflicto de alojamiento de vergencia. El contenido debe diseñarse para minimizar la necesidad de interacción más cercana a 85 cm del usuario, pero cuando el contenido debe representarse más de 85 cm, una buena regla general para los desarrolladores es diseñar escenarios en los que los usuarios o hologramas no se mueven en profundidad más del 25 % del tiempo.

Procedimientos recomendados Cuando no se pueden colocar hologramas a 2 m y no se pueden evitar conflictos entre convergencia y alojamiento, la zona óptima para la colocación de hologramas está entre 1,25 m y 5 m. En cada caso, los diseñadores deben estructurar el contenido para animar a los usuarios a interactuar 1+ m de distancia (por ejemplo, ajustar el tamaño del contenido y los parámetros de selección de ubicación predeterminados).

Reproyecto

HoloLens tiene una sofisticada técnica de estabilización holográfica asistida por hardware conocida como reproyecto. La reproyecto tiene en cuenta el movimiento y el cambio del punto de vista (CameraPose) a medida que la escena anima y el usuario mueve la cabeza. Las aplicaciones deben realizar acciones específicas para usar mejor la reproyecto.

Hay cuatro tipos principales de reproyecto

  • Reproyecto de profundidad: Genera los mejores resultados con la menor cantidad de esfuerzo de la aplicación. Todas las partes de la escena representada se estabilizan de forma independiente en función de su distancia desde el usuario. Algunos artefactos de representación pueden estar visibles en los que hay cambios nítidos en profundidad. Esta opción solo está disponible en HoloLens 2 y cascos envolventes.
  • Reproyecto planar: Permite el control preciso de la aplicación sobre la estabilización. La aplicación establece un plano y todo lo que hay en ese plano será la parte más estable de la escena. Cuanto más un holograma esté lejos del plano, menos estable será. Esta opción está disponible en todas las plataformas de Mr. de Windows.
  • Reproyecto planar automático: El sistema establece un plano de estabilización mediante información en el búfer de profundidad. Esta opción está disponible en HoloLens generación 1 y HoloLens 2.
  • Ninguno: Si la aplicación no hace nada, se usa Planar Reprojection con el plano de estabilización fijo a 2 metros en la dirección de la mirada de la cabeza del usuario, normalmente produciendo resultados subestándar.

Las aplicaciones deben realizar acciones específicas para habilitar los diferentes tipos de reproyecto

  • Reproyecto de profundidad: La aplicación envía su búfer de profundidad al sistema para cada fotograma representado. En Unity, la reproyecto de profundidad se realiza con la opción Búfer de profundidad compartido en el panel Configuración de Windows Mixed Reality en Administración de complementos XR. Las aplicaciones de DirectX llaman a CommitDirect3D11DepthBuffer. La aplicación no debe llamar a SetFocusPoint.
  • Reproyecto planar: En cada fotograma, las aplicaciones indican al sistema la ubicación de un plano que se va a estabilizar. Las aplicaciones de Unity llaman a SetFocusPointForFrame y deben tener deshabilitado el búfer de profundidad compartido . Las aplicaciones directX llaman a SetFocusPoint y no deben llamar a CommitDirect3D11DepthBuffer.
  • Reproyecto planar automático: Para habilitarlo, la aplicación debe enviar su búfer de profundidad al sistema como lo haría para la reproyecto de profundidad. Las aplicaciones que usan el kit de herramientas de Mixed Reality (MRTK) pueden configurar el proveedor de opciones de cámara para usar el reproyecto autoplanar. Las aplicaciones nativas deben establecer en DepthReprojectionModeholographicCameraRenderingParametersAutoPlanar en cada fotograma. Para la generación 1 de HoloLens, la aplicación no debe llamar a SetFocusPoint.

Elección de la técnica de reproyecto

Tipo de estabilización Cascos envolventes HoloLens generación 1 HoloLens 2
Reproyecto de profundidad Recomendado No aplicable Recomendado

Las aplicaciones de Unity deben usar Unity 2018.4.12+, Unity 2019.3+ o Unity 2020.3+. De lo contrario, use reproyecto planar automático.
Reproyecto planar automático No aplicable Valor predeterminado recomendado Se recomienda si la reproyecto de profundidad no proporciona los mejores resultados

Las aplicaciones de Unity se recomiendan para usar Unity 2018.4.12 y versiones posteriores, Unity 2019.3 o Unity 2020.3 y versiones posteriores. Las versiones anteriores de Unity funcionarán con resultados de reproyecto ligeramente degradados.
Reproyecto planar No recomendado Se recomienda si Planar automático no proporciona los mejores resultados Use si ninguna de las opciones de profundidad proporciona los resultados deseados.

Comprobar que la profundidad está establecida correctamente

Cuando un método de reproyecto usa el búfer de profundidad, es importante comprobar el contenido del búfer de profundidad que representa la escena representada de la aplicación. Varios factores pueden causar problemas. Si hay una segunda cámara que se usa para representar superposiciones de la interfaz de usuario, por ejemplo, es probable que sobrescriba toda la información de profundidad de la vista real. Los objetos transparentes a menudo no establecen profundidad. Algunas representaciones de texto no establecerán la profundidad de forma predeterminada. Habrá errores visibles en la representación cuando la profundidad no coincida con los hologramas representados.

HoloLens 2 tiene un visualizador para mostrar dónde está y no se establece la profundidad, que se puede habilitar desde Device Portal. En la pestaña ViewsHologram Stability (Ver> estabilidad del holograma), active la casilla Visualización de profundidad en auriculares. Las áreas que tienen la profundidad establecida correctamente serán azules. Los elementos representados que no tienen conjunto de profundidad se marcan en rojo y deben corregirse.

Nota

La visualización de la profundidad no se mostrará en Mixed Reality Captura. Solo es visible a través del dispositivo.

Algunas herramientas de visualización de GPU permitirán la visualización del búfer de profundidad. Los desarrolladores de aplicaciones pueden usar estas herramientas para asegurarse de que la profundidad se establece correctamente. Consulte la documentación de las herramientas de la aplicación.

Uso de reproyecto planar

Nota

En el caso de los cascos envolventes de escritorio, establecer un plano de estabilización suele ser contraproductivo, ya que ofrece menos calidad visual que proporcionar el búfer de profundidad de la aplicación al sistema para habilitar el reproyecto basado en profundidad por píxel. A menos que se ejecute en holoLens, normalmente debe evitar establecer el plano de estabilización.

Plano de estabilización para objetos 3D

El dispositivo intentará elegir automáticamente este plano, pero la aplicación debe ayudar seleccionando el punto de enfoque en la escena. Las aplicaciones de Unity que se ejecutan en holoLens deben elegir el mejor punto de enfoque en función de la escena y pasarlo a SetFocusPoint(). En la plantilla de cubo giratorio predeterminada se incluye un ejemplo de configuración del punto de enfoque en DirectX.

Unity enviará el búfer de profundidad a Windows para habilitar la reproyecto por píxel al ejecutar la aplicación en un casco envolvente conectado a un equipo de escritorio, lo que proporciona una calidad de imagen aún mejor sin el trabajo explícito de la aplicación. Solo debes proporcionar un punto de enfoque cuando la aplicación se ejecute en un HoloLens o se invalidará la reproyecto por píxel.

// SetFocusPoint informs the system about a specific point in your scene to
// prioritize for image stabilization. The focus point is set independently
// for each holographic camera.
// You should set the focus point near the content that the user is looking at.
// In this example, we put the focus point at the center of the sample hologram,
// since that is the only hologram available for the user to focus on.
// You can also set the relative velocity and facing of that content; the sample
// hologram is at a fixed point so we only need to indicate its position.
renderingParameters.SetFocusPoint(
    currentCoordinateSystem,
    spinningCubeRenderer.Position
    );

La colocación del punto de enfoque depende en gran medida de lo que examina el holograma. La aplicación tiene el vector de mirada para referencia y el diseñador de aplicaciones sabe qué contenido quiere que observe el usuario.

Lo más importante que un desarrollador puede hacer para estabilizar hologramas es representar a 60 FPS. Si cae por debajo de 60 FPS, se reducirá drásticamente la estabilidad del holograma, independientemente de la optimización del plano de estabilización.

Procedimientos recomendados No hay ninguna manera universal de configurar el plano de estabilización y es específico de la aplicación. Nuestra recomendación principal es experimentar y ver lo que mejor funciona para su escenario. Sin embargo, intente alinear el plano de estabilización con tanto contenido como sea posible porque todo el contenido de este plano está perfectamente estabilizado.

Por ejemplo:

  • Si solo tiene contenido planar (aplicación de lectura, aplicación de reproducción de vídeo), alinee el plano de estabilización con el plano que tiene el contenido.
  • Si hay tres esferas pequeñas bloqueadas por el mundo, haga que el plano de estabilización se "corte" aunque los centros de todas las esferas que se encuentran actualmente en la vista del usuario.
  • Si la escena tiene contenido en profundidades considerablemente diferentes, favore a otros objetos.
  • Asegúrese de ajustar el punto de estabilización de cada fotograma para que coincida con el holograma que el usuario está mirando.

Cosas que se deben evitar El plano de estabilización es una excelente herramienta para lograr hologramas estables, pero si se usa incorrectamente, puede provocar inestabilidad grave en la imagen.

  • No "fuego y olvido". Puede acabar con el plano de estabilización detrás del usuario o conectado a un objeto que ya no está en la vista del usuario. Asegúrese de que el plano de estabilización normal esté establecido frente a la cámara hacia delante (por ejemplo, -camera.forward).
  • No cambie rápidamente el plano de estabilización entre extremos
  • No deje el plano de estabilización establecido en una distancia fija o orientación
  • No deje que el plano de estabilización corte por el usuario
  • No establezca el punto de enfoque cuando se ejecute en un equipo de escritorio en lugar de en HoloLens y, en su lugar, confíe en la reproyecto basado en profundidad por píxel.

Separación de colores

Debido a la naturaleza de las pantallas de HoloLens, a veces se puede percibir un artefacto denominado "separación de colores". Se manifiesta como la imagen que se separa en colores base individuales: rojo, verde y azul. El artefacto puede ser especialmente visible al mostrar objetos blancos, ya que tienen grandes cantidades de rojo, verde y azul. Se pronuncia más cuando un usuario realiza un seguimiento visual de un holograma que se mueve a través del marco holográfico a alta velocidad. Otra forma en que el artefacto puede manifestarse es la deformación o deformación de objetos. Si un objeto tiene contraste alto y/o colores puros como rojo, verde, azul, separación de colores se percibirá como deformación de diferentes partes del objeto.

Ejemplo de la separación de color de un cursor redondo blanco bloqueado por la cabeza podría ser similar a que un usuario gira la cabeza al lado:

Ejemplo de la separación de color de un cursor redondo blanco bloqueado por la cabeza podría parecerse a medida que un usuario gira la cabeza hacia el lado.

Aunque es difícil evitar completamente la separación de colores, hay varias técnicas disponibles para mitigarlo.

La separación de colores se puede ver en:

  • Objetos que se mueven rápidamente, incluidos los objetos bloqueados por la cabeza, como el cursor.
  • Objetos que están sustancialmente lejos del plano de estabilización.

Para atenuar los efectos de la separación de colores:

  • Hacer que el objeto retarde la mirada del usuario. Debería aparecer como si tuviera cierta inercia y se adjunte a la mirada "en muelles". Este enfoque ralentiza el cursor (reduciendo la distancia de separación) y lo coloca detrás del punto de mirada probable del usuario. Siempre que se ponga al día rápidamente cuando el usuario deje de cambiar su mirada se siente natural.
  • Si quieres mover un holograma, intenta mantener su velocidad de movimiento por debajo de 5 grados/segundo si esperas que el usuario lo siga con sus ojos.
  • Use la luz en lugar de la geometría para el cursor. Una fuente de iluminación virtual conectada a la mirada se percibirá como un puntero interactivo, pero no provocará la separación de colores.
  • Ajuste el plano de estabilización para que coincida con los hologramas en los que está mirando el usuario.
  • Haga que el objeto sea rojo, verde o azul.
  • Cambie a una versión borrosa del contenido. Por ejemplo, un cursor blanco redondo podría cambiarse a una línea ligeramente borrosa orientada en la dirección del movimiento.

Como antes, la representación en 60 FPS y el establecimiento del plano de estabilización son las técnicas más importantes para la estabilidad del holograma. Si se enfrenta a la separación de colores notable, primero asegúrese de que la velocidad de fotogramas cumple las expectativas.

Consulte también