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
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.
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?
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...
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
- 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?
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.
While not reaching my goal yet: a procedural seam generator based on UV borders, using strategy outlined above.
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!