I was wondering what techniques people use for texturing static meshes. For example, imagine you wanted to model the front elevation of this house:
There are lots of different materials here: the bricks, the tiles, the cream paint, and so on. These need to be applied to the right part of the mesh. One way of doing that is to unwrap the model, export the unwrapping to some kind of paint tool, and then paint the materials in the appropriate places. This would work but it would be very fiddly getting the right material in the right place, with correct alignment and scale. It only gets worse if you want good quality materials with lots of maps, because then you have to do the same thing with the normal map, the specular map, and so on.
This seems completely impractical for producing large amounts of scenery, so I’m curious to know what techniques people have found for speeding things up.
The sort of thing I’m imagining is a tool where I can tag polygons as requiring say brick. I can say that the Y coordinate of the brick texture corresponds to the Z coordinate of the model (assuming it uses Z-up coordinates) so the texture ends up the right way round. Of course I also need to be able to specify the scale, so all my models end up with similar size bricks. Finally I start the tool and it creates the maps with the textures in the right place for the UV unwrapping that I’m using.
Model the parts separately i.e. the walls that should be brick separate to the windows that should be cream paint. Make sure you set your uv’s to the same scale on every model and make your textures work to that scale. Import into UE4. You can then throw your materials on in UE4 and they should work. A very simplistic explanation I know but it works for what you are asking. Unless somebody has a “make pretty” blue print that does it better.
You dont make a unique UV skin, you just use 5-6 materials (textures diffuse, only for the bricks need a normal also) and assign them material slots (e.g. name in 3ds Max) and align them in the 3d modelling program. then you import the mesh as fbx with the texes assigned in UEd. if you do it right, the materials in UEd are already assigned perfect to the mesh. this way you also can re-use the textures on other models, eg. variations or modules for that house.
for this you need 1) seemless and 2) tileable textures and with 3) no repeating pattern.
with this way, you can also swap materials, e.g. a red brick 512x512 texture by a yellow brick 512 one and can easy create different looks for copies of the mesh, e.g. a yellow variation of that house.
dont use a unique skin as you can only use it for that model once and dont have the high-res of different material slots like i described.
Thanks for the suggestions! I had assumed that it would be more efficient to make a single material for each mesh, but I was just reading about the way draw calls work, and I’m no longer sure. It seems the engine might be able to collect everything that uses the brick material, say, and render it all at once. (One draw call per mesh that contains brick, but without the extra overhead of switching materials.) In that case I imagine it’s more efficient to reuse things like the brick material, because the important thing is to have fewer materials in the scene, not fewer materials per mesh.
Is anyone doing this with Blender? I find it difficult to get good unwraps without doing a lot of manual tweaking. For example, it might unwrap with one of the islands rotated 90 degrees, so the brick texture runs top to bottom instead of left to right. Another thing is that it might distort some of the polygons to avoid creating extra islands, which is good for organic meshes, but useless for the type of model we’re talking about here. Do you just edit the UV maps manually to correct these problems, or have you found settings for one of the automated unwrap tools that give good results?
Substance Painter looks interesting. I downloaded the demo and tried it out, but it’s obviously going to take a lot of time to learn it properly! I managed to assign a base layer with one material, but it seemed to apply to all the UV islands. Is there a way to assign different base layers to different islands? (I tried to create a mask that was restricted to one island, but that caused Substance Painter to crash.) If so that might be another approach, though I suppose I’d be back to one material per mesh.
Yes, I do this by creating a layer folder, assign a mask to the folder, add a fill layer to the folder, then using the select tool I mask the desired polygons then invert the mask. Early releases can be a bit crashy though
This is really helpful, I now have two options (Substance Painter and multiple materials) which are probably both useful in different circumstances. Thanks again.
If anyone else is having problems with Blender’s unwraps, I found it worked better if I didn’t try to do the whole mesh at once. Also, I can unwrap a chunk of mesh, then pin two vertices at locations that give them the correct orientation and scale. If I then rerun the unwrap, the rest of it fits around the pinned vertices, meaning that the whole unwrap now has the right scale and orientation.