Practical techniques for texturing wall corners

Good morning, Unrealists,

Now I don’t know if this is a question, or an informative post, or whatever it is, but it’s long and I apologize for that.
The reason I made this thread was because I looked around for this for a while and found nothing, so decided to write something.
I also really like to talk.

Anyway, I’ve recently been thinking about a specific detail that’s been frequently overlooked (at least in my experience),
I’m of course talking about dealing with wall edges textured with bricks/tiles or anything height-related that shouldn’t be cut so intensely.
Here’s a quick example to visualize the problem:
d5141472a2dc02010e8a1c42286d4e106ec9ed3d.jpeg

So the course of action I immediately came up with was to remove the bricks at the corners, then replace them with smaller bricks to fit the area (which is a whole different story I won’t be lengthening the thread for), rather than be hard-cut, which gets exceedingly unattractive when dealing with heightmaps and tessellation.
I found three practical ways for doing so, none perfect, so I will list them and their disadvantages.

  1. Creating separate models.
  2. Using material masks.
  3. Using vertex painting.

The result of course is almost identical,
c32bef4ffd9cdec5c0190db2c7b12b7d166837ce.jpeg

However they all have disadvantages that almost make them unusable.
So, let’s get into detail:

  1. Creating separate models:

A very primitive solution, I believe, but it made the most sense.
So the idea is to create two materials (let’s assume we’re using substance), so we make a brick wall texture with bricks and mortar, then we mask out the bricks which leaves us a solid mortar texture.
We pop our brick texture into 3ds max (or whatever), uv them walls, then cut out the extra brick-pieces from the model, and make them into a new model which will be assigned the mortar material.
This is how it looks in Max:
62d9050a1737515fa3e5a2a1830c7336288a9174.jpeg

Disadvantages:

  • The models are based on the texture, so any change to the texture or the model, will really mess everything up, and you basically have to start from scratch.
  • Any problems you stumble upon are not easily fixed, especially that you can’t do anything in-engine, so most of the time you’d have to start over.

Currently I’m leaning towards this method as it has the least destructive disadvantages provided no mistakes/changes are made.

  1. Using material masks:

Now this method is a little bit less troublesome, as it’s very easily adjustable if anything goes wrong, you basically fix the mask in photoshop and reimport. no need to remodel anything or import blindly hoping the problem just disappeared.
All it is, is using the two textures explained above, and masking them to remove the bricks in the corners.
4559cb6addd4562cb29296dd034686f19aae791b.jpeg

Disadvantages:

  • The mask is just a bitmap used in accordance to the model’s UVs, so if you have a 4-room house you’re working on, you’re gonna have a lot of textures and material instances to create the masks for each wall and edge.
  • It can be tricky to get the mask to fit the model, especially if the uv you set isn’t straightforward, so you might have tiling textures, and a stretched mask covering the entire model (you definitely don’t want the mask to tile).
  1. Using vertex painting:

a.k.a 2-way blends](Create a Material for 2-Way Texture Blending | Unreal Engine Documentation).
This is the most comfortable method, because it’s all handled in-engine, very adjustable, and is just easy to use.

However,
Disadvantage:

  • Vertex painting uses vertices to blend textures (hence the name), so if you want a good results, with bricks that are pretty close together, you’re gonna need a LOT of vertices, and I mean a LOT.

This is what my example looks like in wireframe, mind you this is the minimum I could use to blend without transparency on the neighbouring bricks:

Now of course, I could spread the vertices on the edges, so that only the areas I’m using for painting are dense, I decided for the sake of the example to keep it as it is to prepare for the worst-case scenario.

I also want to quickly point out that I do realize there are things like Substance Painter and Quixel (or even manual uv texturing), however I excluded them from this thread because for walls they’re extremely inefficient because the walls can be very big, and a maximum of 4k (8k now ?) textures is not gonna cut it.
Unless you want to split the walls into several models, which brings us right back to the first method I mentioned.

Did I miss something ? am I wrong about one of the methods ? did you find this informative ?
Please express yourself in a reply.
I really want to hear what you guys think.

Thank you for reading, and for being awesome.
Ali.

If you’re meaning something aesthetically like this:

or this:

Then I’d be doing that as a separate mesh/material, just for ease of use.

In either case, all your methods are far too complex to actually be useful imho

Exactly my point, I wasn’t satisfied with any, which is why I started the thread.
so how would you fulfill the second picture for example, a separate model for the corners or ?
Although it seems a bit easier for fixed bricks than it is for randomly-placed ones, because then you could just split the model right where the first row ends and continue on from there

Use the new POM displacement material functions that you can get from the 4.12 content examples. It’ll do what you need without a large performance hit.

Also if your textures are seamless, you can pair it the WorldAligned material functions and scale them accordingly