3/04/2011

Retopología

Bueno, este es una de esos puntos cansinos dentro de toda dinámica de trabajo, y, como tal, es importante, relevante y trascendente. Ha llegado la hora de calcar. Calcar en 3D.
Para ello, importamos nuestra aproximación volumétrica a nuestro entorno de trabajo 3D habitual (XSI, Maya, Blender, 3DMax...). Seguramente utilizaremos el formato .OBJ, aunque MudBox también permite exportaciones en formato FBX.

















Si el software que estemos usando se vuelve inestable es que tenemos demasiados polígonos en pantalla. La solución pasa por tener menos, ya sea exportando desde el editor poligonal de alta resolución que estemos usando (MudBox, ZBrush...) un nivel de subdivisión inferior. También podemos usar una herramienta o programa de reducción poligonal sin conservar necesariamente la estructura de loops de la malla.




















Las mallas bien estructuradas están formadas por quads y tienen una estructura limpia de loops. Son ideales para extraer y recibir normalmaps, la iluminación por vertex siempre es mejor y son las únicas que pueden ofrecer un buen sistema de deformación por pesos (skeletal animmation). La única contrapartida es que suelen contener más triángulos y ser más pesadas.
En nuestro caso, podemos desestructurar la malla que tenemos para reducir su carga poligonal sin miedo, ya que la aproximación volumétrica que hemos construido es tan sólo una referencia que utilizaremos para realizar nuestra malla estructurada.
La mecánica es bien simple. Sólo se trata de aplicar conceptos de ingeniería inversa. Dentro de nuestro entorno de trabajo 3D (XSI, etc...) o en un soft especialista, utilizaremos una herramienta de crear polígonos manualmente y ubicaremos los vértices de cada cuad que construyamos sobre la superficie de la malla de la aproximación volumétrica que hemos importado. Imprescindible activar snap de superficie.




















Y como podéis ver se trata simplemente de ir calcando el volumen con una geometría que iremos creando quad a quad de la forma más estructurada y ordenada que sea posible.





















Consejos para XSI:
Crear un material con algo de transparencia para el malla aproximación volumétrica.
Utilizar M para ir reordenando cómodamente  la disposición de los loops sobre la malla.
En el panel Model->Modify->Deform encontraremos el comando "Shrink Wrap". Creados algunos quads, podemos utilizar este comando en la nueva malla, utilizando la aproximación volumétrica como referencia y escogiendo en las opciones contextuales la opción de "Closest to Surface" o "Closest to Surface (smoothed)". Luego será bueno subir el parametro desde el explorador hasta cualquier modulo superior al modeling para que podamos realizar "Freeze M" cuando queramos. De este modo, hagamos lo que hagamos, los puntos de la malla siempre estarán sobre la superficie de la malla aproximación volumétrica.
En los demás softwares se pueden usar los mismos consejos siguiendo otras rutas y comandos.



















En esta fase de la producción, lo más importante es conseguir esa malla bien estructurada que buscamos, con loops claros y con esa topología que haga surgir ya los principales relieves. También tenemos que tener en cuenta el numero de polígonos final del personaje que queremos. 5k polígonos para un personaje del montón para un motor gráfico nextGen es más que suficiente, así que el cuerpo, sin cabeza, sin manos ni complementos no debería superar los 2,5k polígonos.
Teniendo en cuenta estas consideraciones, para hacer una malla bien estructurada en lo primero que tenemos que pensar es en que los loops han de seguir las direcciones principales del cuerpo



















Además, algunas zonas merecen un tratamiento singular de la malla para que sobresalgan en relación al conjunto. Así la iluminación por vertex las contemplará antes siquiera de que el normal realice su influencia. Los codos, tobillos, rodillas, incluso la entrega del deltoides con el brazo suelen ser esas zonas, pero depende de cada modelo y su anatomía en particular.



















Las consideraciones tenidas en cuenta anteriormente hacen referencia principalmente a la geometría de la malla. Pero hay que sumarle otros principios para que además sea animable (deformación por huesos) y nos ofrezca siluetas suaves y creíbles.
La primera más obvia es que ahí donde hay una articulación es necesaria más definición poligonal. Tan simple como simplemente concentrar los loops paralelos al y hacia eje de rotación de la articulación. Rodillas, codos, tobillos, muñecas y caderas son los objetivos principales. La articulación del hombro es un poco más compleja ya que se trata de un eje flotante y orbital, así que lo único que podemos ofrecer es una malla ordenada y lo más limpia posible, concentrando los loops hacia la zona de la axila.



















Caundo digo que una malla debe de estar limpia me refiero a dos cosas principalmente. La primera es que cuando más cuadrada sea la proporción de cada quad, mejor. Y segundo y más importante: de cada vértice no deben de salir más de cinco edges. Esto mantiene la malla estable desde un punto de vista de modelado como de animación. Y se traduce en que primordialmente, nuestra malla estará compuesta quads, que sería la situación ideal. Sin embargo es imposible realizar una malla con buenos flows de loops y espacios singulares sin romper la cuadricula.






















