What is Lightmass and how does it work?

Guía Definitiva de Lightmass en Unreal Engine

09/06/2015

Valoración: 4.35 (13693 votos)

Lightmass es una de las herramientas más potentes y complejas de Unreal Engine, responsable de la iluminación precalculada que da vida a los mundos virtuales. Entender sus múltiples opciones de configuración puede ahorrarte días de tiempo de cómputo y, aun así, obtener los increíbles resultados de iluminación que tus niveles merecen. Con una mejor comprensión de estas opciones, podrás lograr la iluminación asombrosa que tus proyectos necesitan. Este artículo es un desglose completo de los parámetros que se encuentran en la sección 'Lightmass' de los World Settings de tu mapa en Unreal Engine. Analizaremos cada parámetro en profundidad, con ejemplos prácticos, y exploraremos cuándo y dónde es mejor aplicar cada uno.

What is Lightmass in Unreal Engine?
What is Lightmass? Lightmass is an integrated part of Unreal Engine which is responsible for precomputed lighting. This involves the generation of lightmaps, textures that are overlaid onto level geometry to give them the illusion of shadows, bounce lighting, and other natural lighting phenomena.
Índice de Contenido

¿Qué es Lightmass?

Lightmass es una parte integrada de Unreal Engine responsable de la iluminación precalculada. Esto implica la generación de lightmaps, que son texturas que se superponen a la geometría del nivel para darles la ilusión de sombras complejas, luz rebotada y otros fenómenos de iluminación natural. Es el motor detrás de la apariencia realista de las escenas estáticas en incontables juegos y visualizaciones arquitectónicas.

Las características que Lightmass soporta incluyen la iluminación global (iluminación indirecta o de rebote), la oclusión ambiental, la iluminación volumétrica y la transmisión (cambios de color/intensidad cuando la luz atraviesa objetos semitranslúcidos). Todas estas características son 'precalculadas' porque se generan antes de que el juego se ejecute mediante un proceso llamado 'bakeo' (baking). Dependiendo de la calidad y la escala del bakeo, este proceso puede llevar mucho tiempo, desde minutos hasta días.

El conjunto de estas características se conoce colectivamente como 'iluminación estática', ya que no pueden cambiarse mientras el juego está en ejecución. Es por eso que no puedes mover luces estáticas durante el juego. Están, literalmente, 'horneadas' en la escena, y necesitarías volver a hacer el bakeo para ver cualquier cambio reflejado en los lightmaps del mundo. Esto es distinto de la 'iluminación dinámica', que puede ser alterada en tiempo de ejecución. Lightmass no maneja la iluminación dinámica, por lo que ese es un tema para otra ocasión.

Configuraciones de Lightmass en Detalle

Para explorar lo que hace cada configuración de Lightmass dentro de una escena, hemos utilizado un entorno interior de una pequeña torre. Incluye algunas formas interesantes, perfectas para experimentar con la iluminación indirecta, y algunos assets más intrincados del contenido de inicio del motor que podemos usar para llevar al límite los detalles de nuestras sombras. A continuación, analizaremos cada configuración para ver cómo afecta la escena.

Static Lighting Level Scale

El primer parámetro de la lista y uno de los más importantes. Static Lighting Level Scale le indica a Lightmass el tamaño de las muestras que tomará de tu escena para evaluar el detalle de las sombras. Cuanto menor sea el valor, mayor será el nivel de detalle y la precisión de las sombras. Puedes usar esta configuración para aumentar la complejidad de tus sombras, aunque este mayor nivel de detalle generalmente viene a costa de más ruido visual. Esto se puede compensar aumentando el valor de Indirect Lighting Smoothness, del que hablaremos en breve. Este parámetro tendrá un gran efecto en la precisión general de tu iluminación precalculada. Sin costo adicional para el tamaño de tus lightmaps en tiempo de ejecución, es efectivamente 'gratis' en términos de rendimiento del juego, pero definitivamente disparará tus tiempos de bakeo.

Static Lighting Level ScaleDuración del BakeoFactor de Tiempo
1.0 (defecto)3:02 min1
2.02:25 min0.80
0.54:37 min1.52
0.28:06 min2.67
0.117:09 min6

