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.

 

21 comments

  1. Great tips again, I had the same problem when I tried to use a vector blue pass from Cinema 4D in Blender’s Compositor, but unlike you I gave up 😉

    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. 🙂

  2. 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.

    1. Wow, great tip, Paul, thanks for sharing!! Wonder why it saves the vector differently, though. Blender sure has some interesting quirks.

  3. 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! 🙁

    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? 🙂

  4. HI Sean,
    thanks for the tip! I just tried it out and out of curiosity also tried the VectorBlur2. It worked! Maybe it got updated.

    1. Oh, interesting! That would be good news. Have you compared the two results directly? Is the blur the same direction and length?

      1. Yeah, it is. If you set VB1’s method to “forward” and VB2’s blur type from “gaussian” to “uniform”, you get the exact same result.

  5. Hi, thanks for post.

    Q. by any means, can you please post a similar with UV. in my case, i am having issue’s while using it with STmap node. huge thanks, in advance

    1. uv data worked by flipping uv channels in nuke.
      only thing left in wishlist is cryptomatte. setup in nuke based on multilayer exr from blender

  6. Thanks for the tutorial. I attempted to do this in simple test. It took me a good half hour the decipher the old into new shuffle node as well as which new motion/vector blur node to use. Here are my results https://imgur.com/a/NoBeu3W You’ll notice I am having a bit of an issue with the environment/alpha pass not being affected by the motion blur. Let me know if I am doing anything wrong.

Leave a Reply to lalamax3dCancel reply