2
$\begingroup$

I don't understand how normal map works on surface of the cube. I shaded smooth my high poly and turn off auto smooth,on low poly I turned off auto smooth, it seems that normal map baked correct but shading on render looks wrong. I tried turn off/on auto smooth on my low poly and get different normal maps.

High poly High poly

Auto smooth on on low poly enter image description here

Normal map when auto smooth turn on on low poly enter image description here

Auto smooth off on low poly enter image description here

Normal map when auto smooth on low poly turn off enter image description here

Render. Auto smooth off enter image description here

$\endgroup$

1 Answer 1

2
$\begingroup$

You're asking why changing autosmooth (after the bake) changed the appearance of your baked normals?

When we talk about "tangent space", which is the space in which normal maps are usually evaluated, it is a per-sample space where the Z axis of the tangent space is aligned with the normal of the sample. In each sample's tangent space, the sample is at 0,0,0 and the normal points to 0,0,1.

This means that when we change the "base" normals of the low poly, as we do with autosmooth, that tangent space changes. (How does autosmooth change normals? It's basically the same thing as ripping edges. Faces with a sharp enough angle between them are not included for calculation of the face-corner normals of each other.)

Maybe more plainly, we could say that tangent space normal maps represent a modification to base normals. When you bake a tangent space normal map, your mesh, your UV map, and your low poly base normals (custom normals) should be finalized. If you're going to use sharp edges on the final low poly, bake with the sharp edges already marked. (Don't use autosmooth on something normal mapped, period. The point to autosmooth is dynamic recalculation of normals. But if you're using a normal map, you don't want any surprises.)

Note that if you used an object-space normal map, then changing autosmooth wouldn't change anything. Because they're not operating in tangent space, object space normal maps are not measured relative to the base low poly normals.

As far as your own tests go: a cube is a poor way to learn about baking normals, because a smooth shaded cube's faces have to interpolate between wildly different normals (which is why a basic smooth shaded cube looks so bad.) Consider at least adding a level of subdivision to the low poly, or insetting the faces individually, and you'll get something that is much more like a real world example.

$\endgroup$
2
  • $\begingroup$ Nathan, you said that if Im baking normal with sharp edges they have to be marked on model, by on which of on High or Low poly model? $\endgroup$
    – Vl Kor
    Jul 6, 2021 at 12:40
  • 1
    $\begingroup$ @VlKor Don't use autosmooth on the low poly, which is what is getting normal mapped. The high poly, you can do whatever you want to the normals. $\endgroup$
    – Nathan
    Jul 6, 2021 at 13:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.