I am new to Blender and trying to render out motion vectors on animated objects. I animated a cube and did what I thought was correct and it rendered nothing.

See video: http://www.knottypixel.com/BlenderMotionVectors.mp4

Would appreciate any help. I am sure I am missing an obvious step. It crossed my mind that the speed output of the render layer node could possible not be in the range of 0-1, 0-1, 0-1. Does it require a conversion?



Some times vector passes like depth or motion can't be displayed directly because they are 'out of range' of displayable values (I think , not really sure)

Anyway all you need to do is to bring these values within range by using a Vector > Normalize node

Have in mind that to actually use the vector pass the original 'non displayable' values are sometimes the correct ones that will produce the desirable outcome even if they can't be displayed correctly directly.

Vector Normalize Node

  • $\begingroup$ Do you know what the min and max values of the speed are? Then I could remap retaining the amplitude of the vector instead of losing it in the normalization. I do appreciate the help! $\endgroup$ – knottypixel Jul 6 '16 at 17:43
  • $\begingroup$ Not totally sure, they are probably float values for precision sake, as in HDR imaging, which I believe is what Blender uses internally. Not really sure though, maybe someone more enlightened can clarify, but it might have to be remapped manually, because they may be related to actual speed of the object and not be bound by any arbitrary values. $\endgroup$ – Duarte Farrajota Ramos Jul 6 '16 at 17:50
  • $\begingroup$ Thank you, I got this much working. Is it grayscale because speed is a float and not a vector? I am confused. I am trying to get the red channel to be x movement, green channel to be y movement and blue channel to be z movement. I understand the values need to be remapped but I am not sure why it goes grayscale.? $\endgroup$ – knottypixel Jul 6 '16 at 20:09
  • 2
    $\begingroup$ I have got something. I output Speed into a Separate RGBA node, feed each of the RGB channels into separate Map Ranges ( -100, 100, 0, 1 ), feed those components into a Combine RGBA and output that Image to the composite. Need more testing but it seems to work. Clamping is necessary on the Map Ranges as the positions could change more than a hundred or even a thousand units. $\endgroup$ – knottypixel Jul 6 '16 at 20:34
  • $\begingroup$ Yes makes sense red for X green for Y and blue for Z. As for the values my guess is that neither of them are bound to 256 shades of gray because as you mention speed on each axis can take any value, hence my theory that they are float values. Yes, with a separate RBG you can probably map them to whatever values you desire independently $\endgroup$ – Duarte Farrajota Ramos Jul 6 '16 at 23:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.