Antonio Mendoza / Lighting and Shaders Artist Blog

THE TRICKSTER PROJECT - Fan shortfilm.



Job Description: Co-Producer - Lighting & shaders Director - Render TD. Some friends we are making a little project called "Trickster", it's a little Live-action short film (about 1 minute duration) based on the Matrix movie, it's just a fan-made film to see how far we can go with our skills in Film making and Visual effects. In this blog http://thetricksterproject.blogspot.com/ we're going to post work in progress of the project, and some experience that we can get with it.
Personal project.
READMORE
 

BUBBALOO ZOMBIE - TV Spot



BREAKDOWN



Job Description: Production Director - Lighting & shaders Director.
Duties: Production director / Lighting and shaders artist-Director / Render TD. Commercial post-produced by MOMPOZT
READMORE
 

RESISTOL - 3D Pieces.

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
3D Pieces by MOMPOZT
READMORE
 

WONDERFUL MOMENTS !!! - 3D Piece

With love for my wife and kid

Job Description: WONDERFUL MOMENTS! This is an 3D art piece that I created to capture a moment in my life that filled me with happiness. The print of my son's hand.
Duties: All CG Process. (Modeling, Textures, Lighting, shaders and Compositing)
READMORE
 

FRUPER ROBOTS - 3D Commercial


A little description about the shaders:

The Maps and the Robot models was made by ALEJANDRO ALBARRACÍN:



BREAKDOWN
Job Description: Production Director - Lighting & shaders Director. Duties: Production director / Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

PANDITAS - 3D Demo

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

DUENDE PEPSICO - 3D Demo

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

PONDS TRIPLE ROLL - 3D Commercial

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

SUPERCABLE - Commercial

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

OREO NAVIDAD - 3D Commercial

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

CAFÉ SELLO ROJO - Commercial

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

FENAVI FESTIVAL - Commercial

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

KLIM 2014 - Commercial

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

3D PACKSHOT - Ponds Tripleroll

Job Description: Lighting & shaders Director. Duties: Lighting and shaders artist-Director / Render TD.
Commercial post-produced by MOMPOZT
READMORE
 

TUTORIAL - LESSON #1


RENDERIZANDO UNA ESCENA CON OBJETOS EN MOVIMIENTO EVITANDO EL FLICKERING EN V-RAY.

Desarrollada por: ANTONIO MENDOZA - V-Ray artist

Una de los grandes retos que tenemos a la hora de enviar un render es que este no presente parpadeo o flickering en el video final. Esto uno de los mayores problemas de render que se nos presenta en el mundo del 3D cuando comenzamos a hacer nuestros videos con GI y que no sabemos en muchos de los casos como evitar.

En este tutorial veremos la forma ideal de como enviar a render una escena de V-Ray que incluya objetos animados, haciendo uso de los precálculos de los mapas de irradiación para evitar estos problemas de flickering.

Lo primero que debemos tener cuenta es la forma en la que vamos a separar nuestra escena para aislar los mapas de irradiación de los objetos estáticos y de los que presentan animación. ¿Porqué esto se preguntarán?.- Sencillo, porque los objetos estáticos presentan un mapa de irradiación que NO cambia con el tiempo y por ello puede calcularse con intervalos de frames para que este cálculo intercalado sirva para todos los frames de la secuencia. En el caso de los objetos en movimiento, este mapa de irradiación cambiará en cada frame de la secuencia y por ello no puede calcularse con intervalos de frames, sino frame a frame exclusivamente y tendrá un mapa irradiación para cada frame.

Para ver claramente como funciona esto, tenemos una escena (les Precalc - FINAL.max) que está compuesta por un escenario estático donde tendremos un objeto animado (Biped) que atraviesa la escena de izquierda a derecha.


Lo primero que hacemos es organizar muy bien la escena de tal forma que en los Layers pueda identificar claramente cuales son los layers que tienen objetos en movimiento y cuales no.


Fig.01

En Figura.01 podremos ver la escena con la que vamos a trabajar y tenemos seleccionado el objeto en movimiento que deberá ser precalculado por separado para este caso.

Una de las cosas que muestra la Figura.01 es que este objeto se encuentra aislado en uno de los layers del Manage Layers (Administrador de capas) del 3DS Max para tener más control y orden a la hora de comenzar nuestro proceso.

