Nota: Este post contiene información exclusiva para los miembros de elephant vfx pro.

A raíz de las imágenes Legos que estoy haciendo de vez en cuando, me preguntan sobre como me planteo este tipo de imágenes. Como ya comenté en su día, la idea es muy sencilla, al igual que su ejecución. Lo importante, realizarlas en unas pocas horas.
Me llegan dudas sobre modelado, lighting, look-dev, etc. Una de las preguntas, era sin embargo sobre cual es mi proceso para recrear la cámara virtual, para matchear la cámara real. Como se tratan de stills, o imágenes fijas, es muy sencillo, aunque los principios de tracking y matchmoving son exactamente los mismos que con secuencias de imágenes. La ventaja, no necesitamos ningún software de matchmoving o tracking, lo podemos hacer fácilmente con cualquier software 3D.

  • Voy a ilustrar este ejemplo con esta imagen. A modo de "helper" he colocado en el suelo unos libros, podría haber sido una caja o cualquier otro objeto que nos indique dos lineas de fuga, para poder asi matchear la perspectiva.
  • Como con cualquier otra tarea de matchmoving y tracking, conviene conocer algunos datos de la cámara. Como por ejemplo, el focal lenght, la altura del tripode, el tilt (orientación) tamaño del sensor, etc.
  • Podemos comprobar toda esta información gracias a los meta datos, tanto en Nuke como en Photoshop (ojo, que todavía hay gente que utiliza Photoshop).
  • El siguiente paso es crear una cámara en Maya e introducir los valores de focal length.
  • También conviene ajustar el clipping plane, para poder ubicar nuestra escena. Se puede cambiar a posteriori.
  • En las opciones de film back de la cámara, vamos a poner el film gate como horizontal, ya que esa ha sido la posición de la cámara real.
  • Añadimos como image plane la fotografía.
  • Incrementamos el valor depth ya que no sabemos Lo grande que sera el entorno. De esta forma seremos capaz de ver toda la geometría, de lo contrario, se cortaría por la imagen utilizada en el imagen plane.
  • Como se puede observar en la imagen anterior, el aspect ratio de la cámara no coincide con el sensor de la fotografía. Hay que escalarlo en consonancia.
  • Con la información de altura del trípode y tilt, podemos orientar la cámara.
  • En este momento voy a crear un proxy para el suelo, y girar la cámara que aparezca en el plano.
  • Ayudándome de un "helper" en este caso el felpudo, voy a posicionar el suelo en una esquina.
  • Ahora podemos orientar toda la escena en base a esa esquina.
  • Creamos un grupo con la cámara y movemos su pivot point a la esquina.
  • Basta con rotar el grupo hasta alinear las dos lineas de fuga.
  • Una vez orientado el suelo, podemos moverlo o escalarlo para ocupar todo el espacio que se presupone.
  • Realizamos el set fitting con el resto de elementos.

Los suscriptores de elephant vfx pro podéis acceder a un video explicativo de 37 minutos.

Una situación muy común cuando realizamos look-dev, es el combinado de varios displacement maps y varios bump maps. En ocasiones anteriores ya habíamos hablado de como combinar varios displacement maps. En esta ocasión, voy a contaros como podemos añadir varios bump maps, encima de una o varias capas de displacement, utilizando Maya y Arnold. Prácticamente todos los assets en cine llevan como mínimo una capa de displacement y una de bump. Los hero assets, llevarán varias de cada.

  • Lo primero que voy a hacer es añadir el displacement map. En esta ocasión, por simplificar, voy a utilizar una sola capa de displacement. Échale un vistazo a este tutorial para ver como añadir varias capas de displacement. Como displacement voy a utilizar un simple noise.
  • El siguiente paso es conectar el bump map, como lo harías normalmente, conectando el red channel al bump value. Ahora mismo tendriamos una capa de displacement y una capa de bump.
  • En el hypershade crea tu textura para la segunda capa de bump. En este caso un low frequency noise.
  • Crea un nodo average y dos nodos multiply.
  • Conecta el red channel del primer bump al input 1 del multiply. Controla su intensidad con el input 2.
  • Repite el paso anterior con el segundo bump map.
  • Conecta los outputs de los multiply nodes al input 3D0 y 3D1 del average node.
  • Es muy importante que el bump depth sea 1 para que esto funcione.

Seguramente Meshlab sea la única herramienta disponible para trabajar con cantidades muy altas de polígonos, al menos, sin contar software propietario de soluciones Lidar. Además, Meshlab es gratuito, open source y disponible para todo tipo de arquitecturas.

Estoy trabajando con terrenos complejos, de mas de 50 millones de polígonos. Maya simplemente no puede gestionar de forma eficiente semejante cantidad de polígonos. Lo ideal seria abrirlo en Zbrush y reducir la cantidad de polígonos mediante decimation, pero la gestión de memoria de Zbrush no es demasiado buena, y simplemente no te dejara abrir el terreno.

La alternativa es abrirlo en Meshlab y utilizando sus (rapidísimas) herramientas de reducción de polígonos, exportar versiones más ligeras para utilizar en Maya. Llevo mucho tiempo utilizando Meshlab para lidiar con Lidar, photogrammetry y otro tipo de geometrías muy pesadas, y sin duda creo que es la solución más adecuada para la mayor parte de trabajos que he tenido que realizar. (en Linux tienes algunos bugs un tanto fastidiosos).

  • Veamos como reducir los poligonos de este terreno de 16 millones de polys. Ya he descartado Zbrush ya que da error de memoria y no permite abrirlo.
  • En Meshlab existen diferentes soluciones para reducir la densidad de una malla, a mi particularmente me gusta Quadric Edge Collapse Decimation, sobretodo por su rapidez.
  • Existen diferentes estrategias para controlar el tipo de reduccion, me gusta utilizar el percentage reduction. En este caso estoy reduciendo a la mitad, 0.5
  • El resultado como cabe de esperar, es de 8 millones de polys.
  • He vuelto a correr la herramienta para obtener un terreno de 4 millones de polys y llevarmelo a Maya.
Posted
AuthorXuan Prada

Nota: Este post incluye contenido exclusivo para los suscriptores de elephant vfx pro. (enlaces al final del post).

En un post anterior ya mencionamos de la importancia del "high frequency detail" a la hora de escanear assets mediante técnicas de photogrammetry. En esta ocasión, explicamos como escanear assets cuando estos carecen de detalle de superficie y de detalle de color.

Es bastante común en cine tener que escanear props que se utilizan para rodar ciertas escenas, pero que en ningún caso salen en pantalla, ya que serán creados 100% de forma digital. Estos props, generalmente realizados con algún tipo de resina, no se pintan, se mantiene su color natural, ya que eso abarata la producción del propio pro.

Escanear mediante photogrammetry superficies sin ningún tipo de detalle, es por definición imposible. Primero, es muy difícil enfocar, ya que no existen puntos de referencia claros. Y segundo, el software de photogrammetry no podrá analizar puntos comunes entre las diferentes fotografías.

Supongamos que queremos escanear esta máscara, ya que necesita ser extendida de forma virtual. Como véis, es completamente blanca, sin ningún tipo de detalle de superficie. Necesitamos crear "high frequency detail". Este es un caso práctico de producción, similares situaciones ocurrieron por ejemplo en los sets de Batman o IronMan.

El equipo necesario es muy compacto. Basta con una DSLR y lente, tripode con soporte para el prop, y dos pinturas diferentes. Por un lado tengo un neutral grey para cubrir el prop, y por otro lado tengo una pintura verde para crear el detalle.

Con mi soporte especial y blu-tack puedo facilmente fijar el prop al tripode.

Con la pintura gris cubro por completo el prop. Con este color me aseguro una exposición mejor balanceada que con el color blanco original.

Una vez seca la pintura gris (se puede utilizar un secador de pelo para acelerar el proceso) paso a cubrir con puntos verdes toda la superficie, creando asi suficientes puntos de contacto para el software de photogrammetry y tambien para el enfoque de camara.

Una vez procesado el material fotografico, obtenemos un scan perfectamente valido para reproducir el prop de forma virtual con total exactitud.

Los suscriptores de elephant vfx pro podéis desde aquí acceder a un video donde expandimos estos tópicos.

Nota: Este post incluye contenido exclusivo para los suscriptores de elephant vfx pro. (enlaces al final del post).

Hoy en dia tenemos la suerte de poder aplicar los mismos principios fotográficos y cinematográficos a nuestro trabajo como iluminadores en VFX/CG/. Por ello, constantemente hablamos sobre cinematografía, lenguaje cinematográfico y comunicación audiovisual. Hoy, vamos a hablar de algunos tópicos comunes en iluminación cinematográfica: hard light, soft light, specular light y diffuse light.

La diferencia entre hard light (luz dura) y soft light (luz suave) no radica en la luz, si no en la sombra. Cuando la sombra está perfectamente definida y opaca, hablamos de hard light. Cuando por el contrario, la sombra está difuminada, nos referimos al tipo de luz soft light. Cuanta más suavidad en la luz, más difuminadas y consecuentemente menos opacas serán las sombras.

¿Hay algún tipo de luz concreta que proporcione hard light o soft light? No. Cualquier luz puede ser hard o soft en función de dos factores.

  1. Tamaño: No sólo hay que tener en cuenta el tamaño de la fuente lumínica en si, si no la relación de tamaño entre la fuente lumínica y el sujeto a iluminar.
  2. Distancia: En relación a la posición de la fuente lumínica y el sujeto a ser iluminado.

Las ondas electromagnéticas (como la luz) se curvan con respecto a los objetos donde impactan. En el ejemplo de abajo, cuando la luz impacta en la pared, refleja y pasa recto, después se curva hacia el interior (esto es lo que se denomina difraction).

Cuando un beam (rayo) de luz impacta en un objeto, si el tamaño de la fuente lumínica es muy similar al tamaño del sujeto iluminado, los rayos pasan de forma paralela y se curvan ligeramente hacia el interior.

Si el tamaño de la fuente lumínica es más pequeño que el sujeto iluminado o está alejado del mismo, los rayos de luz apenas se curvarán, creando sombras duras y bien definidas.

