Case study - Looking through holes in your reality (Caso práctico: mirar por un agujero en tu realidad)

Cuando las personas piensan en la realidad mixta y lo que pueden hacer con Microsoft HoloLens, normalmente se adhieren a preguntas como "¿Qué objetos puedo agregar a mi habitación?" o "¿Qué puedo colocar encima de mi espacio?" Me gustaría resaltar otra área que puedes considerar, esencialmente un truco mágico, usando la misma tecnología para mirar o a través de objetos físicos reales alrededor de ti.

La tecnología

Si has luchado contra alienígenas mientras rompen tus paredes en RoboRaid, desbloqueaste una pared segura en Fragmentos, o tenías suerte de ver el hangar Infinito UNSC en la experiencia de Halo 5 en E3 en 2015, entonces has visto lo que estoy hablando. Dependiendo de su imaginación, este truco visual se puede usar para colocar agujeros temporales en su pared de seco o para ocultar mundos bajo un tablero de suelo suelto.

RoboRaid agrega tuberías tridimensionales y otra estructura detrás de las paredes, visible solo a través de agujeros creados a medida que los invasores se rompen.

RoboRaid agrega tuberías tridimensionales y otra estructura detrás de las paredes, visible solo a través de agujeros creados a medida que los invasores se rompen.

Con uno de estos hologramas únicos en HoloLens, una aplicación puede proporcionar la ilusión de contenido detrás de las paredes o a través del suelo de la misma manera que la realidad se presenta a través de una ventana real. Muévete a la izquierda, y puedes ver lo que esté en el lado derecho. Más cerca, y puede ver un poco más de todo. La principal diferencia es que los agujeros reales te permiten atravesar, mientras que tu piso tercamente no te deja subir a ese contenido holográfico mágico. (Agregaré una tarea al trabajo pendiente).

Entre bambalinas

Este truco es una combinación de dos efectos. En primer lugar, el contenido holográfico se ancla al mundo mediante "anclajes espaciales". El uso de delimitadores para hacer que ese contenido "bloqueado por el mundo" significa que lo que está mirando no se aleja visualmente de los objetos físicos cerca de él, incluso cuando se mueve o el sistema de asignación espacial subyacente actualiza su modelo 3D de la sala.

En segundo lugar, ese contenido holográfico se limita visualmente a un espacio muy específico, por lo que solo puedes ver a través del agujero en tu realidad. Esa oclusión es necesaria para requerir mirar a través de un agujero lógico, ventana o puerta, que vende el truco. Sin algo que bloquee la mayoría de la vista, una grieta en el espacio a una dimensión jurática secreta podría parecerse a un dinosaurio mal colocado.

Esta no es una captura de pantalla real, sino una ilustración de cómo se ve el submundo secreto de MR Basics 101 en HoloLens. El gabinete negro no aparece, pero puede ver contenido a través de un agujero virtual. (Al mirar a través de un dispositivo real, el piso parece desaparecer aún más porque los ojos se centran a una distancia adicional como si no estuviera allí).

Esta no es una captura de pantalla real, sino una ilustración de cómo el submundo secreto del mr Basics 101 se ve en HoloLens. El gabinete negro no aparece, pero puede ver contenido a través de un agujero virtual. (Al mirar a través de un dispositivo real, el piso parece desaparecer aún más porque los ojos se centran a una distancia adicional como si no estuviera allí).

Contenido holográfico de bloqueo mundial

En Unity, hacer que el contenido holográfico permanezca bloqueado por el mundo es tan fácil como agregar un componente WorldAnchor:

myObject.AddComponent<WorldAnchor>();

El componente WorldAnchor ajustará constantemente la posición y la rotación de su GameObject (y, por tanto, cualquier otra cosa bajo ese objeto en la jerarquía) para mantenerla estable en relación con los objetos físicos cercanos. Al crear el contenido, créelo de tal forma que la dinámica raíz del objeto se centre en este agujero virtual. (Si el pivote del objeto está profundo en la pared, sus ligeros ajustes en la posición y la rotación serán mucho más notables, y es posible que el agujero no parezca muy estable).

Ocluyendo todo, pero el agujero virtual

Hay una variedad de maneras de bloquear selectivamente la vista a lo que está oculto en las paredes. La más sencilla aprovecha el hecho de que HoloLens usa una pantalla aditiva, lo que significa que los objetos totalmente negros aparecen invisibles. Puede hacerlo en Unity sin hacer ningún sombreador especial o trucos de material, simplemente cree un material negro y asígnelo a un objeto que boxee en el contenido. Si no le gusta realizar el modelado 3D, solo tiene que usar unos pocos objetos Quad predeterminados y superponerlos ligeramente. Hay una serie de inconvenientes en este enfoque, pero es la manera más rápida de trabajar algo y conseguir una prueba de baja fidelidad del funcionamiento es excelente, incluso si sospecha que desea refactorizarlo más adelante.

Un inconveniente importante del enfoque de "caja negra" anterior es que no fotografía bien. Aunque el efecto puede ser perfecto a través de la pantalla de HoloLens, las capturas de pantalla que tome mostrarán un objeto negro grande en lugar de lo que queda de la pared o el suelo. El motivo es que el hardware físico y las capturas de pantalla compuestas de hologramas y realidad son diferentes. Vamos a desviarse por un momento en unas matemáticas falsas...

¡Alerta matemática falsa! Estos números y fórmulas están diseñados para ilustrar un punto, no para ser ninguna clase de métrica precisa.

Lo que ve a través de HoloLens:

( Reality * darkening_amount ) + Holograms

Lo que ve en capturas de pantalla y vídeo:

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

En inglés: lo que ves a través de HoloLens es una combinación sencilla de realidad oscura (como a través de gafas de sol) y cualquier holograma que la aplicación quiera mostrar. Pero cuando se toma una captura de pantalla, la imagen de la cámara se combina con los hologramas de la aplicación según el valor de transparencia por píxel.

Una manera de desplazarse por esto es cambiar el material de "caja negra" para escribir solo en el búfer de profundidad y ordenar con todos los demás materiales opacos. Para ver un ejemplo de esto, consulte el archivo WindowOcclusion.shader en MixedRealityToolkit en GitHub. Las líneas pertinentes se copian aquí:

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

(Tenga en cuenta que la línea "Desplazamiento 50, 100" es tratar con problemas no relacionados, por lo que probablemente tendría sentido dejar esto fuera).

La implementación de un material de oclusión invisible como ese permitirá que la aplicación dibuje un cuadro que tenga un aspecto correcto en la pantalla y en capturas de pantalla de realidad mixta. En el caso de los puntos de bonificación, puedes intentar mejorar aún más el rendimiento de esa caja haciendo cosas inteligentes para dibujar aún menos píxeles invisibles, pero eso realmente puede entrar en las weeds y normalmente no será necesario.

Este es el submundo secreto de MR Basics 101 a medida que Unity lo dibuja, excepto las partes externas del cuadro de inclusión. Tenga en cuenta que el pivote para el inframundo está en el centro de la caja, lo que ayuda a mantener el agujero lo más estable posible en relación con el piso real.

Este es el submundo secreto de MR Basics 101 a medida que Unity lo dibuja, excepto las partes externas del cuadro de inclusión. Tenga en cuenta que el pivote para el inframundo está en el centro de la caja, lo que ayuda a mantener el agujero lo más estable posible en relación con el piso real.

Hágalo usted mismo

¿Tienes un HoloLens y quieres probar el efecto por ti mismo? Lo más fácil que puede hacer (no es necesario codificar) es instalar la aplicación gratuita Visor 3D y, a continuación, cargar el archivo.fbx que he proporcionado en GitHub para ver un modelo de maceta en la sala. Cárgelo en HoloLens y puede ver la ilusión en el trabajo. Cuando está delante del modelo, solo puede ver en el pequeño agujero, todo lo demás es invisible. Mira el modelo desde cualquier otro lado y desaparece por completo. Use los controles de movimiento, rotación y escala del Visor 3D para colocar el agujero virtual en cualquier superficie vertical que pueda pensar en generar algunas ideas.

Al ver este modelo en el editor de Unity se mostrará una caja negra grande alrededor de la florería. En HoloLens, la caja desaparece, dando forma a un efecto de ventana mágica.

Al ver este modelo en el editor de Unity se mostrará una caja negra grande alrededor de la florería. En HoloLens, la caja desaparece, dando forma a un efecto de ventana mágica.

Si desea compilar una aplicación que use esta técnica, consulte el tutorial mr Basics 101 en los tutoriales de Mixed Reality. El capítulo 7 termina con una explosión en el suelo que revela un inframundo oculto (como se muestra arriba). ¿Quién dijo que los tutoriales tenían que ser aburridos?

Estas son algunas ideas de dónde puede tomar esta idea a continuación:

  • Piense en formas de hacer que el contenido dentro del agujero virtual sea interactivo. Permitir que los usuarios tengan algún impacto más allá de sus paredes puede mejorar realmente la sensación de maravilla que este truco puede proporcionar.
  • Piense en formas de volver a ver los objetos en áreas conocidas. Por ejemplo, ¿cómo puede colocar un agujero holográfico en la mesa de café y ver el suelo debajo de él?

Acerca del autor

Imagen de Eric Rehmeyer Eric Rehmeyer
Ingeniero de software sénior @Microsoft

Consulte también