etereaetereaaboutcontactworkstrainingresourceseterealinksmoreetereashop
Home > Training > Algunos conceptos básicos de texturizado y postproducción
ENGLISH  /  ESPAÑOL
Etérea Workshops Banner

Algunos conceptos basicos de texturizado y postproduccion
Por favor: no hagas un copiar-pegar de este material en tu página, weblog o foro sin mi permiso. En su lugar puedes incluir un link a esta página.

AVISO: este es un pequeño tutorial donde explico las bases de algunos conceptos de texturizado y postproducción que he venido utilizando en mis trabajos en los últimos años.

No se trata de soluciones del tipo “apriete-usted-este-botón-y-verá-qué-bonito-le-queda”, sino que exigen por parte del infografista una actitud de trabajo y dedicación extras. Pero casi puedo garantizar que cuando se llegan a dominar estas técnicas, el esfuerzo se verá recompensado con los resultados y con los tiempos de render.

Yo no he inventado prácticamente nada de lo que aquí se explica, sino que se trata de técnicas muy básicas usadas en el cine por los estudios de CGI desde hace tiempo, especialmente los conceptos de texturizado y renderizado multicapa.

En definitiva: si quieres o buscas soluciones para obtener un resultado bonito con sólo apretar un botón o usar un material predefinido, entonces éste no es un tutorial adecuado para tí ;-)

Cristóbal Vila, octubre 2006

A la derecha tenemos el modelo de un popular y entretenido juego conocido como “Solitario Peg” que consiste en una base de madera con 33 huequitos y 32 bolitas de piedra, de tal modo que el hueco central queda libre. Este es un modelo muy sencillo que realicé para un antiguo trabajo —“Bodegón Bereber”— y vamos a utilizarlo como campo de pruebas para explicar algunos conceptos, técnicas y trucos de texturizado y postproducción.

A mi siempre me gusta decir que hay que dividir los grandes problemas en pequeños problemas, de manera que resulte mucho más fácil abordarlos y encontrar una solución. El de la derecha no es ni muchísimo menos un problema o proyecto complicado, al contrario, se trata de una pieza muy sencilla. Pero la he elegido porque creo que, precisamente por eso, se pueden entender mejor algunos conceptos básicos e importantes que luego podremos aplicar en proyectos mucho más complejos.

El primer detalle que quisiera hacer notar es que la pieza de madera que hace de tablero está dividida —modelada— en dos partes, así tenemos un total de 3 objetos:
Modelo basico solitario
Parte central Anillo exterior Bolitas
Muchas veces nos rompemos la cabeza intentando resolver el acabado superficial de un objeto con una única textura —recurriendo en ocasiones a rebuscados métodos de proyecciones UV's— cuando resulta que la solución más simple es trocear nuestro objeto o modelarlo desde un principio en varias partes (aunque esté claro que se compone de una sóla pieza maciza como en este caso) para luego texturizarlo con proyecciones diferentes, según nos convenga.
Texturizado planar Texturizado esférico
En nuestro ejemplo utilizaremos una proyección planar para texturizar el cuerpo central de nuestro disco. Y por otro lado utilizaremos una sección de proyección esférica para aplicar la textura del borde curvado.
Modelo con las texturas “limpias”  De esta forma conseguiremos evitar la proyección vertical de las vetas de la madera sobre el canto curvado del anillo. De todos modos, cuidado, porque en ocasiones esa proyección precisamente puede resultar más que convincente, dependiendo de cómo se comporte volumétricamente nuestra textura (hemos de analizar cada situación particular y decidir qué nos conviene más).

Si tuviesemos que texturizar el tronco de un árbol seccionado de modo que en el corte quisiéramos ver los anillos y en el exterior la corteza, éste sería el método apropiado (aplicando mejor una proyección cilíndrica para la corteza). Nosotros hemos empleado la esférica en la pieza exterior porque parecía adaptarse mejor a la doble curvatura del borde.

Es resultado es un bonito disco de madera limpiamente texturizado.

¿Quizá demasiado limpio? ¿No os parece que está como recién salido de la caja?


La realidad es imperfecta

En el mundo real las cosas suelen tener ligeros desperfectos, rayaduras, sutiles cambios en diferentes características superficiales (rugosidades, relieves, cambios de brillo e incluso de saturación, etc). Vamos a ver de qué manera podemos darle más “vidilla” a esta pieza trabajando los diferentes canales de nuestro texturizado. Por regla general, casi todos los objetos muestran pequeñas perturbaciones en sus índices de especularidad, reflexión, bump… así que es cuestión de tocar cada uno de esos canales para introducir esos sutiles matices.

