Iluminación de humo realista con iluminación de 6 direcciones en VFX Graph

MATHIEU MULLER / UNITYSenior Manager, Product Management
Jan 20, 2023|15 minutos
Iluminación de humo realista con iluminación de 6 direcciones en VFX Graph
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

Simular y renderizar humo y explosiones en tiempo real siempre ha sido un desafío debido a la naturaleza compleja de las interacciones y dinámicas de iluminación involucradas.

Cada vez hay más tecnologías en tiempo real que introducen simulación y renderización de fluidos volumétricos, pero aún parece ser demasiado costoso para su uso generalizado en los juegos. Entonces, como sucede con muchos problemas de renderizado, se trata de intentar lograr la mejor apariencia posible al menor costo posible.

El Tech Stream 2022.2 presenta un flujo de trabajo completo de extremo a extremo (desde DCC hasta Unity) que le permite renderizar humo de manera realista a partir de simulaciones horneadas. Este flujo de trabajo se escala en todas las plataformas, bajo cualquier condición de iluminación. Esta solución también incluye una biblioteca de mapas listos para usar, diseñados para que sea fácil para cualquiera llevar los efectos de humo a un nuevo nivel de fidelidad visual.

Iluminación de 6 vías

La representación del humo en los juegos generalmente se realiza con sprites texturizados porque calcular una iluminación totalmente volumétrica es demasiado costoso para un presupuesto en tiempo real. Sin embargo, una de las preguntas más comunes cuando se trata de sprites es: ¿Cómo se puede encender el humo basándose en una geometría plana y 2D?

Existen varios enfoques, como utilizar el mapeo normal o utilizar un mapa de color completamente preparado. Pero estos enfoques carecen de realismo, de extensibilidad o de ambas cosas.

Introduzca la iluminación de 6 direcciones, un enfoque alternativo a este problema que utiliza un conjunto de mapas de luz que contienen la respuesta de iluminación del humo para la luz que proviene de seis direcciones diferentes. Estos mapas de luz están integrados en un conjunto de dos texturas, junto con un canal alfa y una máscara emisiva opcional.

 Representación de mapas de luz de seis direcciones

Equipado con estas texturas, el humo se puede sombrear dinámicamente bajo diferentes condiciones de iluminación. Presentará fenómenos de iluminación volumétrica como sombras internas o bordes de luz cuando se ilumina desde atrás, que no se podían lograr con las otras técnicas.

 Un único mapa de luz de seis direcciones con diferentes orientaciones del sol

Puede encontrar varios controles como color, absorción, gradiente emisivo y reasignación de mapas de luz para crear efectos variados basados en el mismo conjunto de texturas. Esto le permite reutilizar sus activos en muchos escenarios diferentes.

Esta técnica, conocida con varios nombres (iluminación de 6 direcciones, iluminación de 6 puntos, mapas de luz 6D, mapas de luz de 6 puntos, iluminación de humo, etc.) se utiliza en varios juegos AAA: consulte esta excelente descripción general de la técnica escrita por el ex director técnico de efectos visuales del juego.

Las principales ventajas de emplear esta técnica incluyen:

  • Permite la representación de interacciones de luz complejas que de otro modo no serían posibles en tiempo real, como la dispersión de rebotes múltiples, ya que se puede convertir directamente desde la simulación a mapas de luz.
  • Mejora de la calidad visual con efectos de humo más integrados en el mundo gracias a una mejor iluminación: por ejemplo, cuando se agrega a una escena, el humo reaccionará a cualquier cantidad y tipo de luces dinámicas (es decir, dirección, punto, área), así como iluminación indirecta (por ejemplo, sondas) y ambiental. Por lo tanto, el mismo activo puede ubicarse en diferentes ubicaciones, pero cada instancia se sentirá como si perteneciera a su entorno cercano.
  • Con un bajo rendimiento a pesar de la alta calidad visual. En realidad, los efectos de humo son bastante rentables de renderizar, comparables a un sprite iluminado tradicional.
  • Ahorrando memoria de disco y textura. Si bien las texturas de flipbook siempre consumen mucha memoria, el uso de iluminación de 6 direcciones le permite reutilizar la misma textura en muchos lugares diferentes. El aspecto del humo resultante puede variar mucho en función de las variaciones que se le apliquen (color, absorción, etc.) y de las condiciones de iluminación del lugar donde se coloque. Para ahorrar más memoria, puedes aprovechar los vectores de movimiento horneados para reducir la cantidad de cuadros necesarios (una herramienta útil para esto es TFlow de Tuatara en Unity Asset Store).
