martes, 2 de septiembre de 2014

GET STARTED IN 3D (THE FUNDAMENTALS OF USING UV)

LOS FUNDAMENTOS DEL USO DE MAPAS UV


¿Qué son los UV?

Los UV son dos coordenadas que se asignan a cada uno de los vértices de un modelo. Así como un vértice tiene tres coordenadas X, Y y Z, referentes a su posición en el espacio, también tienen dos coordenadas más que determinan su posición en un plano bidimensional que representa la textura. Se puede pensar en los UV como puntos escondidos que solo pueden manipularse en un espacio 2D.

A diferencia de los vértices, los UV pueden estar separados de sus caras, lo que permite crear patrones para aplicar las texturas luego.
¿Para qué sirven los UV?
Los UV determinan cómo va a proyectarse una textura sobre el modelo. Al crear primitivos como cubos, cilindros y esferas, estos vienen con sus UVs predefinidas. Si se aplica una textura directamente sobre un primitivo, no va a haber gran deformación de la imagen. Por el contrario, con un modelo complejo, los UV tienen que estar definidos manualmente, para evitar el stretching de la textura. Para eso se tienen que crear shells de uvs, que representen un lado del modelo a la vez.
El proceso

Para crear los UVs de un modelo en Maya, primero hay que tener un modelo listo y aplicarle una textura. Al asignar UVs es mejor usar una imagen cuadriculada de guía como la que muestro en el ejemplo, así es evidente cuando una textura está deformada por una mala proyección. Si no tienes una imagen de referencia, usa el mapa procedural checkers de Maya. Recuerda activar la vista texturizada en Maya para ver los resultados.
Primero abre la ventana de edición de UVs (Window  UV Texture Editor) para que veas los UV actuales del modelo. Seguramente sea un enrredo de líneas, pero al fondo se verá la imagen de tu textura. Esta área cuadriculada es el territorio UV. Todos los UV que se encuentren dentro del rango 0 a 1 tanto vertical como horizontalmente serán válidos. Más allá de ese rango la textura se empieza a repetir. Esto es útil para crear modelos que usen tiling, pero no nos sirve mucho por ahora. Prueba mover algunos puntos en el área UV y fíjate como va cambiando la proyección de la textura sobre el modelo.
Si quieres empezar con un lienzo en blanco, en la ventana del editor de Uvs selecciona Polygons Delete UVs. El modelo sin textura quedará con un shading especial, para llamar la atención de que las caras no tienen UVs asignadas.
Ahora, en la vista 3D, selecciona todas las caras que representen un área más o menos plana, y ve a Create UVs Planar Mapping Opciones. En Fit Projection To déjalo en Best Fit, y en Project From, déjalo en Camera. Con esto creas una proyección de la textura sobre las caras seleccionadas y les asignas los UVs correspondientes. Verás el manipulador de la proyección en la vista 3D. Si lo mueves, puedes afectar la manera en que se proyecta la textura.
Por ahora no hagas nada y abre el Attribute Editor. Estará el nodo PolyPlanarProjN, y ahí estarán los atributos de esa proyección. Puedes ajustar el origen, juega con la rotación de la proyección y ve viendo los resultados en tiempo real en las vistas 3D y en el editor de UVs. Uno de los objetivos de los UVs es que las texturas no se deformen, por lo tanto debe haber una relación lo más cercana posible a 1:1 entre el área de las caras seleccionadas y el área de las caras en el editor de UVs. Obviamente con modelos orgánicos esto es difícil de conseguir, pero imagina que estás envolviendo el modelo con la textura, y realiza los cortes adecuadamente. Para asegurarte de mantener las proporciones de los UVs para todo el modelo, escribe un número en ProjectionWidth y ProjectionHeight y mantenlo de ahora en adelante.
Y lo repito porque es importante: siempre mantén el mismo número para que todas las proyecciones sean del mismo tamaño.
Con modelos orgánicos es difícil crear proyecciones satisfactorias. Por un lado, puedes crear shells que cubran gran parte del modelo, pero la textura quedará deformada según el ángulo de la proyección, o por otro lado, puedes crear shells pequeños, que no deformarán la textura pero dejarán muchos seams visibles. Una técnica es recordar cómo están construídos los muñecos de peluche, es la misma idea: envolver un objeto tridimensional con un plano bidimensional. Imagina que desarmas un oso de peluche y estiras las piezas de las que está compuesto, así debería verse un mapa UV. En zonas complejas, como la cabeza de un personaje, hay que hacer un compromiso entre la facilidad para editar la textura y el grado de deformación que tendrá. Usualmente yo uso un mapeado cilíndrico para envolver rostros. La mayor parte de la cara queda bien, excepto la parte inferior de la mandíbula, pero es una zona relativamente poco visible, así que no es tan grave que la textura se deforme ahí.
El problema de los seams

Los seams son los bordes de cada shell de un modelo, y son problemáticos porque es difícil esconderlos al pintar una textura.
Hay diferentes maneras de solucionar estos problemas, pero la principal es evitar crear seams en zonas muy visibles del modelo. Es mejor hacer las divisiones en lugares poco accesibles, como la parte interior de las piernas, la parte inferior de los brazos, etc. En otro tutorial enseñaré cómo librarse de los seams de otra forma.
 Si trabajas con normal maps, es indispensable que los seams estén más escondidos aún, ya que por la dirección de los vectores de los normales, los seams se hacen mucho más notorios.
El Layout

Por ahora tienes múltiples shells, todas de una escala uniforme. Ahora hay que ordenarlas dentro del rango 0,1 de las coordenadas UV. La idea es utilizar la mayor parte de la textura posible, así que hay que ordenar las shells como un rompecabeza, tratando de no desperdiciar espacio en la textura. Para empezar, selecciona todos los shells y pulsa el botón LAYOUT. Los shells quedarán bastante bien ordenados en el espacio UV, pero quizás no sea óptimo. Recuerda que hasta este minuto todos los shells tienen una escala uniforme; si quieres puedes darle más prioridad en el layout (y por lo tanto, mayor resolución de pixeles de textura) a las partes más importantes del modelo. Por ejemplo, si estás haciendo un personaje, le darías más espacio a la cara y menos espacio a los pies. Con algo de práctica y paciencia, puedes hacer mapeados UV bastante eficientes.
En mi experiencia, al trabajar con normal maps es mejor mantener una escala uniforme.
Exportación
Ahora que el mapeado UV está listo, puede ser exportado como un template sobre el que puedes pintar la textura. Selecciona el modelo, en la ventana de edición de UVs elige la opción UV Snapshot, y en las opciones elige el formato de imagen y la resolución a la que la vas a exportar. Yo usualmente exporto al doble de la resolución de la textura que voy a trabajar, para tener líneas más limpias (es importante si tu modelo tiene muchos polígonos). Luego presiona Export (la imagen quedará en la carpeta Images de tu proyecto de Maya). En Photoshop, añade la imagen como una capa en modo Screen, y pinta en las capas inferiores usándola como guía


Referencias: