How to add configurable dirt / grunge material on top of a mesh with multiple materials?

Each part of this mesh has different material:

I made dirt masks:

Is it possible to add a dirt material to the entire object using masks, which can then be changed to snow and other materials?
The only option I can do is to add a dirt material directly to each material inside this object using masks and larp. But it would be really time consuming and literal hell to control the level of dirtness of the mesh. This way it would be hard to replace dirt to snow also.

You can’t add a mask to the whole object.

Options are:

  1. When this becomes a character blueprint, you can put a global parameter on the BP and set the lerp values of each material from the BP.

  2. Use a material parameter collection. Then all the materials will respond to a single parameter adjustment:

There’s probably 100 other ways, another springs to mind:

  1. Make all the materials instances of the same material, then it’s not a problem.

  2. Many others…

To be able to have different objects mapped into a single texture you would probably have to create a specific UV channel for each object that maps it’s geometry into a specific place.

That’s pretty common when working with characters, most pieces of clothing end up with 2 or 3 UV maps to apply different things to it differently.

Drawing to the texture at runtime is also possible.

So you can basically make the map more/less visible procedurally with a render target filter working on the same global UV.

Unfortunately, unless the assets are mapped with a global map in mind, you’ll have to do a lot of work to produce a UV map that satisfies most/all areas…
(And using multiple maps is a bad idea as it would degrades performance).

1 Like