Adverti horiz upsell
QUICK FIX: Fixing Motion Vector Offset WITHOUT ReRendering
QUICK FIX: Fixing Motion Vector Offset WITHOUT ReRendering
Aaron Marine, updated 2012-10-08 11:33:38 UTC 21,894 views  Rating:
(0 ratings)
Page 1 of 1

Hello, and welcome to this awesome little tutorial. The purpose of this tutorial is to explain a common problem compositors run into that comes out of the pipeline and onto our plate; the dreaded offset, or passes not lining up 100%. When you have a render artist send you multiple passes that are NOT loaded into a single EXR sequence (such as multiple render layers for the master passes, ambient occlusion, etc), eventually you might have a 2D motion vector pass built in, which is the leading cause of this issue.


The 2D motion vector pass coming out mental ray and into most EXR sequences (MV2E_mv2DToxik...) to be specific,  is compensating for a prepositional offset which is then calculated into color data for Nuke to read as directional data for motion blur purposes. This offset does not just sit in the pass alone, but applies it to every pass associated in that layer and sequence. That way, when you receive the other passes in separate sequnces, they will not entirely line up.

You can't always go back to the artist responsible for the render and have him change the offset values and rerender the entire shot. Time and money will not always allow it and that's why it is important to understand what I am explaining to you, so you as the compositor can assess and correct the issue. On the next page, I will explain a simple technique, but please be sure that you are understanding of the "Copy" node as I will not be explaining that...

NOTE: This technique is only a quick fix and is only necessary when you have no other options.


After your comp layout is all set up, locate the read node containing the Motion Vector pass data. Branch out of that node with a "Copy" node (in the A input). Be sure that you are copying all associated data corresponding to that pass (MX, MY, MZ) and pipe one of your other read nodes which does not line up correctly (AO for example) into the B input of the "Copy" node. You should now have the Motion Vector applied to that pass as well, so go ahead and duplicate the "Copy" node and apply it to all other read nodes which have offset issues.

If you view each of those nodes in your viewer, you should be able to see the pass is now associated with all of your Read nodes. From this point, with a single "Copy" node selected (for the MV pass), you can apply a single "VectorBlur" node to it directly below. In your Viewer, you will see that nothing has happened to the pass, but in the Proporties for "VectorBlur" node, you should then change your uv channels input to your newly added Motion Vector pass. NOW, you will see an extremely strong motion blur added to that pass.

Don't worry, this is just temporary. Go ahead and make a clone of this node and apply it to the rest of your "Copy" nodes. Now, in the properties for any of the "VectorBlur" nodes, change your multiply slider to an extremely low number such as (0.05) so the blur is no longer visible to the eye. Now you have the option to change the offset slider to reposition the external passes to match up with your primary EXR.

Here is a close up image to show the offset and it's correction:


As I said early, this is just a quick fix and should only be used as such when you do not have the time and/or money to complete another full render of all passes to contain the offset. I know it is not most accurate way to fix the problem, but it is certainly the fastest and as you already know, working fast is always in everybody's best interest. If you have any trouble with this method, please let me know and I will be sure to help you out. Thank you for viewing my tutorial and I hope it helps.