RENDERIZANDO UNA ESCENA CON OBJETOS EN MOVIMIENTO EVITANDO EL FLICKERING EN V-RAY.
Desarrollada por: ANTONIO MENDOZA - V-Ray artist
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.
Fig. 04
Activamos el Auto save para que este
guarde el mapa de irradiación una vez termine de hacer el cálculo.
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
Excelente!!!
ReplyDelete