Información general sobre la representación holográfica
La representación holográfica permite a la aplicación dibujar un holograma en una ubicación precisa del mundo alrededor del usuario, ya sea que se coloque exactamente en el mundo físico o dentro de un dominio virtual que haya creado. Los hologramas son objetos hechos de sonido y luz. La representación permite que la aplicación agregue la luz.
Compatibilidad con dispositivos
Característica | HoloLens (primera generación) | HoloLens 2 | Cascos envolventes |
Representación | ✔️ | ✔️ | ✔️ |
Representación de holografías
La clave para la representación holográfica es saber qué tipo de dispositivo se usa. Los dispositivos con pantallas de paso a través, como HoloLens, agregan luz al mundo. Los píxeles negros son totalmente transparentes, mientras que los píxeles más brillantes son cada vez más opacos. Dado que la luz de las pantallas se agrega a la luz del mundo real, los píxeles blancos son translúcidos.
Aunque la representación estereoscópica proporciona una indicación de profundidad para los hologramas, agregar efectos de tierra puede ayudar a los usuarios a ver más fácilmente qué superficie está cerca de un holograma. Una técnica de conexión consiste en agregar un resplandor alrededor de un holograma en la superficie cercana y, a continuación, representar una sombra contra este resplandor. De este modo, la sombra parece restar luz del entorno. El sonido espacial es otra indicación de profundidad importante, lo que permite a los usuarios razonar sobre la distancia y la ubicación relativa de un holograma.
Los dispositivos con pantallas opacas, como Windows Mixed Reality cascos envolventes, bloquean el mundo. Los píxeles negros son negros sólidos y cualquier otro color aparece como ese color para el usuario. La aplicación es responsable de representar todo lo que ve el usuario. Esto hace que sea aún más importante mantener una frecuencia de actualización constante para que los usuarios tengan una experiencia cómoda.
Parámetros de representación previstos
Los cascos de realidad mixta (tanto HoloLens como cascos envolventes) realizan un seguimiento continuo de la posición y la orientación de la cabeza del usuario en relación con su entorno. A medida que la aplicación comienza a preparar su siguiente fotograma, el sistema predice dónde estará la cabeza del usuario en el futuro en el momento exacto en que se muestra el marco en las pantallas. En función de esta predicción, el sistema calcula la vista y las transformaciones de proyección que se van a usar para ese fotograma. La aplicación debe usar estas transformaciones para generar resultados correctos. Si no se usan transformaciones proporcionadas por el sistema, la imagen resultante no se alineará con el mundo real, lo que provocará molestias del usuario.
Nota
Para predecir con precisión cuándo un nuevo fotograma alcanzará las pantallas, el sistema mide constantemente la latencia efectiva de un extremo a otro de la canalización de representación de la aplicación. Aunque el sistema se ajusta a la longitud de la canalización de representación, puede mejorar la estabilidad del holograma manteniendo esa canalización lo más corta posible.
Las aplicaciones que usan técnicas avanzadas para aumentar la predicción del sistema pueden invalidar las transformaciones de proyección y vista del sistema. Estas aplicaciones deben seguir usando transformaciones proporcionadas por el sistema como base para sus transformaciones personalizadas para generar resultados significativos.
Otros parámetros de representación
Al representar un marco, el sistema especifica la ventanilla del búfer de reserva en la que se debe dibujar la aplicación. Esta ventanilla suele ser menor que el tamaño completo del búfer de fotogramas. Independientemente del tamaño de la ventanilla, una vez que la aplicación represente el marco, el sistema escala la imagen para rellenar la totalidad de las pantallas.
En el caso de las aplicaciones que no se pueden representar a la velocidad de actualización necesaria, los parámetros de representación del sistema se pueden configurar para reducir la presión de memoria y el costo de representación a costa del aumento del alias de píxeles. El formato del búfer de reserva también se puede cambiar, que para algunas aplicaciones puede ayudar a mejorar el ancho de banda de memoria y el rendimiento de píxeles.
El frustum de representación, la resolución y la velocidad de fotogramas en la que se pide que se represente la aplicación también puede cambiar de marco a fotograma, y podría diferir en el ojo izquierdo y derecho. Por ejemplo, cuando la captura de realidad mixta (MRC) está activa y la configuración de la vista de cámara de fotos y vídeo no está participada, un ojo puede representarse con una resolución O FOV más grande.
Para cualquier fotograma determinado, la aplicación debe representarse con la transformación de vista, la transformación de proyección y la resolución de ventanilla proporcionada por el sistema. Además, la aplicación nunca debe asumir que cualquier parámetro de representación o vista permanece fijo desde fotograma a fotograma. Los motores como Unity controlan todas estas transformaciones en sus propios objetos de cámara para que siempre se respete el movimiento físico de los usuarios y el estado del sistema. Si la aplicación permite el movimiento virtual del usuario a través del mundo (por ejemplo, el uso del stick digital en un controlador para juegos), puede agregar un objeto de plataforma principal encima de la cámara que lo mueve. Esto hace que la cámara refleje el movimiento físico y virtual del usuario. Si la aplicación modifica la transformación de vista, la transformación de proyección o la dimensión de ventanilla proporcionada por el sistema, debe informar al sistema llamando a la API de invalidación adecuada.
Para mejorar la estabilidad de la representación holográfica, la aplicación debe proporcionar a Windows cada fotograma el búfer de profundidad que usó para la representación. Si la aplicación proporciona un búfer de profundidad, debe tener valores de profundidad coherentes, con profundidad expresada en metros de la cámara. Esto permite al sistema usar los datos de profundidad por píxel para estabilizar mejor el contenido si la cabeza del usuario termina ligeramente desplazada desde la ubicación prevista. Si no puede proporcionar el búfer de profundidad, puede proporcionar un punto de enfoque y normal, definiendo un plano que corta la mayoría del contenido. Si se proporcionan tanto el búfer de profundidad como un plano de enfoque, el sistema puede usar ambos. En concreto, resulta útil proporcionar tanto el búfer de profundidad como un punto de enfoque que incluye un vector de velocidad cuando la aplicación muestra hologramas que están en movimiento.
Consulte el artículo Representación en DirectX para obtener detalles de bajo nivel sobre este tema.
Cámaras holográficas
Windows Mixed Reality presenta el concepto de una cámara holográfica. Las cámaras holográficas son similares a la cámara tradicional que se encuentra en textos gráficos 3D; definen las propiedades de cámara extrinsica (posición y orientación) y intrínsecas. (Por ejemplo, el campo de vista se usa para ver una escena 3D virtual). A diferencia de las cámaras 3D tradicionales, la aplicación no está en control de la posición, la orientación y las propiedades intrínsecas de la cámara. En su lugar, la posición y la orientación de la cámara holográfica se controlan implícitamente mediante el movimiento del usuario. El movimiento del usuario se retransmite a la aplicación en un marco a fotograma a través de una transformación de vista. Del mismo modo, las propiedades intrínsecas de la cámara se definen mediante la óptica calibrada del dispositivo y el marco a fotograma retransmitido a través de la transformación de proyección.
En general, la aplicación se representará para una sola cámara estéreo. Un bucle de representación sólido admitirá varias cámaras y admitirá cámaras mono y estéreo. Por ejemplo, el sistema podría pedir a la aplicación que se represente desde una perspectiva alternativa cuando el usuario active una característica como la captura de realidad mixta (MRC), dependiendo de la forma del casco. Las aplicaciones que pueden admitir varias cámaras les permiten participar en el tipo de cámaras que pueden admitir.
Representación de volúmenes
Al representar mrIs médicos o volúmenes de ingeniería en 3D, a menudo se usan técnicas de representación de volúmenes . Estas técnicas pueden ser interesantes en la realidad mixta, donde los usuarios pueden ver naturalmente este volumen desde ángulos clave, simplemente moviendo su cabeza.
Resoluciones admitidas en HoloLens (primera generación)
- El tamaño máximo de ventanilla es una propiedad de HolographicDisplay. HoloLens se establece en el tamaño máximo de la ventanilla, que es de 720p (1268x720), de forma predeterminada.
- El tamaño de la ventanilla se puede cambiar estableciendo ViewportScaleFactor en HolographicCamera. Este factor de escala está comprendido entre 0 y 1.
- El tamaño de ventanilla más bajo admitido en HoloLens (primera generación) es el 50 % de 720p, que es de 360p (634x360). Se trata de viewportScaleFactor de 0.5.
- No se recomienda nada inferior a 540p debido a la degradación visual, pero se puede usar para identificar cuellos de botella en la velocidad de relleno de píxeles.
Resoluciones admitidas en HoloLens 2
- Los tamaños de destino de representación actuales y máximos admitidos son propiedades de la configuración de vista. HoloLens 2 se establece en el tamaño de destino de representación máximo, que es 1440x936, de forma predeterminada.
- Las aplicaciones pueden cambiar el tamaño de los búferes de destino de representación llamando al método RequestRenderTargetSize para solicitar un nuevo tamaño de destino de representación. Se elegirá un nuevo tamaño de destino de representación, que cumple o supera el tamaño de destino de representación solicitado. Esta API cambia el tamaño del búfer de destino de representación, que requiere reasignación de memoria en la GPU. Entre las implicaciones de esto se incluyen: el tamaño del destino de representación se puede reducir verticalmente para reducir la presión de memoria en la GPU y este método no debe llamarse con alta frecuencia.
- Las aplicaciones todavía pueden cambiar el tamaño de la ventanilla de la misma manera que lo hicieron para HoloLens 1. No hay ninguna reasignación de memoria agregada en la GPU, por lo que se puede cambiar con alta frecuencia, pero no se puede usar para reducir la presión de memoria en la GPU.
- El tamaño de ventanilla más bajo admitido en HoloLens 2 es 634x412, un ViewportScaleFactor de aproximadamente 0,44 cuando el tamaño de destino de representación predeterminado está en uso.
- Si se proporciona un tamaño de destino de representación que es menor que el tamaño de ventanilla admitido más bajo, se omitirá el factor de escala de la ventanilla.
- No se recomienda nada inferior a 540p debido a la degradación visual, pero se puede usar para identificar cuellos de botella en la velocidad de relleno de píxeles.