Home Technical Talk

Is it possible to reuse detailed textures for rocks without visible seams?

Hey all,

Im relatively new as a professional 3D game artist, currently working in Unreal Engine. 

I wanted to know if anyone could share techniques on whether its possible to create 1 or 2 texture sets for many series of rocks. 

I know doing something like this using material/ shader techniques is possible but I was wondering if thats possible while having nice detailed normal maps. 

My current end goal is to create a system which minimizes texture work where I can focus on creating models and applying a material that allows for great seamless textures that avoids having to author a lot of texture files

Any advice and guidance is greatly appreciated

Replies

  • Mink
    Offline / Send Message
    Mink polycounter lvl 6
    Off the cuff, 2 UV maps with non overlapping seams, blended via vertex color data guiding a secondary "coverup" texture, blend it using some sort of noise so it doesn't look bad.

    A suggestion would be to set it so that you have a primary UV for the main rock texture, and have the UV offset randomly based on object ID or something in blueprints/shader editor so each rock looks semi unique. Pick an RGB channel to vertex paint over, and around the seams of the primary UV with a hard value for seams that falls off over a short distance. Create a secondary UV channel with seams that do not intersect with the primary UV channel's seams. In Unreal, have the rock texture on the main UV blend with a lichen (or anything to similar effect) texture on the secondary UV channel, and for the mask use the Vertex Paint Channel mixed with a mask made specifically for the "lichen" texture to create a seamless effect wherein you have lichens covering up the UV seams of the main rock texture.


    All of this is highly doable, and extremely annoying and time consuming. Shader cost is always something to watch. I might even set up a test of this method myself if I ever find the time to return to 3D work.


    Edit: For creating the base rock texture, multi texture blend techniques have been around for decades now and are worth looking into. Most of them allow for preserved UV detail, and revolve around randomized masking of 2 or more textures based on an off-UV scale-scaled mask. I assume this isn't what you're asking about, but you can find posts about the technique on the wiki.
  • Fabi_G
    Offline / Send Message
    Fabi_G high dynamic range
    Hey :)
    If you have the UV seams follow natural edges they will be hardly noticeable (probably best in cavities).

    You can combine object specific textures (normal map and packed masks (e.g. curvature, ao, pattern) - don't need to be high resolution) with a tiling texture set. In the material, blend object and tiling normal maps and use the object masks to modulate the tiling texture set. Have a base material instance where you set up the tiling texture set and the way it gets modulated by the object masks. Then instance it for each asset and just override object masks and tiling values. This way you can quickly adjust the look of all rocks by tweaking the base instance.

    Another way to get seamless textures would be to project them onto the assets using the world aligned texture nodes, but I think this quickly gets too expensive when projecting normal maps. I would rather reserve this for masks.

    If I remember correctly, in UE4 no tangent basis gets generated for UV coordinates other than 0, which make blending textures based on 2 UV sets not applicable by default (search for something like "ue4 normal map on uv1" and you will find some threads and workarounds).
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter


    Use a mask to blend a noisy texture over the seam areas, works fine on most rock types
  • Drawgonian
    Mink said:
    Off the cuff, 2 UV maps with non overlapping seams, blended via vertex color data guiding a secondary "coverup" texture, blend it using some sort of noise so it doesn't look bad.

    A suggestion would be to set it so that you have a primary UV for the main rock texture, and have the UV offset randomly based on object ID or something in blueprints/shader editor so each rock looks semi unique. Pick an RGB channel to vertex paint over, and around the seams of the primary UV with a hard value for seams that falls off over a short distance. Create a secondary UV channel with seams that do not intersect with the primary UV channel's seams. In Unreal, have the rock texture on the main UV blend with a lichen (or anything to similar effect) texture on the secondary UV channel, and for the mask use the Vertex Paint Channel mixed with a mask made specifically for the "lichen" texture to create a seamless effect wherein you have lichens covering up the UV seams of the main rock texture.


    All of this is highly doable, and extremely annoying and time consuming. Shader cost is always something to watch. I might even set up a test of this method myself if I ever find the time to return to 3D work.


    Edit: For creating the base rock texture, multi texture blend techniques have been around for decades now and are worth looking into. Most of them allow for preserved UV detail, and revolve around randomized masking of 2 or more textures based on an off-UV scale-scaled mask. I assume this isn't what you're asking about, but you can find posts about the technique on the wiki.
    I'll give these techniques a shot for sure!

    Fabi_G said:
    Hey :)
    If you have the UV seams follow natural edges they will be hardly noticeable (probably best in cavities).

    You can combine object specific textures (normal map and packed masks (e.g. curvature, ao, pattern) - don't need to be high resolution) with a tiling texture set. In the material, blend object and tiling normal maps and use the object masks to modulate the tiling texture set. Have a base material instance where you set up the tiling texture set and the way it gets modulated by the object masks. Then instance it for each asset and just override object masks and tiling values. This way you can quickly the look of all rocks.

    Another way to get seamless textures would be to project them onto the assets using the world aligned texture nodes, but I think this quickly gets too expensive when projecting normal maps. I would rather reserve this for masks.

    If I remember correctly, in UE4 no tangent basis gets generated for UV coordinates other than 0, which make blending textures based on 2 UV sets not applicable by default (search for something like "ue4 normal map on uv1" and you will find some threads and workarounds).
    Thank you for the advice. I'll try those as well and check some videos like you recommended

    poopipe said:


    Use a mask to blend a noisy texture over the seam areas, works fine on most rock types
    I can give that a shot and see if my leads like the results. appreciated


    Thank you everyone who took the time to answer, Im sincerely grateful. I wish I could share my results but NDA and all. Again I really appreciate the advice and knowledge
Sign In or Register to comment.