Hi,
I am working on a project where we are limited by polycount budget (because it's a Sims like builder game, we need to be conservative with polycount and texture).
And one thing I am doing, is to use hard edge on models to maintain silhouette, and use a higher poly model to bake smaller bevels onto normal maps. For example:
Question:
- I am not entirely sure I am doing this right. Because we expect the game to use an isometric camera at distance, we set a low texel density goal (2.56 ppcm). The drawback, as you can see, is metal reflection at the fake bevels are looking a bit strange (wavy).
Is there a cure for this without using higher texel density?- I also tried chamfer/support edge loops on low poly, but neither give me a fine bake like the 2nd image. Plus I ended up using more polygon (actual polygon in game) than using hard edges, if I want to maintain a good silhouette and decent triangulation result.
Is using hard edges the better solution for my case?- My reason for doing this, is to create a nice semi-realistic bevel feel on models, without needing to handpaint the bevels.
Is this something people do to PBR assets?In short, if you were in my situation, would you use hard edges?
Replies
Sorry, I got a retina screen, that might have made my screenshots look worse somehow... And Maya's viewport doesn't have retina support, let me capture some from Unity:
Without normal map:
And this is my normal:
And this is how big I expect the chair to be, when in game (and with FXAA enabled):
At the same distance without normal:
TL;DR;
Maybe wavy is not the right word. But do you see any rooms for improvement, in particular with my normal maps?
And yeah, for this kind of stuff you are probably better off creating models with beveled edges since the cost will be negligible, and the gain in texture resources will be significant.
I saw The Sims' assets using the chamfer approach sometimes, but they still use handpainted diffuse map to fix the highlight at the edges (and I am trying to avoid handpainting that).
Looks the same if you do it right. If you apply face weighted normals, the corners should have good shading. Thats the point of the whole technique.
"but they still use handpainted diffuse map to fix the highlight at the edges"
I would say thats just the part of their visual style. Its slightly stylized.
in your example the "wavyness" is likely to happen becase of your final output resoltion? So this is stepping, you could fight it by softer bevels on the highpoly and more sampling on the normalmap. Or you could straighten your UVs and not have diagonal lines. This will not work in all cases or you might even get away in those soft curves you have there.
Using more generic normalmaps not specifically for this asset baked ones.
Like using trim sheets in modular environments.
So I suck it up and made two version of the same low poly: one with hard edges and one with chamfer approach. One with normal baking and one without. And indeed, if I am extra careful with straighten my UV (create more shells), then they look pretty much the same.
Thing is, although I would expect they to have roughly the same poly/vertex count, they don't. In Unity they have following stats (and yes I did Triangulate within Maya):
And also I just realize I need the normal map anyway for some surface details, but with Chamfer approach maybe I can save some more by using smaller, tile-able normal maps.
for the straight uvs i don't think you will need extra cuts, but it sure will stretch some on the curved parts, however. depending on the final texturestyle you might not even see it.
Just in case you're not completely familiar with the technique, here's a video explaining it:
https://www.youtube.com/watch?v=G-K7WT9IIok
Eg. which is more "correct" FWN? I used 2 separate scripts, one require manual face selection, but ensure 100% vertical to face; the other is an one click solution but somehow it doesn't create 100% vertical normals?
Also please tell me how you spot I wasn't using FWN so easily
The legs still doesn't look fully correct though, in any of your examples. Look at those lines and breaks in the shading where the rounded corners are.
"Face weighted normals" is just the name of a quick technique to alter normal direction based on the size of its associated faces (ie. the 'weight'). But for the best results you should edit them via manual face selection so the normals are completely perpendicular to a specific surface.
If you end up doing a lot of work with custom normals it might be worth picking up this script: http://www.scriptspot.com/3ds-max/scripts/normal-tools
I was trying to save a few polys by not chamfering the bottom faces of legs, but I guess they backfired, and affected FWN script from working properly, how about now?
Sorry to jump back onto this topic. I have read many times LOD are difficult with Chamfer models. And now I know why: I don't have a normal map anymore.
The chamfer model has around 1000 tris, do people normally create a hard edge low poly version as LOD1/2 and ignore the normals?
(You can see the look of hard edge model at a distance without normal in my earlier replies).
For LODs (not counting UVs) here's a rough example based on your mesh of how you might go about it: https://www.dropbox.com/s/z6ug06m3hofjkk7/chair_lod.obj?dl=0
For chamfer models, is it possible to hide the pixelation that appeared when viewing from certain angles?
I have tried my best to straighten UVs and give enough padding for dilation, but I still can't get the same result as hard edge approaches.
For example (the one at the back is using hard edges + normal map, I also tried to make chamfer larger to compensate for the issue):
The issue won't be so obvious if I am not suing metallic material. But am I hitting a limit of chamfer?
I would say on the intel card, its fine like this...
For perfection, use AA and supersampling in all cases 30 fps on modern hardware.
The screenshot I posted was using Unity built-in FXAA. I suspect that's what we are going to use on lesser hardware, also because we want to use deferred shading. There are other cheaper solutions like SMAA we can explore.
Good to know I have done the right thing from an asset standpoint.