Bueno, quizás no es para tanto, pero al menos a mi me ha ahorrado muchas ¿horas? de trabajo, y sigue haciéndolo.
Como ya sabeis, Nuke es una de las herramientas más comunes utilizadas en todos los estudios de efectos visuales, y por supuesto, el standard de la indsutria en cuanto a composición se refiere. Hoy en dia, prácticamente todos utilizamos Nuke, no solo los compositores. Lighting TD's utilizan Nuke a diario, Look-Dev Artists utilizan Nuke todos los dias, también Texture Painters, Matte Painters, etc. Incluso modeladores, pre-viz artists, etc. Me he dado cuenta de que salvo los compositores, el resto de profesionales no conocemos más que cuatro cosas de Nuke, y esta opción que os presento hoy, no es una de ellas.

¿Nunca te has preguntado por qué el orden de composición en Nuke no parece tener ninguna lógica? ¿Nunca has buscado cómo remediarlo? En este video te explico como hacerlo.

Uno de los tratamientos más habituales que sufre un footage en VFX es el delensing, es decir, eliminar la distorsión de lente. Este es uno de los primeros pasos e indispensable para un sin fin de tareas, como tracking, rotoscoping, image modelling, etc.
En otras ocasiones, también es muy importante copiar esa información de lente y aplicarla a otro footage o a nuestros renders.

Debido a que utilizamos diferentes software, como 3D equalizer, Nuke, Flame, etc, resulta muy conveniente pasar la información de distorsión de lente utilizando Stmaps, ya que a fin de cuentas, son imágenes .exr de 32 bits, perfectamente legibles por la mayoría de software standard de la industria.

  • Como punto de partida, empezaremos haciendo el delensing de nuestro footage utilizando lens grids.
  • Lens grids son el metodo mas rapido y preciso de realizar delens.
  • Si cambiamos el output a displacement y seleccionamos el canal forward en el visor, podemos ver la informacion de uv.
  • Si escribimos el output como .exr de 32 bits obtendremos un uv map que posteriormente podremos aplicar en cualquier software.
  • Para aplicarlo a cualquier footage en Nuke, basta con utilizar un Stmap. Conectar el input src al footage y el input stmap a la imagen con la información de uv apuntando al canal forward.
  • Listo, la misma información de lente ha sido aplicada al footage, pero en esta ocasión sin necesidad del nodo lens distortion propietario de Nuke, si no utilizando uv maps genéricos.

Proyectar footage, backplates o cualquier otro tipo de material fotográfico y/o pintado en Nuke, es probablemente una de las tareas mas comunes que podemos realizar en un estudio de efectos visuales. Compositores, texture artists, matte painters o paint artists, son generalmente los encargados de realizar este tipo de tareas. En algunas ocasiones, en lugar de simplemente proyectar los detalles que necesitemos en los renders, es preciso bakear el trabajo realizado en Nuke en las propias texturas de nuestros assets, y así, poder renderizar de nuevo sin necesidad de volver a pasar por Nuke. La mejor forma de realizar este tipo de tareas, es proyectando los detalles directamente en las UVs de los assets.

  • He exportado mi escena de Maya a Nuke. En este sencillo ejemplo tengo la cámara utilizada para el render, y un cubo donde necesito proyectar mi footage.
  • Para importar la geometría utiliza un ReadGeo y para la cámara un nodo Camera.
  • He importado el footage que quiero proyectar, en este caso es un solo frame.
  • Conecta el footage a un nodo Porject 3D.
  • Conecta el input de la camara el nodo Porject 3D.
  • Conecta el img input del nodo ReadGeo al nodo Project 3D.
  • Mira a traves de la camara.
  • Además de estar proyectando el footage en la geometría, también estoy pintando algunos detalles encima de la misma, utilizando un rotopaint.
  • Conecta un nodo UVProject al axis/cam input, y el secondary input al ReadGeo.
  • Deja la opcion Projection como Off.
  • Conecta un ScanlineRender al UVProjector mediante el input obj/scene.
  • El projection mode tiene que estar como UV.
  • Si cambias el visor 3D a 2D verás como el trabajo realizado en Nuke aparece en el espacio UV de tu asset.
  • Utiliza un write node para escribir el trabajo a textura.
  • Ya ya está, listo para ser renderizado en Maya.

Esta es una breve introducción al sistema de AOVs de Clarisse. Es un ejemplo muy sencillo pero que sienta las bases para crear escenas mas complejas.

He partido de esta escena.

  • Selecciona el render image y la capa 3D.
  • Abre el AOV editor en otra pestaña y selecciona los componentes que necesites para tu composición. En mi caso sólamente estoy utilizando diffuse, reflection y sss.
  • Acuérdate de darle al botón "más" para activarlos.
  • Ahora puedes visualizar cada uno de los AOVs activados en el frame buffer del image view.
  • Crea un nuevo context llamado "compositing" y dentro de éste, una nueva imagen llamada "comp_image".
  • Añade una capa de color negra.
  • Añade un filter, y texturízalo con un constant color. Esto será el input de nuestra composición.
  • Arrastra el constant color al material editor.
  • Arrastra el image render al material editor.
  • Si conectas el image render al constant color input, tendrás tu beauty pass.
  • Para separarlo en AOVs. Renombra el map a "diffuse" y selecciona el AOV "diffuse".
  • Repite el proceso con todos los AOVs de tu escena. Puedes copiar el map node sin problema.
  • Puedes utilizar add nodes para mezclar todos los AOVs hasta conseguir el beauty.
  • De esta forma tienes control independiente sobre cada uno de los AOVs, y no olvides lo más importante, sigues estando en un entorno 3D, donde cualquier cosa que añadas o modifiques en la escena, se actualizará en tu composición en tiempo real.
  • Si simplemente quieres renderizar tu escena y reconstruir el beauty pass en Nuke, basta con configurar el output y realizar la composición en Nuke, como vienes haciendo habitualmente.
Posted
AuthorXuan Prada

Máscaras RGB seguramente sean uno de los mapas mas utilizados y sin duda mas prácticos que podemos utilizar en un estudio de efectos visuales, o en cualquier industria relacionada con computer graphics.

Las utilizamos para mezclar shaders durante el proceso de look-development, las utilizamos como IDs para composición y color grading, y las utilizamos como utility passes para controlar motion blur, depth, etc.

El mayor beneficio de utilizar máscaras RGB es que nos ahorramos muchísimos mapas, ya que podemos tener 4 mascaras en un solo archivo: RGB+A y esto es muy importante, especialmente cuando trabajamos con hero assets, que generalmente tienen decenas y decenas de máscaras e IDs.

Veamos como utilizar este tipo de máscaras en el software que más utilizo: Maya, Clarisse, Mari y Nuke.

Maya

  • Utilizo un surface shader y un layered texture conectado a su input.
  • En el layered texture conecto todos los shaders que quiera mezclar.
  • Y para derivar cada uno de los canales de mi máscara RGB utilizo un nodo remapColor.

Esta es la mascara que estoy utilizando.

  • En cada uno de los nodos remapColor hay que indicarle que canal quieres utilizar.
  • Cada uno de los remapColor sirve como máscara para cada uno de los shaders.

Clarisse

  • En Clarisse utilizo un nodo reorder.
  • En la opción channel order podemos indicar que canal queremos utilizar del mapa.
  • Para transformarlo en máscara pura (alpha) basta con indicarlo también en el channel order.

Mari

  • Basta con utilizar un layer adjustment llamado shuffle e indicar que canal queremos utilizar.

Nuke

  • Podemos utilizar un nodo shuffle e indicar el canal.
  • Tambien podemos utilizar un nodo keyer y seleccionar el canal en el parámetro operation.

Sigo con mis posts sobre Clarisse. En esta ocasión voy a hablar de layers y passes, un tópico común en cualquier software 3D, y que además en el caso de Clarisse, es especialmente importante.

Clarisse permite crear sistemas de layers y passes muy complejos, para organizar las escenas prácticamente de la forma que mejor nos convenga. Además, podemos componer todas las diferentes layers y passes dentro del propio Clarisse.
Mezclar los "context" con "layers" y "passes" hace de Clarisse una herramienta perfecta para organizar escenas.

  • Para este tutorial, voy a utilizar esta simple escena. El proposito es separar cada uno de los elementos en "foreground" "midground" y "background". También crearemos un passe con las sombras de todos los elementos.
  • Ahora mismo en esta image solo hay una 3DLayer con el contenido de toda la escena.
  • He creado 3 context diferentes, uno para el foreground, otro para el midground y otro para el background.
  • En cada context he puesto la geometría correspondiente (esfera, cubo y cilindro. El suelo de momento esta junto a la esfera.)
  • En cada context tambien he creado una image.
  • Dentro de cada image, he creado una 3DLayer.
  • En cada 3DLayer hay que indicar que cámara y renderer utilizar.
  • También hay que indicar en cada 3DLayer que luces queremos utilizar.
  • En este punto seguramente ya te has dado cuenta del potencial de los layers de Clarisse. Podemos fácilmente renderizar cada layer con diferentes settings, cámaras, luces, renderes, etc.
  • En el context background estoy renderizando la esfera y el suelo.
  • En el context scene, he creado un nuevo image, que servirá como recipiente de los images creados anteriormente.
  • Como layers en este image no voy a crear 3DLayers si no Image Layers.
  • En las opciones selecciona cada una de las layers creados anteriormente, colocando el background abajo y subiendo hasta el foreground.
  • Nos encontramos con el problema de que las sombras del cilindro y el cubo no están presentes en el suelo. Esto es debido a que el suelo solo está en el context de la esfera.
  • Para solucionar esto he creado otro context llamado shadow_catcher y he movido el suelo a ese context.
  • He creado una 3DLayer donde he seleccionado la cámara y el renderer a utilizar.
  • He creado un grupo en este context con el cubo, la esfera y el cilindro.
  • En las opciones de visibility de la 3DLayer he puesto el grupo en la opción shadows.
  • En el image que me sirve de recipiente, he puesto el shadow catcher abajo del todo y ya está, las sombras ya funcionan.
  • Aunque no tan rápido. Para ilustrar otro problema, he puesto a conciencia el cubo atravesando el suelo. Si miras la primera imagen del post lo verás. Pero en esta composición, no parece estar atravesándolo. Esto es debido a que el suelo debería actuar como matte cortando al cubo, pero no lo esta haciendo, ya que el suelo no esta en el context del cubo.
  • Para solucionarlo, he creado una instancia del suelo y la he puesto en el context del cubo.
  • En las opciones de shading del suelo he hecho la opción matte object y matte alpha locales (botón derecho en el parámetro -> localize).
  • He activado la opción matte y puesto el alpha al 0%
  • Ya está, ahora funciona a la perfección.
  • En este momento tenemos las sombras junto al suelo. Si queremos, podemos también sacar las sombras por separado, para tener aún más control.
  • Para ello, he creado otro context solo con el suelo.
  • Después, en el context shadow_catcher, he creado un material "decal" y lo he asignado al suelo.
  • En el material "decal" he activado la opción receive illumination.
  • Finalmente he añadido la nueva capa en el recipiente image.
  • Puedes descargar las escenas de ejemplo aquí.
Posted
AuthorXuan Prada