Un punto importante que recomiendo siempre es que establezcan un método de organización de la escena dado que este es un ejemplo simple, pero para escenas con más de 200 objetos y más de 30 layers, esto podría complicarse y llegar a hacernos cometer un error porque no logramos diferenciar con facilidad los objetos estáticos de los dinámicos.

Para esto he desarrollado un simple método que nos ayudará a ordenar e identificar mejor los objetos en la escena. La Figura.02 nos muestra el orden de Layers donde todos los objetos estáticos de la escena estarán almacenados con la preposición 00_, en este caso en el layer (00_Layout) y los objetos animados estarán almacenados en layers con la preposición 01_, para este caso en el layer (01_Biped) y los objetos de ayuda, Setup, Rig, Luces, cámaras, etc. que no saldrán en la imagen y que son exclusivos para el control de la escena estarán almacenados en layers con la preposición XX_ en esta caso, (XX_Lights y XX_Camera)

Fig.02

El método de organización en este caso será así:

Para los objetos estáticos en la escena, todos los layers deberán tener la preposición 00_ Esto nos ayudará a identificar con facilidad en cuales layers los objetos no poseen movimiento. Ej: 00_Paredes, 00_Columnas, etc.

Para los objetos que tienen movimiento, serán separados en layers con la prepocisión 01_. Ej: 01_Characters, 01_Cars, etc.

Para todos los objetos, Dummy, Tapes, Rig, Controladores, Luces, Cameras, etc. que no saldrán en el render final se colocarán en layers con la prepocisión XX_.

en conclusión, los layers deben ordenarse de esta manera:

00_Nombre de layer (Objetos estáticos)
01_Nombre de layer (Objetos dinámicos)
XX_Nombre de layer (Objetos que no deben salir en el render)

Una vez ordenado los layers en la escena, comenzamos el proceso de precálculo de los mapas de irradiación.

Para el precálculo y render final de escenas con objetos animados esta será la estructura que vamos a trabajar para tener mejor control de nuestra composición y nos ayudará a tener mejores resultados y ser más eficientes a la hora de hacer cambios o ajustes de cliente.
  
                                               1                                 2                                         3
RENDER FINAL = RENDER (ESTÁTICOS) + RENDER (DINÁMICOS) + SHADOWS (DINÁMICOS)

Esto quiere decir que vamos a separar nuestro render en 3 etapas y esto nos ayudará a que cada etapa tenga mucho más control en la composición y podamos generar precálculos de mapas de irradiación  independientes para evitar el parpadeo o flickering.

lo primero que vamos a hacer es trabajar en el RENDER (ESTÁTICO) y para ello vamos ocultar (Hide) las capas de todos los objetos en movimiento. En este caso como tenemos un sólo layer con objetos animados (01_Biped), vamos y procedemos a ocultar (hide) este layer  como se muestra en la Figura.03

Como se puede ver en la Figura.03 al ocultar el layer (01_Biped) este ya no está en la escena y así podremos hacer el precálculo del mapa de irradiación del layout. 


Fig. 03


Luego de tener ocultos todos los layers que tengan los objetos animados, procederemos a hacer el precálculo estándar de una escena arquitectónica.

Para ello nos vamos a panel de Render Setup y configuramos el V-Ray para que podamos hacer nuestro precálculo del todos los objetos estáticos.

Primero nos vamos a la solapa de Indirect Ilumination y ahí configuramos el Irradiance map como muestra la Figura.04.

Dejamos todos nuestros settings de V-Ray tal como los hemos configurado para que nuestro render tenga la calidad necesaria y nos vamos a MODE del Irradiance map y lo cambiamos de Single Frame a Incremental Add to Current Map.

Una vez hecho esto, hacemos click en Save y guardamos la ruta de donde queremos que quede nuestro archivo calculado.


Fig. 04


Activamos el Auto save para que este guarde el mapa de irradiación una vez termine de hacer el cálculo.

Luego de haber dejado en configurado el Irradiance Map, procedemos a dejar listo el Light Cache de la siguiente manera como se muestra en la Figura.05:


Fig. 05


