Continuando con mis tips&tricks de Modo, cuento en este post como utilizar de forma adecuada vector displacement extraidos desde Mudbox en Modo.

  • Una vez hayas terminado tu sculpt en Mudbox, asegúrate de tener el layer stack lo más limpio posible para agilizar el proceso de extracción.
  • En las opciones de extracción del displacement, simplemente selecciona el modelo de alta y el modelo de baja resolución.
  • Como vector space, selecciona Absolute si tu objeto es inanimado (props, environments) o Relative si tu objeto se va a deformar (personajes).
  • Siempre que utilices vector displacement estaremos hablando de mapas de 32 bits.
  • Exporta el mapa como EXR 32 bits.
  • Antes de llevar el mapa a un software 3D, conviene chequearlo en una aplicación tipo Nuke.
  • Una vez en Modo, selecciona la opción Linear UVs en las propiedades de geometría de tu asset y el nivel de subdivisión en render.
  • Aplica un nuevo shader al asset.
  • Añade un input de textura con el mapa vector displacement y pon el effect como Displacement.
  • El Low and High Value deberían estar en 0% y 100% respectivamente.
  • Se previsualizará el displacement en viewport.

Asegúrate que el gamma de la textura es 1.0 Recuerda que los mapas de displacement scalar 32 bits no necesitan ser corregidos trabajando con linear workflow.

  • En las opciones del shader, bajo surface normal, tienes el parametro Displacement Distante. Como norma general 1m debería de darte el mismo resultado que en Mudbox.
  • En las opciones de render puedes controlar la calidad del displacement (equivalente a shading rate de RenderMan).
  • 1.0 es un buen parámetro, de ahí para abajo incrementarás demasiado los tiempos de render.
  • Lanza un render test y todo debería funcionar como en Mudbox.

Otro de esos pasos obligatorios cuando intentas trabajar con un nuevo software, es como no, utilizar displacement maps extraídos desde Zbrush.
No hay proyecto de vfx que no los utilice, así que como dicen los ingleses, "it's a must".

Dejo aquí los pasos necesarios para utilizar con éxito este tipo de displacements en Modo.

  • En Zbrush, una vez has terminado de esculpir todos los detalles necesarios en tu modelo, con todas las capas que te interesen activadas, vete al nivel de subdivisión más bajo.
  • Vete al panel Morph Target, click en StoreMT e importa el modelo base que habías importado previamente en Zbrush para esculpir. Si has empezado desde cero en Zbrush en lugar de hacer este paso, simplemente exporta tu personaje en el nivel de subdivision mas bajo como .obj
  • Una vez creado el morph target con el modelo original, verás que este se muestra en viewport. Click en switch morph target para volver a tener activar tu modelo esculpido.
  • Exporta los mapas utilizando multi map exporter. Te recomiendo siempre 32 bits. (o vector displacement en el caso de que así lo necesites).
  • Échale un ojo a mis settings en la captura de pantalla. Lo único que tienes que tener en cuenta es el parámetro scale, que debería ser 1 e intensity que se calculará solo cuando utilices el botón get sale.
  • Chequea los mapas en Nuke y corrige cualquier imperfección que puedas encontrar.
  • Una vez en Modo, importa el asset original, vete al item y activa linear uvs y tantas subdivisiones en render como necesites.
  • Asigna un nuevo shader al asset (tecla m), añade un nuevo texture layer con la textura de displacement y configúralo como displacement effect.
  • Low value y high value deberían ser 0 y 100 respectivamente. Estos valores corresponden al mid-mapping.
  • En las opciones de gamma de la textura, asegúrate de que el valor es 1.0 estamos trabajando en linear workflow y los mapas de desplazamiento scalar no se corrigen.
  • En las opciones del shader, bajo surface normal, utiliza 1m como valor en el parámetro displacement distance. Si trabajas en 32bits este valor debería ser un estandard. (no es oficial, pero me ha funcionado siempre).
  • Finalmente, en las opciones de render, juega con el displacement rate para conseguir mayor calidad. Cuidado porque aumenta drásticamente los tiempos de render. Parámetros entre 0.5 a 1 son bienvenidos. Más abajo de eso, solo para fine displacement para primeros planos. Este parámetro es similar al shading rate de RenderMan.
  • Render para chequear el resultado des displacement.

Segunda entrada con tips sobre mi método de trabajo en Modo (el cual estoy aprendiendo a marchas forzadas).
Trabajar con multi UDIM es algo básico, del día a día. Me ha resultado un tanto tedioso hacer el setup en Modo, por aquello del shader tree, que no me gusta demasiado (muy lento).

Me resulta extraño que no haya un automatismo para exportar desde Mari (para Maya si lo hay) ya que tanto Mari como Modo pertenecen a la misma compañia.

  • Chequeamos texturas e UDIMs en Mari.
  • Chequeamos el asset y UVs en Modo.
  • Cargamos las texturas en el image manager de Modo.
  • Creamos un nuevo material para el asset.
  • Añadimos cada una de las texturas correspondientes a cada UDIM como texture layers. Hay que añadirlas en orden descendente. Repetir para cada channel que se necesite.
  • En el texture locator de cada textura hay que cambiar el Horizontal Repeat y Vertical Repeat a Reset. (Esto es el equivalente a wrap texture de Softimage o Maya). También hay que hacer el offset de cada una de las texturas, que funciona en negativo hacia la derecha y arriba y positivo hacia la izquierda y abajo (al contrario que Softimage o Maya).
  • Y con esto ya está, multi UDIM funcionando a la perfección. Haz un test rápido para ver so todo esta en su sitio.

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.

Seguramente ya has experimentado este error unas cuantas veces cuando tratas de exportar tus mapas de displacement desde Zbrush.
Viene causado porque el proceso de extracción se come toda la memoria RAM de tu estación de trabajo.

Por desgracia es muy común cuando trabajamos con assets muy grandes.
La semana pasada sin ir mas lejos, cuando trabajaba en un asset de unos 40 UDIMs, este error empezó a darme la lata día si y día también.

Si te encuentras en esa situación y no se te ocurre de que forma vas a poder extraer tus mapas de displacement fuera de Zbrush, no te preocupes, este pequeño truco podría ayudarte.

  • Ejecuta Zbrush como Administrador, botón derecho del ratón encima del icono de Zbrush y "ejecutar como administrador".
  • En Mac, tienes que ejecutarlo como root. Para ello abre un terminal, logeate como root y ejecuta Zbush.
  • Una vez ejecutado Zbrush, vete al menu Preferences -> Mem -> Compact Mem e incrementa la cantidad de memoria utilizada por Zbrush.
  • Con este pequeño cambio en la mayoría de las ocasiones saldrás del paso y conseguirás exportar tus mapas de desplazamiento.
  • Desafortunadamente esto solo me ha funcionado con simple displacement,pero no con vector displacement.

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.