Recientemente nos encontramos con la necesidad de iluminar un personaje muy reflectivo (o reflectante) en un entorno cuya iluminación cambiaba constantemente.
El personaje sería creado completamente en 3D pero por supuesto habría que integrarlo en un footage dado, donde las fuentes lumínicas (prácticas, es decir, reales), cambiarían de intensidad y temperatura de forma rápida.

Además estamos hablando de un plano secuencia muy largo, sin cortes, donde el personaje se ve afectado por el entorno de forma ininterrumpida.

En esta situación, esta claro que un HDRI equirectangular convencional, no sería suficiente para integrar el personaje, ya que los constantes cambios de iluminación no se registrarían en el mapa panorámico.

Spheron

La primera solución real, y probablemente la mejor y más adecuada es utilizar un Spheron. Por supuesto si consigues comprarlo o alquilarlo a tiempo, cosa que se presenta cada vez más difícil.
Descartada la opción del Spheron, lo siguiente era realizar diferentes HDRI equirectangulares, uno para cada condición lumínica diferente y animar las transiciones entre ellos a medida que el personaje se mueve por el set.

En algunas ocasiones esto funcionaba bien, pero en otras, especialmente cuando había elementos que parpadeaban, luces que cambiaban de color rápidamente, etc, múltiples HDRI no eran suficiente.
Lo que realmente necesitábamos eran HDRI animados en tiempo real, es decir, recogidos mediante video .RAW y diferentes exposiciones en el set de rodaje.

Método convencional

d800.jpg

La solución parecía más o menos clara, montar 3 reflex digitales de las que normalmente utilizamos (Canon 5D Mark III o Nikon D800) en un soporte creado por nosotros mismos que calculase el overlapping de las cámaras (entorno al 33%), cada una de ellas con lentes ojo de pez.

De esta forma podríamos registrar la información lumínica del set en tiempo real, simplemente grabando video.

Pero claro, ni la Canon 5D Mark III ni la Nikon D800 graban en formato .RAW, todas graban comprimiendo, aplicando un espacio de color, y por supuesto, ninguna graba video con multiexposiciones.

Red Epic

Por descarte, llegamos a la conclusión que lo que necesitábamos era el mismo setup de las reflex digitales, pero utilizando cámaras Red Epic. Lo malo de esta idea, es que tres cámaras Epic más tres lentes ojo de pez, es un setup muy caro para trabajo survey de set de rodaje, además que montar todo eso en un soporte creado por nosotros, montado a su vez en un steady cam, es algo muy pesado para poder caminar por un set enorme.

Finalmente dimos con la tecla, y la solución salio por si sola.
Todos sabemos que los HDRI para iluminación no necesitan ser perfectos, de hecho, nunca lo son, necesitan ser funcionales. Así que no nos importaría tener un poco de distorsion en nuestros HDRI con tal de abaratar el setup y facilitar la experiencia de recogida de información.

De esta forma, utilizamos una sola cámara Red Epic, con un objetivo 18mm.
La montamos en un soporte creado por nosotros mismos, en cuyo extremo opuesto colocamos una bola cromada de akromatic, de 25cm de diámetro.
Esta bola permite recoger mas de los 180 grados que recogería un ojo de pez, de hecho recoge alrededor de 220 - 240 grados.

Como sabéis, la Red Epic permite grabar video en .RAW y recoger multiexposiciones simultáneamente. Grabamos 5 exposiciones diferentes a 4k para recoger la información lumínica.
Posteriormente transformamos el video en Nuke para convertirlo en un panorama equirectangular animado.
Finalmente combinamos todas las exposiciones y voilá, ya teníamos nuestro HDRI equirectangular animado para iluminar nuestro personaje.

Esto nos permitió iluminar el personaje de forma rapidísima, con resultados muy buenos y precisos, y con unos tiempos de render prácticamente ridículos.
Utilizando luces 3D jamás hubiésemos conseguido la misma precisión, ni la misma calidad en los reflejos, y muchísimo menos, los mismos tiempos de render.