Cuando ya hemos configurado el Irradiance map y el Light Cache para generar nuestro precálculo en cada motor, procedemos a desactivar todo el tema de render final en la imagen dado que durante el precálculo del V-Ray, este sólo calcula el GI y no la imagen final, por lo cual en la ventana de render sólo verás el cálculo del mapa de irradiación. El objetivo de esto es para que no salga en la ventana de render información que no necesitas en este momento y puedas ahorrar memoria RAM para el cálculo de los mapas al tener toda imagen desactivada. Con esto sólo verás la ventana de los procesos de render que se están ejecutando y no la ventana del Frame Buffer o la ventana de Render del 3DS Max mostrando el precálculo.

Para hacer esto configuramos las siguientes opciones del V-Ray de esta forma:


Nos vamos a la solapa de V-Ray y en Global Switches Activamos la opción Don’t render final image como muestra la Figura.06

Fig. 06

Luego de esto vamos a la ventana de Frame Buffer y desactivamos el Frame Buffer por el momento mientras hacemos el precálculo. Recuerden que esto lo hacemos para no guardar información innecesaria y ahorrar memoria RAM para el equipo. (Figura.07)

Fig. 07

Luego vamos a la solapa de Common y desactivamos la opción Rendered Frame Window. (Figura.08)

Fig. 08

Con estas opciones configuradas de esta forma, el paso siguiente es decidir el intervalo de cada cuantos frames vamos a hacer el precálculo de los objetos estáticos. La mejor forma de definir esto es teniendo en cuenta el movimiento de la cámara. Si la cámara tiene cambios considerables de ángulo y velocidad lo mejor será hacer intervalos cortos (cada 3 a 5 frames). Si por el contrario la cámara tiene pequeños movimientos donde el encuadre no varía mucho, se pueden hacer los precálculos con grandes intervalos de frames (Cada 10 - 15 frames). Esto es porque el Incremental Add to current map va agregando información adicional al mapa que va generando en cada frame calculado. De tal forma que si la cámara tiene movimientos fuertes y seleccionamos intervalos de frames muy grandes, se volará información valiosa y nuestro mapa de irradiación no será tan preciso. Por lo cual es muy importante este análisis del movimiento de la cámara para que decidamos correctamente cuál será nuestro adecuado intervalo de precálculo.

Para nuestro caso, como la cámara tiene un pequeño paneo de posición podremos utilizar un intervalo de frames bastante alto. (En este caso cada 10 frames) como muestra la Figura.09

Fig. 09

Esto quiere decir que el V-Ray hará un mapa de irradiación agregando nueva información calculada desde la cámara al mapa de irradiación cada 10 frames de la secuencia. Con esto construirá un mapa completo que puede servir perfectamente para todo el recorrido de la cámara.

Una vez configuradas todas estas opciones, podremos hacer click en Render y comenzar el precálculo.

El 3DS Max nos sacará un mensaje diciendo que vamos a perder la secuencia animada (Figura.10), a lo que hacemos caso omiso dado que desactivamos toda opción de guardar la secuencia porque en este momento no deseamos tener ninguna secuencia renderizada sino sólo el cálculo del mapa de irradiación.

Fig. 10

Cuando seleccionamos que queremos continuar, comienza este proceso en el que podremos notar que sólo calculará 19 frames de los 180 que tiene nuestra secuencia dado que escogimos que hiciera el cálculo cada 10 frames. Así que hará el cálculo en el frame 0, 10, 20, 30, etc... hasta llegar al frame final del video y almacenará esta información en dos archivos (Uno para el Irradiance map y otro para el Light Cache respectivamente) Figura.11

Fig. 11

Una vez calculados los dos mapas de irradiación, podremos cargar estos mapas y así poder enviar el render como lo necesitamos para evitar que se genere flickering en el video.


Lo que debemos hacer antes de enviar el render de todos el Layout es restaurar ahora todas las opciones que habíamos configurado para que no saliera el render final. (En la Figura.06 desactivar la opción Don’t render final image, en la Figura.07 Activar el V-Ray Frame Buffer y en la Figura.08 Activar la opción Rendered Frame Window)

Con esto dejamos restaurado los de V-Ray para que puedan procesar la imagen y procedemos a cargar los mapas de esta manera.

