0
\$\begingroup\$

I am trying to apply different textures to a model I have by face rather than the entire object. I am only able to add one material to the entire object. How can I apply different textures to different faces of my model separately? I imported my model from blender. For reference, I have a detailed building with a roof, windows, etc. that is all one object and I would like to texture different parts of the building with different megascans separately. Would appreciate any advise.

\$\endgroup\$

2 Answers 2

1
\$\begingroup\$

TL;DR

For various technical reasons we won't go into here, the underlying technology does not allow this by default. That is to say, without modelling the mesh(es) correctly, you will not be able to just drag-drop textures/materials to individual faces. Essentially, your mesh has to be built to support that.

Solution #1: separate models

Break your model up into separate models for each face. This is tedious, but for a beginner, allows you to drag-drop textures individually to faces. However, you will have to re-assemble each face in its correct position in relation to other faces, in UE4... which could be very tedious depending on the model's complexity.

I wouldn't really recommend this unless your model is very simple indeed.

Solution #2: separate sub-meshes

Remodel the object by breaking it up in your favourite modelling tool (Blender, Sketchup, 3DS Max, or what have you) into distinct sub-meshes or even distinct objects to be reassembled in UE4.

Remember, sub-meshes will need to be able to be recognised as distinct by UE4 for this to work, otherwise you will need to use whole separate models (#1); I suggest doing a couple of simple tests first, a few minutes modelling each, using a simple cube to check whether you can get the faces recognised as separate by UE4 on import, before spending hours remodelling your whole building only to find it doesn't work.

Note that with separate objects, you can move each one distinctly (e.g. opening the roof of your building) so for maximum flexibility, this is the best approach to take.

Solution #3: UV painting & mapping a single model

Alternatively, keep your existing model and learn UV unwrapping/painting from a single albedo texture, e.g. Quake. This will require you to select seams of your 3D object (just like seems on a piece of clothing) where the surface can be split and opened when you paint the 2D representation, and will then be "sewn up" at runtime.

enter image description here

This is a useful technique to know for games, but generally takes a couple of weeks to learn.

The downside to this solution is that it is harder to animate individual elements discretely, as you have to do what's called vertex-weighting in order to perform animations. Not the best solution for buildings, but very good for animated characters.

\$\endgroup\$
4
  • \$\begingroup\$ Thank you for the detailed response. Can you please suggest any good resources/videos to learn UV painting & mapping a single model? \$\endgroup\$
    – A D
    Apr 25, 2020 at 17:14
  • \$\begingroup\$ @AD Sure. That completely depends on what your tool of choice is? I use Blender. \$\endgroup\$
    – Engineer
    Apr 25, 2020 at 17:15
  • \$\begingroup\$ I am also using Blender and want to use my models in ue4. I am looking to texture my city model in ue4 using some megascans. Can you also please explain why this technique isn't the best for non-animated objects like my buildings? I have a large city scene with many detailed buildings, so I don't think separating the model will be the best option. \$\endgroup\$
    – A D
    Apr 25, 2020 at 17:19
  • \$\begingroup\$ @AD It can be done. What will happen is, let's say you have a roof object 1 and walls + floor as object 2. You will need to weight all the vertices for the roof animation at 1.0, and for the rest at 0.0, if you want to move only the roof. It's not the normal way of doing things. The better option is if UE4 imports a model with its distinct submeshes - then you will be able to drilldown within the object, e.g. building.roof and do a building.roof.position.y = 10 ... but this all depends on how UE4 imports the model. That way (approach 2), you don't need to learn UV mapping. \$\endgroup\$
    – Engineer
    Apr 25, 2020 at 17:26
0
\$\begingroup\$

Select the object/face which you want to be a different material and scroll down to Polygon Material ID, choose a different one. When you do this your Unreal will have a materials list for you.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .