What are lighting scenarios?

Domina la Iluminación en Unreal Engine

13/02/2018

Valoración: 4.6 (9629 votos)

La iluminación es uno de los pilares fundamentales en la creación de videojuegos. No solo nos permite ver el entorno, sino que define la atmósfera, guía al jugador y evoca emociones. Sin embargo, gestionar múltiples condiciones de luz —como un ciclo de día y noche, o cambios climáticos drásticos— en un mismo nivel puede convertirse en un verdadero dolor de cabeza técnico y de rendimiento. ¿Cómo podemos tener la altísima calidad de la iluminación precalculada para un soleado mediodía y, en el mismo mapa, una lúgubre noche de tormenta sin duplicar toda la geometría y los assets? La respuesta de Epic Games a este desafío es una potente herramienta llamada Escenarios de Iluminación (Lighting Scenarios), una técnica que te permitirá llevar tus mundos al siguiente nivel de inmersión y optimización.

What happens if a lighting scenario level is present in a game?
Only one Lighting Scenario level should be visible at any time in a game. When a Lighting Scenario level is present, Lightmap data from all Sublevels will be placed inside of it so that only the Day Scenario Lightmaps are loaded when it's daytime. As a result, Lightmaps will no longer be streamed by Sublevels.

En esta guía completa, desglosaremos qué son exactamente los Escenarios de Iluminación, cómo funcionan bajo el capó y, lo más importante, te guiaremos paso a paso para que puedas implementar múltiples configuraciones de luz en tus propios proyectos de Unreal Engine. Prepárate para tomar el control total de la luz y la sombra.

Índice de Contenido

¿Qué son Exactamente los Escenarios de Iluminación?

En esencia, un Escenario de Iluminación es una característica de Unreal Engine que permite a los desarrolladores almacenar múltiples conjuntos de datos de iluminación precalculada para un único nivel persistente. Imagínalo como tener varias capas de pintura de luz; puedes elegir cuál mostrar en cada momento, cambiando drásticamente el aspecto y la sensación del nivel sin tener que recargar todo el mapa.

Esta técnica se basa en el sistema de subniveles (Sublevels) de Unreal y está diseñada principalmente para la iluminación estática. La iluminación estática, también conocida como "baked lighting", es un proceso en el que el motor calcula de antemano todas las interacciones complejas de la luz (rebotes, sombras suaves, oclusión ambiental) y las guarda en texturas especiales llamadas Lightmaps. Estas texturas se aplican luego a los objetos estáticos del nivel. El resultado es una calidad visual fotorrealista con un coste de rendimiento mínimo durante el juego, ya que los cálculos pesados ya se han hecho.

El sistema funciona con tres componentes clave:

  • Nivel Persistente (Persistent Level): Es el nivel principal que siempre está cargado. Contiene la geometría principal, los elementos de gameplay, los personajes y cualquier otro actor que sea común a todas las condiciones de iluminación.
  • Subniveles de Contenido: Son niveles secundarios que pueden contener geometría adicional, props o lógica, y que se cargan y descargan según sea necesario.
  • Subniveles de Escenario de Iluminación: Estos son la clave de la técnica. Son subniveles especiales que designamos para contener únicamente los actores relacionados con la iluminación para una condición específica (por ejemplo, `L_Dia`, `L_Noche`). Aquí es donde vivirán tus `DirectionalLight`, `SkyLight`, `SkyAtmosphere`, `ExponentialHeightFog` y `Reflection Probes` para cada escenario. Al construir la iluminación, Unreal Engine almacenará todos los Lightmaps generados dentro de este nivel de escenario específico.

Ventajas y Desventajas de esta Técnica

Como toda herramienta de desarrollo, los Escenarios de Iluminación tienen sus puntos fuertes y sus debilidades. Es crucial entenderlos para decidir si es la solución adecuada para tu proyecto.

