Texturing very big objects

Hello people !

I’m an experienced 3D artist getting into creating game art, and I’m trying to get the subtleties of switching from animation to game art. It’s been going fine so far but getting in creating bigger worlds, I come upon a few questions that you can probably help me answer, especially around texturing.

There are two big differences that I see, switching from animation to game :

  1. Optimization : the game has to run in realtime. So minimize draw calls by creating atlases and have as few different materials as possible.
  2. Quality : you don’t know beforehand where the camera will go so every texture must be, as much as possible while taking into account point 1), good enough so that a close shot won’t look too low res.

Here’s my question : let’s say I’m making a big castle, for which a lot of the outside texture has to be a simple stone wall. I see two options :

A) simply use a tileable texture. Advantages = even a pretty low quality map (1k, even 512px) will do, good quality even looking up close. Disadvantages : pretty bland, doesn’t take geometry into account (for say edge wear) and no color variation across the surface (weird, especially from a distance). Might be very roughly edited with vertex painting (have to look into that)
B) use an actual painted texture, made with, say, Substance Painter. Advantages = a lot of control, can have a lot of variation and details across the whole mesh. Disadvantages = if you want it to look good up close, you need veeeery high texture quality. But even 8K textures wouldn’t be enough if you were to texture an entire castle, so then my question is : what is common practise ?

Do you just split the big mesh in different materials ? Do you mix between a painted texture and a tileable one depending on camera distance ? Some other trickery ?

I’m sorry for the big post, but it really helps me to make everything clear, and if I got something wrong you’ll be able to tell me…

Thanks a lot !

The answer is C) All of the above.

When making a large set piece like a castle exterior, you say “you don’t know before where the camera will go”, but that’s not entirely true. You generally want to make assets for the type of game it’ll be used for. If it’s a third / first person game where you can’t fly, there’s a good chance only the bottom floor exterior walls, or maybe even just those around the doorways / gates, need any kind of significant detail. Imagine a castle with a draw bridge and a moat. The draw bridge, chains, gate, and arch way around those need high quality textures and models as thats what you’ll be interacting with. The ground walls beyond that there’s a moat so you can’t get close. The second story and towers are always in the distance. So you can split up the areas you can get close to into a small hand full of materials with unique high resolution texture sets (the wood bridge, misc metal for chains and gate, bespoke rock walls with archway and window holes), and the rest of the castle can be a single atlas.

The other common approach is to use a combination of unique texturing and tiling textures where it makes sense, or use materials that use both. Most AAA games are going to be reusing tiling textures on pretty much everything all of the time for large outdoor buildings, but using unique textures to layer detail on top of that, or multi-texture materials that let them blend between multiple textures using a mask or vertex color like you would for terrain.

Thanks a lot, it’s really interesting ! I especially like the second approach, because it feels quite natural to me,h some experience with the Blender node system, to use shadergraph or Amplify. So basically instead of exporting color/normal/roughness from Substance Painter as I would with smaller objects, I’d export masks, like dust, damaged wall, which don’t need to be that High Quality, and use them to mix between a few times texture directly inside of unity ?
Although I’ve thought about that at first, I always wondered how expensive it was… Thanks a lot anyways, really appreciate the insight !

1 Like

There’s a lot of ways to go about it. Exporting masks is one option, but you’ll probably also want whole-object normals and maybe color tinting.

Another way to think about things is asset reuse. You can have tiling parts, not just tiling textures. Windows are a good example of this. You might only have one common geometry / texture for a specific window type, but have unique color overlays on top either as a mask texture or vertex coloring.

As for cost, it depends on what platform you’re going for. Mobile platforms you may need to be more atlasing, less layering, etc. PC and consoles you may be able to do much more complex setups. Blending between texture sets is going to be more expensive than just using color tinting via vertex colors or an overlay texture. But a simple color tint may be more than enough to hide the majority of the tiling, plus using actual mesh geometry between sections or embedded within. A big flat wall with a tiling rock texture looks pretty boring, but if you break it up with some windows, or some extra bricks sticking out or missing it in the mesh itself you can completely hide the tiling. Assassin Creed games do a lot of this.

Decals are another option. A lot of AAA games don’t do anything super fancy here either. They’re often extra geometry with some dark or light alpha blended material sitting just above the surface, or used to soften edges. Check out Overwatch or Star Citizen for this.