De momento no puedo mostraros nada de esto, pero si quiero contaros otras pruebas que hicimos y que creo pueden ser muy interesantes.

GoPro

Durante este proceso que he descrito anteriormente, tuvimos que hacer varias pruebas en el set, en diferentes localizaciones, algunas de ellas de difícil acceso para una persona de 1.85cm
Tuvimos unos días para realizar las pruebas, cuando se estaba construyendo el set, y por aquel entonces aun no disponíamos del equipo necesario, pero queríamos empezar a realizar pruebas y enviar el material al estudio, para que se empezaran a organizar con todo lo relacionado con el método de trabajo.

Decidí hacer los tests con una GoPro Hero3 Black Edition.
La cámara es muy pequeña, ligera y manejable. Por supuesto no graba .RAW, pero se le puede aplicar un perfil de color flat, para que no haga un bake del espacio de color que utiliza la cámara.
Graba en 4K y tiene control manual sobre el balance de blancos. Para nuestros tests, era la herramienta perfecta.

La montamos en una base de akromatic, utilizando un soporte de Joby, y en el otro extremo de la base colocamos una bola cromada de akromatic de 25cm.

En cuanto a la postproducción para generar los mapas panorámicos equirectangulares, seguimos el mismo método que teníamos pensado para la Red Epic, creando así templates en Nuke para agilizar el trabajo.
Digamos que esto era una simulación del trabajo final, pero que nos sirvió para darnos cuenta de que todo iba a funcionar bien.

Incluso hicimos pruebas de render, y todo parecía funcionar a la perfección. Obviamente aquí no estamos generando true HDRI, ya que no grabamos multiexposiciones como si haríamos con la Red Epic, pero como pruebas que eran, no se podía pedir mas.

No sería una opción descabellada para proyectos indies o de bajo presupuesto.

Footage original capturado con GoPro + akromatic kit

En este caso, mi presencia en el centro de la bola no ayuda demasiado, aunque las fuentes lumínicas en esta ocasión son cenitales y tampoco perjudica demasiado. De todas formas con la utilización de un steady cam solucionamos este problema, al menos, lo redujimos considerablemente.

Nuke

El trabajo en Nuke es muy simple, basta con hacer un spherical transform del footage.
Para las distorsiones laterales se puede pintar con rotopain y tratar de corregirlas, pero en general no son un problema.

Resultado final utilizando las imagenes de GoPro

GoPro + akromatic kit

...O index of refraction.
Antes de nada, definamos algunos términos básicos.

Normal incidence: Es el punto de una superficie que mira de forma más directa a la cámara. En el caso de una esfera, en una vista frontal, el centro de la misma sería el punto más directo que mira a cámara, y lo que consideraríamos normal incidence.

Fresnel: Todos los materiales se ven afectados por él, y basicamente dicta la apariencia de la reflexión.
A 90° el fresnel es igual a 1 y el comportamiento del fresnel en su viaje desde 0° a 90° determinará la respuesta de la reflexión en toda la superficie.

Dielectric materials

  • Todos aquellos materiales que solo reflejan el color de la luz, no se da ningún tipo de absorción antes de que la luz sea reflejada.
    Una vez la luz impacta en su superficie, esta puede reflejar o ser absorbida y/o transmitida por la propia superficie.
  • Generalmente el IOR tiene un valor alrededor de 1.5 o 1.6
  • El fresnel suele ser muy pronunciado.
  • La reflexión tiende a ser de color blanco.
  • Materiales comunes suelen ser plástico, madera, cristal, piel, etc.
  • Para este tipo de materiales basta con utilizar un valor para el eta o index of refraction (real part of complex index of refraction).

Conductor materials

  • Materiales que reflejan la luz después de la absorción.
  • La cantidad de absorción esta basada en el valor kappa o extinction coefficient (imaginary part of complex index of refraction).
  • Parte de la luz absorbida puede extinguirse o transformarse en calor.
  • El color de la reflexión tiende a tintarse del color de las fuentes lumínicas.
  • Básicamente todos los metales formarían parte de este tipo de materiales.