Para los bakeos finales, a menudo se recomienda un valor de 0.1, especialmente para proyectos de visualización arquitectónica. En la descripción de la herramienta, Epic también sugiere aumentar este valor a 2 o 4 para entornos más grandes como paisajes donde no se requiere un alto detalle.

Num Indirect Lighting Bounces

La iluminación indirecta es un fenómeno que ocurre cuando las ondas de luz rebotan en los objetos del mundo para golpear superficies que no están en línea de visión directa con la fuente de luz. Cuantas más veces rebote la luz, más luz entrará en el espacio, y cada rebote hará que la luz decaiga hasta que el efecto ya no sea perceptible. El resultado final es lo que llamamos 'iluminación ambiental'. Lo mismo ocurre con la iluminación virtual con Lightmass. Esta configuración le dirá al motor cuántas veces rebotará cada fotón virtual. Si esta configuración se establece en cero, no habrá iluminación indirecta en la escena. Los rebotes tendrán rendimientos decrecientes a medida que la luz decae, y los rebotes sucesivos después del segundo no afectarán significativamente la fidelidad visual de tu iluminación ni el tiempo que necesita para el bakeo. Un valor de 4 es virtualmente idéntico a un valor de 100.

Num Sky Lighting Bounces

Este valor tiene un efecto muy similar al anterior, pero es específico para la iluminación estática de los Sky Lights. Sin embargo, a diferencia de Num Indirect Lighting Bounces, la cantidad de tiempo que esta configuración añade a tu bakeo es proporcional a su valor. Cada rebote sucesivo añadirá aproximadamente la misma cantidad de tiempo. El efecto es sutil y puede ser fácilmente eclipsado por la luz ambiental de una luz direccional dominante en la escena. Para que esta configuración tenga algún efecto, tanto Num Sky Lighting Bounces como Num Indirect Lighting Bounces deben ser mayores que 0.

Indirect Lighting Quality

De todos los parámetros disponibles para Lightmass, la configuración de Indirect Lighting Quality tendrá el impacto más significativo tanto en la calidad de tu bakeo de luz como en el tiempo que tarda en completarse. Aumentar este valor por encima de su defecto de 1 (puede llegar hasta 10) aumentará el número de muestras de Iluminación Global que Lightmass tomará para evaluar tus lightmaps, lo que se traduce en una iluminación estática de mayor fidelidad. Se usa comúnmente junto con Static Lighting Level Scale como el método principal para aumentar la calidad de tus bakeos de luz, y también aumentará drásticamente tu tiempo de bakeo.

Indirect Lighting QualityDuración del BakeoFactor de Tiempo
1.0 (defecto)3:09 min1
0.52:20 min0.74
2.04:46 min1.51
5.08:21 min2.65
10.013:28 min4.28

Jerome Platteaux, Director de Arte en Epic, recomienda usar la siguiente fórmula para calcular estos valores para obtener los mejores resultados: Static Lighting Level Scale * Indirect Lighting Quality = 1.

What is Lightmass and how does it work?
High level introduction to Lightmass. Lightmass creates lightmaps with complex light interactions like area shadowing and diffuse interreflection. It is used to precompute portions of the lighting contribution of lights with stationary and static mobility.

Indirect Lighting Smoothness

Esta configuración reducirá el nivel de detalle en tus sombras indirectas suavizándolas. Cuanto mayor sea el valor, más suavizado habrá. En valores más altos, comenzarás a ver pérdida de detalle en las sombras y fugas de luz (light bleeding). Puede usarse para controlar el nivel de ruido en tus lightmaps, pero esto vendrá a costa de una menor definición de las sombras.

Environment Color & Environment Intensity

El parámetro Environment Color es un color lineal con el que puedes teñir globalmente tu iluminación estática. Es un método para ajustar la temperatura de color o el ambiente sin editar luces individuales. Su impacto en los tiempos de bakeo es mínimo, pero tiene inconvenientes significativos. Lightmass toma la información de iluminación que ha generado al final de un bakeo y proyecta este valor desde el hemisferio superior sobre el resultado. Este proceso es aditivo, lo que significa que habrá una mezcla de colores si ya tienes luces de colores en tu nivel. Por defecto, está en negro, lo que deshabilita la función. Epic desaconseja su uso porque no es físicamente preciso, ya que no se tiene en cuenta al calcular los rebotes de luz. Es muy recomendable usar un Sky Light en su lugar. La Environment Intensity simplemente escala la fuerza del color aplicado.

