¿Olvidates tu contraseña?

Luz e iluminación Parte III: La iluminación dinámica

2014-01-11
No hay comentarios

La iluminación dinámica es un tipo de iluminación que se calcula mientras el juego se está ejecutando (mientras el jugador juega) y por tanto puede cambiar y ser influenciada durante el juego y por factores de éste. El gran avance respecto a la iluminación estática es obvio; la iluminación estática se calcula durante el desarrollo del juego y mientras se juega sólo se leen datos, mientras que la iluminación dinámica crea y lee datos en tiempo real. La primera consecuencia de esta “imposición” (necesaria para crear entornos dinámicos) es tajante; adiós a los texels.

Como la información cambia continuamente, ya no es eficiente escribir (y no solo leer) millones de texels a cada fotograma del juego. Y he aquí donde empieza la creatividad del desarrollador. No se trata de romper barreras y fronteras (escribir tantísimos texels a cada fotograma). Se trata de crear túneles de contrabando entre fronteras en apariencia infranqueables.

Inequívocamente, la obsesión de los desarrolladores de motores en esta generación pasada ha sido conseguir resultados realistas con la iluminación dinámica, pero,¿qué es la iluminación dinámica y por qué es tan importante para la industria?

Desarrollar motores de iluminación dinámica eficientes y realistas ha llevado años. Los primeros motores simplemente tenían dos estados de iluminación: iluminado o sombreado. Este método era eficiente pues con un “sencillo” algoritmo se calculaban las sombras y simplemente se aplicaba un sistema binario de iluminación: está iluminado o no lo está (sombra). Obviamente, este sistema tenía una obvia deficiencia; no existían los matices. La iluminación era contrastada a más no poder. Con tan solo dos posibles valores. Sin ningún tipo de dudas, unas buenas texturas ayudaban a disimular la pobre iluminación pero aun así la nueva frontera que sortear era clara. Se tardaría años en sortearla, pero antes había que ocuparse de otros problemas derivados de esta técnica.

Cuando el escenario era pequeño, no había problemas, pero cuando el escenario a iluminar era mediano o grande, el algoritmo tenía demasiado trabajo, ya que éste trabajaba con la cantidad de geometría y por tanto, a más geometría más trabajo. De nuevo la creatividad solucionó el problema. Muchos motores empezaron a utilizar la profundidad de los píxeles para ayudar a que el algoritmo supiera que sombras eran las más importantes (y por tanto dedicarles más detalle) en cada momento. La profundidad de un píxel no es más que detectar a qué distancia se sitúa dicho píxel sobre el que se está trabajando respecto a la cámara del jugador. Por tanto, si el píxel lo ocupa un trozo de un barril a 2 metros del jugador, este píxel se encontrará más cerca que un otro que forma parte de la representación de un edificio a 300 metros de distancia.

fox-engine-sala-kojima-developers-desarrollo-videojuegos-zehngames

Mediante esta valiosa información, entonces el algoritmo era capaz de dedicar más detalle (calidad de los límites de las sombras) a los píxeles cercanos y bajar el detalle paulatinamente a medida que los píxeles se alejan, creando sombras más difuminadas y poco detalladas, aunque al estar más lejos y aumentar su detalle a medida que el jugador se acerca, percibir este truco se antoja complicado.

Los bordes de las sombras ya lucían tan bien o incluso mejor que los de la iluminación estática (al estar calculados mediante la distancia respecto a los píxeles es posible incluso hacer sombras con los bordes muy finos y excelentemente degradados, hecho que sería extremadamente costoso en resolución de texels utilizando iluminación estática) pero las sombras seguían siendo binarias. Toda la información enriquecedora que aporta la Iluminación Global y la Iluminación Ambiental (explicado en los anteriores artículos) sigue sin estar presente.

En este momento, la gran mayoría de estudios optan por una de dos posibles soluciones. La primera solución pasa por utilizar la iluminación estática para calcular mediante texels solo la GI y la AO y luego aplicar las sombras solares mediante iluminación dinámica. No han sido pocos los grandes juegos que han aplicado este método. Desde Grand Theft Auto V (íd.; Rockstar, 2013) pasando por The Last of Us (íd.; Naughty Dog, 2012). Con unos buenos artistas es factible realizar incluso ciclos de día y noche en tiempo real mediante esta técnica pero es tremendamente poco eficiente (requiere mucho trabajo) y aun así hay elementos importantes que siguen sin poder representarse  de forma sencilla; los entornos dinámicos (cambiantes). Mayormente (por suerte o por desgracia) entornos destruibles.

