3
$\begingroup$

Blender rookie here. I'm learning about baking normal maps in 2.80 with some pretty basic setup.

I'm getting strange results on a smooth metallic flat surface. You can see it on the following screenshot. I'd expect the surface to be completely smooth, but it looks sort of like alligator skin or something :). Any idea what can cause it?

Normal map weirdness

Things I did (roughly):

  1. Created a low-poly cube and UV unwrapped it (for this basic example I assumed "Smart UV project" is good enough) onto a 4K image (seems like overkill but I thought the problem originates from too low resolution - it doesn't seem to be the case though).
  2. Created a high-poly copy with Bevel, Subsurf and a slight Displacement modifiers, which I then applied.
  3. Set Smooth Shading on both objects.
  4. Added material to low-poly cube (metallic) with Texture Image node (Color space: Non-Color).
  5. Baked normals from hi-poly to low-poly.
  6. Saved image, selected it in Texture Image node and connected the node to Normal Map and then to Principled BSDF's normal input.

Here's how the meshes look: Low-poly cube Hi-poly cube

Normal map image: Normal map

Things I tried: Adding more detail (loop cuts) to the hi-poly doesn't fix it. Setting resolution of normal image to 4K didn't help either.

Here's the complete .blend file with the normal map image: cube.zip

Thanks in advance.

Update

After attempting to UV unwrap the low-poly mesh according to hatinacat2000's answer below, I ended up with following normal map:

Normals updated

However, baking that in did not remove the weird effect. To be sure, I mean that the metallic cube looks like there's some transparent net spread over its sides, not the displacement which I applied intentionally on the hi-poly mesh, and it seems to work fine.

$\endgroup$
3
  • $\begingroup$ The distortion seems to be following a warped UV pattern. I'm not 100% sure what the issue is, but I feel like that's a clue. Have you checked the baked render result for artifacts? $\endgroup$ Nov 12, 2019 at 22:28
  • $\begingroup$ @AlexanderESmith thanks. Sorry, I'm not sure what exactly do you mean by baked render result? The final render is the the first photo above, the one with artifacts. If you mean the normal map image, it doesn't seem to have any problem. I'll add that one to the question as well. That aside, I also have a feeling I may be messing something about UV unwrapping, but no specific clue so far. $\endgroup$
    – Piotr
    Nov 13, 2019 at 6:32
  • $\begingroup$ In such cases I'd rather use custom normals instead of normal map. It's simple to transfer normals from hipoly to lowpoly (1 segment beveled) mesh. Then it looks as the corners are smooth, but planes are flat. Cheap and clean. And Unity understands Blender's custom normals as well. There is a lot of tutorials about custom normals in the Net. $\endgroup$
    – Mechanic
    Mar 10, 2021 at 19:15

2 Answers 2

4
$\begingroup$

The problem is numerical error. 8 bits can't resolve the direction in a surface so sensitive to minute changes in angle.

enter image description here

  • Set up a new 32-bit image.. you can do this in the Image Texture node itself
  • Set its color-space to Non-Color
  • Bake as before.

If you want to save the image out, 16-bit PNG will probably do.

$\endgroup$
3
  • $\begingroup$ That did the trick! Thanks :) $\endgroup$
    – Piotr
    Nov 13, 2019 at 21:01
  • $\begingroup$ Cool, I never would have guessed that $\endgroup$ Nov 14, 2019 at 5:04
  • $\begingroup$ @hatinacat2000. I just happen to have had a bit of trouble in this area, (which is why the 'N' properties panel is open in the picture) Not quite the same, but setting the color space has been a bit buggy. The devs seem to have ironed that out, now, in the release. $\endgroup$
    – Robin Betts
    Nov 14, 2019 at 5:42
2
$\begingroup$

You used "Smart UV Unwrap" which, for this object, is not taking care of distortion on the beveled faces. This is [probably] happening because you have not marked any seams for the object. Go into Edit mode, Edge Select mode, select edges you want to mark seams and do Edge->Mark Seam. All of that shown here:

enter image description here

After you have marked the seams, select all the faces and do UV->Cube Projection. This will project from each of the cardinal planes, with each "plane" of the beveled cube overlapping every other. Now shift-select the face which is in the middle of the largest island (that is, NOT walled-off by your seams) and do UV->Follow Active Quads. This unfolds and aligns the edges of all the faces connected to the active face in your selection (which is why you want to do this from a face whose UV-mapping is already straightened). Finally, move the disconnected island aside. All of that shown here:

enter image description here

You can now scale the islands together, uniformly, in the UV Edit viewport and move them into position. (not shown). Some distortion is unavoidable but it should now be minimal, erring towards symmetry and uniform face areas. Your normal map will work normally now :P but you will have to re-bake it for the new texture coordinates.

$\endgroup$
4
  • $\begingroup$ Thanks! I suspected it had something to do with UV unwrapping. I'll give all this a closer look and try your suggestions later today, when I get to blend a bit after work ;). $\endgroup$
    – Piotr
    Nov 13, 2019 at 8:56
  • $\begingroup$ No problem, I fixed some typos in the instructions too $\endgroup$ Nov 13, 2019 at 8:57
  • $\begingroup$ I followed your instructions but it did not seem to have any effect. I unwrapped, scaled and re-baked. I uploaded updated blend file here: drive.google.com/open?id=1V0kYcmgwf3wIEdneIwPkVHXzSw-qA3Ig. Any ideas what else I'm doing wrong? $\endgroup$
    – Piotr
    Nov 13, 2019 at 17:51
  • $\begingroup$ I added the updated normals image in the question. $\endgroup$
    – Piotr
    Nov 13, 2019 at 18:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .