If we want everything in the world to have a consistent level of detail, then we need a consistent texel resolution (the resolution of the texture image divided by the surface area of the model that it is wrapped around). Otherwise we get blurry objects which don't fit in with the detailed environment, or really detailed objects which make everything else look bad.
This causes a problem for really large objects like cliff faces and buildings. They can have 1000x the surface area of most objects, but we can't afford to give them a texture image that's 1000x bigger! It wouldn't fit on the graphics card. For large rocks I already explained how we can use tiling textures and displacement maps (in this post), but this wouldn't work for complex, designed objects like buildings. In these cases we often have to be able to reuse specific texture image details instead of just tiling the whole image.
When designing textures with reusable details there are a lot of considerations to take into account. Where are the natural seams? Will repetition be too obvious? Can any of the texture space be better used elsewhere? A lot of these questions are only answered after seeing the texture on the model. However, at that point it would be a lot of work to redo the texture. To solve this problem, I've started using placeholder texture sheet layouts when modeling, so that I can finalize the layout before painting in all of the texture details. Here is an example of two different placeholder texture layouts:
When I was testing out the first layout I found a number of problems. For example, the bricks above the dark brick stripe were not very useful -- I could get more flexibility by moving them down to create a larger area of continuous bricks. That way, I could create larger plain brick areas, and if I wanted to reproduce the striped look I could just take some of the bricks from below the stripe and copy them above it, and achieve a higher texel resolution.
Because these placeholder textures are so easy to make, it is not a big deal to change them after applying them to a model. It took me more than a few tries to get something I was happy with, but the process is pretty fun. Here is the "layout 2" texture in action on the wall model, showing how the new layout can create a higher-resolution brick stripe.
I also applied some noise (random pixel variation) to the texture to make the texel resolution visible. This way I can be sure I have enough texture resolution, and that it stays constant across the model. Next time I will show how I can use this texture as a basis for a high resolution model for normal maps!