Home Technical Talk

Using a normal map for beveled edges along with tiling textures for bigger assets?

jordank95
polycounter lvl 8
Offline / Send Message
jordank95 polycounter lvl 8
Hey guys - I notice in a lot of games with bigger props that have tiling textures, there's some nice baked beveled edges. I see this a lot in scifi games, or metal pieces. If it's not a bigger beveled edge, it has a normal map on the smaller edges. How is this achieved? Is it a normal map from a baked HP being used along with a 2nd UV channel for the tiling textures? Sort of new to this, so thanks for bearing with me.

Replies

  • LaurentiuN
    Offline / Send Message
    LaurentiuN interpolator
    I think they are beveling the edges and use custom normals, no bakes or normal map for the main geometry. And also using trimsheets for details.
  • renderhjs
    Offline / Send Message
    renderhjs sublime tool
    There is an addon for Blender that specializes in that
    https://www.blendermarket.com/products/DECALmachine



    It has some tools to drag and drop decals, generate decal font atlas, create mesh trims or seams on your geometry and even comes with shaders for Unity and Unreal.
    https://www.youtube.com/watch?v=C_V3_lIPR2A

    Other examples that I have seen are usually manually done in Maya, Max or Sketchup
  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    Hey. Like it was said before, it is probably in the geometry. Check out this thread:
    http://polycount.com/discussion/154664/a-short-explanation-about-custom-vertex-normals-tutorial#latest
  • jordank95
    Offline / Send Message
    jordank95 polycounter lvl 8
    Obscura said:
    Hey. Like it was said before, it is probably in the geometry. Check out this thread:
    http://polycount.com/discussion/154664/a-short-explanation-about-custom-vertex-normals-tutorial#latest
    Ah, ok got it. So you're saying its most likely always a beveled edge with custom normals applied? And that isn't an issue with poly count in the end?
  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    Poly count isn't really an issue nowadays, they are fairly cheap on modern hardware. Lots of games use this technique, more or less extensively. You don't necessarily need to have all edges soft though. Or you can do a combination of baking pieces that would otherwise be too highpoly, and apply bevels on corners of architectural pieces, etc. 

    Textures, especially large textures are still expensive though. By beveling the mesh edges, you can avoid a need to have a 4k normalmap baked from a highpoly for example. You bevel the mesh edges, apply custom normals, and go with a 1-2k tiling material. This is overall cheaper than having the 4k baked normal (of  course, only if you don't go totally insane with the mesh). There are other benefits of this technique as well, but you will see once you go through the thread. It also has bad sides, like everything. Workflow isn't always the most straight forward, and sometimes a bit tricky.

    I would say , for modern console / pc , this is totally acceptable, and often seen in games. Its also used in mobile games, but much less agressively.

    Here is a great example of all the aspects of this with breakdowns:
    https://www.artstation.com/artwork/ALVrV
  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    One more important aspect of this (depending on the implementation) is that by using trim/modular textures with these bake independent meshes, is that you reduce the needed texture memory even more, by reusing the already small trim textures across multiple assets. At the end of the day, with smart planning, you can cut down the texture budget to like 20 % or less compared to what would you need with fully baked meshes. This works pretty much the same without bavels, but when you do it, you can get pretty close results to an actually baked mesh.
  • jordank95
    Offline / Send Message
    jordank95 polycounter lvl 8
    @Obscura thanks for the reply. some other questions regarding texturing:

    - for large prop pieces, lets say 10 meters tall, I do notice a lot of these are textured independently rather than just using a tiling texture. Is this the case? I only notice this because I see the edges have edge wear. Or are people just vertex painting the edges, or using a trim sheet on top of the tiling texture to give the edge some wear?

    Just confused when I should be using tiling textures and when to texture something with a unique texture map.
  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    Can we see an example image? Trim textures used together with tiling ones is very common though.
  • jordank95
    Offline / Send Message
    jordank95 polycounter lvl 8
    Obscura said:
    Can we see an example image? Trim textures used together with tiling ones is very common though.
    Can't think of an example off the top of my head, but I guess my main question is, for big giant props, how do you add edge wear? Lets say I have a giant metal sculpture that needs edge wear, or wood that needs some lighter edges. Whats the most common way to texture something like this? I've seen a technique using masks generated by Painter - where you use a tiling texture overall, but use the mask to add edge wear and use another tiling texture for the edge wear itself. What are the other techniques?
  • Mant1k0re
    Offline / Send Message
    Mant1k0re polycounter lvl 8
    Damage decals. Or you can use the traditional rock technique where you bake bespoke AO and curvature maps for your mesh and use it as masks in engine to layer in details on top of your tiling textures, since those are greyscale it doesn't hit memory quite as bad and you don't have to make them 4k either. You can throw in world space large size macro masks to further break down repetition (haven't done this last one myself though, maybe someone can tell us more).

    EDIT: I realized that you are probably talking about the same technique with your painter example. It's honestly one of the best imo, and gives you great result for little efforts. You have to do a little shader work in engine but it's relatively basic at least in my experience with Unreal.
  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    If you take a look at the example in the link, you can see that there are shader ways of doing this. Vertex normals and/or normal of the trim texture can be used to know about edges. Not sure if you have seen this one yet:
    https://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques
    You could also do something like this, so you have a trim texture that has slightly beveled, differently sized rectangles, and you just align them with the uv edges. In this case, everything is an edge, that isn't natural normal color. You can overlay some noise texture to this gradient and you get edge wear.

    Here is a video about adding edge wear to beveled meshes, without a texture:
    https://www.youtube.com/watch?v=1AF9kS9X0b0

    And this one is about the same thing, but with a normal map:
    https://www.youtube.com/watch?v=dy7N9lOWraE
  • an173
    Offline / Send Message
    an173 node
    There's a recent video course (more of a artist-at-work kind of type) on this technique called Advanced Tiling Techniques for Environmental Design By Alex Senechal. He uses 3ds Max and it has an ue4 scene with the complete asset included.

  • Mant1k0re
    Offline / Send Message
    Mant1k0re polycounter lvl 8
    Yeah, it's pretty good, if a bit long-winded to demonstrate the concept.

    https://gumroad.com/acms
  • LTS3D
    Offline / Send Message
    LTS3D polycounter lvl 5
    @Obscura any chance you could do a tutorial or graph breakdown to achieve that effect? I'd love to be able to replicate it for a project i'm working on!
  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    Yo. The guy with the star citizen art test shows the graph but you can find it in my sketchbook as well. - the wonders of technical art - in my signature.
Sign In or Register to comment.