Preparación del modelo 3D para un Game Engine

Polycount

La renderización es el proceso destinado a generar una imagen a partir de un modelo 3D; la palabra renderización proviene del inglés render, y no existe un verbo con el mismo significado en español, por lo que es frecuente usar las expresiones renderizar o renderear.

 

Existen dos tipos de renderizado, y la principal diferencia entre ellos es la velocidad en que las imágenes son procesadas y finalizadas:

  • El pre-renderizado (render offline): Se usa para secuencias no interactivas, como películas, cortometrajes y series de animación, donde la imagen desplegada es siempre la misma; los fotogramas se procesan previamente y se les hace una postproducción. La velocidad de renderizado no es tan importante.
  • Renderizado en tiempo real (Real time): Se utiliza en gráficos interactivos y videojuegos, donde se deben procesar imágenes con información 3D a un ritmo increíblemente rápido.

Las secuencias pre-renderizadas necesitan mucho tiempo para procesarse, por ejemplo, una de las escenas más complejas de la película Moana (2016) requirió 88 horas de render y la película completa de Big Hero 6 (2014) tomó 199 millones de horas en renderizarse.

Es por eso que se utiliza una agrupación de varias computadoras que se reparten el trabajo de renderizar las imágenes o animaciones (Pixar le llama render farm). Por lo tanto, la calidad que vemos en las películas animadas simplemente no puede ser alcanzada en un render en tiempo real.

 

En los videojuegos, las limitaciones de las tarjetas de video no permiten tener personajes, assets y escenarios con millones de polígonos renderizándose todos a la vez en tiempo real. En un videojuego se debe mostrar tanta información como sea posible en menor tiempo, así que se busca velocidad primero, y luego fotorrealismo; la jugabilidad prevalece sobre el aspecto del juego.

 

 

Esta también es la razón de que la calidad de los gráficos en las secuencias cinemáticas y en los tráilers de los videojuegos se vea mejor que la del propio gameplay.

Para referirse al número de polígonos de una malla, se utiliza el término Polycount; los objetos con un polycount bajo se llaman low poly, mientras que aquellos de alta resolución, que cuentan con muchos polígonos, son high poly. Puesto que el polycount de un modelo para videojuego debe ser bajo, la forma de añadir más detalle al modelo es haciendo uso de los mapas de texturas (como los normal y displacement maps).

 

Generalmente se hacen al menos dos modelos del personaje: uno high poly para las cinemáticas y material promocional del videojuego y otro low poly para el motor del juego.

 

Para saber cuántos polígonos deben tener los modelos, hay que tomar en cuenta varios aspectos, principalmente los siguientes:

 

- La plataforma a la que está destinada el videojuego (dispositivos móviles, PC, consolas, etc.)

- Cuántos objetos o personajes hay en la escena; si hay una escena con mucha geometría procesándose al mismo tiempo, el número será más bajo que si el personaje está sólo en un desierto.

- La importancia del objeto o personaje y qué tan cerca se verá. Si el objeto es secundario en la trama o el gameplay, entonces no necesita ser high poly. Si el jugador nunca verá el objeto en un tamaño mayor que 200 x 200 px, por ejemplo, tampoco necesita tener mucho detalle.

 

Una técnica usada con frecuencia en los videojuegos es el LOD o Level of Detail. Se refiere a crear diferentes niveles de detalle para un asset, de manera que no se tenga que renderizar todo lo que se ve en pantalla al máximo nivel de detalle.

Si el jugador está lejos del objeto, el modelo high poly estará escondido y en su lugar se mostrará una versión low poly, que funciona como un stand-in o doble. A medida que el jugador se acerca, el modelo de baja resolución se cambia por uno más detallado, y así continuará incrementando hasta que el jugador esté muy cerca como para ver el modelo de mayor nivel de detalle.

 

En algunos casos el mismo engine maneja los cambios de las versiones de los modelos a distancias pre-determinadas; en otros casos, generalmente con los modelos importantes, los artistas 3D hacen las diferentes versiones.

Por ejemplo, en Overwatch el modelo de mayor LOD de un personaje es de 30,000 tris. Cada personaje y arma tiene 4 LODs, cada uno con la mitad de polycount que el anterior.

 

Aunque los personajes se modelan con quads, al final el polycount siempre está expresado en tris (triángulos), porque todos los game engines convierten los polígonos en tris de manera automática para simplificar sus cálculos (técnicamente cada quad se divide en dos, por lo que el polycount se duplica).

 

Actualmente los videojuegos AAA suelen usar entre 20-100k tris por personaje (aunque varía mucho dependiendo del género y del LOD del modelo). Por ejemplo, los personajes principales de The Order: 1886 (2015) tienen alrededor de 100,000 polígonos; los personajes de Infamous: Second Son (2014) tienen 120,000 tris; en Nier: Automata (2017) la protagonista, 2B, tiene aproximadamente 100,000 polígonos y en Final Fantasy XV (2016) cada personaje también tiene 100,000 polígonos (el cabello tiene 20,000).

 

Ver Polycount en ZBrush

Para saber cuántos polígonos tiene un modelo en ZBrush, sólo hay que poner el cursor sobre él en la sub-paleta SubTool (sin hacer click), entonces se mostrará el polycount del subtool seleccionado, así como la suma de los polígonos de todos los subtools.