VelocityBlender noise reduction technique. by Mauricio Ricaldi

One of the biggest problems with CG is the noise, it takes a lot of CPU power to render an animation without it, and sometimes is not possible to get rid of it without going to insane long render times.

all-hail-king-julien-images-2.jpg

In 2014 at the beginning of the King Julien show we had this problem, one solution I used to do when I was a painter is blend frames in the patches so it looks smooth. With Jordan Cho, a great comp and vfx artist we figure out that if the velocity is used to mask the frame blending in a CG character we can reduce the noise of it.

"Then the logic was if the character is not moving much the blending will be more effective, as soon begin to move the motion blur will make the noise imperceptible."

Since latest version of Nuke has already this feature and we found out that our tool in the Internet and also being used in some studios I think is right to give credit to the people behind it.

VelocityBlender:

vb01.JPG

For the next 3 years Jordan and me fine-tune this tool, so it can reduce a lot of the noise in any pass, have customs mask and exclusions for props that don't need blend or generates ghosting, have triple blending to get rid of complicaded character noise. At the end to make the thing easier for the artist, there is tree setups. action, talking, staying still. But also there where custom version tailored for different shows.

vb02.JPG

Different setting for the action of the characters.

vb03.JPG

Velocityblender was used in a series of projects like King Julien, Puss and Boots and become one of the main tool in the studio, I know that Technicolor used too in their productions.

Vanila version of VelocityBlender 3.5x


All images and characters belong to DreamWorks, I'm using it as demonstrative purposes.


Multi Matte in Maya using Vray by Mauricio Ricaldi

One tool that is very useful in light and comp pipeline is creating mattes for diverse tasks later in comp, sometimes there is a need to do specific mattes for certain objects or do a lot of mattes at once.

One tool we build with my friend and now sup in Bardel (Mike Tran), was the multi-matte to manage in a fast way this task. It began as a contest who can make the best matte tool for Vray and at the end we fusion both in this one :)

This tool will work using Vray render engine only.

multimatte01.JPG

There are diverse ways to generate mattes with this tool, but all will at the end create passes in the layer that you are with the names "Multi_Matte_A" (A-B-C to H) depending the amount of objects you select.

 you need to position in to a render layer to build the passes inside

you need to position in to a render layer to build the passes inside

multimatte03.JPG

Auto MultiMatte is the automatic button, just select a bunch of objects or groups, for "each" selection will create a pass to the total of 24 passes. so maximum of 24 objects.

Take in mind that ObjectID is used to tag the proper pass later on, but is parent-child hierarchy driven, so if there an object or a group that has already assigned an ObjectID on top of your selection, that object rules.

Sometimes this could create a mess specially if you didn't model/layout your sets, the next button "remove ObjectID form Geo" will remove it or set to "0", if don't work you will need to remove it manually (reference files do this).

multimatte04.JPG

The next tab is to manually assign mattes to objects, to passes from A to H, is very straightforward, select the object or objects  then select the pass name you want to assign it and color. done.

The pass will be created automatically if is not present.

Finally the grid matte

multimatte05.JPG

Is for fast assign mattes to objects, just select the objects and press any color of the pass you want to be assigned, for simplicity there is A-B-C Multi_Matte passes.

This tool was very useful in the pipeline of some shows I work on last year.

MultiMatteTool for Vray

(this is a Python script)

 

 

 

 

 

Maya scripting 101 by Mauricio Ricaldi

One useful skill to learn in Maya is doing some basic script, it makes repetitive task easier.

Maya has two script languages to work, one is MEL that is the easier one for small tasks and short scripts, this is because you can copy/paste the command from the script editor. The other one is Python that is very similar to MEL, but you can build more complicated tools with it. But don't think MEL is less powerfull, a lot of tools I made was using mel first and then translated to pyhton, and some tools is works better in mel.

As example, we have this scene that have a x number of globes, and we need to select them several times for different tasks.

We open the script editor and make any change to the mesh:

copy/paste this to a MEL window below and it will select that object again.

We need to select all balloons at once, so we enclose the object in "quotes" and add * to any number that we find.

select -r "KJN*Anim_BD:KJN_JungleC_EXT_Auditorium_SD:KJN_BalloonA*:Balloon_Geo" ;

Now we have all selected, we can create a loop to change settings to all of them at once, we need first to store in a container called array, this will be $allObjs[]  and 'ls-sl' will fill the array with the selection.

string $allObjs[] = `ls-sl`;

The next thing is to do a loop, for this we add a variable called $x that will go to each object one by one till runs to the end of the selection that is defined by the size($allObjs).

for($x=0;$x<size($allObjs);$x++) {

As example I'm changing all the object to hold-out, the easier way is change one ballon and check the script editor.

check the last world that the attribute is called ".holdOut", so we need to do this to all the objects.

setAttr ($allObjs[$x] +".holdOut") 1;

setAttr is the command to change things in maya,  we add $allObj[$x] so $x will run from the first object to the last in a loop and then +".holdOut" 1 will change that attribute while looping.

At the end the entire script is:

select -r "KJN*Anim_BD:KJN_JungleC_EXT_Auditorium_SD:KJN_BalloonA*:Balloon_Geo" ;
string $allObjs[] = `ls-sl`;
for($x=0;$x<size($allObjs);$x++) {
 setAttr ($allObjs[$x] +".holdOut") 1;
}

You can change thie ".holdOut" with any other attribute like ".castsShadows", ".primaryVisibility", ".image" etc.