Cycles 'vector' pass meaning of W, X, Y, Z

I have a scene with moving objects and I want to extract the optical flow (apparent motion as seen by the camera). I am using Cycles. I include the 'Vector' pass and save the result as 'OpenEXR MultiLayer'. When I open the resulting file in Python I get the following channels:

• RenderLayer.Vector.W
• RenderLayer.Vector.X
• RenderLayer.Vector.Y
• RenderLayer.Vector.Z

What is the convention here? Could you provide a source for the information?

• R: pixel displacement in X from current frame to previous frame G: pixel displacement in Y from current frame to previous frame B: pixel displacement in X from current frame to next frame A: pixel displacement in Y from current frame to next frame. – From blenderartists.org/t/nuke-and-blender-speed-vector-pass-in-nuke/… - Maybe the info in this thread is helpful to do more research. RGBA might map to WXYZ or XYZW. (Not a real answer, so just commenting here.) – michaelh Mar 24 at 12:30
• @micaelh Thank you, this information helped me to build the experiments that led to the actual answer. – Milo Mar 26 at 7:10

• Vector.X - X displacement from previous frame to current frame
• Vector.Y - Y displacement from previous frame to current frame
• Vector.Z - X displacement from current frame to next frame
• Vector.W - Y displacement from current frame to next frame