Home Technical Talk

Make Manual LODs With Edited Normals? (3ds Max)

polycounter lvl 6
Offline / Send Message
Geosmith polycounter lvl 6
Hello.
So I've taken to editing vertex normals a while ago and have incorporated into my workflow and so far it's something I can't live without. The only thing that's put my work to a halt at the moment is LODs, because this is only really something I use for high quality meshes primarily weapons I need at least the first LOD to be relatively clean.
I've tried using the Unreal built in LOD generator as well as ProOptimizer in 3ds Max, both produce either not great results or manage to mess with normals in some parts. 
I'd love to make some LODs manually within Max, but the problem is almost every modifier, as well as removing or adding edges or any geometry in edit poly just seams to break the normals. 
I'm wondering if anyone has any solutions, or better ways with working with edited normals?

Replies

  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    From what I've noticed when working with custom weighted normals and LODs, you really need to plan ahead with the model and know where polygons and edges are going to be removed but still keep the normals roughly the same. 
  • Geosmith
    Options
    Offline / Send Message
    Geosmith polycounter lvl 6
    Makes sense. 
    So far I've managed to get by a on one mesh by using the Unreal LOD generator, and manually adjusting and reimporting the base mesh if an obvious problem occurs, then trying to generate the LODs again. It seems to preserve normals mostly.
  • Noors
    Options
    Offline / Send Message
    Noors greentooth
    Custom normals are quit sensitive. Any operation that reorders vertices will break them.
    If you work at the editable poly level, it shouldn't break that easily tho. If you create new points, they wont have custom normal.

    -Pro optimizer has a keep normals options.

    -I have a script mostly dirty ripped from denisT on cgtalk that writes normals into a uv channel and reverts them back. So you can break the normals with modifiers, as long as uv doesnt change much during operations, you shoud get a decent result. You have to store the normals before any operation.
    https://1drv.ms/u/s!AsE7dFZVywdG-jbqhs9vQr8MG6PS

    -You could also try to "project" normals from your high poly to the low with slidenormasthief or noorsnormalthief :p on scriptspot. But hard edges won't be preserved.

  • Geosmith
    Options
    Offline / Send Message
    Geosmith polycounter lvl 6
    Awesome! This script works pretty well so far, I think it'll be very useful, thank you.

    If anyone has the experiene here, what are industry views on editing normals? Sure it can be useful to save some vertices or smoothing/UV splits but do the companies think it's worth it? I mean from what I know there might be multiple people that handle the mesh in between the low poly and up to it getting placed in the engine so surely this can be a problem for someone who say is in charge of optimization/LOD generation? I've barely seen anyone else make much use of this. 
  • Noors
    Options
    Offline / Send Message
    Noors greentooth
    I don't know i guess big companies tend to automate this process with tools like simplygon which is like a super pro optimizer, that makes a decent job at keeping normals.
    I'm not sure how a "non normal edited" object should be easier to degrade.
    If you replace a chamfer by an hard edge, it should be simplier with weighted normal, because your normal map shoudn't have big compensation in it
    Sometimes i'm horrified with LOD poppin in game that shades absolutly not like LOD0. They don't really bother. But we had games with broken normals for years and no one cared...
    Yes it looks like weighted normals is the trendy thing now, even if it existed for decades. It's more used to avoid extreme gradient on bakes (which tend to produce more artefacts with compression) than saving some vert. Also you almost don't need a normal map on some models, or atleast no bake. Just a tile of wood and you can make beams for instance. You can do a lot of nifty stuff with edited vertex normals and it's cheap.
    hope i'm making sense, i tend to type as i think
  • musashidan
    Options
    Offline / Send Message
    musashidan high dynamic range
    Noors said:
    I don't know i guess big companies tend to automate this process with tools like simplygon which is like a super pro optimizer, that makes a decent job at keeping normals.

    Simplygon tech was added to UE4 in the last few releases. I'm guessing this is what OP is using.
  • Geosmith
    Options
    Offline / Send Message
    Geosmith polycounter lvl 6
    Noors said:
    I don't know i guess big companies tend to automate this process with tools like simplygon which is like a super pro optimizer, that makes a decent job at keeping normals.

    Simplygon tech was added to UE4 in the last few releases. I'm guessing this is what OP is using.
    Yes that's what I'm using. It does a fairly good job, and it's produced good enough results to not be an obvious pop-in. Though oddly the settings seem to have no effect, not sure if it's just me.
    Noors said:
    It's more used to avoid extreme gradient on bakes (which tend to produce more artefacts with compression) than saving some vert.
    Yeah that's mainly what I use it for, not necessarily gradients but more of ugly streaks especially on very big flat areas that are affected by some nearby geometry which creates unrealistic smoothing, I mostly just flatten areas like these to face a single direction to get smoother shading.  
    I find it incredibly useful in many scenarios, but that said I haven't seen any of the pros really work with this, which is why I'm worried this might be something I shouldn't invest in. 
  • Noors
    Options
    Offline / Send Message
    Noors greentooth
    Ah sorry not familiar with UE. Well a baked normal map should compensate for the ugly streaks, hence gradients in it. But then it's very dependent of the mesh it's made for and could look even worst on a lod compare to a map with less compensation. It's just that it takes an extra step to set, and normals are a bit of pain to work with. But it surely helps to create better looking assets. 
  • Menchen
    Options
    Offline / Send Message
    Menchen polycounter lvl 3
    To make lod1 from lod0 I would simply remove the chamfers and instead of face-weight the normals again (which would be impossible due to the support bevels being removed) I simply set traditional smoothing groups.

    But I have a question: performance wise, wouldn't it be the same? In the end, hard edges (those between smoothing groups, the okes that break "smoothness", you know what im talking about) are actually like two edges in the same exact position... 
  • Noors
    Options
    Offline / Send Message
    Noors greentooth
    Depends if your uv's are splitted on the chamfer or not.
    If not, aye it's the same vertex count.
    The drawing of thin triangles of the chamfer are more ressource impacting due to overshading.
    Also chamfer from afar might tend to flick.
    So i guess in the end, you probably spare a bit of ressources with hard edges.
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    From my experience, simplygon projects the normals from LOD0 so you get acceptable results with fwvn meshes in the most of cases.
  • Geosmith
    Options
    Offline / Send Message
    Geosmith polycounter lvl 6
    Menchen said:
    To make lod1 from lod0 I would simply remove the chamfers and instead of face-weight the normals again (which would be impossible due to the support bevels being removed) I simply set traditional smoothing groups.
    Not sure what you entirely mean. If you're saying to make LOD1 you'd remove edited normals and replace with smoothing splits, then that just seems a bit too time consuming and tedious. 

    Menchen said:
    But I have a question: performance wise, wouldn't it be the same? In the end, hard edges (those between smoothing groups, the okes that break "smoothness", you know what im talking about) are actually like two edges in the same exact position... 
    Yes there's no difference between a smoothing group split and converting it into a single chamfer edge, as long as you don't have a UV split there either. 
    Obscura said:
    From my experience, sympligon projects the normals from LOD0 so you get acceptable results with fwvn meshes in the most of cases.
    Yes it seems using simplygon is the fastest/best way to go as of now. In conjunction with some manual editing.



    One thing I've found which can be pretty useful for LODs is, when making the lowpoly mesh you can sometimes for some areas that have details set the shading to be completely flat, obviously this looks weird and makes it seem like there's no detail at all, but once baked the normal map will compensate. When making the LODs, the geometry there can be completely removed to leave just single flat polygon and since the normal map doesn't depend on any vertex normals for it to appear correctly, it'll appear correctly on the flat area.


  • ZacD
    Options
    Offline / Send Message
    ZacD ngon master
    +1 on flat shading over details. Works really well with trim textures as well.
  • Larry
    Options
    Offline / Send Message
    Larry interpolator
    Have you tested the script for weighted normals? It averages your normals to the surface thy are applied to, it does a good job for simpler objects so since you want lower res meshes it might work for you. But it converts your object in editable mesh.
  • poopipe
    Options
    Offline / Send Message
    poopipe grand marshal polycounter
     it generally pays to work backwards from your low Lod - whether you're laying out UVs,  setting custom normals or whatever.  
    It's not a workflow that plays well with simplygon but I'm not a fan of automatic lodding anyway because I'm a control freak. 
  • Geosmith
    Options
    Offline / Send Message
    Geosmith polycounter lvl 6
    Larry said:
    Have you tested the script for weighted normals? It averages your normals to the surface thy are applied to, it does a good job for simpler objects so since you want lower res meshes it might work for you. But it converts your object in editable mesh.
    I've tried it but I haven't had a case where it's useful. The normals change quite a bit, not always in a good way. 
    I find it's best to know yourself how these things work, and where you could take advantage of manual editing normals. Areas that look fine don't need to be touched, majority of it will be compensated by the baked normal map anyway. I just remove ugly shading with it, which is commonplace when you do your best to keep UV islands & smoothing groups as few as possible. 
    poopipe said:
     it generally pays to work backwards from your low Lod - whether you're laying out UVs,  setting custom normals or whatever.  
    It's not a workflow that plays well with simplygon but I'm not a fan of automatic lodding anyway because I'm a control freak. 
    The normal backup shared above has so far been probably the most useful thing so far, it does a very good job at doing what it's made for which has allowed me to work quite a lot manually on LODs. I've also set up a little script that clears the UV channels once I'm done. 

    That said, there's nothing really wrong with the LODs I made in simplygon/Unreal, I might be able to reduce it down a few polys manually, but it does the job, probably a lot faster than manually. Combined with going over it manually after the LOD has been generated you can get really good results.
Sign In or Register to comment.