Iluminación de seis direcciones utilizada para todos los humos y nubes cercanas con muchos casos de solo cuatro activos gráficos de efectos visuales

Una desventaja a tener en cuenta es la planitud de este truco. Si bien esta técnica proporciona una gran impresión de volumen gracias a una iluminación de alta fidelidad, sigue siendo una lámina de textura y no un efecto volumétrico 3D. Por este motivo, es más adecuado para efectos de fondo, efectos ornamentales como vapor o explosiones. Para dar más profundidad, necesitarás usar este efecto en más partículas o combinarlo con efectos volumétricos (por ejemplo, niebla volumétrica local o materiales volumétricos en el pipeline de renderizado de alta definición).

A continuación se muestran casos de uso típicos:

  • Día: Simula la iluminación del sol y del cielo propagándose a través del humo.
  • Noche: Las luces puntuales y los focos estáticos o móviles pueden encender el humo.
  • Humo de alta fidelidad
  • Polvo
  • Vapor
  • Nubes volumétricas: Iluminación de 6 direcciones para nubes heroicas
  • Efectos avanzados como portales, tormentas de arena o tornados.
Construcción y procesamiento de mapas de iluminación de 6 direcciones
Exportadores

Proporcionamos algunas herramientas para ayudar con el proceso de generación de mapas de luz. En el repositorio VFXToolbox , encontrará exportadores para Houdini y Blender, junto con otras herramientas como el secuenciador de imágenes que se pueden usar para reempaquetar flipbooks de mapas de luz de 6 direcciones o para ajustar la intensidad del color.

HDA for SideFX Houdini

Todas las instrucciones sobre la instalación de la herramienta se pueden encontrar en el archivo Readme.txt. Tenga en cuenta que coexisten dos variantes de la herramienta. La primera se puede encontrar en el Contexto del objeto. Se basa en el nodo de renderizado OpenGL y es muy rápido.

La segunda variante se puede encontrar en el contexto Stage y está construida alrededor del renderizador Karma. Ambos ofrecen la capacidad de renderizar mapas de luz, emisivos y exportar a Flipbook.

Complemento para Blender

Menú colapsado del exportador de Blender

Para instalar el complemento, siga el procedimiento estándar en Blender. Desde el menú Preferencias, instale el archivo unity_6way.py y habilite el complemento. Después de eso, encontrarás un panel en la vista 3D, debajo de la categoría Unity.

El complemento le permite renderizar mapas de luz, renderizar canales emisivos, realizar composiciones básicas y crear flipbooks a partir de una secuencia de mapas de luz. Estas tareas se pueden realizar todas a la vez o por separado, y cada etapa tiene configuraciones individuales para controlar el resultado final.

Configuración de las etapas del exportador de Blender

Otras herramientas

Configuración de muestra de EmberGen

Es posible que algunas herramientas ya proporcionen opciones y complementos oficiales o creados por el usuario para exportar mapas de luz de 6 direcciones.

Por ejemplo, en EmberGen puedes usar una opción llamada “Seis puntos” en el nodo Render. Tenga en cuenta que este flujo de trabajo no es compatible oficialmente porque no tenemos control sobre la intensidad de la luz en estos mapas. Sin embargo, aún puede resultarle útil si lo ajusta manualmente.

