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
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.
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).
Use a mask to blend a noisy texture over the seam areas, works fine on most rock types
Thank you for the advice. I'll try those as well and check some videos like you recommended
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