Using Blender’s Vector Pass in Nuke

OpenVFX_motion_vectors_header_flat_02

Wow. Sometimes you think something will be easy and automatic, and then reality steps in and yells “Nope!” right in your face. This is one of those common things a compositor runs into almost daily – using a vector pass from a 3D program to add motion blur in post. Using a vector pass speeds up the 3D rendering and lets the compositor make adjustments to the motion blur without having to re-render any 3D elements.

Straightforward and simple, right? Especially considering every 3D program puts out vector passes, and every 2D program is able to use them to create motion blur. Naturally, Blender puts them out a little bit differently than other programs, so it took a bit of digging to figure out how to shuffle things around to get it working in Nuke as expected.

I originally found Manuel Albert’s post on BlenderArtists, which was great! In testing it out, I found it wasn’t blurring in the correct direction, however. Some quick shuffling of the channels and everything now works as planned. To save you the trouble of scouring the internet for the correct solution, I thought I’d run through the process quickly for everyone.

Manuel-Albert_and_me

Manuel Albert and me at the 2017 Blender Conference

You’ll find it all below, both in pictures and video. Pictures if you just want the quick setup, video (scroll way down!) if you want a detailed explanation.

Step 1: In Blender, set the output format to OpenEXR MultiLayer. MultiLayer is important. Regular OpenEXR will not save your vector pass! Turn OFF the checkbox in the Motion Blur panel, and in your Layer settings, turn on the Vector pass for whatever layer you need motion blur on. That’s it, now render!

OVFX_blender_vectors_settings_01

Step 2: In Nuke, first we have to find the older, legacy version of the Vector Blur tool. Just hitting TAB and searching for Vector Blur will not do it. That brings up the newer version of the tool, which, for some odd reason, doesn’t work with Blender’s vector pass. Instead, go to the Other tab, and at the bottom you’ll see All Plug-ins. Select Update, then open up that same tab again. Now you’ll see all plug-ins, including older legacy ones. Grab the first VectorBlur, not the VectorBlur2.

OVFX_nuke_legacy_vector_node_01

Step 3: Bring in a Shuffle and a ShuffleCopy, and place them along with the VectorBlur as shown in the image below. The Shuffle node will bring out the Combined beauty pass, so select it from the dropdown menu. The ShuffleCopy will let the Combined channels pass through while also bringing in the Vector channels and shuffling them into the Motion pass. Pay close attention to the settings below that show which Vector channels are shuffled into which Motion channels. This is the important part.

OVFX_nuke_shuffle_nodes_01

Step 4: In the VectorBlur settings, switch channels to rgba, set the UV channels to use the Motion pass, set the Method to forward, and choose rgba.alpha in the alpha dropdown menu. And that’s it, it should be working now. Adjust the Multiply value to dial in the motion blur to your liking.

OVFX_nuke_vector_settings_01

Keep in mind this works for everything, as far as I can tell. For example, at work when I needed to do this, I was rendering a particle effect that was going to be distributed to many compositors, who would then use the particle pass to distort the footage behind layers of other particle effects, creating a superhero energy beam. By letting the compositors dial in the motion blur on the particle pass that was distorting the footage, they could achieve different styles of the energy distortion to suite the client’s needs.

Assets required:

Download the video tip directly right HERE.

 

8 comments

    1. Hahahaha, I can relate. If I had just been doing this at home, I’d have probably given up. This was for a work project, so it absolutely had to get figured out. 🙂

      Like

  1. Fantastic tip Sean. Perfect for a current project. One note I’ll add that others might find helpful is if you use a file output node in a Blender compositor noodle and direct vector (speed) to an EXR layer it will only give you an XYZ vector not the WXYZ you need for this method which only seems to work from the “master” file out. Might be possible with some further digging, but knowing this might save someone some time that I wasted.

    Liked by 1 person

  2. The Nuke interface of the motion vector node changed in the last version. There is new options that change how the blur is interpreted. Could you check it. I’m really lost now! 😦

    Liked by 1 person

    1. There are 2 versions of the vector blur node, the new one and the older legacy version. In Step 2 in the tutorial above, I mention that you have to use the old legacy one, and I show how to load it. That should address the problem, right? 🙂

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s