3/05/2011

Desplegado contraataca

Entonces, la elección y la ubicación de los seams es importante por dos razones.
Primera: Interrumpen la continuidad del dibujo en el espacio UV. Parece difícil pero es sencillo. Polígonos que están separados en el espacio UV están juntos en el espacio 3D. Si queremos que el dibujo sobre el modelo 3D sea continuo también, los píxeles  a cada lado de un seam titnen que ser iguales. Teniendo en cuenta que en el espacio UV están separados, eso dificulta las cosas.
La ubicación de los seams también es importante en cuanto al color del "stretch". Es recomendable que a cada lado de un seam haya el mismo color, verde, rojo o azul, ya que representan diferentes densidades de resolución de la textura dentro del modelo.
Por esas dos razones, los seams han de situarse en zonas poco visibles del personaje, hacerlos coincidir con costuras de la ropa y todas aquellas estrategias que os puedan ayudar a disimular su presencia.


















Las zonas marcadas con naranja son zonas con un alto contraste de "stretch" a cada lado del seam, sin embargo están situadas en zonas poco visibles.
El seam marcado en azul si que está situado en una zona potencialmente muy peligrosa porqué está situado en mitad de una superficie plana y sin ninguna escusa geométrica o decorativa. En estos seams es muy importante mantener el mismo color de "stretch" a cada lado del mismo.

Desplegado

Después de haber realizado el modelado en alta resolución, es posible que nuestra malla original (el nivel 0 de subdivisión) haya variado ligeramente ya que los cambios en la geometría que se realizan en cada nivel de subdivisión en un modelador de alta resolución (mudBox, ZBrush...) se propagan al resto de niveles que tenga el modelo. Hay que exportar entonces la malla del nivel 0 que, a partir de ahora, va a ser la malla de nuestro personaje.
Es entonces el momento de realizar el desplegado de las coordenadas de textura para poder pintar la superficie de los polígonos mediante texturas. Pero no sólo para poder pintar, sino también para poder extraer normalmaps y transferir así la información de alto detalle del modelo en alta resolución hacia el modelo de baja resolución.
Todos los entornos de modelado tradicional en 3D (XSI, Blender, Maya, 3DMax...) tienen herramientas de desplegado de texturas muy útiles sobretodo para el desplegado de objetos no orgánicos. Sin embargo, para el desplegado de superficies complejas y orgánicas como las de un personaje, prefiero utilizar un programa de software libre llamado RoadKill.


Su mecánica es bien sencilla. Importa modelos 3D en formato .OBJ. Una vez importados, ya sea en la vista 3D o en el espacio de textura, seleccionamos edges ("E") y los cortamos ("C"). El propio programa, a partir de esos edges seleccionados realizará el desplegado y lo ordenará en un espacio UV cuadrado. Dentro del menú "textures", además, podremos escoger "show  stretch" como sistema de visualización y ver así la eficacia del desplegado.




Las líneas rojas son los cortes, seams en inglés. Las zonas verdes son áreas de desplegado óptimo, aquellas en las que el polígono tiene la misma área en el modelo 3D que en el espacio UV. Las rojas son zonas en que el área en el espacio UV es más pequeña respecto al espacio 3D, por lo que le corresponderán menos píxeles por texel. Las azules lo mismo que las rojas pero al revés.

Modelando en alta resolución

Lo tenemos todo preparado para pasárnoslo bien. Ya que esta parte es divertida. Pocas consideraciones hay que tener en cuenta más que dejarse ir y hacerlo lo mejor posible. Sólo decir que hay que ir avanzando poco a poco. Nivel a nivel, modelando una malla que busca tener esa geometría. Luego, llegaremos a un nivel de subdivisión tal, tendrá tantos miles de polígonos nuestra malla que la fluidez de la mano al dibujar será parecida al acto de dibujar. Pero es importante llegar hasta ahí paso a paso. Modelando la geometría de bulto con cariño. No es buena idea exportar hacia un entrono de modelado en alta definición y empezar a subdividir la malla hasta  pasar de 5k a 1M de polígonos y a partir de ahí ponerse a modelar.
Paso a paso, nivel a nivel, es mi mejor consejo.




