Hace ya algunos años, publicamos en este blog un completísimo curso online sobre photogrammetry, o fotogrametría (parece ser) en castellano. Desde entonces han aparecido nuevos software, alguna que otra herramienta, y quizás algunos de los procesos han cambiado ligeramente, aunque nada revolucionario, la verdad. Por mi parte, hace tiempo que no trabajo en un proyecto donde requiera de la captura de assets mediante fotogrametría, el útimo show en el que utilicé de forma notoria técnicas de fotogrametría fue Assassin´s Creed.

En aquella ocasión capturé y recreé posteriormente parte del vestuario y props utilizados por Michael Fassbender y Ariane Labed. Tras aquel trabajo, no he realizado más que tareas muy esporádicas y sencillas, en cuanto a fotogrametría se refiere. Aun así, he ido seguiendo nuevas técnicas, herramientas y formas de hacer las cosas, y practicando algunas de ellas cuando el tiempo me lo ha permitido.

En un futuro, pretendo crear un nuevo curso de fotogrametría, expandiendo los conocimientos adquiridos en el primer curso publicado, y actualizando todo aquello que ha cambiado durante estos años. En este post, y en una serie de post que vendrán en un corto periodo de tiempo, pretendo mostraros a aquellos que no tengáis demasiada experiencia en técnicas de fotogrametría, como capturar un par de assets sencillos, utilizando para ello diferentes técnicas y herramientas. Hay que tener en cuenta que no todas las tareas de fotogrametría son iguales, y que no se aplican de la misma forma en todas las industria. Por ello, siempre estaré hablando desde el punto de vista de efectos visuales.

Pasaremos por todas las fases comunes de un proyecto de fotogrametría, incluyendo captura, shooting pattern, color correction, software de fotogrametría, reconstrucción del asset, clean-up, retopología, de-lighting, texturizado, look-dev, y render test.

Este es el asset que pretendemos capturar, una roca incrustada en el suelo. No nos preocuparemos de la hierba, simplemente de la superficie rocosa. Siempre que capturo un asset, hago una fotografía de contexto o staging, simplemente para mostar cual es el asset a capturar y el entorno que le rodea, para tener en cuenta el contexto de cara a una futura reconstrucción.

Los suscriptores de elephant vfx pro, podéis descargaros las fotografías raw para trabajar en este proyecto.

Este tipo de assets son muy sencillos de capturar. Basta con hacer un “turntable” con un par de alturas diferentes. Sin necesidad de utilizar trípode. El único equipo utilizado es una Sony A6000 con un milti zoom y una Macbeth Chart. También conviene utilziar sistemas de medición o escala a la hora de captuar. En este caso no he utilizado ninguno, pero siempre tengo un macbeth chart en frame, con tamaño conocido, así que puedo escalar el asset para obtener una escala real posteriormente.

Los settings de cámara, para este caso en particular, son extremadamente básicos. Fstop 11, ISO 300, aperture priority, es decir, ajuste automático en función de la apertura. White balance fijo, no importa cual (disparamos raw), en este caso nublado, y foco automático. La iluminación es natural, así que no nos preocupamos en ese aspecto. Como decía, este es el “pattern” utilizado para realizar las fotografías.

Mi organización de ficheros, por el momento al menos, es muy sencilla. Diferentes directorios para cada tipo de formato fotográfico.

Quiero utilizar la herramienta color checker passport para calibrar el color de mis fotografías adecuadamente, pero para ello necesito antes convertir las fotografías a DNG. No es necesario convertir toda la secuencia, basta con convertir una sola fotografía en la que el Macbeth chart esté en foco y bien expuesto. Una ve convertida, podemos utilizar la herramienta color checker passport con ella.

Automáticamente los swatches del color chart serán seleccionados, de no ser así puedes ajustarlos a mano. Una vez hecho esto, el software ajustará los valores de los swatches de la fotografía acorde a los valores de medición ideales del fabricantes del color chart. Y con ello crearemos un perfil de cámara que reutilizaremos posteriormente en Adobe Camera Raw para aplicar a todas las fotografías del shoot.

Una vez creado el perfil de cámara, abrimos la fotografía con Adobe Camera Raw. Lo primero que necesitamos hacer es aplicar el perfil creado anteriormente.

