Look here is the model on which Uvs are on first channel
Now this is other model which on which the first uv which normals used is moved to second.
So to apply normal map now i have to use TexCoords node and tell it to use second uv channel, right?
as you can see the other one on the left is identical in shading (one group) to the perfect one, the only real difference (apart of that its not exploded)
is that the first channel is moved and instead first channel is different
this is how the network looks
it should be all perfect… but no. this is what i get
and ive looked into all possible reasons this happens and no, it SHOULD work perfectly but it doesn’t i assume thats a bug.
Yes it is a bug, as soon as i import it with UV2 copied into UV1 problem is gone.
But it doesnt solve the issue i need it to work on second uv channel.
It has to do with UV seams causing normal splits. I believe UE4 by defaults puts hard edges on every UV edge, and it only uses the first UV set for that. It’s not really a bug, it’s just part of how models, uvs, and normal maps work together, it’s just an issue with UE4 adding splits. So if you are using a baked normal maps, you should always use the first UV channel, if you are using tiling normal maps, it’s doesn’t matter as much. You need to design your model/texturing workflow around those limitations.
I was very confused about my tileable normal map not working properly on my meshes until I stumbled upon this info here. So in 4.10.4 this is still an issue if you put your normals on anything but uvchannel 0 - which is a bit annoying as it prevents us from blending two normal maps mapped with different uv sets. Anyone got any solutions to this? (PS: this is not a situation of flipped green channel)
This is not an issue, but rather a performance consideration
Starting from 4.11 i think there is a material function to derive tangent basis for UV sets other than 0.
This article explains the basic concepts of tangent space and why having only 1 tangent space defined is practical. As to DeriveTangentBasis material function, coupled with transforming normal into new basis, I never used it and cannot give a precise performance impact estimation, but I reckon it is roughly about 60 pixel shader instructions. Plus you are likely to see some slight faceting in normal map used with this method.
As a word of advice, there are more elegant solutions instead of using tangent space normal map on UV channel other than first one. For example, in most cases it would be possible to use world space/local space normal map on UV channels other than UV0. That gets rid of any headaches with tangent space. The only limitation where I would not be able to use local space normal map I can think of is deforming meshes.
Lastly, there is a neat thread regarding topic being discussed.