Blender normals are grey I want to render the normals of a scene in Blender, and I'm doing this with the the 'normals' matcap texture. It seems to be mostly correct. At least in some simple test cases, the pixel intensities matched my calculated values.

However, I animated a 360-degree camera spin, and at one point many of the pixels turn grey. This is super weird to me since in the frame before and after (where the camera angle is slightly different), the colors are strongly red or blue. Is this a bug or is this expected behavior?

Here are the frames before and after the greying.

 ->
 ->
If you are using Blender Render and a texture with Normal Coordinates (as opposed to the viewport MatCap), the grey pixels apparently come from the image sampling.

In the Texture properties, try setting Extension to 'Clip'.

Or use the OpenGL render with the Normal matcap, which works well.

This happens because when your camera view vector is normal to the faces' normal vectors (in other words, when the face normals are at 90°), the texture is sampled at its border. If the surface is vertical or horizontal (eg. walls and floors) AND the texture repeats, it is sampled at both the left and right borders (respectively top and bottom for floors and ceilings), resulting in an averaged grey.