Hablemos de Eevee

¿Qué es EEVEE? EEVEE es el motor PBR en tiempo real que viene con Blender 2.80. Hace poco tiempo que salió esta nueva versión de Blender y uno de los muchos puntos fuertes es precisamente este motor de render basado en OpenGL. Solo hay que hacer una búsqueda en Google y verás una gran cantidad de ejemplos, algunos realmente espectaculares, de lo que se puede llegar a hacer. Desde que empezó a saberse de EEVEE se ha generado una expectación increíble. Todo el mundo busca o quiere saber algo de este motor.

Visor de Blender 2.80 renderizando con EEVEE
Visor de Blender 2.80 renderizando con EEVEE

Puedes descargar la versión Blender 2.80 en el siguiente enlace:

Ahora está en desarrollo la versión Blender 2.81 que puedes descargar desde aquí y que incluye muchas mejoras.

Cuando pruebas EEVEE por primera vez, al menos en mi caso, tienes la sensación de que es algo espectacular y te sorprende aún más cómo se comporta. Estás viendo en el visor una representación casi final del render en tiempo real. Así que una de las primeras utilidades que te vienen a la cabeza es precisamente la previsualización o el LookDev. Pero no es un motor de render que vaya a sustituir a Cycles, para nada. Son dos motores de render completamente diferentes y con diferentes propósitos. El render en Cycles es raytracing y el comportamiento de la luz y sombras es físicamente correcto, en cambio, en EEVEE es más una aproximación, con sus trucos, más acorde con las técnicas usadas en motores de render de videojuegos, como Unreal o Unity.


Características de EEVEE

Teniendo en cuenta que siempre estamos hablando de visualizar el render en el visor debemos sorprendernos con la facilidad que se pueden añadir efectos como Bloom, Ambient Occlusion, Depth of Field, luces volumétricas, SSS, reflexiones, refracciones, etc.

Volumétricas en EEVEE dentro de Blender 2.80
Volumétricas en EEVEE dentro de Blender 2.80

No es un motor raytracing, a diferencia de Cycles, por lo que los reflejos, reflexiones y demás cálculos son truquillos, pero que dan el pego.

Materiales PBR en EEVEE

Los materiales PBR son totalmente compatibles con los de Cycles y puedes ver en tiempo real cualquier cambio que realices en un material, por muchos nodos que les pongas. Lo mismo ocurre con las luces. La única luz que no acepta es la Hemi pero los cambios que realices en la iluminación se reflejan de manera inmediata en el visor. Y no, no ralentiza Blender. Usa un sistema de ahorro de procesos llamado UBO (Uniform Buffer Object) con el que con la información de las luces evita que se recompilen los shaders. Puedes leer información más técnica y detallada en la wiki de OpenGL:

https://www.khronos.org/opengl/wiki/Uniform_Buffer_Object

Nodo de material PBR para EEVEE en Blender 2.80
Nodo de material PBR para EEVEE en Blender 2.80

Así, en EEVEE te encuentras con materiales PBR mediante el concepto UBER que está basado en los materiales PBR de Unreal Engine 4. No es un calco por lo que no esperes encontrar todos los UBER shaders de Unreal, pero con el Principle BSDF shader de Blender podrás crear materiales complejos y ver el resultado en el visor, sin tener que esperar a que se renderice con Cycles.


Las luces de Blender

EEVEE es compatible con todas las luces de Blender, aunque como he escrito más arriba, la hemi es la única no contemplada.

Dentro del apartado de luces nos encontramos con tres elementos propios de EEVEE, que son las Light Probe e incluyen: Reflection Cubemap, Reflection Plane e Irradiance Volume.

Estos objetos están pensados para precalcular la iluminación en una escena usando EEVEE. Estos son algunos de los truquitos que comentaba más arriba, pero son realmente efectivos.

Si queremos conseguir que se muestre una aproximación de iluminación global nos vendrá muy bien usar Irradiance Volume, porque se calcularán una vez y se usarán en el visor en tiempo real. Debo decir que el cálculo de estos Irradiance Volume es bastante rápido, aunque como con todo, depende de la calidad que queramos obtener.

