Polls

Afectará la crisis a los videojuegos?
 
Inicio arrow Noticias arrow Ver Todas arrow Papers arrow Future-Proof Games with Real-Time Tessellation
Future-Proof Games with Real-Time Tessellation PDF Print E-mail
Written by Javier Loureiro   
Wednesday, 26 March 2008

 

 Vaya, hacia unos días que no comentaba cosas nuevas por aquí (es lo que tiene la semana santa)

 Hoy voy a hablar de una charla de ATI en el gdc sobre displacement . El titulo de la charla hace referencia a teselar en tiempo real (esto es, generar triangulos a partir de un proceso matematico). Pero hay cosas que merecen la pena destacar.

 Lo interesante es que hace una comparacion del mundo de la animación y de los videojugos. Los mapas de desplazamiento, y el rigging,  son partes fundamentales en una producción real. Las escenas pueden llevar facilmente más de 30 millones de poligonos enviados a render, y los personajes pueden llevar literalmente cientos de controles de animacion/pesos de vertices, etc

La tendencia imparable es la de equiparar soluciones que ya están muy probadas en un pipeline de animación, a un pipeline de videojuegos. Y de eso va esta presentacion. Veremos cómo se aplicar el modelado basado en subdivision a un videojuego.

A la hora de aplicar subdivisión, hay que mirar algunas cosas en el pipe del juego. La animación suele ser aplicada a la malla de baja poligonización, y eso puede crear problemas cuando, tras aplicar la animación, generamos la subdivisión. Eso pasa en la animación normalmente, y por supuesto, ocurre en los videojuegos que comienzan a usar este tipo de algoritmos.

El otro problema es el de las coordenadas UV de la malla teselada. No es sólo generar una nueva geometría, también debemos de preservar las uv´s y toda la información necesaria. Aqui se va mucho trabajo en que los cálculos sean correctos, y no tengamos cortes bruscos. Hay una parte matemática seria en cuanto a las bases de espacio parametrico, de espacio baricentrico, etc. Si vais a programar algo de subdivisión, debeis de tener todo esto muy claro.

 El pipe que propone es el de pasar de la malla en baja resolución, a una malla teselada segun nuestros parámetros (cercania a la cámara, tipo de render, etc), y despues aplicar el vertex shader para desplazar los vértices. Esto, comparado al algoritmo de renderman, tiene un coste grande: tenemos que teselar toda la malla, con el gasto de memoria asociado. Pero al menos funciona.

 Otra cosa que propone es teselar despues de la animación, aplicando algoritmos de espacio de pantalla. Esto es, teleselar solo lo que mire a pantalla y cosas similares. Este tema es obio porque si sabemos qué es lo que se va a ver, pues podemos reducir la resolución del triangulo más pequeño. Por ejemplo, si tenemos una textura para darle relieve a los labios, lo normal es que tengamos que teselar muchísimo los labios para conseguir ese detalle. Si los labios están lejos, o simplemente no se vana  ver, podemos aprovechar eso para no teselar esa zona tanto, acelerando la generación de la malla. En general, podemos dividir la geometria en zonas de teselado, pero hay que trabajar con el artista para que esa información sea util. Si no, tendremos qeu teselar todo el personaje a la resolución del detalle más pequeño (esto es, lo suficiente para ver los detalles de los labios) lo que nos puede generar una cantidad infinita de triangulos.

Un tema importante es que debemos de soportar la misma teselación que el programa 3D, porque si no, los artistas estarán dando palos de ciego. La subdivisión cambia bastante con el algoritmo y los parámetros que configuremos... y los modeladores no tienen ganas de perder el tiempo ajustando algo que ndespues no se va a a ver.

 Despues viene el tema de la iluminación. Tema peliagudo porque el desplazamiento nos mete una nuevas normales, y un nuevo entorno de autosombreado (vease parallax mapping y demás técnicas). En este tema la presentación tampoco nos dice mucho, simplemente nos muestra algunos shaders para su estudio.

 La gran ventaja del displacement es que por debajo las mallas suelen ser de baja poligonización. Ahorramos mucho trabajo de animación si trabajamos con la malla sin teselar. Además, los buenos artistas se manejan muy bien con programas como zbrush para sacar detalle, y eso siempre nos va a dar un extra de realismo en el personaje final.

 

 

 

Comentarios
Añadir nuevoBuscar
Juan Ramos   | 87.220.127.xxx | 2008-03-26 19:28:40
Me parece genial, además, utilizando splines puedes enviar realmente muy pocos datos a la GPU ahorrando ancho de banda y transformaciones sobre cada uno de los vértices (ya que se pueden transformar los puntos de control del spline y luego obtener su malla). Además, los B-splines son invariantes en transformaciones cónicas p.e. proyecciones de cámara, propiedad a tener en cuenta. Es una charla que viene a corroborar la convergencia cine-videojuegos. Yo por mi parte estoy enfrascado en añadir musculatura a personajes de videojuegos en real time, de momento estoy obteniendo resultados satisfactorios y los parámetros del músculo son bastante flexibles para poder crear músculos con diferentes formas. Os contaré mas detalles cuando acabe.
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image
Por favor introduce el código anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.



menéameDigg!Del.icio.us!Google!Technorati!Yahoo!
Last Updated ( Wednesday, 26 March 2008 )
 
< Prev   Next >

Lista de Correo

visita la lista de correo de codepixel. Es una lista abierta, asi que podrás subscribirte y preguntar tus dudas de programación, compartir tus opiniones, aportar ideas, y formar parte de la comunidad codepixelera.