Otro buen consejo es el de organizar bien en capas el proceso de modelado. Casi cada autor que conozco utiliza su propio criterio. El mío es el de dejar aspectos como la textura de la piel, las venas o las apófisis de vertebras en capas distintas ya que luego, variando la opacidad de su capa, puedo potenciar o disminuir su efecto sobre el modelo de forma independiente. En Mudbox, la opacidad de la capa se representa en porcentaje, del 0 al 100, pero podemos darle valores superiores a 100 sin limitación alguna para potenciar todavía más la influencia de cada capa.

Acabando la retopología

Bueno, ahora sólo se trata de ir repitiendo los pasos anteriores para la cabeza y las manos, unir los elementos en el entorno de trabajo 3D que utilicemos y ya tendremos algo muy parecido a lo que podría ser la malla final de nuestro personaje.



Revisamos que la malla sea lo más limpia posible,  que el recuento poligonal del personaje no supere en más de un 5% el objetivo marcado (5% de 5000 = 5250) y ya ha llegado la hora de hacer un primer breafing. Mostrar el personaje a vuestros compañeros de trabajo. A vuestros amigos. A vuestra madre. Cuanto más alejada la opinión de un profesional 3D mejor. Es hora de  sacar las primeras impresiones de la reacción del público ante vuestra creación.
Seguramente llevamos unas cuantas horas trabajando sobre el personaje. Seguramente empezamos a estar un poco ansiosos por cerrar el modelo y poder decir que sí, que ya esta. Y, es cierto, lo que esperamos es que valoren nuestro trabajo y esfuerzo y poder arrancar elogios a la audiencia. Pero para eso no es el breafing. El breafing es para recoger ideas y, sobretodo, para recuperar un poco la perspectiva. Esa perspectiva que, al pasar tanto rato sobre el modelo, hemos ido perdiendo poco a poco al "enamorarnos"  sin querer, de aquellos aspectos de los que estamos especialmente orgullosos de nuestro trabajo.
Así que si durante este primer breafing, no os sentís un poco frustrados, es que a la gente que os está juzgado el modelo o no le interesa, o no tiene el criterio adecuado como para aportar nada en este punto de la producción.

En definitiva. Es el momento de volver a empezar a mirarse el personaje. El momento de desechar y rehacer todo lo que no es BUENO y modificar lo que si lo era para que sea MEJOR.




Para modificar y corregir el modelo, cada uno tiene que desarrollar el criterio y la intuición para decidir en que entorno de trabajo es más optimo y cómodo para realizar los cambios. Gracias a formatos como .OBJ o .FBX no hay ningún problema para migrar entre lo entornos de edición poligonal tradicional (XSI, Blender, Maya, 3DMax, etc...) como los de edición en alta resolución. Ambos ofrecen muchísimas herramientas y, sobretodo, dos mecánicas sujetas a sendos puntos de vista distintos. Así que... ustedes tendrán que aprender a decidir que es mejor para ustedes mismos.

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.

3/03/2011

Aproximación volumetrica

Ok, cuando tenemos nuestra aproximación proporcional en MudBox es hora de meterle caña a las herramientas de modelaje en alta definición y extraer una aproximación al personaje. Si subdividimos un par o tres de niveles la malla del personaje, tendremos más que suficientes polígonos como para deformarla a nuestro antojo.
Cuando subdividimos un nivel la resolución poligonal de nuestro modelo, multiplicamos x4 el número de polígonos de la maya
Sólo deciros que no os preocupéis por nada más que encontrar el personaje. Tampoco se trata de excederse en el detalle. Cosas como los granos de pus o las venas del personaje podemos dejarlo para mas adelante.

















