Home Technical Talk

How to make a hard surface low poly for baking, easily?

Duckmamoll
node
Offline / Send Message
Pinned
Duckmamoll node
Hello,

I am in the process of learning hard surface modelling, I've read superfranky's document (https://drive.google.com/file/d/0B02lElvs8BcvYllmQWpXUGxod3M/view) on the subject, but I'm still lost as to how I should proceed when modelling for baking,
I've seen on some class someone make a low poly, tesselate it and just bake with that as the high poly, to get clean normal
so I guess that's one of the way. I think if I understand correctly this is to remove slanted details and gradients.
But if I start by modelling the high poly, how do I make the low one, do I just removes edge loops manually? do I model something similar on top that ressembles the geometry?
And how much hard edges do I need to use? everytime I make 90+ degree angle? I know if I make a hard edge the uv seams should be on the same edge

Thank you for taking your time reading my questions :D

Replies

  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    Yes, usually its just edge removal to make the lowpoly. This is why traditional subdiv modeling is still the best way to make game ready normal mapped hard surface assets.
  • brainchildpl
    Options
    Offline / Send Message
    brainchildpl polycounter lvl 4
    If you want to do High Poly and then Low poly, you will need to make a second model on top of the high poly one. You can use Substance Painter to add normal map/height map details to your model without needing to do it in your 3d software. So, a good base high poly model, then a low poly model on top of that, bake maps and then add more cool details in Substance. IMO, it is easier to do low poly > high poly if you have concept art ready. Depends really on your workflow. Usually you just make seams on 90 degree angles (edges). 

    Check this guy:
    https://www.youtube.com/watch?v=-rz5_CCWQz8
    https://www.youtube.com/watch?v=BbZ7ip-eCcI
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    Thank you for answering so quickly,
    So the exemple of tesselating the low poly, I'm guessing it is just to remove slanted gradients?
    And when do you  use hard edges ?


    so after watching these videos, I have just one question remaining
    In the video he applies a chamfer and a turbosmooth modifier, and applies smoothing groups which allows to change the behaviour of the turbosmooth modifier. I am a blender user, and I can't find something to simulate a behaviour like this one. I tried a subdiv modifier with sharp edges but my circular shape (copied on his) still has obvious faces instead of being round. The only thing equal to it that I've found is a catmull clark subdiv with edge creasing, is this the only way to do it in blender? or can I have the subdiv modifier be based on my smoothing "groups"
    edit : Thank you Brainchildpl I'm going to dive in those videos they seem really interesting :)
  • Mark Dygert
    Options
    Offline / Send Message
    Turbo Chamfer is amazing. It lets me work on a simple low poly version of the model without having to worry about supporting loops or chamfer details. It works off of smoothing groups and allows me to dial in the chamfer at any point rather than having to manage a bunch of chamfers and whatever fall out they create.

    I just turbo chamfer at the end and I get all of those great rounded edges without any of the hassle. Then just delete the modifier and I've got my low poly. So simple, no fuss.

    The script is super useful, and makes for a very smooth pipeline, I love it. 

    https://polycount.com/discussion/198219/maxscript-turbo-chamfer
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    I'm a blender user so I can't really make use of that :(
  • toxicsludge77
    Options
    Offline / Send Message
    toxicsludge77 polycounter lvl 5
    I'm a blender user so I can't really make use of that :(

    I usually set the bevel weight on my hard edges and have the bevel modifier affect only the weighted edges.
  • ant1fact
    Options
    Offline / Send Message
    ant1fact polycounter lvl 9
    I'm a blender user so I can't really make use of that :(
    You have something much better, you can bake bevels via shader ;)
  • gnoop
    Options
    Offline / Send Message
    gnoop sublime tool
    yeah,  in Blender 2.8  you don't need to do hi-res model at all , just apply bevel node to a normal map material input and bake to normal map.  Only disadvantage is Cycles  baker ignores edited normals.

    Same I think could be done in last Arnold  already.       I tried it in Max last week .   Only issue Arnold does it as world space normals  so you need to convert them into tangent space with Xnormal or Substance Designer
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    So I took a look at the bevel shader, I just have one problem, I need for smaller meshes to have a low radius other wise I don't see any bevel in the render view, but if I do that the larger meshes aren't beveled enough, do i need to separate the small meshes from the big meshes and change the radius on both object, or is there a way to make it work easily?
    To be more precise I'm currently making a little sci fi console with some big levers and small buttons, and that's where the problem reside, I can either make the lever beveled enough but the buttons won't be or vice versa
  • ant1fact
    Options
    Offline / Send Message
    ant1fact polycounter lvl 9
    You pretty much answered your own question. Another thing you can do is skip baking entirely and use a single bevel + face weighted normals. You can do that stuff with just 1 Bevel modifier in Blender - in that case you can apply different bevel weights to the edges of your smaller/larger objects
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    So I've tried baking with the bevels shader, but I still get bad artifacts on edges and can't figure out why
    I've tried baking with all shading smooth, the normal map simple wouldn't get any bevel detail, the closest result I got is with autosmooth at 45-60°
    I've straightened my uvs with textools, it didn't help too much :(
    but it stills looks like this 
    This screen is with a 4K 16 samples bake 

    what am I doing wrong?
  • ant1fact
    Options
    Offline / Send Message
    ant1fact polycounter lvl 9
    You need to split your UVs where you have hard edges and have enough padding between your UV shells. I would suggest reading through all the info on normal maps in the Technical Talk section of Polycount. e.g.:
    https://polycount.com/discussion/107196/youre-making-me-hard-making-sense-of-hard-edges-uvs-normal-maps-and-vertex-counts/p1

  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    I do have enough padding, but there's something I don't understand, I don't want those button to be hard looking, I want them to look beveled, do I still need to set them as sharp? 

    edit : So I tried making the top edges sharp + uv them separatly, and it worked, I tried removing the sharp edges, and it worked too, from my testing the source of the problem is where edges connect in the UV but that's what worked, I don't think it's smart to unwrap every single face separately, especially with a shape as simple as a square, what do I need to do?
     
    Do I need to mark sharp above 45°, 90°? only in some specific cases? and at what degree should the autosmooth be? 
    Does that mean that any cube's faces needs to be sharp + uv'd separately from the other faces if so, that means there needs to be wayyyy more uv islands (6 for a cube for exemple)?
    I have read multiple time this forum post, and I still don't understand clearly where to use hard edges
  • ant1fact
    Options
    Offline / Send Message
    ant1fact polycounter lvl 9
    Does that mean that any cube's faces needs to be sharp + uv'd separately from the other faces if so, that means there needs to be wayyyy more uv islands (6 for a cube for exemple)?
    Yes, that is correct. Also faces aren't really sharp but edges are. Then again if this simple concept of splitting hard edges and UVs isn't clear to you then I would very carefully read through the relevant sticky posts in the Technical Talk section until it makes sense. I know it's not easy at first but it's absolutely essential. I could start explaining things here but some much smarter people have already done so before me. I usually split edges around 60degrees or where I know I will have a UV split anyway (material borders for example). There is no hard rule for this but once you get to 90degrees you just need to split otherwise your normal map will have extreme gradients which is a bad idea for a variety of reasons. Last but not least if you are really just baking round edges, then a single bevel + face weighted normals is so much easier and cleaner
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    I see, but why did it worked when I removed the sharp edges, but left the top of the button as a separate island? I guess it's because my auto smooth is at 60°? Also I've seen videos of hard surface modelling in which they don't separate the uv of cubes shape, so I'm still not sure why I'd need to make hundreds of island when they don't.

    PS : Really sorry if I have too many questions that might be basic, I am self taught and I know litterally 0 person who works in a field even slightly related to 3d, videogame, or whatever, these kinds of forum are the only way I have to solve issues I can't solve myself or find by googling
  • gnoop
    Options
    Offline / Send Message
    gnoop sublime tool
    For  a given two faces connected to each other with something close to 90 degree you have only two choices:

    1. Split both UV  and the edge (make it hard).  If you don't do this you would see ugly normal map edge artifact due to lack of padding
    2. Do not split  and keep smooth shading across  the edge  and get a strong gradient in a normal map.  That gradient would never render 100% flat and correct in a game engine  even if it looks ok in 3d software so to get rid of it you need to bevel /chamfer the edge and rotate vertex normals perpendicular to bigger  face  ( so called face weighting).  Blender has a modifier for that.

    But keep in mind that Cycles in Blender  ignores edited normals  so if you are using face weighting you would want to bake normal map elsewhere.   In old Blender 2.79 native renderer for example.It respects edited normals for normal map baking.  Although often you wouldn't need normal map baked at all in case of face weighting.

    In both cases: split and non split  you would have same vertex count anyway because game engines in fact split every vertex along a hard edge+ along UV island border + along material border.     So if you are making  a hard edge and not a UV split  in a same place  any game engine would split UV there anyway, just without necessary padding.

    In your screen you perhaps forgot that Blender uses  inverted green channel in normal maps.  
      For different bevel in different parts just do another material .  Bevel node works only with Cycles btw not in Evee

     

  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    I didn't forget to switch to non color (I think that's what inverts the green channel) nor to bake in cycles.
    But I think i'm understanding better,
    Just to make sure one last question : what would you do to bake with a bevel shader (even if it's a simple cube) out of the two method you've described, would you split each face, and make them hard? or the other method? I'm guessing the 2nd is more game friendly if there's no bevel applied to the edges, and is probably what pros use for really small object, like the button on my console?
  • gnoop
    Options
    Offline / Send Message
    gnoop sublime tool
    I would make hard edges and  6 UV islands for simplicity.  Keep in mind that too thin bevels  also make issues for a game renderer rasterization process.     So they are reasonable only when a thing have actual bevels along the edge.  

    But most efficient solution in case of something more complex than just a simple cube  usually involves mixed approach.  Sometimes it's hard edges and in other place bevels.

    I forgot about non-color completely . Blender viewport still needs normal maps baked with +Y  . And many games needs  -Y

    And for really small objects like buttons you perhaps could use just smoothed shading/normals without bevels and as a single UV island and ignores gradient artifacts altogether.  Those  artifacts appears usually on something reflective and polished mostly and with such a small things wouldn't attract lots of attention.  

    You could model them also having kind of more relaxed shape , less 90 degree corners, less gradients in normals
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    Many many thanks now I understand better, so last last check, if i'm going to make hard edge + separate uv island for each of my small buttons, it's what I should do, right?. Also it will be optimized enough, for a modern game engine (unity/unreal engine) as long as I don't go overboard on some my polycounts on my models, make good LODS etc.
  • gnoop
    Options
    Offline / Send Message
    gnoop sublime tool
    There is an opinion/rule  that any game objects first lod shouldn't b really less than  1-2k  vertexes . You should merge objects in such case because too many objects stress game engine by sorting them
    It also depends on genre also.   For what I am doing I woudn't even model such buttons in geometry and keep them all just as normal map details except if it's a car cockpit right next to a player eyes.  So it's all very context dependent
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    I see, and about my first question, if I go and make hard edge + separate uv island on each cubic small button , it's the right move?
  • ant1fact
    Options
    Offline / Send Message
    ant1fact polycounter lvl 9
    Split it like you mean it! Jokes aside, you do need separate islands. Also don't forget if you have a bunch of the same buttons/handles or whatever, then you can bake one of each first and then duplicate them around as needed (i.e. make use of overlapping UVs)
  • Duckmamoll
    Options
    Offline / Send Message
    Duckmamoll node
    OK I will do this (I am aware of overlapping UVs too) Many thanks to all of you (especially gnoop and ant1fact) who finally helped me understand better hard edges, how to get better bakes etc :D, I wish you all a lovely day
  • gnoop
    Options
    Offline / Send Message
    gnoop sublime tool
    I would  make the buttons having not 90 degree angles , maybe 70 deg or something,  kind of a slant, make them all smooth and single UV island except the border with the main flat surface and ignore a bit of non-perfect shading gradients and banding.  If it's just a small thing on a screen.    Especially if they are not very polished.       Those rules for things you really want to look perfectly flat and square .

    You don't have to make everything perfect.

    it would still give you wrong highlight spot although and in a game it will be even a bit worse due to texture compression.

  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    You could just give it flat normals and not have any normal map gradient issues. 
Sign In or Register to comment.