Cómo elegir una técnica de iluminación en videojuegos con Unity

Tabla de contenidos
Iluminación a tiempo real en Unity
La iluminación en tiempo real de Unity es la iluminación por defecto que podemos encontrar en las luces direccionales, de foco o de punto. Al ser calculadas en tiempo real, las luces y la iluminación que producen se calcula a cada frame, actualizando cualquier movimiento de luces o de objetos de cara a la iluminación de la escena. Este tipo de iluminación es el más adecuado para iluminar personajes u objetos en movimiento, pero para darle un mayor realismo a cualquiera de nuestras escenas será necesario usar otros tipos de iluminación.
Baked Iluminación Global en Videojuegos
El “horneado” o baking de la iluminación, es una técnica muy habitual en videojuegos, consiste en calcular la iluminación directa sobre los objetos estáticos, pero también la iluminación indirecta. Cuando nos referimos a iluminación indirecta nos referimos a la iluminación que se genera con el rebote de luz que se produce entre objetos. Al rebotar en un objeto, parte del color de este objeto se proyecta a los objetos que lo rodean. Como decíamos el baking de la iluminación consiste en calcular cómo quedará la iluminación de los objetos estáticos de la escena, ésta información se guarda en un lightmap, una textura que posteriormente se “proyecta” sobre la escena. El problema de este tipo de iluminación es que sólo se puede usar en los objetos estáticos como ya hemos mencionado, así que hay que usarlo conjuntamente a otras técnicas para los objetos que no van a ser estáticos.
Iluminación Global en tiempo real precalculada
Gracias a este sistema de cálculo de luces, Unity es capaz de iluminar escenas complejas que pueden reaccionar a cambios de iluminación, es decir, aunque este tipo de iluminación sigue trabajando sólo con objetos estáticos de la escena, intenta calcular como los diferentes cambios de iluminación podrían afectar a este tipo de objetos. Esto se traduce a que si en la escena hay cambios de luz los cálculos previos que se han hecho sobre estos objetos intentan devolver cuál será el camino por el que los rayos de luz podrían rebotar una vez que el foco de luz se haya movido en tiempo real.
Como ya hemos dicho estos dos tipos de iluminación afectan simplemente a los objetos que hemos marcado como estáticos y que no se moverán en la escena. Haciendo que cualquier tipo de objeto en movimiento, ya sea un personaje o un objeto móvil de la escena, no se verá afectado por este tipo de iluminación. Para solventar este problema Unity hace uso de unos elementos llamados Light Probes. Estos objetos lo que hacen es probar y calcular como la iluminación precalculada afecta a una zona y cuando un objeto no estático se acerca a esa zona se le aplican esos mismo cálculos para que se vea afectado en la medida más precisa a lo que sería un cálculo de iluminación real.
Beneficios y costes
Aunque existe la posibilidad de tener los tipos de sistemas de iluminación precalculada que hemos visto activados simultáneamente, esto afectaría considerablemente el rendimiento de nuestra escena, ya que deberíamos realizar el doble de cálculos. Así que lo ideal es elegir uno de ellos dependiendo de cuáles son las características de nuestro proyecto. Por ejemplo, si vamos a crear un proyecto para dispositivos móviles o que esperamos que se vaya a ejecutar en dispositivos con pocos recursos de hardware deberíamos optar por el primer sistema de precalculado de iluminación, en cambio, si vamos a optar por un juego de gran calidad gráfica que se va a ejecutar en dispositivos standalone, ya sea para PC o para consolas, deberíamos optar por el segundo sistema de precálculo de iluminación global.
Cambios en las luces y no en la configuración de la iluminación
Por último, habría que revisar alguna configuración más propia de cada luz que tengamos en nuestra escena que no en la configuración general de la iluminación. La configuración por defecto de las luces de Unity es realtime, esto quiere decir que para los objetos no estáticos realizará una iluminación en tiempo real y a los estáticos les afectará una iluminación en tiempo real precalculada. En cambio, si lo marcamos como baked, la luz solo se tendrá en cuenta para los objetos estáticos ya que se usará la iluminación global baked y no la de tiempo real. Una tercera opción sería la opción de Mixed, que lo que hará será aplicar la iluminación baked a los objetos estáticos pero a su vez la luz contribuirá a la iluminación en tiempo real que se aplicará a los objetos no estáticos de la escena.
¿Crees que estás preparado para iluminar tus escenas? Déjanos tu comentario
Curso relacionado: Curso Superior de Diseño y Desarrollo de Videojuegos con Unity 3D