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
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.
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 on scriptspot. But hard edges won't be preserved.
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.
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
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.
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.
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.
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.
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.
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.
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.