12 de febrero de 2013

Multichannel render - 1ª parte




Llevo ya algunos años trabajando como freelance en el mundo del 3D, principalmente enfocado a publicidad y cine, he sido profesor en algunas de las escuelas dedicadas al 3D (cev, ecam, cice) más importantes de Madrid, por lo que también tengo el título de Autodesk Maya Certified Instructor. Simplemente pretendo aportar mi granito de arena con una serie de entradas que tienen el propósito de orientarte en tu proyecto con workflows efectivos y comprobados.

    En este caso me gustaría intentar explicar qué passes, y cómo, nos pueden ayudar a mejorar la calidad de un render decente y hacerlo más realista y llamativo. Lógicamente, es un workflow habitual pero no el único, espero que os aporte algo positivo y lo pongáis en práctica.

Comparación entre el render tal cual y la composición del render con los passes.

    No quiero entrar demasiado en detalle, pero doy por sabidos ciertos pasos en los que no me quiero entretener para entrar de lleno en lo que nos ocupa, los nombramos de pasada:


         1. Modelado correcto, es decir, edgeflow y resolución óptimas para conseguir deformaciones lógicas. Por supuesto, de momento, no nos olvidemos de las UV´s.

Edgeflow, resolución, UV´s y texturas son fundamentales para un producto final de calidad.

  1. 2. Texturas y mapas, sea Mudbox o Zbrush, hoy en día no podemos permitir que un personaje realista no pase por algún programa de esculpido para añadir detalles y controlar la creación de texturas directamente en 3D. En el caso de materiales tipo SubSurfaceScattering (SSS) el tema de las texturas debe ser algo más meticuloso, teniendo en cuenta diferentes capas de la piel, epidermis, subdermis, etc.



Diferentes texturas que colaboran en el SSS.

    En cuanto a la iluminación de la escena, tenemos un physical sun & sky, dos spot lights y dos area lights, todas con las opciones de mental ray area light activada. El incremento de tiempo en el render merece la pena después de comparar los resultados, 9 minutos 40 segundos a resolución HD 1.920x1.080.
    También he trabajado en el rig del modelo para hacer posible su animación, espero le podáis echar un vistazo en breve en la demo que estoy actualizando.
    En este caso el motor de render que estoy usando es mental ray, aunque casi todos los motores actuales tienen opciones similares a los passes de mental ray.
    Para la piel de nuestro modelo uso misss_fast_skin_shader, material de mental ray que da buenos resultados con pocos ajustes, pero tiene dos problemas:

  • Por defecto no admite passes, no podemos separar la información de diffuse del specular o de las reflexiones. Se puede hacer algo con los nodos writeToColorBuffer, pero no merece la pena porque:
  • El control que tenemos tanto de los speculars como de las reflexiones en el material SSS es muy limitado y normalmente no es lo más aconsejable, son mucho más controlables en un mia_material_X_passes, por ejemplo.
    Solución: Hacemos dos render Layers, en uno vamos a obtener el render normal en el que hemos estado trabajando hasta ahora, en el otro en vez de hacer el render con el SSS, lo sustituímos por un mia_material_X_passes en el que vamos a tener mucho más control sobre nuestros speculars y reflexiones y además admite passes, con lo que podremos dividir toda la información independientemente.

beauty + passes = imagen final
    Los passes que en este caso he considerado esenciales o básicos son:

  • Ambient Occlusion: Sombras por oclusión.
  • Fresnel: Mascara en función de la normal de las caras de la geometría.
  • ZDepth: Información en escala de grises de la profundidad de nuestro render.
  • Reflectivity: Reflexiones
  • Speculars: Reflexiones de luz
  • Motion vectors: Información vectorial de velocidad para poder aplicar motion blur o desenfoque de movimiento en post-producción.
    Lógicamente tambien nos ayudamos de lo que yo llamo color IDs, también se les conoce como RGB matte, su función es definir máscaras selectivas que nos permitan hacer correcciones en zonas concretas de nuestra imagen.


Los color IDs nos permiten crear máscaras selectivas para posteriores correcciones.
    Para terminar componemos o juntamos toda esta información en un programa de composición, Nuke, Digital Fusion, incluso After Effects... En mi caso he creado un tercer render Layer para recrear una iluminación nocturna, pero los passes seguirán viniendo de mi render Layer para passes.
    En esta composición o script de Nuke termino mi iluminación normal, iluminación nocturna y una imagen comparando las dos imágenes finales. Espero que os guste.

script de Nuke para acabar la composición de tres imágenes finales.


Imagen final comparando dos sets de iluminación completamente diferentes.
    Estoy preparando una explicación un poco más extensa y detallada de los passes de mental ray, de los color ID´s o RGB matte, como queráis... y cómo componer todo esto en Nuke.

Muestra de los passes extraídos en un solo archivo openEXR (RGB a 32bits por canal)

No hay comentarios:

Publicar un comentario