http://www.youtube.com/watch?v=nLZU-JC6Hqc

Cuando son los escenarios los que cambian y no las condiciones de estos, es inevitable tener que desarrollar funciones que simulen GI y AO en tiempo real. DICE, con Battlefield 3 fue de los primeros estudios en implementar GI en tiempo real, mientras que el AO en tiempo real se empezó a utilizar mucho antes en muchas ocasiones incluso para simular GI. El AO en tiempo real se calcula mediante un algoritmo que utiliza nuevamente la profundidad de los píxeles para encontrar ángulos agudos y cóncavos entre la geometría y oscurecerlos. Por su parte, explicar desde el punto de vista técnico la magia que hay detrás del GI sin entrar en complejas explicaciones más adecuadas para programadores de engines, se me antoja imposible aunque sí que merece la pena destacar que la técnica para simular el GI en tiempo real es curiosamente una evolución de una técnica casi arcaica; la utilización de cubemaps para generar reflejos estáticos (la razón por la que en muchas ocasiones vemos reflejados cielos y edificios en charcos situados en interiores).

Se han encontrado nuevas soluciones para generar una gran cantidad de reflejos en tiempo real pero curiosamente se van a utilizar los mismos principios de esta técnica para representar GI en tiempo real.

Con ya todos los aspectos de la iluminación estática solucionados en la iluminación dinámica, los motores de la next gen se han centrado en incorporar aspectos de los motores de render en sus motores (más bien formas de enfocar el trabajo). Actualmente no son pocos los motores que están desarrollando motores de iluminación dinámica basados en modelos físicos reales. Es decir, motores que utilizan las leyes reales de la física sobre el comportamiento de la luz tal cual para simular la iluminación en los videojuegos.

Esto que puede parecer tan evidente, si lo que se desea es conseguir una iluminación realista no se ha utilizado hasta ahora y si se ha empezado a utilizar es por un tema de optimización del trabajo y no del realismo. Uno de los principales problemas al desarrollar texturas para juegos hoy en día es que una textura que puede funcionar en un entorno diurno puede que no funcione en un entorno nocturno, pues quizás la textura se ha reconstruido mediante el uso de cámaras fotográficas estándar y la luz que han captado estas cámaras han ensuciado la propia textura de la superficie en sí, dotándola de matices e iluminación que no provienen de la propia textura y causando pues que la textura no pueda ser reutilizada en otros parámetros de iluminación y multiplicando la cantidad de trabajo que debe hacer el desarrollador.

Con los nuevos motores se busca mitigar este problema garantizando de antemano que todas las texturas funcionarán en cualquier tipo de características lumínicas. El trabajo que hay que realizar al generar las texturas es mayor, sí, pero mediante este tipo de motores se garantiza que va a funcionar teóricamente en cualquier situación y por tanto a la larga el trabajo invertido en la creación del juego es menor ya que existe mayor y mejor reaprovechamiento de recursos.

Obviamente, la tecnología por sí sola no sirve para generar iluminaciones creíbles y siempre, absolutamente siempre será la mano del artista la que haga con su auténtica magia que el juego luzca bien o desastrosamente plano, se utilice iluminación dinámica, estática, chorizos o mantas para iluminar el juego. Pese a ello, deberemos descubrir toda esa magia negra, mostrando la realidad existente detrás de la iluminación. Aunque eso ya será en otro artículo.

gordo-freeman-half-life-2-desarrollo-videojuegos-zehngames

sol-vista-sunshine-desarrollo-videojuegos-zehngames

Imagen de perfil de Carlos Coronado

Carlos Coronado

107 entradas como autor
Desarrollador de videojuegos por elección, jugón por pasión. Mi curiosidad por jugar a videjuegos y sobretodo intentar entender porque los videojuegos me gustaban tanto me ha llevado a enfocar mi vida a intentar desarrollar esas mecánicas que nos absorben a todos. Me obsesiona la magía, los detalles, los matices, los buenos guiones y textos, los pequeños momentos del día a día y Warren Spector.

Etiquetas:

, , , , , , , , , , , , , , , , , , ,

Inicio Foros Luz e iluminación Parte III: La iluminación dinámica

Viendo 1 publicación (de un total de 1)

Debes estar registrado para responder a este debate.