En el Irradiance map cambiamos el Mode de Incremental Add to current map a From File y seleccionamos el archivo guardado. Igual para el Light Cache cambiamos el mode de Fly-Through a From File. Figura.12

Fig. 12

Ya cargados los mapas de irradiación, sólo queda asegurarnos de volver a colocar que la secuencia de imágenes se haga cada 1 frame como estaba originalmente en los Common Parameters. (Figura.09)

Hacemos click en RENDER y la secuencia completa de la escena se renderizará sin problemas. Es importante aclarar que como ya los motores de GI primario y secundario se calcularon previamente y se le están entregando al V-Ray en archivos, este no hará los pases de cálculo al momento del render, sino que se enfocará sólo en procesar la imagen (renderizar). Esto hace que el render sea mucho más rápido que cuando tiene que generar todos los pasos de cálculo de irradiación. Figura.13

Fig. 13

Con esto ya tenemos listo el render del Layout (Objetos estáticos) y ahora debemos hacer el procedimiento para los objetos animados en la escena.

Para preparar la escena para mandar el render de estos objetos animados lo primero que vamos a hacer es seleccionar todos los objetos estáticos que ya procesamos y hacemos click derecho con el mouse y nos vamos a V-Ray Properties. (Figura.14)

Fig. 14

En esta ventana hacemos que todos los objetos estáticos sean Matte para el render pero que tengan la propiedad de interactuar el objeto animado.

El siguiente paso es desocultar (unhide) el layer 01_Biped ya que este será nuestro próximo render.

Ya con el objeto animado en la escena, una cosa que debe notarse es que si sacamos render de prueba con los modos de irradiance y Light cache en Single frame (Figura.15), notaremos que el personaje está sólo en la escena, pero esto no es así. Todo el Layout está interactuando con él, sino que este no se vé en el render porque se encuentra en matte. Otra cosa que hay que notar es que el personaje no proyecta sombras, y esto es a causa de que no está activo Shadows en el módulo de Direct Light de la Figura.14. La razón de no activar las sombras en este paso es porque deseamos tenerlas separadas para mejor control de la composición, así podremos aumentar o disminuir la densidad de la sombra, aplicarles blur, corrección de color independinte, etc.

Recordemos nuestra ecuación del render final:
                                               1                                 2                                         3
RENDER FINAL = RENDER (ESTÁTICOS) + RENDER (DINÁMICOS) + SHADOWS (DINÁMICOS)

Fig. 15

Ahora vamos configurar el V-Ray para hacer el precálculo de los objetos animados ya con el layout en Matte. (En nuestro caso el del Biped). Algo para tener en cuenta es que vamos a hacer el mismo procedimiento del layout pero cambiando sólo un par de detalles mostrados en el siguiente gráfico. (Figura.16)

Lo primero que vamos a hacer es ir a la solapa de Indirect Ilumination y ahí configuramos el Irradiance map como muestra la Figura.16.

Vamos al MODE del Irradiance map y lo cambiamos por Animation (Prepass) y una cosa para tener en cuenta es activar la opción Use Camera Path. La razón para activar esta opción es que otra de la fuentes de parpadeo o flickering en la es el movimiento de la cámara, dado que como el mapa se calcula a partir de rayos enviados desde la cámara hacia los objetos de la escena, esta cambia con cada frame y los rayos siempre estarán golpeando diferentes puntos durante la secuencia. Esto no sucede con los estáticos dado que el mapa es uno sólo para toda la secuencia y en este serán mapas por cada frame. Esta opción elimina este problema dado que crea todos los puntos generados por la cámara en cada frame de la animación y los utiliza igual para todos los mapas eliminando este problema de diferentes puntos en cada posición de la cámara.

Una vez hecho esto, hacemos click en Save y guardamos la ruta de donde queremos que quede almacenado nuestro archivo calculado. Como explicamos anteriormente la razón del Animation (prepass) es que necesitamos hacer un mapa de irradiación por cada frame dado que los objetos animados cambian durante toda la secuencia y no se podría utilizar un sólo mapa para toda la animación como el caso anterior. Igual para el Light Cache y por esta razón se coloca el mode en Single frame para que guarde también una secuencia de mapas y no un único mapa que sirva para toda la secuencia. En el Light Cache también activaremos la opción Use Camera Path por la misma razón que la activamos en el Irradiance map.