Diffuse Boost

El valor difuso de un objeto (también llamado 'Albedo' o 'Base Color') es su color antes de que se superponga cualquier otra información. El color difuso se define por el material de un objeto y su valor afectará el color y la intensidad de la luz que rebota en su superficie. El parámetro Diffuse Boost escalará globalmente cuánto contribuirá el valor difuso de tus materiales a la iluminación estática. Por defecto, está en 1.

Volume Lighting Method

El conjunto de datos utilizado para aplicar iluminación indirecta a objetos dinámicos se llama 'Iluminación Volumétrica'. Lightmass muestreará la iluminación estática en un rango configurable de posiciones en el mundo y usará esos datos para crear un volumen que se pueda referenciar en tiempo de ejecución. Unreal ofrece dos métodos:

  • Volumetric Lightmap: El método predeterminado y más nuevo. Epic lo recomienda. Utiliza una muestra armónica esférica de tercer orden para capturar la luz desde todas las direcciones.
  • Sparse Volume Lighting Samples: Un método más antiguo que captura un único valor de color para cada muestra que toma de tu nivel.

Ambos métodos dependen de un Lightmass Importance Volume colocado por el usuario para guiar al motor sobre el espacio en el que se deben tomar las muestras.

Use Ambient Occlusion

La oclusión ambiental es una técnica de iluminación utilizada para definir el sombreado indirecto en los objetos. Si esta opción está marcada, Lightmass horneará información de oclusión ambiental en tus lightmaps de superficie. Tendrá un efecto mínimo en los tiempos de bakeo. Por defecto, está desactivada.

Compress Lightmaps

Es muy probable que una cantidad considerable de tu pool de streaming de texturas esté ocupada por texturas de lightmaps. Para ayudar a aliviar esa carga, Unreal comprime por defecto estas texturas para ahorrar memoria en tiempo de ejecución y espacio en disco. Desactivar esta opción puede mejorar sutilmente la calidad visual, reduciendo artefactos y ruido (especialmente en superficies grandes y planas), pero aumentará el tamaño de tus texturas aproximadamente cuatro veces. Debes decidir si el costo vale el resultado.

Preguntas Frecuentes (FAQ)

¿Por qué mi bakeo de luces tarda tanto tiempo?

El tiempo de bakeo está directamente influenciado por la complejidad de la escena y, sobre todo, por la configuración de Lightmass. Parámetros como Static Lighting Level Scale (con valores bajos) e Indirect Lighting Quality (con valores altos) aumentan drásticamente la cantidad de cálculos necesarios, lo que resulta en tiempos de construcción mucho más largos.

¿Puedo cambiar la iluminación estática durante el juego?

No. La iluminación estática es 'precalculada' o 'bakeada', lo que significa que se calcula una vez y se guarda en texturas (lightmaps). No se puede alterar en tiempo de ejecución. Para luces que necesiten cambiar dinámicamente, debes usar luces con movilidad 'Stationary' o 'Movable'.

¿Debería usar 'Environment Color' para añadir luz ambiental?

No es recomendable. Epic Games sugiere evitar esta configuración porque no es físicamente precisa; se aplica después de que se calculan los rebotes de luz, lo que puede llevar a resultados poco realistas. La mejor práctica para añadir luz ambiental global es utilizar un actor Sky Light.

¿Cuál es la diferencia entre desactivar y no la compresión de lightmaps?

Mantener la compresión activada (por defecto) ahorra una cantidad significativa de memoria y espacio en disco, pero puede introducir artefactos de compresión, como bandas de color o ruido. Desactivarla resulta en lightmaps de mayor fidelidad y sin artefactos, pero a costa de que ocupen aproximadamente cuatro veces más espacio.

Si quieres conocer otros artículos parecidos a Guía Definitiva de Lightmass en Unreal Engine puedes visitar la categoría Juegos.

Subir