This has been driving me crazy for a while.
In blender, the normal maps appear perfectly on my model:
But for some reason in Unity, the seams are very obvious and the normals appear flipped (the seam is along the arm):
I’ve tried recalculating the normals in blender but that did nothing.
Is this just what happens if you don’t hide you seams? Is there some graphics or import option I’m missing?
you must make sure that the tangent basis you use to generate your normalmaps is identical with the tangent base unity uses to reconstruct the normals.
TLDR version: Normal maps baked in Blender for Unity’s Built In rendering path will never perfectly match. You must bake your normals in another application, like xNormal.
But even then, you always want to hide the seams because there will always be a seam no matter what as even xNormal is 100% exactly the same as Unity and you have to contend with texture compression on top of that which you don’t deal with in Blender.
@bgolus thank you! I tried all the options under the sun through Blender and it all looked like crap. Using XNormal gave me good results when using the Unity3d Tangent space plugin:
Still need to configure my shaders properly but the normal maps look great and seams are invisible!
The XNormal Unity3d Tangent space plugin is here for anyone interested.
Oh, no no. Don’t use that. That’s for the old version of Unity. The default XNormal tangent space is the one you want to use. See that article @mabulous linked. Unity uses MikkTSpace now.
@bgolus oh thanks for clarifying. To be honest I didn’t read through that full article. I had skim and it’s Interesting about URP and HDRP working correctly. If I used those would the normals from blender look right?
mill have a proper read through the article when I get a chance