Motores de render, ¿es real esta imagen?, Parte 1.

Tal como dice el título del artículo, ¿es real esta imagen?. Ha llegado un punto que la informática ha avanzado tanto que cada vez cuesta más discernir cuando vemos imágenes o videos entre lo real y lo irreal. Los softwares informáticos encargados de generar imágenes por ordenador, Motores de Render, cada vez son más precisos y con una imitación de la realidad lo más cercana posible, tanto que, si no sabemos la fuente, el origen de la imagen, nos cuesta saber si es real o irreal.
Voy a empezar una serie de artículos donde pretendo dar a conocer el mundo del render y la creación de imágenes fotorrealistas, que personalmente me apasiona. Voy a intentar explicar, de una manera llana, que se pueda entender, ya que es un tema muy técnico y extenso, los conceptos principales que se utilizan para generar una imagen renderizada. A continuación, veremos los fabricantes principales y hacia que sector están enfocados, Arquitectura, Producto, Videojuegos, Animación Cartoon, etc.
La intención es que os sirva de ayuda y guía a la hora de escoger que motor os puede interesar más. Conceptos como ¿qué es un motor de render? ¿qué técnicas de cálculo utilizan? Rasterización, Ray Tracing, Path Tracing, Monte Carlo, Radiosity y ¿a qué tipo pertenecen? Biased (sesgado) o Unbiased (imparcial), ¿qué sistema de renderizado utilizan? por CPU o GPU, y si son motores en tiempo real (Real-Time) o Pre-Renderizado (Render Offline). Son conceptos necesarios a la hora de evaluar el motor de render de cara a vuestras necesidades, y de esta manera escoger el fabricante que mejor se os adapte.
Empecemos pues por, ¿Qué es un motor de render?
Los motores de render son algoritmos que simulan aspectos físicos de la realidad, como el comportamiento de los fotones de luz y materiales sobre los objetos, intenta imitar lo más fiel posible el comportamiento de la luz. Entre los más conocidos esta V-Ray, Arnold, Cycles, Chaos Corona, FStorm Render, Enscape, Lumion, Maxwell Render, Redshift, OctaneRender, Renderman, KeyShot, Twinmotion, D5 Render, etc.
Un motor de render se encarga de transformar unos datos de entrada, compuestos por geometría 3d, Materiales, texturas y luces, en unos nuevos datos de salida que pueden ser, por ejemplo, una imagen o video. Entre los datos de entrada y los datos de salida es donde el motor de render realiza su trabajo.
Seguimos por, proceso del motor de render, técnicas de cálculo.
Los motores de render utilizan diferentes técnicas para transforman los datos de entrada en los nuevos datos de salida. Técnicas como, Z-Buffer, Scan line, Ray casting, Radiosity, Rasterización, RayTracing, PathTracing, método Monte Carlo, BRDF, etc. En concreto nos vamos a centrar en las técnicas que utilizan la mayoría de los motores de render que son: Rasterización, Ray Tracing y Path Tracing.
Rasterización: es el proceso de interpretar triángulos de los modelos 3D con información en sus vértices. Información como posición, color y textura, que, intersecando con otros vértices de otros triángulos, generan los datos necesarios para convertirla en pixeles, dando lugar a una interpretación rápida del modelo 3D.

