Home Adobe Substance

(Solved) Procedural uv seam hiding?

polycounter lvl 6
Offline / Send Message
bitinn polycounter lvl 6
Hi,

So I have been using Substance Designer to create some stylised tileable materials, and applying them in Substance Painter.

One thing I want to achieve, is to hide uv seam for as much as possible without handpainting.

I know a few ways to fix seams, but I would really prefer to do so procedurally, because:

1) Triplanar result are less than great for this kind of texture.

2) Handpainting each models are taking too much time (I already spend significant time on procedural texture generation, might as well account for seams procedurally).

3) Using extra geometry to hide such seams are possible, but only applicable in some cases.

I want to learn a generic approach to this kind of problems. (I have not seen a good guide on this?)

Many Thx!




Replies

  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    Without wishing to come across as a twat - in this instance the issue is the way you've unwrapped it. 

    There's a node floating around somewhere (probably on share) that shifts textures based on UVs to minimise seam issues. It looked pretty effective in terms of dealing with noise maps etc. 
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    poopipe said:
    Without wishing to come across as a twat - in this instance the issue is the way you've unwrapped it. 

    There's a node floating around somewhere (probably on share) that shifts textures based on UVs to minimise seam issues. It looked pretty effective in terms of dealing with noise maps etc. 
    Love to hear more, how would you unwrap such a cylinder-like shape? I would love some guides on that, because it's ultimately the source of my problem.

    Assuming I am not dealing with noise map (which seem to work just fine with triplanar), how do people fix such problem? Do they mostly handpaint?
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    To add, I have seen some examples where people bake UV into a black-and-white texture map, then use it as a mask to generate the transition.

    Of course the ideal solution would be to take a UV from mesh, generate that map at runtime and filter the material so it transition nicely across uv seams...
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    I'd flatten the whole thing out into a circle - that's how you'd actually upholster it. 

    as far as dealing with seams goes - it's basically down to UVs or digging out that node i mentioned earlier - iirc it won't help you on curved edges though
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    So I am trying something different:

    - Bake an ID map without dilation.
    - Use Edge Detect to generate a map of UV shell borders.
    - Try to soften the edge a bit, create a Fall-off map from that.
    - Then use it as a mask to blend Normal/Base Color/AO maps.

    I got to this, you can see the details are weakened as it approach UV borders.



    Problems:

    - I know how to expose an input in Substance Designer; but I don't know how to apply the ID map correctly when UV scale isn't 1 (my naive implementation will tile the input when UV scale isn't 1, I want it to stretch and fill 0-1 space).

    - Substance Designer doesn't have a UV scale option, so how do I test out this feature from Substance Painter, without leaving SD?

  • .Wiki
    Options
    Offline / Send Message
    .Wiki polycounter lvl 8
    poopipe said:
    I'd flatten the whole thing out into a circle - that's how you'd actually upholster it. 
    Just try this first, it will give you some distortion but should work fine.
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    .Wiki said:
    poopipe said:
    I'd flatten the whole thing out into a circle - that's how you'd actually upholster it. 
    Just try this first, it will give you some distortion but should work fine.
    Thx, I know it would work. I asked some of my industry friends and they usually do 1 of these 3 things:

    1) Make a high poly and bake it right, so simple material and triplanar are sufficient.

    2) Without a high poly, either cut your UV in order to hide seams, or put it behind some extra geometry.

    3) Without anything above, you handpaint seams as a last resort.

    ----

    Q: So, just do that, why don't you do it?

    A: I am trying to find another solution that doesn't involve cutting UV to compensate. Basically a generic approach that would work for most cases, especially for cases when your object are not too close to viewers.
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6


    While not reaching my goal yet: a procedural seam generator based on UV borders, using strategy outlined above.
  • bitinn
    Options
    Offline / Send Message
    bitinn polycounter lvl 6
    So, I think I basically figure this out:

    Again, follow the same strategy outlined above, I created a simple edge detection node and use it to blend a few common values, like base color, normal, height, AO etc.




    The input map is simply a ID map baked in SP, but specially without dilation or diffusion, so basically a map of UV shells. We use it to determine UV borders and create procedural seams, for example:




    Not happy with the result? Just move a few sliders.



    I compared my solution to the chamfer2.0 node, which operate on the same principle (baking a UV map of some sort); my material works quite well even when working in 1K texture (and texel density here is only 2.56px/cm). So I am feeling pretty good about it.







    To summarize:

    1) no high poly needed.

    2) no extra geometry needed.

    3) no triplanar needed.

    4) no or minimal handpainting.

    5) only require baking an ID map, dead easy in SP.

    6) no special UV cut needed, your uv borders become procedural seams.

    Hope it helps someone facing the same problem as mine!

  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
    That's  a smart solution.  Also adds some nice details that weren't there before. 

Sign In or Register to comment.