Desde hace unos años, utilizamos Cryptomatte para crear todo tipo de IDs, mattes, etc. Sin duda, la mejor y más eficaz forma de realizar este tipo de máscaras. Pero en ocasiones, debido a ciertas limitaciones que nos podemos encontrar en nuestra producción, no nos queda otra que recurrir a IDs de "toda la vida".

En este video te muestro como realizar un setup de IDs basado en custom AOVs.

En este post vamos a ver como crear variaciones de color y texturas de diferentes formas utilizando Arnold render. La idea principal, es dotar a varios assets, ya bien sean geometría, aiStandins, partículas, scatterers o cualquier otro tipo de multitudes, de variaciones de look, utilizando solamente un shader.

Vamos a mostrar cuatro formas diferentes de realizar esta tarea, cada una de ellas puede aplicarse en función de las necesidades particulares que cada uno pueda tener en su pipeline de producción.

Diferentes colores definidos para diferentes objetos

  • Esta es la escena que vamos a utilizar para todos los ejercicios. Ocho cabezas de una figura de Lego. El objetivo, es utilizar un solo shader y que cada cabeza tenga un color o una textura diferente.
  • Si lanzamos un render, este es el aspecto actual. Un shader sencillo con un color amarillo en el base color y en el sss color.
  • Crea un aiUserDataColor y conectalo tanto al base color como al sss color.
  • En sus parámetros escribe color en el campo attribute.
  • Selecciona el shape de cada objeto, y añade un attribute.
    • nombre: mota_constant_color
    • data type: vector
  • Si ahora vas a los extra attributes, puedes utilizar el color que quieras mediante valores RGB.
  • En este render sólamente he definido un color rojo para uno de los objetos.
  • En este render he definido colores RGB para cada uno de los objetos de la escena.
 

Colores completamente aleatorios y/o texturas definidas de forma aleatoria

  • Al igual que en el ejemplo anterior, tengo el mismo shader, con sss. Además, tengo un mapa de displacement conectado.
  • Lo que pretendemos es utilizar un color aleatorio para cada uno de los objetos, o en lugar de un color, una serie de texturas definidas asignadas de forma aleatoria.
  • En estos momentos este es el aspecto del render. Mismo shader con mismos parámetros para todos los objetos.
  • Crea un aiUtility y conéctalo al base color y al sss color.
  • Pon en shade mode como flat y el color mode como object id.
  • Estos settings nos proporcionarán un color aleatorio para cada objeto.
  • Si lanzamos un render este es el resultado.
  • Conecta un aiRandom después del aiUtility.
  • Pon el type como color.
  • Introduciendo diferentes valores en el seed, obtendremos diferentes colores.
  • Render utilizando un seed con valor 2
  • Conecta un aiColorToFloat después del aiRandom y pon el mode como sum.
  • Con este nodo convertiremos los valores de albedo en datos, de donde podremos extraer máscaras.
  • Crea un aiSwitch y conecta tantos inputs como texturas necesites.
  • Conecta el aiColorToFloat al index input del aiSwitch.
  • Este es el resultado del render.
  • Para obtener diferentes variaciones podemos conectar un aiColorCorrect después del aiRandom y tocando por ejemplo su exposición, alteraremos los valores de albedo y por lo tanto de las máscaras.
  • Tambien podemos utilizar un seed distinto para obtener mayor variación.
  • Otro render diferente aumentando la exposición del aiColorCorrect.
 