What are the lighting concepts & features in Unreal Engine?
VentajasDesventajas
  • Rendimiento Superior: Utiliza luz precalculada, que es increíblemente rápida en tiempo de ejecución.
  • Máxima Calidad Visual: Permite lograr efectos de iluminación global (GI) complejos y sombras suaves que son muy costosos de renderizar en tiempo real.
  • Optimización de Memoria: Solo se cargan en memoria los Lightmaps del escenario activo, evitando un consumo excesivo.
  • Flujo de Trabajo Organizado: Separa la iluminación del resto de los elementos del nivel, facilitando la gestión y la iteración.
  • Tiempos de Build Largos: "Hornear" (baking) la iluminación para múltiples escenarios puede llevar horas, dependiendo de la complejidad del nivel.
  • Naturaleza Estática: La iluminación no reacciona a cambios dinámicos en la geometría. Los objetos móviles no proyectarán sombras precalculadas correctas.
  • Mayor Uso de Disco: El tamaño final del proyecto aumentará, ya que estás almacenando múltiples conjuntos de datos de Lightmaps.

Guía Práctica: Creando Tres Escenarios de Iluminación (Día, Tarde, Noche)

Pongámonos manos a la obra. A continuación, te explicamos el proceso para configurar un nivel con tres condiciones de luz diferentes.

Paso 1: Preparar el Entorno

Abre tu proyecto y asegúrate de tener un Nivel Persistente que contenga toda la geometría estática y los elementos de juego. Si aún no usas subniveles, puedes empezar abriendo la ventana de Niveles desde `Ventana > Niveles` (Window > Levels).

Paso 2: Crear los Subniveles de Iluminación

En la ventana de Niveles, haz clic en `Niveles > Crear Nuevo...` (Levels > Create New...). Crea tres niveles vacíos nuevos y dales nombres descriptivos. Por ejemplo:

  • `L_Dia`
  • `L_Tarde`
  • `L_Noche`

Arrastra estos nuevos niveles a la ventana de Niveles para que se conviertan en subniveles del Nivel Persistente.

Paso 3: Convertirlos en Escenarios de Iluminación

Este es el paso mágico. En la ventana de Niveles, haz clic derecho sobre cada uno de los subniveles que acabas de crear (uno por uno) y, en el menú contextual, ve a `Escenario de Iluminación > Cambiar a Escenario de Iluminación` (Lighting Scenario > Change to Lighting Scenario). Al hacer esto, le estás diciendo a Unreal Engine que trate estos niveles como contenedores exclusivos para datos de iluminación precalculada.

What are the lighting concepts & features in Unreal Engine?

Paso 4: Poblar y Construir Cada Escenario

Ahora viene el proceso iterativo. Debes construir la iluminación para cada escenario de forma individual.

  1. Escenario de Día:
    • En la ventana de Niveles, asegúrate de que solo el subnivel `L_Dia` esté visible (haz clic en el icono del ojo). Todos los demás escenarios deben estar ocultos.
    • Haz doble clic en `L_Dia` para convertirlo en el nivel actual. Cualquier actor que crees ahora se añadirá a este subnivel.
    • Añade y configura tus luces para el día: un `DirectionalLight` fuerte y con un ángulo alto, un `SkyLight` con un color de cielo claro, un `SkyAtmosphere`, etc.
    • Una vez que estés satisfecho, ve a `Construir > Construir Solo Iluminación` (Build > Build Lighting Only). El motor calculará los Lightmaps y los almacenará dentro del archivo `L_Dia.umap`.
  2. Escenario de Tarde:
    • Ahora, oculta el nivel `L_Dia` y haz visible el nivel `L_Tarde`.
    • Haz doble clic en `L_Tarde` para que sea el nivel actual.
    • Añade y configura tus luces para la tarde: un `DirectionalLight` con un ángulo bajo y un color anaranjado, un `SkyLight` más cálido, etc.
    • Vuelve a construir la iluminación. Unreal detectará que el escenario activo es `L_Tarde` y guardará los nuevos Lightmaps en ese archivo.
  3. Escenario de Noche:
    • Repite el proceso: oculta `L_Tarde`, haz visible `L_Noche` y establécelo como nivel actual.
    • Configura la iluminación nocturna: un `DirectionalLight` muy tenue simulando la luna, un `SkyLight` oscuro, quizás algunas luces estáticas puntuales como farolas.
    • Construye la iluminación por última vez.

