El modelado para videojuegos

Trabajar el arte para videojuegos es diferente al arte para otro tipo de producciones 3D.

La diferencia con el proceso “normal”

El arte para videojuegos es diferente al arte para otras producciones 3d. El proceso normal 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 generan anticipadamente, y se editan en secuencias no-lineales.

Ya que las imágenes son pre-generadas, se puede usar cualquier método para generarlas. Usualmente se usan computadores en línea en una granja de renderizado para procesarlas fotograma por fotograma. El proceso es costoso y demoroso. Un fotograma de película actual puede tardar horas en procesarse en cientos de computadores.

¿Qué es tiempo real?

El arte para videojuegos se renderiza a tiempo real, es decir, tantas veces por segundo como se necesite para una visualización fluída. Por ejemplo, si se generan imágenes para un televisor, la consola genera 30 fotogramas por segundo, y los despliega a medida que son procesados. Las imágenes no están preprocesadas, ni almacenadas en alguna parte.

Las imágenes se generan al vuelo porque deben responder a los comandos del jugador. Digamos que el computador o consola está mostrando un personaje de pie. Si el jugador mueve el joystick direccional, el juego recibe un comando y decide en el siguiente fotograma empezar a mover al personaje. Las imágenes que se despliegan en pantalla no pueden estar preprocesadas, porque las acciones del jugador son impredecibles.

Por el hecho de tener que procesar las imágenes al vuelo, la calidad de imagen depende de las capacidades del hardware de video. Los primeros gráficos 3D en tiempo real eran de muy baja calidad, mientras que los más recientes se parecen cada vez más a las películas preprocesadas.

Modelado

El modelado poligonal de personajes y escenarios es distinto en películas y videojuegos por obvias razones. Las limitaciones de las tarjetas de video no permiten tener personajes con millones de polígonos renderizándose en tiempo real.

Un personaje de película puede usar modificadores como TurboSmooth para suavizar la apariencia de las superficies, usar biselados para mejorar los bordes de los objetos, y también tener detalles geométricos pequeños modelados, como tornillos y remaches. Todo esto agrega millones de polígonos a un modelo.

En el renderizado de una película esto no es tan grave, porque se procesa antes de tiempo, pero para un videojuego, los detalles no pueden ir modelados en tan bajo nivel. Se usan modelos simples y de bajo poligonaje. Un personaje de esta generación puede tener entre 5.000 a 60.000 polígonos aproximadamente, dependiendo de la plataforma y el tipo de juego. Los detalles más pequeños deben ser falseados usando texturas con los detalles “pintados” o usando mapas de normales.

Texturizado

Ya que un modelo para videojuegos no puede tener todos sus detalles modelados independientemente, se usan modelos más simples con los detalles pintados sobre las texturas. En los primeros juegos 3D era común ver personajes con mitones en lugar de manos, con las separaciones de los dedos pintadas en las texturas. Hoy con los avances en hardware se pueden tener más libertades, pero aún existen limitaciones.

Los motores de videojuegos no tienen capacidades de iluminación tan avanzadas como en el renderizado offline. Por lo mismo muchas texturas tienen algo de información de iluminación “bakeada” sobre el color. Es común que una textura tenga una capa de oclusión ambiental generada desde un modelo de mayor detalle, para agregar fidelidad visual a una textura.

Materiales

Los primeros motores 3D en tiempo real usaban una técnica de iluminación llamada Gourad. Este permitía tener una aproximación de iluminación poco realista pintando los vértices de los modelos. A partir de la invención del Pixel Shader, ahora se puede usar iluminación Phong en los modelos, que calcula la influencia de la luz sobre cada pixel de la pantalla, y no solamente en cada vértice del modelo como el Gourad.

Los materiales de videojuegos antiguos no permitían más que una textura de color. Hoy se pueden crear redes de materiales complejos, con texturas que controlan el color, la dirección de los normales, la especularidad, la rugosidad, la transmisión de luz, etc.

Aún así, los materiales que se usan en el renderizado offline son más complejos. Se pueden realizar simulaciones exactas de fenómenos de luz como la dispersión y caústicas, y reflecciones con trazado de rayos (raytracing). En los motores modernos no se puede hacer una simulación de materiales exacta, pero se pueden falsear aproximaciones.

Simulaciones

La física simulada en producciones offline siempre será más precisa que la simulada en tiempo real. Hay fenómenos que aún no se pueden simular correctamente en tiempo real, así que se usan aproximaciones, o simplemente se evitan.

Para las colisiones entre objetos, es muy costoso hacer una simulación precisa de cada punto de un modelo chocando contra otro. Se usan modelos de colisión simplificados, invisibles al renderizado, para simular de forma más barata. No son siempre precisos, pero para secuencias con acción rápida son más que suficientes.

Simular ropa es difícil tanto para producciones offline como para tiempo real. La física del movimiento de una tela es muy compleja, y se tiene que calcular en cada punto de una prenda. Usualmente las producciones offline usan plugins externos para simular ropa, y no es raro que cada estudio use una solución propietaria. En videojuegos, usando PhysX se han logrado simulaciones aproximadas, con modelos de poco poligonaje (pero densos de todas formas). La simulación de ropa en tiempo real no es algo que se use con frecuencia, por ahora.

Para simular y renderizar cabello, cada estudio posee una técnica propia. Por la gran cantidad de elementos en el cabello humano (miles de pelos individuales), es muy difícil y prácticamente imposible tener una simulación exacta en tiempo real. Usualmente se usan “tarjetas” o tiras de triángulos renderizados con texturas transparentes, que simulan una cantidad mayor de pelos individuales. Usualmente son estáticas, y pueden presentar problemas por las múltiples capas de transparencia sobrepuestas. No es raro entonces, ver que muchos protagonistas de videojuegos son calvos o de pelo corto.

Limitaciones

El Z-sorting y el z-fighting son artefactos del renderizado en tiempo real. Como no se pueden procesar datos muy exactos, ocurren pequeños problemas donde el renderizador no sabe qué mostrar. El z-sorting tiene que ver con las capas de polígonos transparentes: si hay muchas capas una sobre otra el motor no sabe cuál está adelante y cuál está atrás, y se confunde. El z-fighting es cuando dos polígonos comparten un plano. El efecto visual es de que ambos planos están “existiendo” en el mismo lugar físico, y se pelean por cuál es renderizado en cada fotograma. Existen técnicas para minimizar estas limitaciones, pero por ahora no hay cómo evitarlas.