Large Building Texturing

So I’ve ran into a wall, how do you texture a large object? Creating a UV and applying a 2048x2048 texture of course looks terrible over the entire mesh.

I’ve been fiddling around with the UE4’s Tiling system and the best thing I can come up with is to separate my object to 4 or 5 different objects based on how many materials I need, and then
applying the different tiling textures.

I guess my question is, is this a good method? or is there a better one I’m oblivious too?

(sample image using tiling with only one material)

You could also just create different material slots for your mesh instead of splitting them up: or you could do it like that: ?v=2a2wgaKdXWM (with uv mapping)

Or you can use Layered Materials.

Alright, I guess I never thought to use a texture larger than 2048x2048. (the UV mapping example you gave me)

Now of the 3 methods, which one is optimal for game performance?

  • Splitting into multiple objects with 1 material per object
  • Multiple material channels
  • Massive UV maps
  • (any other way)

The performance depends on:

-the texture resolution
-the material complexity
-the tri count of the model

But I’m not sure which way is the best one for the performance :stuck_out_tongue: -> but with the UV mapping you can also use textures with a resolution of 2048x2048 (they dont have to be so big)

Alrighty, if the optimized way is unknown, what is the standard or most common way to do it?

Looking at the example shooter game level they seam to have broken the meshes up by material, but that’s the only large scale scene I can get my hands on.

Seems to me, even with a 4096 texture, it could still look sloppy if a player walks right up to your building. Think about the player’s screen resolution. If you cover a 5-story building with a 4096 texture, the player may only see roughly 1/5 of that resolution while standing against the wall. That’s 820 lines stretched over the typical 1080 lines of resolution.

So tiling can help. A 1024x1024 tiled texture would have a better resolution vs. 4096 stretched over the entire building. You could tile your UVs instead of tiling your material in UE4. I’ve done that by adding a temporary cube to my mesh, sized to cover a single texture tile. Select a single face on the cube then “Select Similar (normal)” to choose all faces with that same normal. Set the view accordingly and unwrap as projected from view. With all the similar faces still selected and the cube-face still highlighted, scale/position that face UV to match the texture. All the other similar faces scale accordingly. Repeat for each normal direction needed and remove the cube when done.

If you decide to break-up the mesh instead, your building has several repeating features. You could create a mesh for the lower floor and duplicate it for each floor above. Even with the balconies, you could do one level and duplicate it.

Split it up into material IDs, you’ll get a drawcall per ID but that’s not a big deal for such a large object.
Then just tile your textures with smaller sheets.
Stretching one texture over the whole model for a house is a big waste and will either look bad or force you to have incredibly large textures. There is no point in having thousands of different bricks on a sheet, you’re better off re-use them by tiling.
This way you get a lot more resolution and use a lot less texture space.
If you feel like it looks too repetitive you can just add another texture on top using a different UV (you can switch which UV your texture use in a texture coordinate node) and multiply it on top of the base texture to reduce the repetition, this could be just something to break up the color a bit or just add some dirt on top.
By doing this you can have variations a lot more easily if you plan on using the houses more than once, just by switching some of the materials instead of making a completely new texture sheet for the whole model.


I’m not sure what you’re modeling skill level is but I do want to point out that using a modular workflow is good for larger objects that will be using repeating geometry.

For instance with a a building like the one you have. You could make the following objects and tile them to make your building.

a single wall
a wall with a window cut out
the balcony
a corner piece
top edging for roof
a roof plane

This can be a frustratingly new way for beginners to learn but it’s great as getting a higher resolution for your textures and essentially creating lego building blocks to use without having a single huge mesh.

Take a look at this tutorial series from 3Dmotive for a quick idea of how it all works. The first few vids are free, but it’s a great series to work through if you want to learn Modular design workflow.

Here is a really good article on Modular Level design as well. (It’s in PDF format, so you’re aware)

As if I’ve not given you enough links to sift through here is one more that I feel is a good one to read through as well. :slight_smile:

If you have any questions feel free to ask!

Definatly going to be following this form post.

The bad thing about SSAO is that it slows down the render thread (i think that’s what its called, I need to hit the sack, soon) ALOT. From my tests, it is necessary to turn it off when you want to do a scene in VR. I had something like 40fps or something (very, very bad), when I turned it off, the FPS jumped to > 100fps.

That was my thought exactly. It was in one of Epic’s VR twitch streams. Outside of VR though, I didn’t notice any difference with it on or off as far as framerate drop. When I put on the headset though, ugg.