Veamos las diferentes texturas que he empleado para crear el shading de este modelo. Lo que aquí os muestro son versiones reducidas de esas imágenes. Me gusta usar texturas con la suficiente resolución como para que no se nos venga abajo la credibilidad del render final. Las imágenes originales tienen 2048 píxels de lado, pero aquí aparecen con sólo 400 píxels por cuestiones de espacio.
Textura original Máscara agujeros
1. Esta es la textura original para la madera utilizada en el disco. No nos tenemos que preocupar de hacer que sea “seamless” (repetitiva) porque de hecho nos va a cubrir la totalidad del disco. Podéis encontrar buenas texturas en la red, muchas de ellas gratuitas (www.mayang.com, www.animax.it, etc).   2. Teniendo el modelo como base creamos una máscara con los espacios ocupados por los agujeritos en la madera. Esto será útil para conseguir que el acabado superficial de la madera cambie donde está fresada: en la zona de los agujeros no habrá brillos, pues se hace más áspera y mate.
Textura con agujeros Bump
3. Utilizando la máscara de los circulitos negros hacemos que la saturación y el tono en las zonas donde la madera está fresada cambie. Al mismo tiempo también hemos hecho que el fondo de cada uno de esos agujeritos esté un poco oscurecido, empleando simples degradados concéntricos para cada uno.   4. A partir de la textura original, y utilizando su canal rojo como punto de partida, obtenemos un mapa que nos servirá para crear el bump (relieve) Hay que vigilar que no toda la superficie tenga variaciones de grises—no buscamos una madera totalmente rugosa—, por eso vemos que hay zonas con blanco puro: en ellas la madera será lisa.
Mapa de suciedad Mapa de suciedad
5. Este es un mapa de suciedad perteneciente a la colección “Surface Toolkit” de DVGarage. Una colección fabulosa: creo que son los mejores 99 dólares que me he gastado ;-)

La intención es usarlo como un recurso que simule ciertas rayaduras debidas al roce con otras superficies.
  6. Y otro mapa de suciedad, esta vez perteneciente a la colección “Water Damage”, también de DVGarage. Con este mapa vamos a simular el efecto producido por algún liguido que alguna vez haya podido caer encima de nuestro juego (esa taza de café derramada, o esa lata de coca-cola que nos ha jugado una mala pasada al abrirla…)
Mapa de suciedad Mapa de especularidad y reflexión
7. Y un tercero de la misma colección que el número 5. Todos estos mapas se pueden usar combinados o por separado para influir sobre el comportamiento especular o las variaciones de reflexión de la superficie. También podríamos haber fusionado muy sutilmente alguno de estos mapas con el de bump, para hacer que las propias rugosidades de la madera se vieran afectadas por alguna rayadura profunda…   8. Aquí vemos combinados los mapas 2, 5 y 7 para conseguir una imagen que emplearemos para controlar a un tiempo los niveles de especularidad y reflexión de nuestro disco. Lógicamente, donde tenemos los círculos negros la madera no brillará nada y en las otras zonas tendrá unos sutiles cambios de matices en el brillo.
A continuación vemos cómo va cambiando el comportamiento de la superficie conforme le vamos aplicando los diferentes mapas:
Superficie virgen Especular + Reflexión
Bump Bump + Especular + Reflexión
Cuando estoy controlando un determinado aspecto de la imagen me gusta mucho aislar el problema: si trato de afinar el parámetro que controla el bump prefiero no verme despistado por los otros aspectos de la imagen (el color, el brillo, la reflexión, etc). Por eso muchas veces desconecto el resto de las características superficiales y me concentro en ver cómo está quedando única y exclusivamente el relieve (bump) de la superficie. Hago lo mismo con los niveles de reflectividad, la transparencia… y por supuesto con muchos otros aspectos del proyecto (luces, composición de los elementos, movimiento…). Lo que he dicho al principio: aislar, reconocer y resolver pequeños problemas sin verse confundido por la complejidad del conjunto.



A continuación vemos la diferencia entre el disco de madera “virgen” y el que hemos trabajado. Podríamos tocar y exagerar mucho más algunos detalles: podría haber manchas de pintura, rayaduras más profundas, grietas en la madera, etc. Pero si os parece vamos a dejarlo así (lo que importa es que os quedéis con el concepto ;-)
Superficie limpia Superficie final


Las bolitas: texturizado procedural

Si para texturizar el disco de madera hemos empleado un conjunto de texturas bitmap, para conseguir el acabado superficial de las bolitas vamos a recurrir a los shaders. Y concretamente a uno que para mi resulta de los más útiles y sencillos de manejar: el FractalNoise. Supongo que en casi cualquier software 3D podéis emplear este tipo de texturizado procedural. La clave de su potencia está en utilizarlo en forma de capas, haciendo que en cada una introduzcamos un determinado nivel de detalle que contribuya a enriquecer el conjunto.

Veamos cómo podemos conseguir una textura final relativamente compleja utilizando exlusivamente este sencillo shader (en mi vieja ilustración “Escarabajo Joya” podéis encontrar una muestra de esto: la rama en el que se apoya el bichito está creada combinando muchas capas de FractalNoise. También resulta muy útil combinarlo con otras texturas —bitmap o procedurales— para obtener resultados de gran riqueza, como las uvas de “Canestra di Frutta”).
Primera capa de shading En nuestra primera capa de texturizado empleamos dos colores: un negro y un gris oscuro. Como la aplicación de este shader es volumétrica y su naturaleza fractal, el resultado obtenido no evidenciará ningún tipo de patrón repetitivo: es la gran ventaja de los shaders como FractalNoise.
Segunda capa de shading En nuestra segunda capa aplicamos un color óxido. El segundo color lo dejamos transparente, para que sigamos viendo lo que teníamos en nuestra anterior capa. Es interesante también jugar con los diferentes niveles de opacidad de cada capa, así como los modos de fusión, igual que en Photoshop (multiplicar, dividir, aclarar, etc).
Tercera capa de shading En la tercera capa enriquecemos cromáticamente el conjunto introduciendo un color quizá no tan “predecible”: el azul. Es curioso comprobar cómo ganan muchas superficies cuando introducimos un color que aparentemente no “debiera estar ahí”. Esto lo sabían muy bien los pintores impresionistas ;-)
Cuarta capa de shading Y para terminar velamos y damos profundidad al shading añadiendo un color más claro que el resto. Lo que hemos hecho en estas simples bolitas es pintar por capas, o por veladuras, como ya hacían los pintores flamencos de los siglos XV y XVI: en lugar de buscar el color final con una sola “pincelada”, vamos aplicando diferentes matices en varias capas, haciendo que se transparenten sutilmente para que el resultado adquiera mayor profundidad cromática.


Mejorando el resultado: la postproducción

Una vez que tenemos todos los elementos texturizados y hemos dado con otra bonita textura que nos sirva para el suelo, podemos renderizar el conjunto. El resultado lo tenemos aquí a la derecha. Evidentemente la imagen obtenida dependerá mucho de otros factores, como la iluminación que hayamos empleado o el motor de render. Al margen de esto, lo que es evidente es que la imagen es francamente mejorable. Veamos cuáles son sus principales puntos flacos y de qué modo podemos mejorarla sustancialmente:

— No existe sombra de contacto bajo el disco de madera.

— Las bolitas parecen no estar apoyadas, también echamos a faltar una sombra de contacto.

— La gama cromática de la imagen resulta pobre, un poco insulsa.

— No existe sensación de profundidad.

— Sabemos y vemos que es una imagen 3D, pero le falta credibilidad, pese a los trabajos sobre el texturizado. 
  Render virgen
 
Para solucionar el problema de las sombras de contacto podemos realizar un pase de iluminación global (o también podríamos emplear un ambient oclussion). A mi me gusta renderizarlo como un pase independiente, porque de esa manera puedo controlar con mucha más flexibilidad cómo se comporta en la postproducción.

Después esta capa podemos colocarla por encima de nuestro pase de color y jugar con los modos de fusión de Photoshop (o AfterEffects, Combustion, Shake… si hacemos animación). Si ulilizamos “Multiply” (Multiplicar) conseguiremos que las partes oscuras de nuestra GI oscurezcan la capa de color.

Usando “Overlay” (Superponer) haremos que las partes oscuras oscurezcan el pase de color y las partes más claras lo aclaren. Es lo que más me gusta utilizar, porque de alguna manera podemos “matar dos pájaros de un tiro” (y pensad que además podemos controlar el comportamiento tonal de este pase de GI con los niveles o las curvas de ajuste)
  Iluminación Global
 