Calcular los valores correctos

Para calcular los valores correctos para tus materiales, eta y kappa trabajan conjuntamente, salvo que estés creando un material dielectric que solo utiliza eta.
Aumentar el valor de eta incrementará el índice de refracción de la superficie, y aumentar el valor de kappa significará menos luz absorbida y mayor reflexión.
Utilizar valores reales significará que tus shaders se comporten de la forma correcta.

Hay varias formas de realizar esta tarea. Lo primero es buscar una medida real para tu material. Si tienes un reflectance detector puedes utilizarlo. Si no, puedes ayudarte de sitios como http://refractiveindex.info/

Seguramente no dispongas de un reflectance detector a menos que trabajes en un estudio de VFX muy especializado, en el laboratorio de una universidad, etc.

Si utilizas http://refractiveindex.info/ primero, selecciona el tipo de material en la web, por ejemplo aluminio. Aluminio es un conductor, así que tendremos información de eta y kappa. Necesitamos obtener el valor de ambos para cada wavelength, Red, Green and Blue.

RED = 0.7µm
GREEN = 0.53µm
BLUE = 0.47µm

Introduce los valores en el campo y dale al enter, la web te mostrará los valores de eta y kappa para cada wavelength. Si solo te da el valor de eta, significa que estas utilizando un dielectric material, y el kappa debe ser 0.

En el caso del aluminio estos son los valores.

eta[r] = 1.92139
eta[g] = 0.930287
eta[b] = 0.70362
kappa[r] = 8.1420
kappa[g] = 6.3965
kappa[b] = 5.6953

Si comprobamos plásticos o polycarbonatos, obtendremos algo similar a esto, sin valor para kappa ya que estamos hablando de dielectric materials.

eta[r] = 1.57508
eta[g] = 1.59243
eta[b] = 1.60246

Aquí dejo algunos de los valores para materiales comunmente utilizados.

Desde hace unos 10 o 12 años, UDIM ha sido el método de UV Mapping más utilizado en la industria de los VFX. Desde hace 4 o 5 años aproximadamente, cuando Mari empezó a ser popular y abierto a profesionales fuera de los grandes estudios, UDIM se ha expandido a todos los niveles.

Poco a poco, las empresas responsables por software 3D, o motores de render, han ido adaptando sus herramientas para que trabajar con UDIM sea cada vez más sencillo.
Si eres usuario de Maya y Arnold o VRay, seguro que vienes utilizando los "tokens" que ofrecen desde hace un tiempo.

Hasta ahora en Modo, había que configurar cada mapa de textura con la coordenada correspondiente de UDIM, lo que suponía un dolor de cabeza, especialmente si trabajas con assets de 50 UDIMs o más.

Con la nueva version de Modo 801, trabajar con UDIM es incluso más sencillo.
Basta con exportar los mapas desde Mari y cargarlos en Modo con la opción "load UDIM".

Aquí dejo el sencillo procedimiento que hay que seguir.

  • Exporta tus mapas desde Mari. A mi me gusta utilizar la nomenclatura componente_UDIM.exr por ejemplo RGB_1001.exr
  • Asigna un nuevo material a tu asset.
  • Añade encima del material una textura mediante la opción add layer -> image map -> load udims.
  • Selecciona la secuencia de UDIMs.
  • Cambia el effect para afectar al channel deseado, como has hecho siempre.
  • Fíjate que en las opciones de UV Map ya vienen por defecto la opción Use Clip UDIM, así que no tienes que preocuparte de nada, Modo ya se encarga solito de leer las coordenadas UDIM.

Ya está, no necesitas hacer nada mas :)

  • Como extra, puedes ir al image manger y seleccionar un mapa de textura. Verás como en las propiedades UV te muestra la coordenada UDIM a la que pertenece.
  • También en esta misma ventana de propiedades, bajo color -> colorspace puedes cambiar el espacio de color de una secuencia completa de UDIMs con un solo click, lo que viene genial si trabajas mediante Linear Workflow o cualquier otro espacio de color.