Si buscas a lo largo y ancho de los posts que he escrito en este blog, encontrarás varias entradas sobre trabajo "Linear Workflow" en las diferentes aplicaciones que utilizo en mi día a día.
A raíz de una pregunta que me han hecho en twitter, aprovecho para dejar un ejemplo muy sencillo y directo, que espero sirva como medida aclaratoria.

Pregunta: Hola @xuanprada , ¿Una textura PTEX 16bit float necesita corrección de gamma en un workflow linear? Muchísimas gracias!!

Respuesta: No. Si es float image 1.0 ya viene linearizada.

Una imagen vale mas que mil palabras, así que aquí dejo algunos ejemplos gráficos.
Si los inputs son imágenes floating point (hdr, exr, 16bit, 32bit, etc) no hace falta corregirles el gamma. Si los inputs son imagenes sRGB con corrección de gamma "bakeada" si hace falta corregirles el gamma en shading, para que no se le aplique la misma información dos veces.

  • Sirva este diagrama como ejemplo.
  • En este sencillo ejemplo, tengo en Nuke la misma imagen en dos nodos diferentes. La imagen original es un .hdr 32bit floating point. He hecho un crop y la he salvado a dos archivos diferentes, uno 32bit .exr (linear) y otro 8bit .tif (sRGB).
  • Ambas las visualizamos en un espacio de color sRGB gamma 2.2 y se ven exactamente igual.
  • Cargo las dos imágenes en Maya, utilizando dos shaders diferentes de VRay.
  • Si aplico cada uno de los shaders a dos planos diferentes y lanzo un render obtengo lo siguiente: La textura linear (1.0) funciona bien, y la textura sRGB (2.2) no. ¿Porqué? Pues porque la textura sRGB tiene una doble corrección de gamma, la propia "bakeada" mas la que le aplica tu monitor (sRGB 2.2)
  • Para que la textura sRGB se vea como debería verse, es necesario corregirle el gamma. Para ello hay que utilizar un nodo gamma correction con valor 4.55 (1/2.2)
  • Si renderizamos de nuevo, todo funciona correctamente.

Se que en algunas ocasiones, puede resultar un tanto complicado hacer que los desplazamientos esculpidos en Zbrush funcionen correctamente en un software 3D.

Puede que los detalles no se vean exactamente igual, que la calidad del desplazamiento no sea la esperada, y un largo etcétera de problemas.

He grabado un vídeo tutorial donde explico los diferentes tipos de desplazamientos que nos podemos encontrar hoy en día.
Como exportar correctamente los mapas de desplazamiento desde un software de esculpido como Zbrush.
Y finalmente, como trabajar en Maya con Vray 2.0 para que el desplazamiento funcione exactamente igual que en Zbrush.

Además de eso, también explico como re-proyectar detalle en Zbrush desde un modelo esculpido a un modelo de producción, listo para render.
Como realizar de forma muy breve UVs en UV Layout.
Y finalmente, todo el proceso de exportación de mapas de 16 bits, 32 bits, vector displacement, y su utilización en Maya y Vray.

Espero que os sirva y podáis aplicarlo en vuestros pipelines personales.
Cualquier duda o sugerencia, dejad un comentario.

Este post es una traducción del original escrito en Mayo del 2012 en el blog de Xuan Prada.

Cuando trabajamos con linear workflow y entornos HDRI, no importa el paquete 3D o el motor de render, siempre resulta difícil mantener la consistencia entre texturas y backplates. En ocasiones son demasiado oscuras, o lavadas, etc.

El problema generalmente viene dado porque las texturas son multiplicadas por la iluminación que viene del HDRI, y esa información de más necesita ser compensada de alguna forma.
Estamos añadiendo información a las texturas que ya se encuentra en ellas, por lo que debemos restar esa información proporcionada por el HDRI.
Este proceso, se llama normalizar las texturas.

Aquí abajo dejo una forma sencilla de solucionar este problema.

  • Para empezar crea un set-up image based lighting.
  • Utiliza un plano con un material mia_material_x_passes completamente blanco, sin ningún tipo de reflexión.
  • Lanza un render y configúralo como linear.
  • Crea otro material mia_material_x_passes con una textura con el gamma corregido, y asígnalo al plano.
  • Estoy utilizando este mapa de textura.
  • Si renderizas en este punto, te darás cuenta de que la textura se ve lavada. Esto ocurre porque esta siendo multiplicada por la información lumínica de la escena.

Para arreglar esto:

  • Aplica de nuevo el shader blanco al plano.
  • Haz un bake de la información lumínica.
  • Ahora tenemos que dividir la información de color de la textura por la información lumínica del entorno, esto nos dará el color bruto o RAW.
  • Conecta la textura con su gamma corregido al input 1 del nodo multiply/divide.
  • Conecta al textura bakeada .hdr al input 2 del nodo multiply/divide.
  • Pon la operacion como divide.
  • Renderiza de nuevo y ahora debería de verse correctamente.

Este post es una traducción del original escrito en Febrero del 2013 en el blog de Xuan Prada.

He grabado un video tutorial donde muestro el proceso que utilizo para normalizar texturas en Softimage, fácilmente aplicable a cualquier otro software.

Este post es una traducción del original escrito en Febrero del 2013 en el blog de Xuan Prada.

Siempre es un poco complicado hacer funcionar a la perfección los desplazamientos de Zbrush en los diferentes motores de render.
Si has cambiado recientemente de Mental Ray a Vray, como es mi caso, probablemente necesites algunos tips para poder renderizar tus displacements con todo su potencial.

He escrito algunas lineas aquí abajo para mostrar como hacer esto.

  • Carga tu displacement de 16bits en el Hypershade.
  • Arrástralo al slot displacement en el shading group attributes.
  • Maya creará de forma automática un nodo displacement en el Hypershade. no necesitas tocar nada ahí.
  • Selecciona la geometría de tu asset y añade un Vray extra attribute para controlar las subdivisiones y las propiedades de displacement.
  • Si has exportado tu displacement desde Zbrush con la opción subdividing UVs, deberías de seleccionar esta opción para el render. Generalmente lo harás así.
  • Edge length y Max subdivisions son los parámetros más importantes. Juega con ellos hasta obtener un resultado que te guste.
  • Displacement amount es la fuerza del displacement.
  • Displacement shit debería de ser un valor la mitad en negativo del valor utilizado en displacement amount. Esto solo si utilizas displacements 16 bits.
  • Si utilizas displacements de 32 bits el displacement shift es siempre cero.
  • Además, con displacements de 32 bits también necesitas añadir un Vray attribute llamado allow negative values, para que tus mapas no seas clampeados.
  • Render comprobando que el displacement se vea igual que en Zbrush.
  • Mapas de displacement utilizados en este ejemplo.

Este post es una traducción del original escrito en Febrero del 2013 en el blog de Xuan Prada.

Esto es una simple prueba de las muchas que he estado realizando con el sub surface scattering de Vray. Mi intención es hacer look-dev realista de piel humana.
Tras varias pruebas creo que se puede hacer una piel que funcione bastante bien de forma rápida, sencilla y barata.

El raytraced solid scatter funciona realmente bien, aunque es cierto que es bastante caro de render con modelos complejos.
Postearé más pruebas pronto.

Para conseguir mejores resultados, o al menos, para tener más control, me gusta combinar el SSS shader con un Vray material, que tiene una mejor solución para el specular y la reflexión.
Con este método podemos controlar la reflexión mediante BRDF en lugar de con el pobre control de specular del SSS shader.