Normal maps baked in Blender are incorrectly rendered

I’ve been trying to get normal maps baked in Blender to work in UE4, with no success.

Here’s the summary of what’s happening, and what I’ve tried:

The normal map exported from Blender is rendering as shown in the Original image. The visible seams correspond to the UV seams, and the whole thing looks wrong.

Many existing answers suggest flipping the green channel, which I tried. I also tried flipping the red and the green channels, exchanging values of red and green, and also inverting the values in-material using the OneMinus node. Nothing worked.

In Blender, the normal map works perfectly. The image shows the low poly mesh with the normal map applied in Blender’s GLSL viewport. Note that I have exported the tangents from Blender to the FBX file, and I am importing normals and tangents in UE4.

In Unity, a similar thing happens when I assign the normal map to a specular detail material. However, this issue is resolved in Unity by setting the texture type to Normal instead of Texture.

Note that all the above images use the same FBX file and the same PNG normal map. This is the simple material I’m using in UE4:

13468-ue4+material.png

Here’s the [.blend file][3], the [.fbx file][4] and the [normal map texure][5].

Any ideas on how to fix this?

What steps are you going through in blender to bake the map? Normally you’d want to bake details from a high rez version of your model down to a lower rez version. If you are baking and applying to the same mesh I think you are effectively doubling up the normal angles since the polygons on the mesh each store their own angle and then you are adding to them with the normal map which only contains the info the mesh already has anyway.

I’m baking from a higher-resolution model (made using the subsurface modifier) onto the lower resolution model. The model displayed in the images is the lower resolution one (check out the silhouette of the ears to see the low polygon density).

I got it to work correctly by changing the compression type of the texture from TC_Default to TC_NormalMap, and flipping the green channel.