Para poder recrear los efectos de la profundidad de campo y desenfocar la imagen en función de la distancia creamos un mapa de profundidad (Z-map). Eso se podría obtener directamente —muchos programas lo soportan—, pero a mi me gusta crearlo utilizando una niebla de profundidad, nuevamente para tener más control. El método en poco pasos:

1. Guardamos la escena con otro nombre.
2. Pintamos todos los objetos de blanco.
3. Le aplicamos a todo una luminancia máxima.
4. Creamos una niebla negra y controlamos el In y el Out.

Otra de las ventajas frente a los Z-map nativos es que en muchos casos no introducen antialiasing en el render. El método de la “niebla negra” sí ;-)
  Mapa de profundidad
 
Algo que no me gusta de los renders 3D es que los contornos de los objetos (los “edges”, en inglés) suelen resultar siempre excesivamente definidos, como “cortantes”.

Cuando vemos la fotografía de un objeto, aunque esté perfectamente enfocado, al fijarnos en los contornos y ampliar la imagen veremos que estos tienen un cierto suavizado. Algunos motores de render introducen un antialiasing muy bueno y suave, pero otros le confieren a los objetos un acabado excesivamente definido, “duro”.

Para tratar de corregir este problema podemos emplear un mapa de contornos (“edge map”). De tal modo que nos sirva de máscara de selección para introducir un ligero desenfoque en las siluetas de los objetos.
  Mapa de contornos
Para introducir el desenfoque característico de la profundidad de campo podemos utilizar el Lens Blur que viene con Photoshop CS. Este desenfoque es mucho más realista —más “fotográfico”— que el que podemos obtener con un simple desenfoque gausiano, y nos permite ajustar el grado de desenfoque en función del mapa de profundidad que habremos colocado en un canal del documento. Existen plugins de terceras partes con los que todavía podemos conseguir un resultado mucho más realista (Lenscare, DOF PRO,…) pero para la mayor parte de nuestras necesidades podremos salir del paso con el filtro de Photoshop:
Lens Blur Lens Blur
A continuación podemos ver cómo están organizadas las distintas capas en Photoshop para conseguir realizar una postproducción que no sea “destructiva”. Esta forma de trabajar resulta muy efectiva porque nos permite activar y desactivar ajustes corrigiendo y avanzando en nuestro trabajo de una forma más controlada:
Capas Capas
Fijaos en la diferencia entre el render virgen y la imagen obtenida en la postproducción:
Render virgen, sin postproducción Imagen final, con postproducción
RENDER VIRGEN, SIN POSTPRODUCCIÓN
IMAGEN FINAL, CON POSTPRODUCCIÓN
Imagen final
Alguno de estos refinamientos se podría haber introducido directamente en el render: podemos renderizar con el desenfoque de la profundidad de campo ya aplicado; podemos hacer que el render ya incluya la iluminación global; pero hacerlo de esta otra manera tiene grandes ventajas:

Tiempo: el desenfoque de profundidad calculado en el propio render suele llevar mucho más tiempo (dependiendo de los motores de render y los sistemas empleados para ese desenfoque) que el que podemos aplicar en la postproducción; y la iluminación global calculada como parte del render final también puede disparar los tiempos de render (especialmente si tenemos objetos transparentes o reflectivos).

Control: al tener todo por capas podemos controlar con gran efectividad y rapidez el resultado, permitiéndonos probar diferentes alternativas de un modo muy ágil: variamos la opacidad del pase GI, controlamos los valores tonales de ese pase mediante los niveles, podemos usar el mapa de profundidad para desenfocar el propio pase GI, podemos variar el foco haciendo que el punto de interés de la escena cambie, etc, etc.




Cristóbal Vila, Zaragoza - España, octubre 2006.


Espero que alguna de estas técnicas os pueda servir de ayuda en vuestros renders. Pero pensad que los trucos aquí expuestos deben ser sólo un punto de partida para seguir investigando, trabajando y poniendo en práctica vuestra imaginación ;-)


NOTA 1: He intentado ser lo más preciso y exacto posible, pero es probable que exista alguna incorrección en el texto. Si detectas algún error no dudes en hacermelo saber para proceder a su corrección.



Etérea Workshops Banner
Por favor: no hagas un copiar-pegar de este material en tu página, weblog o foro sin mi permiso. En su lugar puedes incluir un link a esta página.
All images copyright Cristóbal Vila

you are the visitor | eres el visitante