Lo que pretendemos con este proceso es linearizar la imagen. Linearizar es un término utilizado para diferentes propósitos en vfx, en este caso nos referimos a dejar la imagen lo más neutra posible, entendiendo por neutra, plana.

El tipo de curva debe ser linear, para que la transformación aplicada sea lo menor posible, y todos los ajustes deberán desactivarse para neutralizar la imagen de la mejor forma posible.

Ahora toca utilizar al herramienta white balance para eliminar la mayor parte de transformación de color aplicada por tu cámara, en este caso, la mia :)
Después, selecciona dos o tres swatches para matchear los valores proporcionados por el fabricante, en este caso 243, 160 y 52 aproximadamente. Una vez terminado, hacemos click en “done” y toda la información será guardada en los meta datos de la imagen.

Abrimos todas las imágenes en Lightrooms y sincronizamos los settings acorde a la imagen DNG que hemos corregido en Adobe Camera Raw. De esta forma todas las imágenes, que han sido realizadas bajo las mismas condiciones lumínicas y con casi idénticos settings de cámara, vivirán en el mismo contexto. Las imágenes resultantes las exportamos como .JPG El software de fotogrametría, aunque entiende imágenes de alto rango dinámico, no lo utiliza para nada, así que siempre vamos a utilizar imágenes de bajo rango dinámico. El resultado será el mismo pero el tiempo de computación será mucho menor.

Como software de fotogrametría en este particular ejemplo, vamos a utilizar Agisoft photoscan. Las licencias personales son realmente asquibles, y los resultados obtenidos en este software son excelentes. El otro software hot del momento es Reality Capture, que es considerablemente más caro, pero muchísimo más rápido, especialmente cuando trabajamos proyectos con varios cientos de fotografías.
La rapides, es lo único que en mi parecer es mejor en Reality Capture que en Photoscan, el resto, prefiero Photoscan. En el futuro utilizaremos Reality Capture para varias tareas.

Nota importante, Reality Capture no está disponible ni para Mac ni para Linux.

Lo primero que conviene realizar en Photoscan es analizar la calidad de las fotografías y descartar aquellas por debajo de 0.2

Este asset es muy sencillo, y no utilizamos ningún setup especial para capturar las imágenes, así que poco más necesitamos hacer en Photoscan. Tenemos que alinear las imágenes en primera instancia. Tenemos unas 90 imágenes, con suficiente overlapping entre ellas, así que la tarea de alineación se con total seguridad que será un éxito. Procursa siempre realizar suficientes fotografías para generar un point cloud suficientemente detallado.

Tras unos minutos las fotografías son alineadas y una cámara es virtual por cada disparo. En esta ocasión todas las cámaras han sido perfectamente alineadas, sin ningún descarte. Sinónimo de que el material fotográfico es bueno.

El siguiente paso es generar el point cloud. Este es el proceso que más tiempo requiere, en mi caso, utilizando un iMac 2013 ha tardado alrededor de 4 horas y media. Conviene utilizar la calidad más baja posible, simplemente para testear que todo funciona correctamente. Con esta calidad tardará apenas uno minutos. Si prevees que todo está ok, utiliza calidad alta y genera el point cloud.

Una vez terminado el proceso, podremos ver un point cloud, incluyendo vertex colors (no teturas) bastante detallado. Eso simplemente es un point cloud, aun tenemos que generar el mesh y las texturas. La densidad del mesh dependerá de la calidad del point cloud generado.

Una vez finalizada la generación del mesh y de las texturas, podemos exportar el proyecto mediante .fbx de esta forma conseguiremos la geometría y las cámaras para su posterior utilización en Maya, Mari, etc. Ten en cuenta de que tanto el mesh como las texturas son simplemente placeholder, vamos a generar un mesh y unas texturas aptas para el trabajo de producción. Lo que estamos exportando desde Photoscan no nos sirve para viajar a traves del pipeline de vfx.

Importamos en Maya el .fbx y obtenemos el mesh, las texturas y las cámaras. Para alinear o escalar el asset es muy importante agrupar todo el contenido dentro de un locator o similar. Necesitamos las transformaciones originales para seguir trabajando el asset en el futuro.

