De Mari a Modo con un click
Desde hace unos 10 o 12 años, UDIM ha sido el método de UV Mapping más utilizado en la industria de los VFX. Desde hace 4 o 5 años aproximadamente, cuando Mari empezó a ser popular y abierto a profesionales fuera de los grandes estudios, UDIM se ha expandido a todos los niveles.
Poco a poco, las empresas responsables por software 3D, o motores de render, han ido adaptando sus herramientas para que trabajar con UDIM sea cada vez más sencillo.
Si eres usuario de Maya y Arnold o VRay, seguro que vienes utilizando los "tokens" que ofrecen desde hace un tiempo.
Hasta ahora en Modo, había que configurar cada mapa de textura con la coordenada correspondiente de UDIM, lo que suponía un dolor de cabeza, especialmente si trabajas con assets de 50 UDIMs o más.
Con la nueva version de Modo 801, trabajar con UDIM es incluso más sencillo.
Basta con exportar los mapas desde Mari y cargarlos en Modo con la opción "load UDIM".
Aquí dejo el sencillo procedimiento que hay que seguir.
- Exporta tus mapas desde Mari. A mi me gusta utilizar la nomenclatura componente_UDIM.exr por ejemplo RGB_1001.exr
- Asigna un nuevo material a tu asset.
- Añade encima del material una textura mediante la opción add layer -> image map -> load udims.
- Selecciona la secuencia de UDIMs.
- Cambia el effect para afectar al channel deseado, como has hecho siempre.
- Fíjate que en las opciones de UV Map ya vienen por defecto la opción Use Clip UDIM, así que no tienes que preocuparte de nada, Modo ya se encarga solito de leer las coordenadas UDIM.
Ya está, no necesitas hacer nada mas :)
- Como extra, puedes ir al image manger y seleccionar un mapa de textura. Verás como en las propiedades UV te muestra la coordenada UDIM a la que pertenece.
- También en esta misma ventana de propiedades, bajo color -> colorspace puedes cambiar el espacio de color de una secuencia completa de UDIMs con un solo click, lo que viene genial si trabajas mediante Linear Workflow o cualquier otro espacio de color.
Retopología en Maya 2014, trabajando con scans 3D
Hoy en día en cualquier producción cinematográfica donde hay presentes VFX, utilizamos scanners 3D. Bien sea a través de Lidar, photogrammetry o cualquier otra técnica, pero los scans 3D son uno de los recursos más utilizados y además, uno de las más útiles para crear assets de gran calidad.
Un scan 3D por si mismo no sirve para nada, pero si lo tratamos con cuidado puede ser de gran utilidad para extraer información de volumen, detalles para aplicar como displacement map, texturas fotográficas, etc.
Hay muchas formas y diferentes herramientas para procesar scans 3D, pero en Maya 2014 han incorporado unas cuantas, que si bien son muy básicas, cumplen su función a la perfección.
Es decir, son muy sencillas de utilizar y funcionan bien.
Llevo un tiempo utilizándolas para procesar los scans 3D con los que tengo que trabajar en mi día a día, así que sin mas, paso a nombrarlas y explicar un poco como las utilizo.
- En este scan 3D puede verse la cantidad de detalle presente. Toda esa información nos viene genial para extraerla y utilizarla de un montón de formas diferentes.
- Cuando chequeamos la topología del scan 3D, salta a la vista de que es una topología que no sirve para trabajar, incluso habiendo sido ya procesada y limpiada utilizando el software específico del scanner 3D.
Paso a contaros como yo utilizo las nuevas herramientas de Maya 2014 para este propósito.
- Me creo una nueva capa donde meto el scan 3D.
- A esta capa, le activo la opción reference, para evitar seleccionar el scan en viewport.
- En las opciones de snap, seleccionar como Live Surface el scan 3D.
- Activar el Modeling Kit.
- En el apartado Transform Constraints, chequear Using Live Surface.
- Esto hará que el scan 3D sea la base para nuestro modelado, y cualquier operación que hagamos se adapte automáticamente a la superficie del scan 3D.
- La herramienta Quad Draw nos permite dibujar polígonos sobre la superficie del scan 3D.
- Dibujando 4 puntos se creará un polígono.
- Una vez definidos los 4 puntos, si presionamos shift mientras situamos el cursor del mouse dentro de los 4 puntos, veremos un preview del polígono que estamos creando.
- Para crear el polígono, simplemente hacemos click.
- Podemos definir tantos puntos para crear polígonos como queramos.
- LMB para crear puntos, MMB para mover puntos/edges/polys y CTRL+LMB para borrar puntos/edges/polys. CTRL+MMB para mover edge loops.
- Si quieres extruir edges de polígonos ya creados, basta con presionar CTRL+SHIFT+LMB y tirar del edge deseado.
- Para añadir edge loops: SHIFT+LMB.
- Para añadir edge loops justo en el centro: SHIFT+MMB.
- Para dibujar polígonos "on the fly" simplemente presiona CTRL+SHIFT+LMB y dibuja en cualquier dirección.
- Para cambiar el tamaño de los polígonos presiona CTRL+SHIFT+MMB.
- Para juntar dos polígonos separados, creando un nuevo polígono, SHIFT+LMB en el espacio entre ambos polígonos.
- Para soldar puntos, CTRL+MMB.
Cuando nos encontramos objetos cilíndricos, rectangulares, tubulares, etc, es incluso más sencillo hacer retopología.
- Creamos un volumen suficientemente grande para contener el objeto de referencia. En este caso, un brazo.
- En las opciones del Modeling Toolkit, vamos a edit -> Shrinkwrap Selection.
- El volumen cilíndrico se adaptará a la forma de referencia.
- Si la topología no se queda todo lo ordenada que te hubiese gustado, basta con seleccionar el Quad Draw. Por defecto está activada la opción relax, simplemente pinta encima de la geometría y ordena la topología.
Y prácticamente estas son todas las herramientas que utilizo dentro de Maya 2014 para procesar mis scans 3D. Si tenéis alguna duda, aquí estoy :)
Vector displacement en Modo
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.
Zbrush displacement en Modo
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.
Multi UDIM workflow en Modo
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.
Linear Workflow: Ejemplo práctico
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.