Home Technical Talk

How do games like GTA, Battlefield, ARMA 3 and other games make building textures.

vertex
Offline / Send Message
skyboyfly vertex
So how does battlefield/Arma 3 in particular make Sky-scraper textures (That are completly enterable and are full destructible And have the same qaulity of texture as the rest of the game. As I don't think they are using 8k texture maps because of there map size with multiplayer, and there building are most likly not modular because they are destructible. (And I'd think that would be as laggy after a while as the 8k textures.) So how are they able to make sky-scrapers and building have the same qaulity of textures as everything else, and how could I do this, as I use Zbrush, Substance designer/Painter, Blender, and UE4.

Replies

  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    Let me introduce tiling textures...
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    You can go brutal and use atlas textures and trim sheets, as well  B)
  • RNucci
    Options
    Offline / Send Message
    RNucci vertex
    Like Obscura said, they use modular textures and tiling to use smaller texture files. They also use proximity LOD (level of detail). basically If you're far away from an object (like the top of the building when you're on the ground) the engine loads in very small resolution textures, like 512x512. As you get closer, the engine calculates your distance from the object and at various points, the engine loads in a larger res texture, this allows the player to experience a high level of detail to close objects without bogging down the memory with high level textures on objects in the distance with detail the camera wouldn't be able to pick up anyway. 

    destructable objects I'm less familiar with, but I would assume that the engine has a bunch of predetermined forms of "destruction that an object can sustain. For instance, you have an unblemished wall tile, then you shoot the wall tile and the engine loads in a procedrally created "destructed wall" based on where you shoot. If the wall is completely destroyed, they are almost certainly not using the same texture to produce rubble as that intricately normal mapped wall tile. That's really just a guess though so take it with a grain of salt.
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    "They also use proximity LOD (level of detail). basically If you're far away from an object (like the top of the building when you're on the ground) the engine loads in very small resolution textures, like 512x512. As you get closer, the engine calculates your distance from the object and at various points, the engine loads in a larger res texture, this allows the player to experience a high level of detail to close objects without bogging down the memory with high level textures on objects in the distance with detail the camera wouldn't be able to pick up anyway. "

    This thing is called mip mapping, its its nothing new, or related to tiling textures. Pretty much all engines does this, unless you tell it not to, in you material.The amount of lod levels depends on the base resolution of the texture, and its calculated based on distance. So if you have a very long floor with one tiling texture, youll see a lot of its mips , as it gets further from the camera. Its also used to avoid aliasing artifacts on angled surfaces, and at distance. For more info, you can google it up.

    So what you can do with the tiling textures, atlases, and trim sheets, is to break down the huge objects, into many smaller, tiling textures. So you'll end up with some materials. Like wall 1, wall2, window1, window2, inside floor,1 etc... To break up repetition, you can use the trim sheets, and other techniques, based on the theme... Like if you have a fantasy or medieval setting, and you need to break up the tiled look on the houses, you can blend plaster and brick materials.  With a proper material, you would have nice blending.

    You can also use decals. It was extensively used in the latest Doom for example, but you can use it in many cases.
    Or you can use vertex paint materials, still, depending on the setting.

    An another material technique, is to use a dynamic color parameter, or even damage, wear, or other properties. So you have some options.

    In an actual game development, these things would be probably given, and you would have been told what to do to make it working nicely.

    Also, you definitely don't want to handle the tall bulfing as one mesh. If we are talking about a building that has like 20 levels, and its fully playable, you gona spend like a 500.000 tris or a million..... But you can chop it up into like rooms, and props, so then anything that is fully covered by something, like a wall, won't render , so you end up with a few hundred thousand triangles on your view. Plus the background...

    Overall, this one, as some others, kinda depends on some factors, but yeah, you can be sure, for the architecture itself, you want tiling textures, probably for a lot of other stuff too.

    Destruction can be handled inside the engine, based on my experience, you can tell the destructible asset, whats the inside texture, and again, you would use a tiling texture for this. You could also use pre determined/baked destruction, through some external tool, and even inside the engine, you could have multiple options, about how to handle the destruction.

    Not to mention, if you are able to do some coding or scripting.

    If you are not given an exact task from someone, and you just want to know, this can be a complex topic.
  • skyboyfly
    Options
    Offline / Send Message
    skyboyfly vertex
    Obscura said:
    "They also use proximity LOD (level of detail). basically If you're far away from an object (like the top of the building when you're on the ground) the engine loads in very small resolution textures, like 512x512. As you get closer, the engine calculates your distance from the object and at various points, the engine loads in a larger res texture, this allows the player to experience a high level of detail to close objects without bogging down the memory with high level textures on objects in the distance with detail the camera wouldn't be able to pick up anyway. "

    This thing is called mip mapping, its its nothing new, or related to tiling textures. Pretty much all engines does this, unless you tell it not to, in you material.The amount of lod levels depends on the base resolution of the texture, and its calculated based on distance. So if you have a very long floor with one tiling texture, youll see a lot of its mips , as it gets further from the camera. Its also used to avoid aliasing artifacts on angled surfaces, and at distance. For more info, you can google it up.

    So what you can do with the tiling textures, atlases, and trim sheets, is to break down the huge objects, into many smaller, tiling textures. So you'll end up with some materials. Like wall 1, wall2, window1, window2, inside floor,1 etc... To break up repetition, you can use the trim sheets, and other techniques, based on the theme... Like if you have a fantasy or medieval setting, and you need to break up the tiled look on the houses, you can blend plaster and brick materials.  With a proper material, you would have nice blending.

    You can also use decals. It was extensively used in the latest Doom for example, but you can use it in many cases.
    Or you can use vertex paint materials, still, depending on the setting.

    An another material technique, is to use a dynamic color parameter, or even damage, wear, or other properties. So you have some options.

    In an actual game development, these things would be probably given, and you would have been told what to do to make it working nicely.

    Also, you definitely don't want to handle the tall bulfing as one mesh. If we are talking about a building that has like 20 levels, and its fully playable, you gona spend like a 500.000 tris or a million..... But you can chop it up into like rooms, and props, so then anything that is fully covered by something, like a wall, won't render , so you end up with a few hundred thousand triangles on your view. Plus the background...

    Overall, this one, as some others, kinda depends on some factors, but yeah, you can be sure, for the architecture itself, you want tiling textures, probably for a lot of other stuff too.

    Destruction can be handled inside the engine, based on my experience, you can tell the destructible asset, whats the inside texture, and again, you would use a tiling texture for this. You could also use pre determined/baked destruction, through some external tool, and even inside the engine, you could have multiple options, about how to handle the destruction.

    Not to mention, if you are able to do some coding or scripting.

    If you are not given an exact task from someone, and you just want to know, this can be a complex topic.
    But what I don't understand is how you can make a large textures like that, with a predetermined UV map Size, and then mats get added on. As I'm using UE4, Blender, Substance designer/painter, photshop and zbrush.
    AND SOMETHING just clicked, when adding the UV map, with mats, the size of the textures over all is determined by the Mats texture sizes, not the UV maps size. As the Engine (UE4) would make just use the mats and lay onto the predetermined UV map layout. As I've been doing Something completely else, THANK YOU SO MUCH
  • Anchang-Style
    Options
    Offline / Send Message
    Anchang-Style polycounter lvl 7
    Well you can consider a building as a bunch of primitives. A huge house can be easily made with a wall that has windows cut into it. UV it and assemble them to make the house you wanted. Now you can tile your texture over it (texCoord note in UE4 has the option to tile. if you want to keep it parametric use ScalarParam for U and V, Append them and multiply with the output of the TexCoord). Then you place items on top of your basic house to make seams diappear, break repetition and make it more interesting. The items you place around the building can be uniquely made, sculpted and textured (eventhough it seems to be commong practice to use a trim sheet on these).
    The other option is just upscaling your UV set beyond the boundaries of your 0/0 - 1/1 space, which will result automatically in tiling the texture. In the same vein you don't have to bother with overlapping considering that the Lightmap can be created in a second channel.
    Ofcourse if you want to tile, you have to author the material in a way that it's details stay with the tiling.

    This is a great video series that you might want to check out.
    https://www.youtube.com/watch?v=APZ2kZ3OF1E&t=108s
Sign In or Register to comment.