Continuaremos trabajando este asset en el siguiente post.
Los suscriptores de elephant vfx pro, podéis descargaros las fotografías raw para trabajar en este proyecto de fotogrametría.

Publicamos de forma gratuita un IBL pack con cinco light-rigs listos para utilizar en tus proyectos VFX. Han sido fotografiados con Ricoh Theta y tienen un rango dinámico de unos 12EV.
Hace un tiempo expliqué como utilizar esta cámara para propósitos de VFX lighting acquisition.

Podéis descargar las imágenes equirectangulares aquí, Los usuarios de elephant vfx pro podéis descargar además, las escenas de Maya/Arnold listas para trabajar. Para ello podéis acceder a vuestra cuenta y descargar el material.
El uso de este material queda restringido a proyectos no comerciales.

Barcelona cafe.

Barcelona cafe render test.

Hobo hotel.

Hobo hotel render test.

Campus i12 green room.

Campus i12 render test.

campus i12 class.

Campus i12 class render test.

Chiswick gardens.

Chiswick gardens render test.

En este video os explico como utilizo la cámara Ricoh Theta para VFX lighting acquisition. Además os muestro el proceso de creación de un rig image based lighting utilizando el material capturado.

Este es el equipo utilizado.

Captura de pantalla de Nuke.

Captura de pantalla de Maya.

Render realizado durante el ejercicio.

Los miembros de elephant vfx pro podéis descargaros el material de trabajo desde vuestra cuenta.

Esta es la primera parte de un artículo compuesto de dos partes, donde hablamos de technical grading en visual effects.

Color correction vs color grading

Lo primero que necesitamos aclarar es la diferencia entre color correction (o tech grading) y color grading.

Color grading, son correcciones de color y luminosidad que realizamos a un footage o render basado puramente en conceptos subjetivos. Para crear drama, por razones estéticas, etc. Lo único que nos importa es la apariencia visual, no los valores de la imagen.

Color correction o tech grading, es el proceso mediante el cual corregimos el color/luminosidad de una imagen con respecto a otra, con el menor número de errores (valores matemáticos). La imagen de referencia que utilizamos para realizar el tech grading tiene unos valores conocidos, de ahí que se llame referencia, y generalmente estos valores vendrán dados por un Macbeth Chart color checker capturado bajo unas condiciones lumínicas conocidas.

También incluye el proceso de linearización, necesario para trabajar en visual effects, ya que los motores de render trabajan siempre de forma linear, además, de que la luz en el mundo real también se comporta de forma linear. Generalmente los plates de cine, o las fotografías provienen de una cámara que no ha sido calibrada de forma rediométrica, por lo tanto, no son lineares. ¿Por qué? Básicamente porque un footage linearizado no es bonito, además de que el ojo humano no percibe la luz de forma linear. Por lo tanto necesitamos linearizar todo el footage antes de continuar en un pipeline de VFX. Es indispensable que todo el material que utilizamos en un proyecto de VFX viva bajo el mismo contexto.

¿Cómo funciona?

Tenemos que leer cada color swatch del Macbeth Chart en la referencia y sus equivalentes en el footage donde necesitamos realizar el tech grading. Mediante sustracciones y adiciones los valores del destino se corrigen para acercarse lo máximo posible a los valores de la referencia. Las matemáticas son lineares (2+2=4) así que el footage necesita ser linear. Si no lo es, tenemos que linearizarlo antes.

Un render siempre es linear y con primarios sRGB. El footage de una cámara de vídeo/fotos no suele ser así. Como decíamos antes, la razón es que un footage linear no es bonito, pero linear es lo que necesitamos para que las matemáticas funcionen. En este estado no nos importa que el footage sea bonito o no, nos importan sus valores numéricos. Renders y footage han de vivir bajo el mismo contexto (linear) para que la composición tenga éxito.

Es importante tener en cuenta, que este proceso (linearising + tech grading) no es perfecto, siempre se generan algún tipo de errores numéricos, aunque intentamos que sean los mínimos posibles. Siempre hay espacio para eye-balling a posteriori.

¿Como se lineariza una imagen?

Necesitas tener puntos conocidos en el footage, y probablemente nada viene mejor que los grey swatches de un Macbeth Chart. Esos swatches van a devolver prácticamente toda la luz rebotada entre 380nm y 780nm. Con esto quiero decir que una fuente lumínica blanca, después de impactar en un swatch neutral grey, va a devolver prácticamente la misma luz hacia nuestros ojos (o sensor de cámara). Como estos swatches son neutrales, la luz no se va a tintar del color de su superficie.

En este punto conocemos los valores de esos neutral swatches en la vida real y también los valores que tiene en el footage. En Nuke, podemos fácilmente mediante color lookups mapear los valores del footage para que tengan los valores que deberían de tener en el mundo real.

Con los 6 swatches grises deberíamos de tener más que suficiente. Puede que algunas características del footage, como el grano, causen problemas de vez en cuando, pero en general, con los 6 neutral grey swatches deberíamos de ser capaces de linearizar el plate. Otro problema es que generalmente no conocemos las fuentes lumínicas que impactan en los swatches del Macbeth Chart, pero esto es algo con lo que tenemos que vivir, de ahí que siempre haya espacio para eye-balling.

¿Cómo se realiza el white balance?

Una vez el footage ha sido linearizado, necesitamos un color matrix para ecualizar los valores de nuestro Macbeth Chart acorde con los valores del mundo físico, o con cualquier otro valor que sea nuestra referencia de color.

Una vez la linearización y el white balance han sido realizado al plate con Macbeth Charts, basta con crear clones y aplicarlos al resto de footage filmado con las mismas características lumínicas y de cámara. También hay que aplicar todos los ajustes a las referencias lumínicas (esferas). Cualquier material filmado y fotográfico ha de vivir bajo el mismo contexto.

¿Y luego qué?

Una vez todo el footage y referencias han pasado por el tech grading, lo siguiente que debemos corregir son los HDRIs que utilizaremos para lighting y look-dev. El proceso es el mismo que con el footage. Aunque trabajaremos con un mayor rango dinámico.

Cuando tengamos todo el material viviendo bajo el mismo contexto, ya estaremos preparados para continuar nuestro trabajo tanto en 3D como en 2D.

Una parte muy importante a tener en cuenta, es que el tech grading ha de ser revertido en compositing. Los compositores generalmente trabajan con source plates o graded plates, no con los plates que nosotros hemos generado tech grading. Así que los compositores necesitarán revertir nuestro tech grading para aplicarlo a nuestros renders 3D. De esta forma todo el material footage y 3D volverá a vivir bajo el contexto en el que fue creado por el DP.

Información adicional

  • ¿Dónde puedo encontrar los valores del mundo físico con los que comparar mis Macbeth Chart de mi footage?

Aquí: http://www.babelcolor.com/colorchecker.htm#xl_CCP1_NewSpecifications
Aunque si quieres ahorrarte trabajo, en lugar de construir tu propio matrix en Nuke, puedes descargarte gratuitamente el gizmo mmColorTarget aquí: http://www.nukepedia.com/gizmos/colour/mmcolortarget

  • Para la linearización, estaría bien tener los valores de los grey swatches

Aquí los tienes.
Los valores lineares son aproximadamente 3%, 8.5%, 19%, 35%, 58% y 91% reflectance of the light. Traducido a valores RGB seria 0.031, 0.086, 0.187, 0.35, 0.57, 0.91

Ten en cuenta que el valor del neutral grey mid point es 18% y no 45-50% como seguramente pensabas. Esto es porque la medición es radiométrica, y los humanos no percibimos la luz de forma linear (aunque lo sea). Así que cuando necesites crear por ejemplo una esfera gris digital, su valor RGB no sera 0.5 si no 0.18

En la segunda parte de este artículo, haremos un ejemplo práctico.

 

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.

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

La ingestión y el output de footage es una labor que ha de realizarse de forma correcta para no perder ningún tipo de información de color e iluminación. Es muy importante que el footage que llega de editorial salga exactamente con las mismas características de latitud hacia la sala de DI (digital intermediate). En los grandes facilities de VFX y grandes producciones, esta tarea puede ser bastante compleja en ciertas ocasiones, debido a los complicados sistemas de gestión de color que podemos llegar a utilizar.