Fig. 16

Luego de hacer esto repetimos exactamente los pasos de la figura.06 Activamos la opción Don’t render final image, Figura.07 desactivamos el Frame Buffer y Figura.08 y desactivamos la opción Rendered Frame Window.

Como en el caso de los objetos animados necesitamos un mapa por cada frame no haremos el paso de la Figura.09, donde cambiamos el intervalos de frames a cada 10 frames para el cálculo. Acá lo dejaremos como viene por default. Every Nth Frames = 1

Una vez hecho mandamos a render y sucederá los mismo de la figura.10 y seguiremos adelante con el cálculo de los mapas.

Fig. 10

Una vez terminados estos cálculos lo que notaremos inmediatamente es que no es un sólo archivo sino secuencia de mapas que tiene la misma longitud de la secuencia de la escena.

Vamos al Irradiance map y cambiamos el Mode a Animation (Rendering). Este solicitará la secuencia de mapas y seleccionamos el primer archivo de esta secuencia y automáticamente seleccionará los mapas de acuerdo al frame que va a renderizar. Figura.17

Fig. 17

Ya armado el Irradiance map, repetimos los siguientes pasos para dejar activo todo el proceso del final render. (En la Figura.06 desactivar la opción Don’t render final image, en la Figura.07 Activar el V-Ray Frame Buffer y en la Figura.08 Activar la opción Rendered Frame Window).

Listo esto, mandamos a render la secuencia de los objetos animados en una ruta diferente a la anterior.

Cuando este render está finalizado, sólo nos queda faltando las sombras de los objetos animados.

Para esto configuraremos la escena así.

Todos los objetos estáticos (00_Layout) seguirán siendo matte pero esta vez si tendrán la opción de recibir sombras activa. Figura.18

Fig. 18

Nótese que todas las opciones anteriores para el matte siguen siendo iguales de la Figura.14, sólo activamos adicional los Shadows.

Una vez hecho esto, lo siguiente será seleccionar todos los objetos en movimiento y hacer click derecho con el mouse y desactivar la opción de Visible to Camera. (Figura.19)

Esto se hace porque sólo necesitamos las sombras los objetos animados y no queremos que salgan en el render pero que SI puedan afectar el entorno donde se proyectan.

Fig. 19

Luego de configurar los objetos estáticos para que reciban sombra y que los objetos animados no sean visibles a la cámara, nos vamos a el Irradiance map y al Light Cache y se les debe colocar el Mode en Single Frame y desactivar el autosave. También importante desactivar la opción de Use Camera Path que no será útil para este caso en los dos motores de GI.

Mandamos el render y almacenamos la secuencia de render en otra ruta diferente y esto es lo que veremos en este render donde sólo podremos ver las sombras proyectadas en los objetos estáticos sin poder ver los objetos animados. (Figura.20)

Fig. 20

Una vez tenemos las 3 secuencias de render listas podremos en compo superponerlas dado que cada una tiene su alpha correspondiente para que encajen perfectamente y ajustar cada capa por separado. Esto nos dará un control ideal en la composición y nos entrega ventajas a la hora de hacer ajustes, dado que si tenemos que cambiar la animación de los objetos, sólo tendremos que enviar las dos capas de Animados y shadows y dejar la capa de objetos estáticos sin modificaciones.

Este proceso de precalcular los mapas de irradiación en objetos estáticos y animados, nos garantizará que no tendremos parpadeo o flickering en nuestros videos. También recalcamos la importancia del orden en la escena dado que esto nos ayudará a identificar con facilidad los objetos con movimiento y poder aislar cada layer de manera eficiente.

En resumen:
                                               1                                 2                                         3
RENDER FINAL = RENDER (ESTÁTICOS) + RENDER (DINÁMICOS) + SHADOWS (DINÁMICOS)

Fig. 21

Espero lo hayan disfrutado y esperen más tutoriales donde expondremos las soluciones más acertadas a los problemas que se nos presentan en cada situación de este hermoso arte.


Desarrollada por: ANTONIO MENDOZA - V-Ray artist
READMORE