Arnold - técnicas de variación

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.

    Leer más

    Maya render setup

    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.

    Leer más

    Z-depth AOVs

    En este vídeo os explico como utilizar Z-depth AOVs en Arnold, Nuke y Fusion para modificar el punto de atención de tus renders en base a la distancia de los sujetos con respecto a la cámara.

    Los suscriptores de elephant vfx pro, podéis descargaros el material que utilizo durante la demo.

    Leer más

    Mip-Mapping

    A estas alturas no creo que haya nadie que no esté familiarizado con mip-mapping, en cuanto a texturas se refiere, especialmente aquellos involucrados en los cursos de elephant vfx, donde siempre ponemos especial hincapié en tópicos como este. Aun así, siempre me encuentro con algunos estudiantes, que no conocen que es esto del mip-mapping, así que vamos a tratar de explicarlo de forma breve.

    Para empezar, siempre, absolutamente siempre tus texturas tienen que pasar por un proceso de mip-mapping una vez están terminadas, si no, lo estas haciendo mal. Quizás te preguntes por que tus renders tardan mucho tiempo, especialmente mucho tiempo en arrancar, seguramente sea por culpa del mip-mapping, o mejor dicho, la ausencia del mismo.

    Una escena mas o menos compleja, cuando hablamos de cine, contiene seguramente miles de texturas. Un hero asset puede contener por si solo miles de texturas agrupadas en decenas de channels. Como podéis imaginar, resulta imposible para el hardware y software que utilizamos, cargar semejante cantidad de información en memoria. Las texturas son generalmente de 8k 16 y 32 bits y como digo, se cuentan por centenares. Con el mip-mapping, conseguiremos agilizar la carga en memoria de toda esa información de una forma considerable, con lo que nuestros renders tardarán mucho menos en empezar, muchísimo.

    El mip-mapping se originó para ayudar a mejorar el filtrado de las texturas, el antialiasing. Cuando los objetos se alejan de cámara, los detalles de superficie generalmente parpadean, flickean. El mip-mapping ayudará a solventar esta situación, ya que se crean resoluciones de textura acorde con la posición del objeto respecto a cámara.

    Como decía antes, el mip-mapping nos ayudará a mejorar la carga en memoria de las texturas. Si un objeto tiene una textura de 4k pero en un determinado plano solamente ocupa 100 pixels en pantalla, no hay necesidad de cargar una textura de 4k, podemos cargar una versión de 128 pixels.

    Esta generación de versiones de textura, puede hacerse al vuelo, o puede planificarse con anterioridad, antes de lanzar el render. Ahorrando mucho tiempo, tanto de carga en memoria, como de generación de versiones de texturas.

    Todo esto relacionado con mip-mapping es render agnostic, no importa que motor de render utilices, debes de generar mip-mapped textures con todos. Generalmente los motores de render incluyen una utilidad para poder generar las texturas, mediante linea de comando o mediante interface gráfico.

    En el caso de Arnold Render, en el menú Arnold -> utilities encontrarás una herramienta llamada TX manager, donde podrás fácilmente convertir tus texturas a .tx
    El comando por defecto que lanza esta utilidad es "maketx -v -u --oiio" forzando las texturas a generar tiles optimizados para OpenImageIO 64x64 Si la textura fuera un color, la convertiría a un tamaño diminuto, de la misma forma que hace Mari cuando exportas colores planos.

    Existen varios comandos que puedes utilizar durante la conversión, como el tipo de filtrado, el tamaño de tile, o la linearización de texturas. Yo personalmente lo dejo por defecto, ya que siempre trabajo de forma linear, es decir, las texturas no necesitan conversión cuando llegan al software 3D, ya salen linearizadas de Mari. Tienes mas información sobre maketx aquí.

    En las opciones de render de Arnold, existe un apartado específico para las texturas, estas son las opciones mas importantes.

    • Auto-convert Textures to TX: Esta opción convertirá de forma automática las texturas que existan en tu escena y no estén en formato .tx Personalmente no lo recomiendo, por el simple hecho de acostumbrarse al proceso de terminar las texturas y convertirlas manualmente a .tx antes de meterlas en el software 3D.
    • Accept Unmipped: Con esta opción activada, podrás utilizar texturas que no hayan pasado por mip-mapping. Nunca lo utilices, tus renders tardarán una eternidad.
    • Tile size: Tamaño de los tiles cuando los calcules de forma automática. Cuanto mas grande, menos cargas, pero mayor tiempo de carga.
    • Max Cache Size (MB): Memoria destinada a la carga de texturas.
    • Mip-Mapping Bias: Controla el nivel de mip-mapping. De forma individualizada por textura. Cuanto mayor numero, menor calidad de carga. Valores negativos cargaran texturas mas grandes.
    Leer más
    cursos Xuan Prada cursos Xuan Prada

    Arnold fastrack, ¡ya disponible!

    Ya está disponible nuestro nuevo curso online, Arnold fastrack. Más de 15 horas de formación profesional sobre look-dev, lighting y rendering en efectos visuales.
    Si necesitas aprender a trabajar con Maya 2017 y las últimas versiones de Arnold en el menor tiempo posible y obteniendo la mayor calidad, ¡este es tu curso!

    Tienes todas la información en la página del curso. Si tienes cualquier duda, puedes contactarnos en el formulario de contacto.
    Recordamos que los suscriptores de elephant vfx pro pueden adquirir este curso beneficiándose de un descuento (ver página del curso). Para ello deben solicitar el descuento a través del formulario de contacto. Si aún no eres miembro de elephant vfx pro aprovecha la ocasión para suscribirte.

    Leer más