Este objeto es una caja que se compone de pequeñas esferas, llamadas probes que están distribuidas en filas y columnas, creando una matriz. EEVE usa estas esferas para lanzar unos rayos que permiten tener una aproximación de iluminación global. Si añadimos más probes tendremos una mayor calidad, con el precio de mayor tiempo de precálculo. Siempre que hablo de EEVEE tengo que recordar que estamos hablando de tiempo real en el visor. En la siguiente imagen puedes ver un Irradiance Volume en una escena.

Irradiance Volume en EEVEE
Irradiance Volume en EEVEE

Tanto Reflection Cubemap como Reflection Plane nos irán muy bien para simular reflejos de una forma que se precalculan y almacenan los rayos en una matriz para optimizar el render en tiempo real. Hay que recordar, de nuevo, que no es un motor raytracing y se deben hacer estos trucos para que te puedas creer los reflejos en el visor.


Estabilidad de EEVEE

En cuanto a la estabilidad, sin contar con las primeras versiones Alpha, es increíblemente estable. Te podría sorprender incluso que lo puedes usar en un portátil que como mínimo venga equipado con una tarjeta gráfica OpenGL. Tampoco estamos hablando de un portátil para escribir documentos en Word, al menos uno mínimamente potente, pero es un gustazo ver tus escenas en el visor y mostrarlas al cliente en tiempo real. Puedes manipular los objetos de la escena y el render se actualiza casi al instante. En el siguiente enlace puedes ver una lista de las tarjetas OpenGL compatibles:

Algunas limitaciones en EEVEE

Todavía existen algunas limitaciones que, por otro lado, son normales al ser una primera versión. Por ahora no es posible hacer uso de múltiples tarjetas gráficas, lo que sería increíble, pero hay que darle tiempo.

En cuanto a las cámaras solo puede usar las proyecciones en perspectiva y ortográfica.

Las sombras de las luces instanciadas no se pueden representar.

Está limitado a solo 128 luces en toda la escena. Y solo es posible tener activas 8 luces de sol con sus sombras, al mismo tiempo. Creo, de todas formas, que es un número más que aceptable para la mayoría de nuestras escenas, ¿no?

Las luces volumétricas están limitadas solo a los rayos de cámara por lo que no las podrás ver en reflejos.

Algunas de estas limitaciones vienen dadas por el objetivo del motor de render, que es la visualización en tiempo real. Por eso, si alguna implementación compromete este comportamiento es probable que no se incluya o se limite.

Estas limitaciones también pueden venir dadas por el estado de la tecnología actual. En un futuro podríamos ver un EEVEE calculando raytracing en tiempo real en el visor. Esto sería ya increíble. Habrá que estar atento a como evoluciona esta tecnología, que hemos podido ver en las tarjetas RTX de Nvidia. Pero es que estamos viviendo el inicio de un futuro apasionante en cuanto a potencia de las tarjetas gráficas.

Conclusiones después de usar EEVEE

En el tiempo que llevo usando las distintas versiones beta de Blender 2.80 he podido ir percibiendo el gran trabajo que se ha realizado con este motor de render y que a los artistas nos va a ayudar muchísimo a la hora de hacer tareas de LookDev.


Seguro que, con el tiempo, porque esta versión que saldrá en Blender 2.80 será su primera puesta en escena, encontraremos más mejoras en el motor EEVEE. Pero de momento pinta de una forma increíble y, en mi opinión, va a marcar un antes y un después en la visualización 3D en tiempo real.

Y, ¿lo había comentado ya? Es Open Source.

Nota del autor: Este artículo se publicó por primera vez en Renderout que amablemente me han dejado repetir en mi blog esta entrada.

Puedes descargar Renderout desde aquí.

Curso de Blender 2.80. Aprende 3D con Blender

Curso de Blender 2.80

Curso en español para aprender 3D con Blender 2.80

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Item added to cart.
0 items - 0,00