Saving OpenEXR files with Pixel Velocity from Blender
This is the first of what I hope is many posts on Blender and 3D production workflows. Moving from 3ds max, I typically like to save out OpenEXR files with different render passes in one file, stored as separate channels. The trickiest of these is taking pixel velocity information (used for post-processing motion blur) and putting that in a format that works with ReelSmart Motion Blur plug-in. Thanks to Bill Mountney’s post at Creative Cow, I had a great starting point, and with a few tweaks I think I have found my settings:
A few notes (numbers in red circles in above image) to observe here:
I pulled out a value called “MaxDisplace” to allow quick setting of a value that estimates the distance of pixel motion blur in a given image or animation. Setting this number to a lower value lets you see the motion blur settings on the Viewer node contrasting with the 50% red, 50% green zero-velocity background that RSMB uses.
Blender documentation has the speed R and B channels as the x-velocity entering and exiting the frame, respectively, and the G and A channels are the y-velocity entering and existing the frame. I combined these before dividing them by the MaxDisplace value, but there is likely a better way to combine them.
I added the alpha channel for my ambient occlusion, as the AO pass had a black background and no alpha.
This is saving out as an OpenEXR MultiLayer file, and my image pass was saving out as “Combined”, which I changed to “Beauty”. After Effects was not picking up on this beauty, or RGBA pass, as the default layer or channel, so there was no preview in the project bin, and the image was black when I added it to a composition. I would have to add the EXtractoR effect to see the beauty pass. To fix this, I set the name of my File Output node for the beauty pass to an empty string, deleting the name of that channel. Now the OpenEXR file exports with the channels as the default R, G, B, and A, and After Effects picks them up as the default channels.
I think that last one is a big win, as that would be inconvenient to not have default RGBA channels.
As a freshly minted member of the Blender community, I wanted to share some of what I have learned and celebrate a small success with this. I hope that this helps someone discover the convenience that is multi-channel OpenEXR images!