There are a bunch of methods to combine materials. One is to have one materials with masks for what material it is (like you said), you could have more masks if you need more stuff going on in that material. If those extra masks are just grayscale textures they are easier to set up (and swap out) but require more memory (and texture samplers), if they are RGB textures they are a bit harder to set up and swap out since you’re using them for several materials, but they are more performant.
You could also look into layered materials, they are a bit expensive but are really nice when you want to blend a bunch of materials. In your case you could make a wood material, a metal material and a fabric material separately, then blend them all using grayscale masks. Pretty useful but they can also get expensive pretty quickly if you use tons of layers. Layered Materials | Unreal Engine Documentation