También puedes crear mapas de iluminación de 6 direcciones utilizando tus propias herramientas. Para ello puedes seguir los pasos y formatear el paquete que se describen a continuación.

Mapas de luz para hornear

Para hornear los mapas de luz, necesitamos renderizar los objetos seis veces con diferentes configuraciones de iluminación.

Utilizamos luces blancas direccionales con una dirección diferente para cada render: superior, inferior, izquierda, derecha, frontal y posterior, todas relativas a la cámara.

La información emisiva, como el fuego, no es parte de los mapas de luz y puede representarse más tarde en una textura separada o empaquetarse dentro de un canal adicional de los mapas de luz.

Formato de textura de mapa de luz

Los datos de los mapas de iluminación de 6 direcciones están empaquetados en dos texturas RGBA. Cada una de las seis direcciones del mapa de luz se almacena en un canal de color (rojo, verde o azul) de las dos texturas.

Además, el canal alfa de la primera textura contiene la transparencia. Esto deja el canal alfa de la segunda textura como un canal adicional disponible. El flujo de trabajo actual le brinda la opción de incluir un componente emisor en ese canal adicional.

Mapa de luz A: Mapas de luz derecha, superior y posterior + Transparencia
Mapa de luz B: Mapas de luz izquierdo, inferior y delantero + canal adicional

Puede examinar los canales por separado en el Editor de Unity, en una ventana de vista previa, cuando se selecciona la textura.

Los mapas de luz creados por otras herramientas pueden empaquetar estos canales en un orden diferente. Existe una funcionalidad básica para reordenar canales dentro de Unity usando el Inspector, pero es posible que necesite un editor de imágenes si tiene que mover canales de una textura a otra.

Representación de iluminación con humo
Fotograma de una explosión de muestra durante la noche

La iluminación del humo está integrada directamente en el bucle de luz HDRP, lo que significa que no hay un límite específico en la cantidad de luces que afectarán al humo. Por supuesto, cuantas más luces, más intensivo será el proceso computacional (puede aprovechar las capas de luz para mitigar esto).

Se manejan todo tipo de luces directas como Direccionales, Puntuales, Spot, Rectangulares y Lineales. También crea resultados muy impresionantes para luces dentro de efectos de humo para crear relámpagos, chispas eléctricas, bengalas, luciérnagas y más.

Luces dinámicas en el interior del humo de seis direcciones.

Para cada luz, es importante determinar primero su dirección relativa a la partícula y usar esta dirección para combinar los diferentes mapas de luz. Para las luces de área, utilizamos un enfoque de punto más representativo, identificando el punto más cercano de la luz para calcular la dirección.

El mismo efecto de humo en diferentes condiciones de iluminación: arriba a la izquierda: luz direccional y ambiental; arriba a la derecha: ambiental, volúmenes de sonda y luz direccional; abajo a la izquierda: ambiental y sondas; y abajo a la derecha: luz puntual y sondas

La partícula también se ve afectada por la iluminación indirecta, en particular por las sondas de luz, los volúmenes de sonda adaptativos (APV), las sondas ambientales y los volúmenes proxy de sonda de luz (LPPV), según los tipos que estén activos en la escena. Para obtener el mejor rendimiento, puede utilizar el modo solo ambiente para omitir por completo el ciclo de luz y permitir un cálculo de iluminación muy económico.

Volúmenes de sonda adaptables e iluminación de humo de seis vías

Por consideraciones de rendimiento, las contribuciones de la sonda se evalúan en el sombreador de vértices y luego se interpolan en el sombreador de píxeles. Esto significa que si está utilizando una salida cuádruple, las sondas solo se evaluarán en las cuatro esquinas del cuádruple. En el caso de sondas que varían espacialmente, como las APV, uno o más vértices pueden terminar en un lado de una pared mientras que el resto de la partícula está en el otro lado. Si esto sucede, las contribuciones de la sonda serán erróneas y darán lugar a artefactos visuales. Una solución, en este caso, es utilizar una malla más teselada, con más vértices. Tenga en cuenta que esto generalmente no es un problema para las escenas al aire libre.