Paso 5: Cambiar entre Escenarios en Tiempo de Ejecución

Con toda la iluminación construida, el último paso es crear la lógica para cambiar de un escenario a otro durante el juego. Esto se hace fácilmente con Blueprints.

La lógica es simple: debes descargar el escenario de iluminación actual y cargar el nuevo. Por ejemplo, para cambiar de día a noche, usarías los nodos `Unload Stream Level` (para `L_Dia`) y `Load Stream Level` (para `L_Noche`).

Puedes activar esta lógica con un evento de teclado, un trigger en el nivel o como parte de un sistema de ciclo de día y noche. Es crucial asegurarse de que solo un escenario de iluminación esté visible y cargado a la vez. Cargar dos simultáneamente causará conflictos visuales y un uso de memoria innecesario.

How do I create 3 different lighting scenarios?
Hi! If you want 3 different lighting, you’ll need 3 scenarios + the main map!! In the main map you’ll have all the meshes (+lights if there are any) that exist in all scenarios! And then in every scenario you place the lights + settings accordingly! Hello ! First time i need to use Lighting Scenarios…

Consideraciones Técnicas Importantes

Cuando un nivel de Escenario de Iluminación está presente en el juego, el comportamiento de la transmisión de datos cambia. Normalmente, cada subnivel transmite sus propios Lightmaps junto con su geometría. Sin embargo, al usar esta técnica, los datos de Lightmaps de todos los subniveles se colocan dentro del archivo del escenario de iluminación activo. Esto significa que cuando cargas `L_Noche`, estás cargando los Lightmaps nocturnos para la geometría del Nivel Persistente y de cualquier otro subnivel que esté cargado. Este es el núcleo de su poder de optimización: los Lightmaps ya no se transmiten por subnivel, sino por escenario, garantizando que solo los datos necesarios estén en memoria.

Preguntas Frecuentes (FAQ)

¿Puedo combinar esto con luces dinámicas?
¡Absolutamente! Es una práctica muy común. Puedes colocar luces dinámicas (como la linterna del jugador, explosiones o luces de vehículos) en el Nivel Persistente. Estas se renderizarán en tiempo real sobre la iluminación estática precalculada, dándote lo mejor de ambos mundos: la calidad y el rendimiento de la luz estática con la interactividad de la luz dinámica.

¿Qué ocurre con los reflejos?
Los actores de captura de reflejos (`Sphere/Box Reflection Capture`) deben colocarse dentro de su respectivo escenario de iluminación. De esta manera, cuando construyas la iluminación para `L_Dia`, las capturas de reflejos almacenarán los reflejos diurnos. Al cambiar al escenario `L_Noche`, se cargarán las capturas de reflejos nocturnos, asegurando que los materiales reflectantes se vean correctos en cada condición.

¿Cuál es la diferencia entre esta técnica y usar Lumen?
Lumen, el sistema de iluminación global y reflexiones dinámicas de Unreal Engine 5, es una tecnología de renderizado en tiempo real. Con Lumen, toda la iluminación se calcula dinámicamente, frame a frame, lo que permite una interactividad total. Los Escenarios de Iluminación, en cambio, son para luz precalculada. La elección depende del proyecto: si necesitas la máxima flexibilidad y cambios de luz instantáneos (y tu hardware objetivo puede soportarlo), Lumen es el camino. Si buscas el máximo rendimiento y la más alta calidad visual posible en escenas mayormente estáticas, los Escenarios de Iluminación siguen siendo una técnica increíblemente poderosa y relevante.

Si quieres conocer otros artículos parecidos a Domina la Iluminación en Unreal Engine puedes visitar la categoría Juegos.

Subir