Q:

Uneven lighting on some faces after a normal map is applied

Some faces of my mesh become weirdly lit after I apply a normal map. I have checked face normals, averaged normals, cleared custom split normals, tried deleting and recreating the affected faces, checked UVs, changed shading model, also tried normal maps from different materials - nothing works. The problem is consistent and shows up in LookDev view, rendered view in Blender and after export to UE4. In the example below I have just normal map applied in the shader and have deliberately cranked up normal strength to 2 in order to make the issue more visible. Blend file is attached (with embedded normal texture). Probably, has to do something with tangents, but for the life of me I can't figure out what. Will be most grateful for any help!

A:

Some of your UV islands / individual faces are flipped in U.

With an eye on the mirror axis, in the Mirror modifier for each object, check 'Flip U' so the texture matches on each side: both 'wrong', or both 'right'.

With the pivot set to something that suits, maybe 'Individul Origins' if you're doing a few at once, Select Islands/Faces that are 'wrong' and in the UV editor, Header: UV menu > Mirror > X axis.
It's probably worth right-clicking and setting a Quick Menu item for that. SX-1 would also do it.

Following commentary, there are one or two things I've noticed in samples of your model..
You would want regions meeting across a mirror plane to be exactly planar, and at exactly right-angles to the mirror. Occasionally, they are not, quite... and there are still the odd stray vertices around, extra hidden faces. One approach to solving that would be ShiftG select similar > coplanar, with a high tolerance, and scale the region to 0 about its median, along X, or its normal if it's at an angle.
It's hard to tell without running tests, but at first sight, it seems the normal map might have a slight tilt: an overall rotation in U.  That means, (irrespective of pattern) it would be  tileable in translation, but not in reflection.
Maybe you have to apply the Mirror modifier before tweaking to perfection.

