Author Topic: Aligning textures and dirt across multiple submeshes  (Read 1896 times)

I'm attempting to texture the interior of a rather large house model using SD. I've run into a problem, however. Since the house is pretty large, it is split into multiple submeshes by room or house area, each with their own UV set and material. This is causing a misalignment of textures and dirtiness between submeshes.

Is there a node I can run the wood floor texture & ground dirt through that will make them line up across submesh seams? I've tried tri-planar and it doesn't seem to help, maybe because they are different submeshes with their own UVs or maybe I'm doing something wrong.

Any help would be appreciated. Attached is a screenshot of my model. Each side of the seam is its own submesh with unique UVs and graph in SD.


I'm attempting to texture the interior of a rather large house model using SD. I've run into a problem, however. Since the house is pretty large, it is split into multiple submeshes by room or house area, each with their own UV set and material. This is causing a misalignment of textures and dirtiness between submeshes.

Is there a node I can run the wood floor texture & ground dirt through that will make them line up across submesh seams? I've tried tri-planar and it doesn't seem to help, maybe because they are different submeshes with their own UVs or maybe I'm doing something wrong.

Any help would be appreciated. Attached is a screenshot of my model. Each side of the seam is its own submesh with unique UVs and graph in SD.

HI,

Since you are working with different submeshes with their own UV sets, you will need to use 2 triplanar nodes. There will be one triplanar in each material to process the grunge map.

Another solution could be to align the floor UVs so that they will tile horizontally. This may not be possible with your meshes. In the attached image, I have an example of 2 planes, each with its own material and UV set. I applied the same graph to both materials. Since the UVs extend all the way horizontally to the 0-1 space, the result tiles. There is no seam on the noise.

Cheers,
Wes



 
Head of Substance Demo Art Team
the3dninja@adobe.com
Twitter: The3DNinja

Thanks Wes,
Unfortunately I can't align the UVs such that they will tile. So, to set up the triplanar nodes, should I have one on the wood texture, as well as one on each grunge texture? There are two issues happening: 1) applying triplanar to each wood texture doesn't seem to cause the wood grains to align across the seam. 2) applying triplanar to the grunge causes an undesirable output (I'm using the Ground Dirt node, and it basically causes the dirt to be all over the model rather than on the ground).

Thanks for your help!

Thanks Wes,
Unfortunately I can't align the UVs such that they will tile. So, to set up the triplanar nodes, should I have one on the wood texture, as well as one on each grunge texture? There are two issues happening: 1) applying triplanar to each wood texture doesn't seem to cause the wood grains to align across the seam. 2) applying triplanar to the grunge causes an undesirable output (I'm using the Ground Dirt node, and it basically causes the dirt to be all over the model rather than on the ground).

Thanks for your help!

Hi,

I received info from the developers and we normalize the position for each of the submeshes. In this particular case, we would need to normalize the position according to the entire mesh so there is a continuity in the position map. This would make the triplanar work correctly. As a workaround, you would need to bake the position map in your 3D program where you can normalize the position map based on the entire mesh. You can then use that position map with the triplanar.

Cheers,
Wes
Head of Substance Demo Art Team
the3dninja@adobe.com
Twitter: The3DNinja

That is very helpful, thanks Wes! I ended up just re-organizing how my submeshes are split up so seams like this happen in non-obvious places.

Also, for anyone else who has this issue, I figured out how to properly use the Ground Dirt node with triplanar:
1. Set up a dirt node and use a uniform color (set to a neutral grey) as the inputs on it for both curvature and AO.
2. Hook the output into an invert node
3. Put the output of the invert into a tri-planar greyscale node, with the position and worldspace normal of your mesh hooked up correctly.
4. Hook the output of that into the custom grunge input of another Dirt or Ground Dirt node.

I think it has to be done this way because triplanar has to operate on the noise/grunge prior to the curvature and AO calculations that dirt uses. If you try to do it after a dirt node that has already calculated curvature and AO, it comes out wrong.