Tangents vs Normals vs Binormals?

I understand why i need Normals.
But i dont understand why do i need Tangents and Binormals?
And how they related to Normals…

Why Normals are all Symmetric and every Surface has own Normal, but there are only 2 Tangents and they are not Symmetric, but surfaces are still totally Symmetric… i dont understand why i need tangents, and also binormals.

Oh, after looking at Ball’s tangents/normals/binormals i become understand, that Tangents is something like X direction for texture UVs, and Binormals is Y direction for texture UVs.

Ball have for some vertexes 2 tangents/2 binormals because its actually not 1 vertex, its a 2 vertexes which connecting different UV parts, this 2 vertexes seems 1 Normal, but actually there are 2 Normals as well.

I hope i did understand well.

Be careful about this, though. This is very confusing. When creating a shader, if you create the mesh yourself and then create a material/shader that changes the normal parameter, don’t listen to that tangent space.

What the normal plug in a material expects is a typical tangent space: Z is normal, Y is bitangent, X is tangent (in the U direction), which is RIGHT-HANDED, and not compressed (values go from -1 to 1, not from 0 to 1, like you normally do in other softwares (normal maps look purple instead of dark blue).

After passing those values, internally, Unreal swaps Y for Z, changing it to a LEFT-HANDED space.

In fact you can test this by passing a (0,0,1) normal to a material. It will work as a normal vector to the surface. But when you see it’s effect, it seems to be a (0,1,0) vector :slight_smile: