Getting best normalmap bakes


AKA why there are seams on my normalmaps /

why there is weird shading on my model

tl;dr version for people who cant read: synchronise your smoothgroups and uv islands.

for people who arent very good at thinking: uv piece = uv island = uv chunk, and that means one unwrapped piece of the model. It might be a triangle, it might be a quad, it might be a bunch of triangles and quads - just one continous piece of uv

Normal version for people without adhd that can focus on written guides:

One of most common technique in gameart is baking highpoly models to lowpoly models, to get nice rounded corners, that fake the overall low-amount of triangles our ingame-model have.

What most beginners (but not only) have problems, are normalmaps - beign highly technical map, that many people dont know what represent, except "they're kinda blueish" - most baking errors are visible on them, even or perfectly modelled lowpoly and highpoly models, and their quality dictate how our model will look after we texture it.

To get rid of seams and bad shading, we need to make sure our model have synchronised uv islands with smoothgroups (hard edges for maya users), and enough padding between uv chunks. But what does it mean?

Look at this:

Model Smoothing
1st is weird, 2nd is plain bad, 3rd is what you want

While no smoothgroups is somewhat a default state you can start with the lowpoly, you want them to be set up correctly. For some weird reason, people try to bake models on 1 smoothgroups, which is (especially for hardsurface models, but there might be case its right thing to do - for example baking a sphere ( ͡° ͜ʖ ͡°) ) wrong, and at first glance gives out very bad results, both before baking and baked. Thats why you want smoothgroups to be set up correctly, so the model shades nicely, and then make UV islands based on the smoothing, to preserve all corners/seams:

UV Seams
and smoothgroups

 That solves 90% of issues with normalmap. Another thing to look for is padding between uv chunks:

no padding

While it might look correct, and tightly packed, its not actually great - we used UV space to the limit, but during baking and texturing we'll experience bleeding from near uv pieces - that means colors from one piece might be visible on other piece. Also can cause problems during mip-mapping.

This is what we want:

We traded off some UV space (texel density of texture) for a lot of padding between uv pieces - this will not only bake correctly, but as well prevent from color bleeding on original resolution and mipmapped resolution.

Here is comparison of meshes with combination of padding/no padding as well smoothgroups set up / not set up / one smoothgroup. CAN YOU GUESS WHICH ONE IS CORRECT?

(download high resolution image at the bottom of this post)

You can view fully textured asset that uses this mesh, made using described technique here:

You can high resolution images, as well files used for baking here:

renders - normalmaps - meshes - comparison - marmoset bake scene