Devlog: Materiales Passthrough para Realidad Mixta

Devlog: Materiales Passthrough para Realidad Mixta

Thijs ReusThijs Reus
·29 de agosto de 2025·9 min. de lectura
Tenga en cuenta que esta publicación ha sido traducida automáticamente.

Continuamos nuestra exploración de las capacidades de Realidad Mixta del Meta Quest 3 usando Unreal Engine y el plugin MetaXR que comenzamos en una publicación de devlog anterior.

En esta publicación, miramos las posibilidades de usar Materiales Passthrough para mezclar dinámicamente el mundo virtual y real en Realidad Mixta. Usando tales materiales, podemos hacer un agujero en el mundo virtual, para que el mundo real se vuelva visible.

Stack Tecnológico

Para esta exploración, estamos usando el siguiente stack tecnológico:

Material Passthrough Simple

En su forma más simple, un Material Passthrough es un Material de Unreal Engine con las siguientes propiedades:

  • Material Domain Surface
  • Blend Mode Translucent
  • Shading Model Unlit
  • Write Only Alpha true
  • Opacity entre 0.0 (sin passthrough) y 1.0 (passthrough completo)

Cuando el material se aplica a una malla, la malla misma no será visible, excepto por el efecto de mezcla passthrough. Se puede ver en las imágenes a continuación, donde el Material Passthrough se ha aplicado a la parte circular de una malla amarilla.

Sin passthrough en la malla amarilla redonda
Sin passthrough en la malla amarilla redonda
50% passthrough en la malla amarilla redonda
50% passthrough en la malla amarilla redonda
Passthrough completo en la malla amarilla redonda
Passthrough completo en la malla amarilla redonda

El gráfico del material es muy simple, como se esperaba. Usamos un Material Parameter para la opacidad, por lo que puede personalizarse fácilmente en Material Instances.

Gráfico de Material Passthrough simple
Gráfico de Material Passthrough simple

Material Passthrough usando Vertex Color

Unreal Engine proporciona un cubo gris/amarillo por defecto que usa Vertex Color para determinar qué parte es el lado (gris), y qué parte es el borde (amarillo/negro).

¿Qué pasaría si quisiéramos hacer que los lados grises del cubo habiliten Passthrough en su lugar, mientras seguimos mostrando los bordes amarillos/negros del cubo?

Sin passthrough en ninguna parte del cubo
Sin passthrough en ninguna parte del cubo

Cuando aplicamos el Material Passthrough simple al cubo, el cubo completo habilitará passthrough, perdiendo todos los detalles sobre lados y bordes.

Passthrough en el cubo completo
Passthrough en el cubo completo

Entonces al menos necesitamos crear un Material Passthrough que use el nodo Vertex Color para determinar el valor de Opacity, para que podamos habilitar Passthrough para los lados y deshabilitarlo para el borde.

En el gráfico del material usamos un Material Parameter para seleccionar qué canal de color de vértice queremos usar (Rojo / Verde / Azul / Alpha), y otro Material Parameter para poder invertir el valor del color de vértice para producir la opacidad (por ejemplo, si queremos mostrar passthrough en todo excepto los lados).

Gráfico de Material Passthrough con Vertex Color
Gráfico de Material Passthrough con Vertex Color

Cuando asignamos este material al cubo, vemos que los lados habilitan Passthrough como se pretendía, pero aún no vemos los bordes amarillos/negros. Esto es porque un Material Passthrough solo afecta el canal alfa, básicamente decidiendo si mostrar la imagen Passthrough o lo que sea visible en el mundo virtual (en este caso, el escritorio de madera virtual).

Passthrough en partes del cubo con bordes invisibles
Passthrough en partes del cubo con bordes invisibles

Entonces si queremos combinar el material Passthrough (passthrough o no) con el material del cubo original (gris o amarillo), entonces podemos hacerlo usando la propiedad Overlay Material en la malla estática.

  • Material se establece en el material del cubo
  • Overlay Material se establece en el material Passthrough

Básicamente el cubo ahora se renderiza dos veces, una vez con el material regular para renderizar gris o amarillo, y una vez con el material overlay para mostrar el mundo virtual o real.