Si la fuente lumínica es más grande que el sujeto iluminado y está situado cerca del mismo, los rayos de luz se curvan considerablemente, produciendo sombras suaves y poco definidas.

Si la fuente lumínica es mucho más grande que el sujeto iluminado y cercana al mismo, los rayos de luz se curvan tanto que llegan a juntarse y prácticamente las sombras no dibujarán la silueta del sujeto iluminado, siendo incapaces de identificar su forma o silueta.

  • Si una fuente de luz muy grande se posiciona a mucha distancia del sujeto iluminado, su tamaño se verá alterado de forma relativa con respecto al sujeto, convirtiéndola consecuentemente en una fuente de luz pequeña, perdiendo asi su capacidad de generar sombras suaves. El ejemplo más claro es el sol. Es mucho más grande que la tierra, pero al estar a millones de kilómetros, se convierte en una fuente de luz muy pequeña, creando sombras duras. Cuando está nublado, la luz se filtra entre las nubes convirtiéndola otra vez en una fuente de luz grande, y por ello, generadora de sombras suaves.


Para resumir en dos lineas:

  • Soft light = fuentes lumínicas grandes y/o cercanas al sujeto
  • Hard light = fuentes lumínicas pequeñas y/o alejadas del sujeto

Specular light: Fuente lumínica con mucha potencia en el centro que poco a poco se degrada hacia el exterior. Como una linterna tradicional. Genera zonas muy expuestas y brillantes en el sujeto iluminado. Por ejemplo la típica luz de entrevista en un estadio de futbol o en un photocall.

Diffuse light: Fuente lumínica con la misma potencia distribuida sobre todo el área, tiende a iluminar al sujeto de forma compensada.

No confundir diffuse light con soft light. Siempre que hablamos de soft light nos referimos a sombras desenfocadas y suaves. Siempre que hablamos de diffuse light nos referimos a la distribución de la propia luz, en este caso, distribuida con equidad a lo largo de la superficie.

A continuación algunos ejemplos en 3D.

  • En este ejemplo tenemos un personaje iluminado con una fuente lumínica pequeña, más pequeña que el propio sujeto, y situada de forma alejada con respecto al mismo. Resultado, hard light, sombras duras.
  • En este ejemplo tenemos una fuente lumínica de tamaño considerable, similar al sujeto iluminado y colocada cerca del mismo. Como resultado, obtenemos soft light, sombras suaves.
  • En este ejemplo tenemos una fuente luminica muy grande y colocada cerca del sujeto, como resultado produce extra soft light, y las sombras pierden completamente su dibujo, siendo extremadamente suaves.
  • En la siguiente imagen, el sujeto está iluminado por el sol, que pese a ser una fuente lumínica gigantesca, su posición relativa con el sujeto la convierte en diminuta, produciendo asi hard light, sombras duras.
  • Finalmente tenemos otro ejemplo de hard light, en este caso creado por un flash que no deja de ser otro tipo de luz muy potente y concentrada, cercana al sujeto fotografiado. Este efecto puede conseguirse en 3D reduciendo considerablemente el valor spread de las luces.
  • A continuación ejemplos de specular light y diffuse light. (respectivamente).

Los suscriptores de elephant vfx pro podéis desde aquí acceder a un video donde expandimos estos tópicos.

Physically correct shaders, sin paja y directos al grano.
Arnold es lo que llamamos un physically based render, aun así, te permite romper ciertos moldes para crear luces y shaders que no obedezcan necesariamente las reglas físicas. Sin embargo, si creamos physically based lights y shaders, podremos predecir los resultados a obtener en diferentes entornos lumínicos. Intenta, en la medida de lo posible, mantener tus shaders physically correct mientras look-deving.

Para logar este cometido, el energy conversion ratio necesita ser correcto en Arnold. Llevado a un ejemplo práctico, cuando ajustes los parámetros diffuse y specular de tus shaders, entre los dos han de sumar un resultado de 1 o menos. Por ejemplo, si tu diffuse value es 0.7 tu specular value debería ser 0.3 para mantener los shaders de forma physically correct. Si el ratio estuviere por encima de 1 obtendrías unrealistic highlights, que podrían traducirse en noise, fireflies o simplemente, tiempos de render inconsistentes y/o lentos. En esta misma ecuación, entrarían otros parámetros como specular 2, reflection, o backlighting. Por el contrario, en mi experiencia, si la contribución de sub surface scattering al ratio global supera 1 no presenta mayores problemas.

La excepción es cuando fresnel y fresnel affects diffuse están activados. En este caso, la compensación de diffuse y specular se calcula de forma automática por Arnold. Simplemente utiliza cualquier valor entre 0 y 1 en diffuse y specular, y preocúpate del resto de weights del shader sumados al diffuse weight.

Dicho esto, analiza la industria para la que trabajas y actúa acorde con sus reglas y principios, que deberían de regir tu trabajo. Si como yo, trabajas en cine, recuerda una de las principales normas que rige esta industria (la del cine, no la de los VFX). El cine no necesita ser realista, necesita ser creible.

Posted
AuthorXuan Prada