En esta ocasión me dediqué en mi tiempo libre a optimizar un proyecto para poder ser usado en motores de renderizado en tiempo real como pueden ser Unity o UE4.
La escena que se muestra abajo está compuesta por 25 modelos aproximadamente, cada uno con más de 100k de triángulos (algo totalmente fuera de los parámetros para un motor de renderizado de video juegos)
Para lograr esta optimización se deben reducir la cantidad de polígonos manteniendo, en la medida de lo posible, la calidad visual de los modelos.
Dejando la malla final de cada uno de los modelos como se muestra aquí abajo (lowpoly). Se dejan de lado los detalles como relieves leves o separaciones de materiales.
Pero ¿Cómo puedo darle a este modelo "lowpoly" la apariencia de un modelo "HighRes"?.
La respuesta es "Texture maps". Se utilizan varias texturas que se asignan a la geometría 3D, y estas texturas son las que le dan la apariencia de un modelo super detallado.
Dichas texturas pueden incluir: Albedo map (color), Normal map (relieves), Roughness map (valores de reflexión), Metallic map (en que partes el material es metálico) entre otros.
Estos mapas pueden variar dependiendo el motor gráfico a usar.
Aquí un ejemplo de un "Texture set" (el conjunto de todos estos mapas).
Después de horas y horas de trabajo optimizando de manera correcta cada una de la malla de los modelos para el "baking" (proceso por el cual pasa un modelo lowpoly para obtener las propiedades de un modelo de alta resolución) entonces si viene el texturizado.
Una de las etapas más importantes y divertidas en el proceso del diseño 3D pues es aquí donde se le da vida e historia al modelo.
Modelo Original - 200k polígonos - Sin texturas.
Modelo Lowpoly - 3000 Poligonos - Texturizado
Como podemos ver existe una mejora tanto visual como de rendimiento.
Este proceso es el que deben de atravesar todos los modelos que quieran formar parte de un videojuego, tanto personajes como props de cualquier tipo. La desventaja que enfrenta este método es el uso de un gran número de texturas para cada modelo, lo cual aumenta el consumo de vRAM en nuestra tarjeta gráfica.
Existen muchos otros métodos para la optimización de modelos como "Level Of Detail" mejor conocido en la industria como "LODs" en combinación con los "Trim Sheets", pero ese es tema para otro post.
Les dejo aquí abajo todos los modelos que optimicé y la lista de programas usados para cada etapa del proceso.
Blender 3D - Modelado 3D y optimización de la malla así como creación de los UVs. Marmoset Toolbag 3 - Baking y renderizado final de los props.
Substance Painter - Texturizado.
Espero encuentren útil esta entrada en el Foro!
Increíble, Alex. Gracias por compartir. Saludos.