Home Technical Talk

Curious about face weighted normals

polycounter lvl 3
Offline / Send Message
afb3d polycounter lvl 3
Im trying to understand face weighted normals......not just how to use them but more how they work.
My question is, whats the difference between using a custom script like "improved face weighted normals" and adding an edit normals modifier, selecting all normals and hitting average selected?

FYI, im not saying this is the right way to do it, honestly i have no idea but i do see results when using that method. I haven't tried it on anything complicated, just a bunch of cubes with holes punched through them. If this is wrong please explain why and how it should be done so i and others can learn.

Look forward to this discussion :)


  • Farfarer
    At it's most basic, when the smoothed normals for a mesh are calculated, each vertex simply grabs the flat/geometric normal of all of the polygons that it belongs to and averages them together to get it's smoothed normal.

    But you can weight the contribution of each polygon to that final average to try and get different - often more favourable - results.

    Face weighting (which I've always felt was a bit of a misleading name) scales the contribution of each polygon to the average by the area of the polygon. Meaning that polygons with bigger surface area "bend" the final normal more towards their flat normal.

    In the case of your image here, the big polygons on the sides of the cube have much larger surface area than the tiny thin polygons at the bevelled edges so the final smoothed normals for the vertices of those big polygons points much more in their direction than they do in the direction of the tiny edge bevels.

    There are various other weighting algorithms which can also give nicer results, such as weighting the contribution of a polygon based on the angle at which it meets the vertex.

    There's nothing inherently wrong with doing all of that manually with something like the edit normals modifier, but it's not very repeatable and you'd need to re-do it whenever you edit the mesh.
  • gnoop
    Offline / Send Message
    gnoop polycounter
    For decades I called them "rotated" normals  since I rotated them perpendicular to a surface I wanted to look/ be shaded flat for an expense of uglier gradient in tiny bevels.     So for a while  I didn't understand what people mean with "face weighted" 

    You could perfectly use that average selected button in MAx ( with face selection mode)  for that if you select  only one face/ co-planar faces you want to make looking flat at once ,  one after another     . one at a time .    Not all model at once as seems you did in your screen.

    3d party scripts just do it in one click. Blender even has  it as a modifier that does it automatically.

    Also an  ancient way to do so is   the  free  "normal theft" script .     You just  have to make two objects:
    First one where you delete all the  tiny faces belonging to chamfer/bevels.  You could do it automatically   with open checkbox checked in when you did chamfers .  And your regular one with a single smooth group  and perfectly same sized chamfers  .  
    Then you just  borrow/transfer normal directions from the source first object to your  target final one in just one click.   No extra plugin necessary.     

    Although Iast time I did it was 10 years ago, not even sure if something like "normal theft" still works in current Max

Sign In or Register to comment.