Home Technical Talk

When to normal map and when not to normal map

jordank95
polycounter lvl 8
Offline / Send Message
jordank95 polycounter lvl 8
Hey Polycounters. Learning to be an environment artist and I'm struggling with something. When to bake and when not to bake. 

Example: Let's say I'm creating a modular building to be used across my level. Am I making a high poly version of this building and baking it down so I get nice edges on all my 90 degree edges, or is this something that can just be skipped since you don't really pay a whole lot of attention to the buildings? I've seen the Sunset Overdrive technique about using a trim sheet for every 90 degree edge in your game, but I also see a lot of games don't do this and just have regular, non normal mapped sharp edges.

But back to my example, should I be making a high poly version of this building, or is something like a building something that can be skipped as far as normal mapping edges goes? Should I really only be making high poly versions of things like props and weapons and baking those things down?

Just struggling to figure out the balance. Any tips would be appreciated

Replies

  • Zalek4
    Options
    Offline / Send Message
    Zalek4 polycounter lvl 5
    Hey there,

    Just want to preface this by saying I'm a student learning the same thing, so I am by no means a pro. Just trying to share some info I've gathered.

    You mention trim sheets which, to my understanding, is an industry standard for normal mapping environments. It keeps texture resolution low, but you can still keep your detail diverse. You may have read this already, but its worth a look if you haven't:

    https://80.lv/articles/tiling-textures-in-game-environments/

    His Gumroad tutorial is pretty bomb too. Give it a Google when you get a chance.

    I suppose in response to your general question of when to bake/trimsheet vs when not to, it depends. What style are you going for? How efficient do you need to be? How much time are you given for a project? 

    It isn't a bad thing to make a high-poly version for each of your environment pieces and bake them down. I did that for a game I helped work on over the summer. You just need to be thinking about how much of that environment will be seen/loaded at one time. Textures take up video memory, and full video memory causes performance drops. That's why trimsheets are so cool: it's one or two small textures, and you get a whole world out of it. Sure, it's a more geo-heavy workflow, but it's easier for a graphics card to load more verts than it is to load a gazillion 1k-4k textures.

    Hope I helped at least a tiny bit :smile:
  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    @Zalek4 thanks for the info! I'll have to check his Gumroad tut as some of the things he was talking about in that 80.lv article were a bit confusing without actually seeing it done. 

    And what do you mean by using trim sheets is more geo-heavy? Wouldn't it be the opposite since you can use the trim sheet to get nice rounded edges instead of beveling them? Maybe I'm misunderstanding.

    edit: went ahead and bought the tutorial. looks great! thanks!
  • EarthQuake
    Options
    Offline / Send Message
    Generally no, you would not create a unique high poly mesh for something as large as a building. The primary reason for this is that you would never be able to give it enough texture resolution. Just think about it for a second, you've got an entire building using something like a 4K texture and a character standing next to it at a fraction of it's size using a 4K as well, the building is going to look terrible. The secondary reason is that it's very inefficient both in the time it takes to create and reuse of assets. With tiling/modular design you'll get a lot more out of it.

    That doesn't mean you wouldn't create a high poly, or use normal maps, it just means you wouldn't make a unique high poly mesh for the entire building.

    Generally, what you would do instead is create tiling textures, which again you may want to create highpoly source meshes to bake normals, ao, curvature, etc. You can approach this in a few different ways, the old school way would be to slap tiling textures on simple geometry. The more advanced way would be to create modular sets where you've base tiles, trims, windows, doors,, etc, which may or may not share the same texture and all generally work together.

    For something like beveled edges on the corners of the building, you would generally bevel the low poly geometry.
  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8

    For something like beveled edges on the corners of the building, you would generally bevel the low poly geometry.
    Thanks @EarthQuake , i appreciate the reply. I did know about tiling textures and modular pieces, I was just confused as to what to do about something like a window frame on a low poly building. Or some kind of small trim or border. Since there isn't a high poly piece of this trim to bake down to the low poly trim, would you just bevel the edges to give the small trim some rounded edges? This is why I was referring to the Sunset Overdrive technique by using a normal map trim sheet with a 45 degree. It's also used here: https://80lv-cdn.akamaized.net/80.lv/uploads/2017/03/tm_trim.jpg

    I notice not everyone uses this technique, so just trying to figure out why and when to bevel/not to bevel small pieces. Thanks again!
  • EarthQuake
    Options
    Offline / Send Message
    Yeah I mean you could do either, there are pros and cons. Beveling the geometry means more triangles of course, but modern games aren't typically triangle limited.

    Adding bevels to the textures makes them less modular, harder to do things like offset the uvs for additional variation.

    For something like a window frame, you could if you wanted some unique detail, make a highpoly and bake that down. This has the problem with the bevels baked in into the texture but even more extreme though. You would need to have multiple window frame textures in your atlas if you want any variation.

    Yet another option is to use a secondary UV set and secondary normal map to add the bevels, this would result in a pretty complex shader but you could do lots of interesting things with it to get variation.

    You could also set up a blended material with secondary UV mask or vertex colors to control the blending, this way you can use more unique uvs and textures but blend them with alternates to get variation.

    So, plenty of options, depends on whats best for the situation, what sort of constraints you have and what your engine is capable of.
  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    Yeah I mean you could do either, there are pros and cons. Beveling the geometry means more triangles of course, but modern games aren't typically triangle limited.

    Adding bevels to the textures makes them less modular, harder to do things like offset the uvs for additional variation.

    For something like a window frame, you could if you wanted some unique detail, make a highpoly and bake that down. This has the problem with the bevels baked in into the texture but even more extreme though. You would need to have multiple window frame textures in your atlas if you want any variation.

    Yet another option is to use a secondary UV set and secondary normal map to add the bevels, this would result in a pretty complex shader but you could do lots of interesting things with it to get variation.

    You could also set up a blended material with secondary UV mask or vertex colors to control the blending, this way you can use more unique uvs and textures but blend them with alternates to get variation.

    So, plenty of options, depends on whats best for the situation, what sort of constraints you have and what your engine is capable of.
    Hey @EarthQuake sorry to bring this old topic back, but I'm just getting back into some environment work after doing mainly props the last few months. With props, I usually just make a high poly of the whole thing and bevel all the edges to get a nice roundness on every single edge. But still confused a bit about bigger environment pieces...

    Just some questions regarding your reply, I just want to make sure I'm understanding this correctly.

    So, if I were to make a big house prop, I would make some tiling textures (roof, stucco, wood, etc.) in lets say Substance Designer, and use those to texture the house. I understand that. Since I don't want the house to have sharp edges, I would do a bevel in the geometry itself with either 1 or 2 divisions to give it that rounded look. Correct? But I'm a bit confused...what do you mean by adding bevels in the texture? You mean baking down a high poly to low poly? Also confused about using a second UV set to use a normal map for the bevels. Wouldn't this require making a high poly of the house to get those bevels in a normal map? I thought making a HP of the house wasn't necessary?

    I guess I'm just a bit confused about the workflow and am getting some terminology mixed up.

    Thanks for you time!

  • EarthQuake
    Options
    Offline / Send Message
    Yeah, you would make tiling textures in whatever software you like, and then if you want round edges on the low poly you bevel them. Doing 1/2x sub-division is not an efficient way to do it though (you'll subdivide the center faces more than you need.

    By bevel in the texture, I mean baking bevel from high to low.

    For multiple UV usage, check out this thread by Tor Frick: http://polycount.com/discussion/89682/an-exercise-in-modular-textures-scifi-lab-udk/p1
  • Mark Dygert
    Options
    Offline / Send Message
    it kind of depends on the asset. For most things, giving it a little more geometry is totally fine. It's not much geo and it will LOD out pretty quick and cleanly.

    Will it be easier to take it out later or add it in?

    If the asset is going to be duplicated and instanced all over the place and you'll see a bunch of them pretty close up, you might want to rethink that but again it is really specific to the object and the game.
  • PatrickSF
    Options
    Offline / Send Message
    PatrickSF triangle
    Geo is cheap nowadays and when using trim and tilling textures you have a very easy to use workflow that allows for quick changes because you can skip the baking process and simply re-UV the trim. As for what to bake and what not to bake, it depends, unique/important objects could be baked with unique textures, but I'd wager a trim sheet that is versatile could be used on a large portion of your level.

    My most recent project used Alex's trim method:
    https://www.artstation.com/artwork/8Y0oR

  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    @EarthQuake @Mark Dygert thanks for the replies. If Im making a town filled with houses and big walls and a castle, trying to figure out the best way to approach this. Would just creating maybe 3 or 4 unique looking houses, then using tiling textures to texture the stucco/stone and then maybe a trim sheet to texture the wood support around the house? Would that be an efficient way to go about this? Bevel the edges of the wood trim so its not sharp as well? What if I used 2 or so 2k texture maps for a house and just texture in Painter...I feel like I can get nicer, quicker results that way. Is that not a good way to do it?

    Guess I'm a little confused as to what you mean by beveling in the texture itself. You mean by baking from a high poly to a low poly, there would be bevels in the texture? Then I wouldn't be able to reuse that texture anywhere else? 

    I read through that whole thread by Tor Frick, really inspiring and interesting how he did all that. I understand thats how the trim sheet technique is used. But, isn't there an issue with texel density with that technique? Like, if you're using one trim sheet for a whole environment, wouldn't bigger pieces have way less texel density than smaller pieces resulting in uneven texel density?

    Just trying to understand this completely, sorry if I'm not 100% getting it.
  • EarthQuake
    Options
    Offline / Send Message
    @jordank95

    "If Im making a town filled with houses and big walls and a castle, trying to figure out the best way to approach this. Would just creating maybe 3 or 4 unique looking houses, then using tiling textures to texture the stucco/stone and then maybe a trim sheet to texture the wood support around the house? Would that be an efficient way to go about this? Bevel the edges of the wood trim so its not sharp as well?"

    Yeah, pretty much that.

    "What if I used 2 or so 2k texture maps for a house and just texture in Painter...I feel like I can get nicer, quicker results that way. Is that not a good way to do it?"


    In short, no. If you do this, your texel density will be terrible. If you're making an RTS or something that might be fine, but for a FPS style game or anything where you can get up close you'll need more resolution. Try to imagine a 2048 covering an entire building. You can make a simple block out and do a unique UV for it to see what sort of resolution this will give you.

    "I read through that whole thread by Tor Frick, really inspiring and interesting how he did all that. I understand thats how the trim sheet technique is used. But, isn't there an issue with texel density with that technique? Like, if you're using one trim sheet for a whole environment, wouldn't bigger pieces have way less texel density than smaller pieces resulting in uneven texel density?"

    You would want to keep scale in mind when you create your trims. You wouldn't have a base tile that's 1024px high and then stretch a 64px trim on it. Gotta make sure you plan it out sensibly. Generally you design your trim sheets to tile at the same interval as your base tiles. There's a bunch of info on modular environment creation in the wiki: http://wiki.polycount.com/wiki/Modular_environments

    Before you get too far you should block out the basic proportions for a simple asset, figure out what sort of texel density you want, and then do some tests with trims.


  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    @EarthQuake thanks I’m slowly understanding. I guess my next question is, HOW do you make trim sheets? I see tutorials on how to use them, but are there any on how to actually make them correctly? Just confused as what the standard process is. 

    And for my town I’m creating, it’s third person, so you will get up close to the textures. What’s the best way to determine the *best* texel density? I’ve made some environments in the past but it’s always just been like “yeah that looks good, all props look to be even texel density give or take”
  • Eric Chadwick
    Options
    Online / Send Message
    Take a look at the 2nd link on the wiki page. Jacob Norris goes into detail about his trim sheet process, just scroll down in the thread a bit. These rest is great too tho.
  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    Take a look at the 2nd link on the wiki page. Jacob Norris goes into detail about his trim sheet process, just scroll down in the thread a bit. These rest is great too tho.
    Thanks @Eric Chadwick - I’ll dive into those links today. One more question I have which I can’t figure out, is if you have a trim sheet that already has bevels baked into the normal map, would you need to bevel the geo? I see some trim sheets with bevels baked in and some without. Should I only be beveling large geo and not worry about beveling small pieces?
  • sprunghunt
    Options
    Offline / Send Message
    sprunghunt polycounter
    jordank95 said:
    Take a look at the 2nd link on the wiki page. Jacob Norris goes into detail about his trim sheet process, just scroll down in the thread a bit. These rest is great too tho.
    Thanks @Eric Chadwick - I’ll dive into those links today. One more question I have which I can’t figure out, is if you have a trim sheet that already has bevels baked into the normal map, would you need to bevel the geo? I see some trim sheets with bevels baked in and some without. Should I only be beveling large geo and not worry about beveling small pieces?
    Yes the idea is to only bevel the larger bits of geometry. How large a threshold you use for this depends on your judgement.
  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    @sprunghunt only bevel the larger bits and not worry about the small ones? I also read about Morten Olsen trim sheet technique (http://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques) but have seen some people have issues with it. I also read that too many bevels in an environment can cause issues. I guess it's just a balancing game? Would "too many bevels" cause an issue nowadays?

    As of now, in my environment I'll just be using trim sheets without bevels baked in and instead i'll just be beveling the edges of my geo. I feel like this is the simplest way to go about this. I think the only issue I see here, is that I won't be able to get any edge normal detail like in Olsens technique, instead every edge will be clean no matter what the material is. 

    And how would you go about putting things like edge wear on a large environment piece that has a tileable texture or trim sheet texture on it? Is this where masks come in?

    last question - regarding Olsen’s technique, how would you even create a 45 degree angle bevel for a trim sheet?
  • ActionDawg
    Options
    Offline / Send Message
    ActionDawg greentooth
    As far as the Sunset Overdrive technique goes, it should work perfectly as long as you do it correctly.

    Bevels can become expensive as small, and especially thin triangles are more difficult to rasterize. In a real game it will likely not be your big bottleneck these days, but if you're down to the wire when figuring out where a bottleneck lies, definitely take a look at the geometry of the scene. Too much may cause issues:
    http://www.fragmentbuffer.com/gpu-performance-for-game-artists/

    http://www.ericchadwick.com/examples/provost/byf1.html
    http://www.ericchadwick.com/examples/provost/byf2.html

    Edge wear can be handled with vertex painting, probably combined with some type of curvature detection.

    A 45 degree angle normal map like in Sunset would probably be created by just baking down a box modeled to the correct angles. Same for cylinder caps.
  • jordank95
    Options
    Offline / Send Message
    jordank95 polycounter lvl 8
    somedoggy said:
    As far as the Sunset Overdrive technique goes, it should work perfectly as long as you do it correctly.

    Bevels can become expensive as small, and especially thin triangles are more difficult to rasterize. In a real game it will likely not be your big bottleneck these days, but if you're down to the wire when figuring out where a bottleneck lies, definitely take a look at the geometry of the scene. Too much may cause issues:
    http://www.fragmentbuffer.com/gpu-performance-for-game-artists/

    http://www.ericchadwick.com/examples/provost/byf1.html
    http://www.ericchadwick.com/examples/provost/byf2.html

    Edge wear can be handled with vertex painting, probably combined with some type of curvature detection.

    A 45 degree angle normal map like in Sunset would probably be created by just baking down a box modeled to the correct angles. Same for cylinder caps.
    Thanks. So would using the Sunset technique be the best way to do this to cut down on any possible bottlenecks down the line? Why wouldn’t everyone use this Sunset technique if that was the case?

    And as far as edge wear and vertex painting goes, would it also be possible to create a mask for tiling assets and blend materials in UE4? I did this for some assets a while ago that had tiling textures. Just not sure the performance cost to have blended materials for every single asset thats using either tiling textures or trim sheets 
  • ActionDawg
    Options
    Offline / Send Message
    ActionDawg greentooth
    The Sunset technique is just very time consuming, though you could create snapping tools like they did to speed things along.

    And yeah that's what I was suggesting. It can add up if you're using triplanar textures, but aside from that a bit of extra shader math + keeping a couple extra masks in memory isn't too bad (and vertex paint is free).
Sign In or Register to comment.