Sólo trata de conseguir una aproximación volumétrica correcta del personaje. Si no subdividimos en exceso, seguiremos teniendo una malla los suficiente ligera como para, además, exportar el modelo subdividido a nuestro soft nativo (XSI, Maya, 3DMax, Blender...) y modificar de forma más sencilla algunos aspectos del personaje, p.ej.: las manos. Las manos del modelo de la fotografía se han escalado en XSI más fácilmente que en MudBox.

Aprovechar las virtudes de diferentes softwares para esquivar sus defectos, es una de las mejores estrategias a seguir ya que, de todos modos, hoy en día no es posible ni viable intentar solucionar todo el trabajo de desarrollo un personaje utilizando un único soft.

3/02/2011

Aproximación proporcional

Como no se trata de aprender a dibujar, no os voy a decir que hagáis el dibujo de un front y un right en papel, lo escaneéis y lo utilicéis como rostoscopia y empecéis a construir polígonos intentando reseguir las siluetas.
Os digo que recopiléis fotos y diseños al respecto, os hagáis una idea mental de lo que estáis buscando, la retengáis y busquéis una semilla de cuerpo humano.
La mayoría de softs vienen con una.
P.ej.: XSI
















P.ej.: Mudbox




















Lo único que necesitáis es que tenga un buen número de polígonos (con 10.000 puede bastar) para poder trabajarla con relativa comodidad ya que, ahora, se trata de deformarla hasta que encontremos las proporciones del personaje que buscamos sin tener que preocuparnos por la topología. En mi caso se trata de una especie de reminiscencia animal de un Orco.
Nota: topología es aquella palabra usada para hablar de la estructura poligonal de una malla.



Respecto a la pose del modelo, no soy partidario de de utilizar la típica pose del personaje erguido con las piernas estiradas y los brazos extendidos en forma de cruz. Personalmente me gusta adoptar una posición relajada para el modelo, con la mayoría de articulaciones flexionadas sobre la mitad de su recorrido.


















Para deformar los polígonos y conseguir así las proporciones adecuadas es muy útil construir una jerarquía de huesos muy sencilla, cuantos menos eslabones mejor.  Por lo que no es necesario utilizar dos cadenas de huesos para las piernas, una basta. Sólo los huesos destinados a deformar los brazos deben estar fuera del plano de simetría del personaje y necesitarán una cadena para cada uno.



















También puede ser útil manipular el modelo con las herramientas de deformación libre que posea el soft que utilicéis. En el caso de la foto anterior, se han usado para construir la chepa del personaje.


Una vez estemos aproximadamente satisfechos con las proporciones del personaje, congelamos la malla, eliminamos una mitad y simetrizamos la restante para asegurarnos que el modelo es completamente simétrico.
Finalmente exportamos la malla en OBJ para poder editarla en un programa de modelado en alta definición como MudBox o ZBrush donde realmente haremos surgir el personaje que estemos buscando de la malla  blanda y fofa con la que ahora contamos.


















No puedo evitarlo, me encanta cortar la cabeza de los modelos y trabajarla a parte.

WorkFlow de un personaje

Uno de los ciclos de trabajo más importantes, complejos e ilustrativos dentro del diseño 3D para aplicaciones en tiempo real es, posiblemente, la pipeLine aplicada a la creación de personajes. En ella se reúnen varias técnicas y conceptos que, por separado, son aplicables a la mayoría de retos que la producción en 3D nos presentará. Así que, a pesar de ser largo y en algunos momentos tedioso, creo que precisamente un personaje es el mejor vehículo para presentar las ideas que de aquí en adelante se irán mostrando.

Nota: estos tutoriales no pretenden explayarse en el uso de ningún software 3D en particular ni en los conceptos básicos de modelaje. Evidentemente, las explicaciones se apoyarán en el soft que uso habitualmente (XSI, Mudbox, RoadKill, photoshop, UDK...) pero la finalidad de los tutoriales se centra en que cualquier interesado pueda entender los conceptos principales relacionados con la buena producción de personajes y, en general, de assets para aplicaciones en RealTime.