Paso a explicar como podemos realizar esta labor de forma adecuada en lo que llamaríamos un pipeline de color simple, o independiente. Es decir, la forma más común con la que generalmente trabajan boutiques de VFX, freelancers o simplemente, pipelines de color no demasiado complejos.

En la imagen de arriba, utilizada durante la explicación del vídeo, explico de forma rápida como funcionan los distintos modelos de cámaras RED. El footage generalmente oscila entre diferentes resoluciones, desde 4k hasta 8k.
Los sensores, CMOS que siempre trabajan de forma linear, si, como cualquier motor de render. Y del mismo modo, necesitamos una transformacion de color y su correspondiente gamma para visualizar el footage de forma adecuada en la mayoria de monitores y dispositivos.

Las camaras RED tienen su propio color management llamado RED color y su propia gamma llamada RED gamma. Tambien puedes optar por espacios de color comunes como sRGB o rec709 con sus gammas correspondientes a 2.2 o 1.8

  • Lo primero es converir el footage a un formato estandard. Generalmente vamos a trabajar con .dpx comun en cualquier facility y cualquier software.
  • REDCineXpro es el software (gratuito) con el que puedes realizar todo tipo de conversiones. Tambien puedes realizar trabajos de edicion, color grading, etc. Generalmente vamos a utilizarlo solo para epxortar el footage a .dpx
  • En las opciones de color, podras ver el espacio de color y gamma con el que ha sido rodado el footage. Conviene cambiar el gamma a redLogFilm, siendo log un estandard neutro, perfecto para color grading. Seria lo mismo que utilizar el nodo log2lin en Nuke.
  • Exporta como .dpx
  • La forma correcta de importar el footage en Nuke es como log, es decir, color space cineon en el nodo read.
  • Para visualizarlo correctamente, utilizamos un transformacion de color sRGB o rec709. O por supuesto, un LUT enviado desde la sala de DI (lo mas comun).
  • En Nuke realizamos el trabajo de VFX que necesitemos, bien sea composicion 3D, clean up, etc.
  • En este caso, he hecho un clean up de nieve de forma muy rapida.
  • Una vez terminado el trabajo, basta con escribir lin sRGB-log (cineon) como .dpx utilizando la misma profundidad que el footage original.
  • En este punto deberiamos de ser capaces de enviar el restultado de nuestro trabao de vuelta a editorial o DI, donde podran aplicar cualquier color grading en el que hayan estado trabajando, puesto que nuestro footage tendra exactamente las mismas cualidades que antes de salir de DI, excepto los aniadidos VFX claro.
  • Para ilustrar esto, voy a importar el nuevo footage en Adobe SpeedGrade, que bien no es una sala de DI con Baselight o Resolve. Donde el input sera Cineon/Log y la transformacion de color sRBG para ver el footage igual que en Nuke, que en este punto, todavia es neutro.
  • A partir de ahora podemos tomar cualquier decisión creativa en cuanto a color se refiere. En este ejemplo simplemente estoy aplicando un LUT previamente creado.
  • En cualquier momento podemos desactivar el color grading y enviar un nuevo edit al facility de VFX, y siempre estaremos trabajando de forma neutra. Tambien podemos enviarles nuestro color grading en forma de LUT para que ellos puedan aplicarlo en los respectivos software de 3D y 2D, siempre de forma no destructiva, claro.

Es importante tener en cuenta, que para generar un LUT de forma apropiada, desde VFX necesitamos enviar un CMS pattern a DI para que nos generar el archivo LUT.

  • En Nuke, basta con crear un nodo CMS pattern, que tiene unos valores conocidos. Ellos aplicarán su color grading a este pattern, y la diferencia en valores sera el LUT, que posteriormente podemos aplicar a nuestro footage.
  • Del mismo modo nosotros mismo podemos generar nuestros propios LUTs en Nuke, concatenando cuantos color gradings o color corrections necesitemos, y escribiendo el resultado en un nodo write generate LUT. Podemos expandir esto en un futuro.

Los miembros de elephant vfx pro podéis acceder a un vídeo de mas de 30 minutos donde explico todo esto de forma detallada.