En nuestro modelo, el humo se considera totalmente difuso, por lo que no se evalúan las contribuciones indirectas especulares. Esto significa, por ejemplo, que las sondas de reflexión no afectan a las partículas que utilizan luces de humo de 6 vías.

También ofrecemos dos formas diferentes de aplicar color al humo. Puedes lograr esto derivando la absorción de luz por componente de color de los mapas de luz (para un comportamiento más realista del humo de color) o con una simple multiplicación (la forma más económica).

Comparación de los modos de multiplicación y absorción para aplicar color al humo
Evaluación de la dispersión de luz en seis direcciones, también conocida como función de distribución de dispersión bidireccional (BSDF)

La salida de renderizado de iluminación de 6 direcciones en VFX Graph ofrece varios controles para personalizar el aspecto del efecto y crear diferentes efectos reutilizando los mismos mapas de luz.

1. Color y absorción
Crea humo, vapor o nubes con los mismos mapas de luz usando controles de intensidad de absorción y color.
2. Reasignación de mapas de luz
Crea efectos más o menos densos o estilizados, reasignando los mapas de luz
3. Emisividad
Transforma el humo en explosiones utilizando diferentes gradientes de emisión
Cómo empezar

Sólo se necesitan unos minutos para agregar un hermoso humo de 6 direcciones a su proyecto. Debes estar trabajando en Unity 2022.2 o superior y utilizar VFX Graph y HDRP.

Para que pueda ponerse al día rápidamente, hemos creado una biblioteca de mapas listos para usar. Ofrecemos activos de alta fidelidad que puedes procesar y empaquetar como quieras (por ejemplo, usando VFX Toolbox) y versiones más compactas que son livianas y están listas para tu juego.

Un ejemplo de una muestra gratuita de seis vías que ahora está disponible

Para crear un efecto utilizando estos mapas e iluminación de 6 direcciones, siga estos pasos:

  • Arrastre y suelte los mapas en la carpeta Assetde Unity.
  • Cree y abra un nuevo activo de gráfico de efectos visuales.
  • Cree una nueva salida de partículas iluminadas y selecciónela.
  • En el Inspector, seleccione Six Way Smoke Lit en el menú desplegable Tipo de material.
Vista del inspector con “Six Way Smoke Lit” seleccionado
  • Establezca el mapa de luz de los ejes positivo y negativo en el contexto de Salida con los mapas que importó.
  • Pruebe con diferentes condiciones de iluminación.

Para obtener más información sobre VFX Graph en general, visite nuestro sitio web y lea nuestro libro electrónico La guía definitiva para crear efectos visuales avanzados en Unity.

¿Cuál es el siguiente paso?

Para las próximas iteraciones sobre iluminación de 6 direcciones, nos centraremos en la integración de Shader Graph y la compatibilidad con Universal Render Pipeline (URP). También tenemos ideas para eliminar algunas limitaciones inherentes de la técnica (planitud revelada al recibir sombras, mapas de luz locales a una partícula y que no tienen en cuenta a los vecinos oclusivos, y más).

También estamos trabajando para agregar la salida de niebla volumétrica al gráfico VFX, lo que permite que los efectos visuales generen niebla volumétrica. Esto permite impulsar aún más los efectos de humo combinando esta característica con la iluminación de 6 direcciones. Ya está disponible en Alpha en 2023.1.a25.

Y, por supuesto, estamos mirando hacia la simulación, reproducción y renderización de fluidos volumétricos reales. Todo esto le brindará una paleta completa de técnicas para generar efectos de humo hermosos y realistas según sus plataformas objetivo y su presupuesto.

Comparta sus comentarios con nosotros o haga preguntas a través de nuestro hilo del foro dedicado a Unity. Para proponer nuevas funciones y votar por las próximas funciones bajo consideración, consulte nuestra hoja de ruta de renderizado público.