Passthrough en partes del cubo con bordes visibles
Passthrough en partes del cubo con bordes visibles

Que es exactamente el efecto previsto que queríamos tener.

Material Passthrough Superpuesto con un Borde Dinámico

Como ejemplo con un poco más de interacción, hemos mejorado los proyectiles que pueden ser disparados con una pistola.

Cuando un proyectil golpea una malla generada (como una pared, techo o suelo), generará un plano cuadrado alineado con el punto de impacto, y se destruirá a sí mismo. Después de unos segundos, el plano se reducirá y finalmente desaparecerá.

La configuración del Material es similar al cubo de la sección anterior:

  • Material se establece en el material del borde, que renderiza un borde azul/blanco fluido entre el mundo virtual y real
  • Overlay Material se establece en el material Passthrough, que habilita Passthrough en el interior del borde con un gradiente similar

El efecto final se puede ver en el video a continuación, donde podemos disparar múltiples proyectiles alrededor del mismo punto en la pared, componiendo un área con passthrough habilitado, rodeada por un borde azul.

Video Vista previa

Al hacer clic en el botón de reproducción, se incrustará el reproductor de YouTube y se pueden establecer cookies de terceros y recopilar datos de YouTube.

En el Blueprint del proyectil para generar el plano cuando golpea una superficie generada, el evento OnComponentHit proporciona toda la información que necesitamos para colocar y alinear correctamente el plano.

Blueprint para generar el plano cuando el proyectil golpea una superficie generada
Blueprint para generar el plano cuando el proyectil golpea una superficie generada

En el Blueprint del plano nos aseguramos de que después de un breve retraso se reproduzca una línea de tiempo para reducir el plano, después de lo cual se destruye completamente.

Blueprint para reducir y destruir el plano después de un tiempo
Blueprint para reducir y destruir el plano después de un tiempo

Para que la superposición de múltiples planos funcione correctamente, necesitamos cambiar el Blend Mode en el Material Passthrough de Translucent a AlphaHoldout. De esta manera, el alfa Passthrough de planos superpuestos se fusiona correctamente, en lugar de sobrescribir el alfa Passthrough para cada plano (lo que hace que los bordes azules sean visibles dentro de donde los planos se superponen, e incluso muestra partes del borde que normalmente serían completamente invisibles).

Superponer múltiples planos no funciona correctamente con Blend Mode Translucent - los bordes interiores son completamente visibles
Superponer múltiples planos no funciona correctamente con Blend Mode Translucent - los bordes interiores son completamente visibles
Superponer múltiples planos funciona correctamente con Blend Mode AlphaHoldout - el borde está solo en el exterior de todos los planos
Superponer múltiples planos funciona correctamente con Blend Mode AlphaHoldout - el borde está solo en el exterior de todos los planos

Los gráficos de material para los materiales passthrough y borde usan la misma Material Function que creamos para generar un borde circular con algo de animación para hacerlo más dinámico.

Gráfico de Material Passthrough con Borde Dinámico
Gráfico de Material Passthrough con Borde Dinámico
Gráfico de Material de Borde Dinámico
Gráfico de Material de Borde Dinámico
Gráfico de Material Function de Borde Dinámico
Gráfico de Material Function de Borde Dinámico

Conclusión

La Realidad Mixta es una forma emocionante de crear experiencias únicas que mezclan el mundo real y virtual. Los Materiales Passthrough hacen que la mezcla sea realmente dinámica, abriendo nuevas posibilidades para crear experiencias increíbles.

Nosotros en Immerstory estamos emocionados de apoyar a nuestros clientes con sus experiencias inmersivas, y esperamos compartir más progreso de exploración pronto.

¿Qué experiencia inmersiva te gustaría ver? ¡Déjanos saber!

Recursos Adicionales

La documentación para el plugin MetaXR, específicamente el Mixed Reality Utility Kit que se usó para esta demo, se puede encontrar aquí

Los efectos de sonido en la aplicación demo han sido amablemente obtenidos de Sonniss GameAudioGDC

Más del blog