Las zonas verdes son aquellas en las que la cuadricula de quads se rompe añadiendo otro quad, haciendo que cinco quads coincidan en un vértice; es la situación preferible. Los puntos amarillos son aquellos en los que cuatro quads y un tri se encuentran en un vértice; se utiliza porque no fuerza una carga poligonal tan alta ya que de esos puntos salen sólo 4+1 direcciones de quads en contrapartida de las 4+2 que surgen al juntar cinco quads en un sólo vértice. El punto rojo es un error fácilmente evitable. Estos puntos con seis edges en un sólo vértice han de evitarse sobretodo en las zonas articulares de la malla.


Después de tanta consideración y consejo, una manera de comprobar si nuestra malla es efectiva es subdividiéndola algunos niveles. Si la malla se suaviza bien sin generar puntos singulares y además vemos que ofrece un grado aceptable de definición volumétrica, entonces es una malla adecuada para nuestro personaje, tanto para animarlo como para modelarlo en alta resolución.






Fijarse como al subdividir la malla, esta nos ensaña con ligeros pinzamientos de la superficie, la mayoría de distorsiones que en ella se encuentran. También podemos ver como la nueva malla es una semilla perfecta y de baja resolución poligonal de la aproximación volumétrica que habíamos importado en un principio.

También se trata de un gran momento para incluir algunos detalles que en un principio se habían pasado por alto

Ok, suficiente por hoy.

P.D.: para este paso sólo hace falta construir una mitad de un personaje simétrico.

6 comentarios:

  1. Interesante tu entrada. Yo uso Blender pero hasta ahora mas que nada para modelado inorganico High Poly. Estoy interesado en hacer modelado organico e inorganico Low Poly como para video juegos pero mas que nada para poder tener un personaje lo mas perfecto posible sin recurrir a mucho poligono. De tu entrada puedo inferir que basicamente entonces puedo yo esculpir un personaje High Poly con todo y sus detalles para luego esos detalles convertirlos a textura y pasarlos a una malla Low Poly la cual se crea a partir de la copia del modelo en High. Ahora bien mis preguntas son las siguientes... Tanto el High Poly como el Low Poly deben de tener los cortes del Unwrap en los mismos Edges? o eso es indistinto?. requiero forzosamente copiar de vuelta el personaje? o puedo usar una versión previa del mismo en Low Poly?. Podrias (si no es mucha la molestia) hacer un tuto de como pasar malla High Poly a Low poly en Blender?. Mil gracias y disculpa las molestias

    ResponderEliminar
  2. Buenas,
    en cuanto a tu pregunta sobre los seams, que sepas que el modelo en alta no tiene pq estar desplegado. Sólo el modelo en baja tiene que tener proyección de textura para absorber la complejidad geométrica del modelo en alta y guardarla en espacio textura.
    Si el modelo en alta tiene desplegado y además lo has pintado con programas como Z-Brush o Mudbox, podrás transferir la información de píxel al modelo en baja aunque los desplegados de ambos modelos no tengan nada en común.

    ResponderEliminar
  3. en cuanto a la creación del modelo para esculpir en alta resolución:
    en el workflow que presento en este blog, propongo empezar directamente con un modelado en alta. Si usas Z-Brush, 3Dcoat o Sculptris (programas basados en voxels) no necesitas ninguna malla poligonal para empezar a modelar. Con mudBox, o el entorno de modelado HP de Blender, necesitas partir de una malla, lo que implica que la libertad creativa se ve condicionada. Por ejemplo:
    Estas modelando un personaje. Te emocionas y empiezas a trabajar a fondo la musculatura. Llevas unas horas en él y, a pesar de que estás satisfecho con el resultado, por cualquier motivo ya sea por que tienes un jefe volátil y creativo o porqué tu mismo eres así, decides que quieres que tenga 4 brazos. O que le faltan unos buenos cuernos de minotauro o, lo que sea. La estructura de loops original, al no estar pensada para desarrollar esa geometría, no te permitirá crear estos nuevos elementos sin perder una sustancial cuota de resolución poligonal. Y si subdividimos para obtener más polígonos, por un lado tendremos una malla excesivamente densa para otra más bien pobre.
    Pero resumiendo, la respuesta es si. Se puede desarrollar un personaje en baja, subdibidirlo y esculpirlo en alta, para luego proyectar los normalMaps sobre la versión en baja. Eso sí, el concepto de diseño del personaje no aceptará cambios, por lo que hablamos pues de un sistema eminentemente eficaz pero poco flexible.

    ResponderEliminar
    Respuestas
    1. Pues se agradece muchisimo tu respuesta. Yo en lo personal uso Blender x consumir muchisimo menos recursos que 3d max. Eh usado Z-brush y si bien me parece una muy buena herramienta el pagar la pasta que cuesta no me lo permite mi bolsillo.por otro lado soy de la vieja escuela por lo de estar modelando directamente desde malla y luego hacer sculpt. Solo que nunca he bajado mis trabajos y si deseo hacer animacion con alguno me toma la vida. Solo deseo que Blender tenga la capacidad de pintado de texturas en proyeccion. Eso que el poser Zbrush y mudbox hacen.

      Eliminar
    2. Con respecto a pasar la informacion del high poly al low. Pues no se como se hace. He buscado y lo e intentado pero no lo eh logrado. En fin seguire buscando. Mas se agradece tu tiempo. Saludos y exitos

      Eliminar
  4. gracias por el apoyo.
    A mi la herramienta que más me gusta de las que he probado es, por encima del resto XSI/sofimage

    ResponderEliminar