Home Adobe Substance

Substance Painter - Problem with Normal Maps in UV seams

arkaneXXI
polycounter lvl 8
Offline / Send Message
arkaneXXI polycounter lvl 8
I was doing a customizable go-kart but I have problems baking the normal maps in Substance Painter. In some perspective, the result looks nice:



But from closer or behind, you can see distortions in the UV seams:


And the result looks worst in 3ds Max or the 3d Viewer of Windows 10.

Another curious thing: the problem is more evident if I add a Fill Layer (on the layers menu) and change the color of the normal even before baking the normal map.


I was looking for a solution since two days ago and nothing worked.

Details:
- The model has different smoothing groups in the 90º angles. I also tried to use a single smoothing group. Nothing changed.
- The model is a single piece with all the elements welded.
- This is the UV:




Thanks in advance.

Replies

  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    arkaneXXI said:

    you can see distortions in the UV seams:

    Hard to draw it out, but your uv splits should look something like this for the main frame part. Notice how the UV splits are no long on the flat top parts, but instead in corners/vertical edges?



    if you zoom in on any uv split, you'll see a seam, totally normal. However, your UV splits aren't optimal at all.  Make sure your texel density is pretty uniform (unless of course, you are shrinking some islands as you know they wouldn't be so visible with other go-kart elements in the way).  

    Giving it all one smoothing group for the main frame part, and one uv shell with a good relax should do the trick, but would give you some gradienting which isn't the most ideal thing to have.

    You'll end up having elements of the gokart on top, which would naturally hide the seams with other geo.

    If you don't already, definitely bake with padding (8px if 1024, 16px, if 2048 etc.).

    arkaneXXI said:

    the problem is more evident if I add a Fill Layer (on the layers menu) and change the color of the normal even before baking the normal map.





    Changing the 'color' of a normal map does nothing, and obviously exacerbates the issue, since you can see all the seams being pointed in different directions due to the wonky normal map you just gave it. (Normal map colors are a certain tint for a pretty specific reason) 
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    Thanks for the reply.

    In Substance Painter the normal map doesn't look so bad, but in other softwares the result is horrible.

    - 3ds Max (viewport):


    - 3ds Max (viewport, changing the tangents):


    - 3ds Max (render):


    - 3ds Max (render, reducing the intensity of the normal value):


    - 3D Viewer (not so bad but the seams are visible in the small corners of the octagonal frame, because the shading is different to the adjacents polygons):


    - Substance Painter (that corner doesn't look so bad, just from closer):


    But the seam is more visible in the T shape of the frame:


    I'll check if there are problems in the UV and try some things to improve it. Then I'll upload the results.
  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    How are you applying the material in 3ds max to view your normal map? Been a long time since I've done that, but there's a certain way of doing it.

    The last image seam appears to be a different kind of baking artifact not seam related, high res vs low res images would help
  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    to sum this up.  Every edge having adjacent faces 90 deg to each other should be either:
    1.   be split/having hard edge /different smooth group  and same split UV/ separate UV islands 
    2.  Or as a second choice having a small bevel and no split , no UV splitting too  but having edge vertex normals rotated to be perfectly perpendicular to this initially adjacent faces and now separated by this small bevel/chamfer.

    3 .  And probably a 3d choice:   those faces shouldn't be 90 degree to each other ,  be same single smooth group but vertex normals on the edge still rotated perpendicular to what more importantly should look like a flat surface without shading gradient.
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    Show us your substance bake settings
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d
    -> "How are you applying the material in 3ds max to view your normal map? "

    1. Open the material editor (M)
    2. Add a standard material
    3. Go to the Bump slot
    4. Add a normal bump map
    5. Click on the Bump slot again.
    6. And finally click on the Normal slot to add a Bitmap with the normal map.






    -> "high res vs low res images would help"

  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @poopipe
    -> "Show us your substance bake settings"

    I have touched all the bake settings and nothing changed. These are the settings I was using:

  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @gnoop
    -> "to sum this up.  Every edge having adjacent faces 90 deg to each other should be either:
    1.   be split/having hard edge /different smooth group  and same split UV/ separate UV islands  "

    Yes, I have read that too. But I think if I do that now, I just will add more seam marks on the normal map. But I'll try to redo the UV like that.
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    Disable average normals and see what happens. 

    Max and substance use different tangent spaces so you'll see seam artefacts. 

    I'll admit your results are a bit more fucked up than I'd normally attribute to this but it's a good starting point. 
  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    Bump to 100 instead of 30 on your material, but that won't fix the issue. Feels like its obviously wrong tangent (y+ vs y-) but you mentioned you fixed that, and have the same issue.

    Put your dilation width to 8-16px. That'll help loads for your seams, at least.
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d
    -> "Bump to 100 instead of 30 on your material,"
    Actually... the bump value was in 100. Those screenshots of the material menu were taken on a new scene to show you the steps I do to assign a normal map to a model.

    -> "Put your dilation width to 8-16px."
    Sure, I'll try that.

    UPDATE:
    The dilation width didn't solve the problem.
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @poopipe
    -> "Disable average normals and see what happens. "
    I think I tried that too, but I'll try again.

    UPDATE:
    I disabled it and nothing changed.

    -> "
    Max and substance use different tangent spaces so you'll see seam artefacts. "
    I don't remember to have that problem with the previous model also baked in Substance Painter. So, I think isn't a problem of tangents.

  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    I just noticed these lines on the surface after baking the normal map (they are just visible on a very bright light):


    Is that normal or is related with the problem?
  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    If you don't mind attaching your max file/normal map file for me to take a look at. Probably a lot easier than just imagining what the issue could be with just words :smile:

  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d
    Here are the low and high poly models in .obj and the normal map:

  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    First thing I noticed is that your normals are gradient-y. Which it shouldn't, if you split your uv's by smoothing groups etc. 

    UV's were also destroyed, possibly from importing/exporting, or moving uv channels around.



    Decided to optimize your model a bit more too, can definitely get rid of a bunch of triangles (which sometimes makes baking/UVing easier, too)



    Unwrapped like so, respecting SG's



    Bakes came out fine, and looks normal in 3ds as well



    Attached the new files for you :)
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d
    Thanks a lot, you did more than I expected (I thought you were just going to tell me the problem). But I would like to know what was the problem or what you did in detail, so I can do it myself next time and avoid the same problem again. For example, the settings to export the model or to bake it.

    About the mapping, I think I have uploaded an older model that wasn't mapped yet. Sorry about that.

    Also I wanted to ask what version of 3ds Max are you using (if you are using 3ds Max). Because I have installed the version 2018 some days ago and the rendering engines changed.

    I feel like a noob now...
  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    Using Max 2020. What I did was simply all I listed in the post. So the solution for future meshes could be:

    Better unwraps
    Use padding
    Export triangulated

    As for the break in 3ds max viewport, dunno. Most likely is just coming from the gradient/wonky normal maps from substance.

    :smile:

  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d 

    -> "Using Max 2020."
    I think they have added the engine Arnold in 3ds Max 2020. In the 2018 version they replaced Mental Ray by ART. I don't like it at all. I used the 2014 version with Mental Ray before, but that version didn't have the quad chamfer option (very useful one).

    -> "Better unwraps"
    So, the problem was just the UV?

    I'll try to redo it again with the tips you told me to see if I can solve the problem by myself. I'll use the file you sent me just as reference. Also, I want to use the file you sent me to check if the horrible normal maps I had in 3ds Max weren't caused by a setting in my version of 3ds Max.

    -> "Use padding"
    I remember you told me to use a padding of  8px in textures of 1024x2014. I'll do a silly question: where I do that? I haven't seen any option to adjust the padding in the baking options of Substance Painter.


    UPDATE:
    Another cause of the horrible normal map was the lighting in my scene. The default renderer and visualization in the viewports of 3ds Max sucks a lot (or maybe I don't know how to improve the quality).

    Default renderer and viewports:


    ART renderer with a sun light (good result but too slow):


    I used the files you sent me on these renders.
  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    Kanni3d said:
    Put your dilation width to 8-16px. That'll help loads for your seams, at least.
    In the image you posted with the substance painter baker options, there's a slider at the top called 'dilation width'. Same thing as padding!

    But yeah, issue could of been the UV's in conjunction with a bad bake/no padding.

    Also, you could try using your old normal map, but the UV's are completely different, and the gradient's will probably give you similar looking errors.
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d 
    -> "there's a slider at the top called 'dilation width'."
    Ah, thanks!

    ->  "you could try using your old normal map"
    Tomorrow I'll do again the normal map for practicing, following all the tips you mentioned. Besides, I forgot to add some elements in the model. So, I'll need to do again the mapping anyway.

    P.S.: I could  improve a little more the visualization of the normal maps in the 3ds Max viewports and the default scanline renderer.

    Before:


    After:


    It's not perfect but it's better than before.
  • arkaneXXI
    Options
    Offline / Send Message
    arkaneXXI polycounter lvl 8
    @Kanni3d
    Here is the result (604 tris). Thanks for the help.

Sign In or Register to comment.