I've been looking for an answer for some time now, but I can't find anything about this. I don't even know the proper way to search for something like this. The best example I have in mind is this table from PT.
I am wondering how all of these small details are made, what's the proper technique for creating this. I'm talking about the all these grunge and dirt on the table, all of these really small objects. I think this kind of detail is extremely as it makes your scene look more busy, full and most important, alive.
I assume they're modeled as any other 3D mesh, textured and then placed in the scene. But it sounds like a lot of time consuming work to create all these little objects and all their variations. Is there any technique or proper workflow for achieving this?
I hope I'm making myself clear and you understand what I'm trying to say.
Replies
Often these objects are optimized to fit all together into a texture atlas, so you are loading less individual texture files.
Detail mapping is one way to add high-frequency details to larger surfaces. Often used with multi-texturing to control where the detailing appears. Decals are another useful method. Lots of ways to achieve this!
https://www.youtube.com/watch?v=8vtrGF0ZTRc
As for specifics, look into Substance or Quixel, having preset "smart" textures goes a long way. The brass lamp's surface for example. You could model out several types of lamps or other brass items, and automagically get an appropriate and unique grunged version of the texture for each. A traditional memory-saving method would be to create a single brass atlas that has all that you need to map all the objects on to.
So depending on how big the objects are, and the kind of detail necessary, you can cram quite a lot into a 4096. Though I think with current GPUs, using 4 2048 atlases might yet be more efficient than one 4096 atlas. 3 4096 textures (Albedo, RoughnessMetalnessAmbientOcclusion, Normal) take up quite a bit of space; and loading that, as opposed to selectively loading smaller files, isn't always more efficient.
I say author your textures independently, as their own file. And figure out what resolution is necessary (keep in mind the importance of the assets, screensize, etc). Then atlas them, keeping them at the necessary resolution. I think often, it's easy to go overkill making everything a 1024, but often that's not necessary. Small simple things can fairly easily go down to 512 or 256, or even 128, if it's small and simple enough.
So, in a sense, you're conforming your UVs to an established texel density.
Also, I agree with @joopson on the 4Ks. Have you set up any tests in-engine? You can set up a test scene in UE, and adjust your max in-game texture res whilst comparing detail loss in the viewport and memory usage in the texture details dialogue. So whilst it's always a good idea to author texture assets at a higher res, you can clamp them in-engine. You may find that you are blowing high-res texture and memory usage unnecessarily. This is also where establishing a texel setup in your 3d package to run your assets through can save a lot of guesswork and fixing things later in-engine when play-testing, whilst ensuring tiling/unique textures are consistent.
And strange as it may seem sometimes lowering a tiling texture res can actually increase sharpness due to mipping.
And lastly, although I know this is obvious, plan your atlas textures to cut down on material calls. So all objects in a 'set' will be atlased according to their physical properties: wood set/tranparent set/metal set/etc. I know it's obvious but I just thought I'd throw it in for others that may be reading this as a new concept.