Blender .fbx to Substance Painter Seams

For days I have tried figuring out why I get seams inside of Substance Painter. I desperately need someone’s help here :confused:

I know the basic rule of “edge splits/hard edges on UV borders” and have been using the “Textools” add-on for 2.79/2.8 to achieve this result. It seems the add-on selects the border UV edges and “Mark Sharp” them.

The problem using this method is that I seem to be getting “tiny seams” inside of Substance Painter. Some examples are given here;

Before anything try applying scale and rotation by Ctrl+ A

Then, Make sure you mark seams, not sharp? Its a little bit confusing the way you typed. I go under transform, and change crease there to get the edge i desire.

I mark seams… but I asumed/learned that my UV seam boundaries need “hard edges/edge split” in order to bake correctly ?

I literally tried countless of variations to get good bakes but almost everyone give the same result; small tiny seams in Substance.

send me a piece of your model to me, ill see what it really is then.

I think im on to something!


Im getting a perfect bake by NOT “autosmoothing” / Mark Sharp / Mesh Smooth by UV. The whole mesh has 1 smoothing group and hardly any seams at hard edges yet it bakes perfectly. This confuses me a bit to be honest since I had the assumption that we needed a UV SEAM always at a hard angle. From my experiment this seems wrong (?).

So what I changed;

  • more geometry around corners
  • more edge loops to “even out” the polygons (so less thing stretched polygons)
  • NO hard edges/Autosmooth/Hard Edges from UV Borders
  • UVd more like an “organic” model with little seams possible.

yeah just never use that sharp thing. I never used it xD dont know if i should but- mark seam and getting the uv out is the best thing

1 Like

From my experience, the correct way of doing it is just the opposite of what you said. On any hard edge of your mesh you have to split the UVs. Imagine a cube, every edge is an hard edge. So you need to have a UV layout that has six single faces that are not connected anywhere.

I made a simple cube as low poly and another cube with rounded edges as high poly. I kept the UV layout of the low poly as the standard cross layout. Here you have some faces connected to each other and some faces are not connected.

In Substance Painter I baked the normal map. I got some edges with those seams (indicated red) and some edges without seams (indicated green). In the image below you can see there are no seams on all those edges that are not touching anything else in the UV layout. All other edges, which are connected to each other in the UV layout, does have seams.

When I change the UV layout in Blender and import the low poly mesh in Painter again, baking the normal map now gives me correct results with no seams at all.

1 Like

The problem with your bake is that your model only has 1 smoothing group. If you import it into Unreal Engine the smoothing will be very bad.

what I fail to understand is how blender treats "smoothing groups’. I think there might be a bug where 2.8 does NOT export “hard edges/mark sharps”. Ive tried all of the export options below with 0 difference in Substance Painter Bakes (!?)


I do realize that I need a UV split at a Hard Edge now but the problem seems to be something else. Please take a look at these images;

The difference is “Set HARD EDGES by UV seams”. In 3Dsmax you would FIRST do Smoothing groups and then UV from that selection but in Blender you UV first > select seams > “mark Sharp”. Textools does this with 1 click.

I do not understand why there should be visible seams from baking inside of Painter once you marked them Sharp ? From testing I see NO difference between the “1Smoothing group” and “Edge Split” version in Painter which makes me come to the conclusion that somehow Blender is not exporting them (?)

No, I would build my mesh, set the whole mesh to “Shade Smooth”, set “Auto Smooth” to an angle of 180° and set all edges I want to be hard (no smoothing) to “Mark Sharp”. UV layout is my very last step.

I am not familiar with the term smoothing groups because Blender has none. In the image below I set the object to Shade Smooth and marked some edges as sharp (indicated in blue color).

In Blender the object looks correct with it’s smooth and hard edges.

Exported as FBX, in Painter it looks correct too. Hard edges seem to be carried over. I haven’t tried to bake things, would have to set up a high poly first.

But what I have tried with great success for this (admittedly) simple object is to bake in Blender a normal map with just this one low poly mesh and in the material setup using the Bevel Node (not modifier), pluged into the normal connector of the shader. This gives a normal map where the hard edges turned into, more or less, subtle rounded edges.

1 Like

thank you for the post! would you be so kind to do a testbake in Substance Painter ? you could use a bevel modifier or Hard-OPS to make a quick HP (does not need to be perfect at all, I just need to see if there hairfracture seams). Without a normal bake in Substance it is impossible to tell how the bake would turn out.

These are the type of seams im talking about, only visible when zooming in. UV Seam + Mark Sharped.

I checked for myself. Blender gave me a hard time. You have to save, close, reload, unplug and replug nodes, switch viewport shading back and forth, rearrange UVs and what not to be able to reproduce things you did 5 minutes earlier, or just to be sure what you see is the real thing.

I also looked into another forum and found interesting posts about normal maps. Take a look at this for example https://polycount.com/discussion/comment/2441220/#Comment_2441220 from May 2016. And the answers beneath it. It looks very similar to what you are facing.

It comes down to texture resolution. You did everything right but the texture resolution of the normal map might be to low. Another problem is when UVs are not lying exactly horizontal or vertical but in an angle. Then you get pixelated edges in the normal map causing visible seams.

It may help to have the low poly mesh completely Shaded Smooth. Only when absolutely necessary put in hard edges. Even UV seams are no problem when the low poly is smooth shaded in that area. (If my testing was correct and Blender doesn’t put me at a wrong path.)

1 Like

wow that is the exact same issue im facing indeed! kudos for finding this@BlenderSL. As I expected, after 100s of test bakes, it is indeed related to texture resolution.

“it may help to have the low poly mesh completely shaded smooth” do you mean to “bake” using completely smooth shading BUT your game ready low poly DOES have “smoothing groups/edges” ?
Normally you absolutely need the smoothing info since it affects the bake, without smoothing groups the normals will bend resulting in errors like this (especially in game engines, will look ok in Substance). Look at the contrasty normal colors in the top example; the normals are being stretched allot since it does not recognize the corners. The bottom one has hard edges and it gives a very smooth clean bake.

I found when you have a low poly „all shaded smooth“, then you don’t need to care about putting hard edges on UV seams, it’s irrelevant. It looks about right in the end. But, as you clearly showed, yes, the normal map has to compensate massively. Which would be no problem, but you might get precision errors. When your high poly has a planar surface and the normal map needs to heavily compensate for the smooth shading in the low poly, you can get banding artefacts all over the surface. Especially when you only have an 8bit normal map.

So, yes, it would be better to have the low poly at least planar on those spots where the high poly is also planar. So we have a mixed setting, a smoothed low poly with some hard egdes here and there. But then you run into the “Hard egdes need UV seams and UV seams need hard edges” thing. We now know how to compensate for that. But it’s a bit of extra work. :slight_smile:

In the end it’s a matter of for what situation you need the normal map. In my case it would be an older game engine which only can handle 8bit images. And a matter of if the unavoidable banding is visible or not. And of how much of your time you can or will invest.