Imported Normalmap Displaying Incorrectly

Kind of at my wits end here, been stuck on this issue for 3 days now. I’ve hit every Google search (and topic here) on similar issues and none of the solutions have worked for me.

I have a normalmap that I’m adding to my character and it will not display correctly in Unreal Engine:

Here is a screenshot of the issue (it’s a nude character so trying to keep it SFW as best I can) Screenshot - f733407b1b2d26a8ab132a834886a842 - Gyazo

I have tried inverting the green channel, which I actually did need to do for this but it still seems to be mapping incorrectly to the UV coordinates.

I have made sure that the texture’s compression settings are set to “Normalmap” and the sampler type is “Normal” here’s a shot of my very basic material setup: Screenshot - 846c715d3668a4bef934e6ed9a5b4371 - Gyazo. However, I’ve noticed that I can’t get Unreal to automatically detect it as a normalmap as every time I re-import it, it comes in as a DXT1/5 compression texture and I have to manually change it over to normalmap. Is there a way to prompt import settings before I import? if so I haven’t been able to figure that out (I’ve even tried adding “normal” in the file name and it still won’t recognize it.

The normalmap looks fine in my Blender setup. I’ve tried rebuilding it 500 different ways in Substance Designer, XNormal, and Blender. It looks fine in these programs and I don’t have any issues there, only when I bring it into Unreal Engine.

I thought it might have something to do with being an Object space normalmap and not a tangent normalmap but any variation of either that I’ve tried also did not work (i used the conversion tool in XNormal a lot, probably tried 30 different renders with different options to no avail)

Really hoping to find someone with some insight here!

by default ue uses tangent space normals in materials. you need to either uncheck that in the material properties which will use world space instead (i know its not exactly the same thing as object space but for most cases should be fine). or you need to use a transform node and set it to convert from local to TS (this is with TS enabled in the mat)


Both of your suggestions worked. I’m going to try just using the transform nodes since Unreal wants things in tangent space. Going against that with a skeletal mesh seems like it may run me into issues down the road?

I can’t tell you how much I appreciate your reply!