Una textura diferente definida para cada objeto utilizando un solo shader

  • Renombre todas las texturas utilizando el siguiente template.
  • Añade el siguiente attribute al texture file node
    • /Users/xuanprada/Desktop/arnold_variance/textures/<attr:head default:COL1_head_a>.tx
    • Añade un attribute al shape de cada objeto
      • nombre: mtoa_constant_head
      • data type: string
    • Si ahora vas a los extra attributes, puedes llamar a una textura diferente basándote en naming convention.
    • Render final.
     

    Lo mismo que en el caso anterior, pero basándonos en naming convention de shape

    • Renombra las texturas basandote en el siguiente template
      • COL1_head_a.tx
    • Añade el siguiente tag al nombre del file texture node
      • /Users/xuanprada/Desktop/arnold_variance/textures/COL1_<shapeName>.tx
    • Los shapes de cada objeto han de ser renombrados utilizando la siguiente nomenclatura.
    • Render final

    Si eres usuario de elephant vfx pro, puedes descargarte las escenas utilizadas en este tutorial.

    Aquí os dejo un video de alrededor de 1 hora, donde explico de forma breve y a modo de introducción como utilizar el node graph de Mari 4.
    Los texture artists generalmente combinan Mari y Nuke para trabajar sus texturas, gracias a la introducción del node graph dese Mari 3, cada vez dependemos menos de Nuke. Por otro lado, las líneas que separan a los texture artists de los look-dev TD's cada vez está más difuminada, y es cada día más común que un mismo profesional se pueda ocupar de ambas tareas, al menos, en assets no demasiado complejos.

    Además, estamos trabajando en un nuevo curso "Estrategias de texturizado y look-development para entornos" donde utilizaremos exclusivamente el node graph de Mari 4 combinado con Substance Painter y Maya, así que esta breve introducción pretende poneros en contexto para lo que vendrá en un futuro.

    Lo dicho, aquí os dejo con casi 1 hora de introducción al node graph de Mari.

    Imágenes pertenecientes al curso "Estrategias de texturizado y look-dev para entornos",

    En alguna ocasión anterior ya hemos hablado sobre el uso de Ricoh Theta para tareas de image acquisition en efectos visuales. En ese video ya comentaba algunos de los puntos fuertes y débiles de utilizar un setup convencional vs un setup basado en Ricoh Theta. Te recomiendo echarle un vistazo.

    En esta ocasión, he realizado un ejercicio de image acquisition, donde la fuente lumínica principal es muy potente, el sol, y por lo tanto, es muy importante capturar el mayor rango dinámico posible, para así poder representar de forma efectiva la situación lumínica capturada de forma virtual.

    Los setups a comparar son

    • Canon 5D Mark III + 8mm fish eye + panoramic head
    • Ricoh Theta S + Manfrotto mini tripo
    • Los dos anteriores se complementan con lighting checkers y macbeth chart.

    Las imágenes capturadas con el setup tradicional. 6 ángulos (aunque podrían haber sido solamente 3). 7 exposiciones por cada ángulo con 2 stops de diferencia. En total 42 imágenes.

    Settings de cámara

    • ISO: 100
    • Apperture: f22
    • Mid exposure: 1/100
    • 2EV apart
    • Min exposure: 1/6400
    • Max exposure: 0''6
    • White balance, focus, etc = manual

    Todos mis brackets están perfectamente alineados, ya que las fotografias se realizaron con un pano head. De esta forma no es necesario perder ni 2 minutos en Ptgui para hacer el stitching.

    0005.png

    Las fotografías realizadas con Ricoh Theta, son completamente automáticas, no se pueden controlar de forma manual. Los settings generados son:

    • Min exposure: 1/6400
    • Max exposure: 1/100

    El stitching en este caso, lo hago con Merge HDR Pro en Photoshop, ya que Ptgui no hace stitching de fotografías equirectangulares, (si rectilíneas y fish eye). Nunca deberías utilizar Photoshop para trabajo de datos, así que una vez generado el HDRI guarda como .exr y nunca más la abras en Photoshop.

    Me llevo los dos panoramas a Nuke, para neutralizarlos en base a mis referencias. También para limpiar artefactos si fuese necesario, aunque en este caso he pasado olímpicamente de ello.

    Si bajamos la exposición en viewport y analizamos el punto de mayor valor lumínico en la imagen, es decir el sol, veremos la brutal diferencia entre un panorama y otro.

    • 5D Mark III = 431
    • Ricoh Theta: 3.8

    Esta información ya debería de ser una valiosa pista del comportamiento de un panorama u otro cuando creemos nuestros setup IBL.

    0013.png

    Ya en Maya, creo dos setups de IBL diferentes, uno para cada panorama. Las diferencias son evidentes, especialmente en la densidad de las nombras y la distribución de la luz.

    5D Mark III

    Ricoh Theta

    ¿Eres suscriptor de elephant vfx pro? Descárgate el material utilizado en este post y analízadlo tranquilamente en tu casa.

    Hace ya un par de versiones atrás, Maya introdujo un nuevo sistema de render passes, llamado "render setup". Aún no funciona todo lo bien que debería, pero está pensado para sustituir el antiguo sistema de passes, y se asemeja más a las herramientas de particiones y passes que solemos utilizar en los facilities de vfx.

    En el curso One Man Band, os mostré como utilizar el render setup para crear diferentes entornos de look-dev dentro de una misma escena. Y esos conocimientos los expandimos también en el curso Clarisse Fastrack.

    En este video de unos 45 minutos, os enseño como utilizar el render setup para crear particiones y passes para tus proyectos de vfx. Además, los suscriptores de elephant vfx pro podéis descargaros el material de trabajo para analizarlo con calma.

    Hace apenas unos días, sacamos el curso Clarisse Fastrack, y justo un día después, Isotropix sacó al mercado su nueva actualización de Clarisse 3.6
    Entre otras herramientas, tenemos un nuevo shadow catcher, y los que estáis participando en el curso Clarisse Fastrack, sabéis que os iba a poner al día de como utilizarlo en cuanto fuese público. En este vídeo de casi una hora, os explico con detalle como utilizar el shadow catcher del nuevo Clarisse 3.6