Su cálculo es más sencillo y rápido que los otros procesos, ya que además se basa únicamente en lo que afecta a la imagen y en lo que se ve. Todo esto se traduce en tiempos de renderizados muy rápidos, eso sí, sacrificando la calidad. Motores como Eevee de Blender, y Twinmotion, utilizan este proceso de renderización.
Con la llegada de las tarjetas gráficas y las GPU este proceso se aceleró mucho más, llegando al mundo de los videojuegos.
En el caso de Blender, este software utiliza 3 motores de renderizado diferentes, Eevee, Cycles y Workbench. Eevee, en concreto utiliza como he comentado anteriormente el proceso de Rasterización, que está enfocado a la velocidad e interactividad, es decir, al tiempo real. Puede ser usado en el Viewport 3D como en producción. Cycles, sin embargo, es un motor de render Path Tracing físicamente correcto, tipo Unbiased. Lo explicaremos más adelante.
Otro ejemplo es Twinmotion de Epic Games, motor de render en tiempo real, GPU, que utiliza para ello el proceso de Rasterización. Aunque desde las últimas versiones ha incorporado otro proceso, PathTracing, una evolución del RayTracing en tiempo real, gracias a las nuevas graficas RTX y su conocimiento al ser líder en el sector de los videojuegos. Y es ahora, cuando dentro de la industria de la Infoarquitectura puede generar unas imágenes con calidad como los motores de Ray Tracing por CPU más populares, V-Ray, Corona Renderer, Cycles, etc.
Recomiendo leer mi artículo anterior: Epic y Autodesk, dos monstruos de la industria del multimedia unen fuerzas. Arquitectura visual en tiempo real, ArchViz.
Ray Tracing: Para explicar esta técnica antes quiero hacer mención a la idea incial del algoritmo del trazado de rayos, cito textualmente de la Wikipedia, la idea del trazado de rayos viene aproximadamente del siglo XVI cuando fue descrito por Albrecht Durer (artista más famoso del renacimiento Aleman). En 1982, Scott Roth usó el término emisión de rayos en el contexto de gráficos por computadora, aunque se trata de una versión mucho menos precisa del trazado de rayos que no incluye refracción ni reflexión de la luz. En el algoritmo de emisión de rayos se determinan las superficies visibles en la escena que se quiere sintetizar trazando rayos desde el observador (cámara) hasta la escena a través del plano de la imagen. Se calculan las intersecciones del rayo con los diferentes objetos de la escena y aquella intersección que esté más cerca del observador determina cuál es el objeto visible.
Dejando por el momento la Wikipedia, el proceso consiste en emitir desde la cámara rayos de luces (vectores) en todas las direcciones de la escena, dichos rayos cuando choquen con un objeto de la escena enviarán información al pixel sobre como es el material del objeto y sobre cómo reacciona los fotones de luz con relación a dicho objeto. A este proceso le llamaremos muestras (samples) primarias. Si además el rayo (vector) rebota y viaja a través de las superficies de diferentes objetos antes de llegar a la fuente de luz, el color y la información de iluminación de esos objetos contribuyen al color final del pixel. De esta manera se representa de una manera muy real y precisa la imagen. Las muestras secundarias son las lanzadas por la fuente de luz. Si las muestras primarias, en un primer vector lanzado no chocan con objeto alguno y luego rebotan contra el objeto, determinarán la zona de sombra.
Podréis ver un esquema de lo comentado a continuación.

Pero este cálculo conlleva mucho tiempo, lo que significa que para renderizar una escena podemos estar horas. A diferencia de la rasterización que lo que prima es la velocidad con relación a la calidad.
Con el Ray Tracing generamos una imagen precisa, pero penalizamos en el tiempo de renderizado, que pueden ser de horas.
Motores como V-Ray, Corona, Arnold utilizan el Ray Tracing, por tanto, es muy utilizado en la industria de la infoarquitectura, producto y cine, sin embargo, la Rasterización como genera imágenes muy rápidas sacrificando la calidad es muy utilizado en la industria de los videojuegos, aunque hay que decir que con el avance las tarjetas gráficas, se permite renderizar en tiempo real con Ray Tracing, los videojuegos dan un salto de realismo brutal. Podemos decir que el Ray Tracing es la evolución de la Rasterización.
Más adelante, quiero dedicar un articulo en exclusividad a las tarjetas graficas Nvidia y la evolución en los videojuegos, desde la Rasterización, pasando por el Ray Tracing y llegando con las nuevas graficas RTX al Path Tracing. Viendo como fabricantes de videojuegos como Epic Games y Unity, utilizan todo su conocimiento para abrirse a otros sectores como la Infoarquitectura, Automóvil, producto, películas, etc, con un realismo excepcional. Compitiendo con los grandes del sector.
Path-Tracing: es el algoritmo que principalmente calcula los rebotes de los rayos lanzados desde la cámara en los objetos de la escena. Es decir, los rebotes secundarios que proporcionan la información sobre la iluminación global. Utiliza el Método Monte Carlo (algoritmos computacionales) para representar imágenes de escenas tridimensionales de modo que la iluminación global sea lo más fiel a la realidad. El motor de render Arnold de Autodesk, es un motor de renderizado Unbiased Path Tracing Monte Carlo, fue creado por Marcos Fajardo. Más adelante, en el apartado de software hablaremos más en detalle.
En la siguiente imagen podéis apreciar el proceso de muestreo (samples) que realiza los motores Ray Tracing, a través del refinamiento hasta llegar a la imagen deseada.

De momento lo voy a dejar aquí. En el siguiente capitulo hablaré sobre los tipos de motores de render (Biased y Unbiased) y el tipo de hardware que utilizan, CPU y GPU.
También recordar, que si queréis información sobre cursos o trabajos con relación al 3d y la creación de imágenes renderizadas fotorrealista, os podéis pasar por mi página web de www.grafcad.es y consultar el apartado de servicios grafcad.es/servicios/ o grafcad.es/servicios/grafcadacademy/
Para contactar conmigo enviar un correo a [email protected]
Muchas gracias por atenderme y nos vemos en el próximo artículo.