Distorted faces with smooth shading...

I’m having a problem in a project I’m working on with complex shapes – when I apply smooth shading, the end result is with distortions in the surface of the object, like this simple gasket model I made to show the effect –

In this case, I put a blue-colored plane behind the object, so it reflects the color and shows off the problem better.

I understand that this issue has something to do with the geometry, but I’m not sure why and not sure how to go about correcting it. Also, edge split doesn’t seem to work to solve this issue, unless I drop the edge angle below 15 degrees, which then ruins the smooth beveling on the edges. So it’s not much of a solution…

What do I need to do to correct this problem?

Can you show a wire view of it. I am guessing it is a geometry issue as well. If it is the way I think it is then adding in a support loop around the keyhole edge and another along the outside edge should pull that out to look smooth. And JA12 beat me to linking to that very same post. Also this is another handy tip to get an idea of when and where you might use different styles of modeling to get the look you are going for.

This is the wireframe view –

JA12’s post in the other thread he linked mentioned making support edge loops to solve this problem. I’m not actually sure how to go about doing that, though, other than manually adding edges one by one. I’ve tried the Offset Edges tool, in the Edges menu, but that doesn’t work, as it only adds a loop that’s unconnected to the current mesh.

Have you tried going to object data tab on the side, and clicking “Auto Smooth”? That usually solves this problem for me

Here is how I would do it.

keyhole.blend (489 KB)

1 Like

From left:

  • original
  • perimeter loops
  • normals from faces
  • weighted normals addon
  • concave polygons split and normals set from faces

1 Like

Thanks for the feedback, Safetyman, and JA12.

However, I still don’t know how to add edge loops, other than trying to do it manually. Isn’t there an easy way to extrude out from a perimeter, to make a line around it?

Like with this image above – the perimeter line around the keyhole shape is what I want to create, but in this case isn’t connected to the mesh at all. I made it using the Offset Edges tool. The Loop Cut tool (Ctrl-R) doesn’t seem to be want I need, either.

There is, it seems. I never knew until recently, but if you use a bevel with a profile of 1, it gives a sharp edge and it’s like adding edge loops. You can even do it interactively with the bevel modifier, then apply it.

Ye, bevel with two segments and profile of 1 will put perimeter loops on each side. But bevel is pretty crap with n-gons. With the loop slide option on (default) the corners aren’t square, and with it off the corners are square but it doesn’t keep the forms flat.

I used inset with outset option for the hole sides, bevel for the outer, but had to flatten the top and bottom faces afterwards.

Using perimeter loops is more like proof that the shading smooths out the angle between the flat face and first bevel face. Using custom normals to fix it won’t add geometry. Set normals from faces needs the faces selected so it’s a selection problem, and Weighted Normals addon won’t completely fix the reflections because the normals aren’t completely parallel to the face(s).

I found an add-on that solves this problem. After installing it and applying it to that keyhole gasket model, the artifacts in the shading disappeared. It’s very useful. It’s called Weighted Normals Calculator –


I’d still like to know how to create edge loops around a selected ring, like a hole in an object, like that keyhole gasket I made.

An edge loop will follow the quads of the topology so essentially so being there are more verts to the keyhole than the outer rectangular shape you wouldn’t be able to just Ctrl+R unless you match up the vert count of the rectangular shape to the vert count of the keyhole. At that point you can fill the verts in with quads and end up with a quad layout like safety man’s post above. Then you can Ctrl+R and add in an edge loop and drag the support loop in towards the keyhole.

@Crotalidae – to create the hole then add an edge loop: Add mesh > circle > edit mode > select all > e, s > then pull it out to your desired width. Do that a couple more times then make the last loop into a square using s, (x or y), 0 to straighten the sides. Hope that makes sense.

Sorry, no, it doesn’t really make sense to me. Why would I want to create another mesh to make an edge loop on an existing mesh?

I don’t really understand what you mean. Am I then supposed to connect the new mesh to the first mesh?

I’m just not visualizing what you mean by this…

Yeah, tht’s the other way I tend to do it. :slight_smile:

Just select the top faces around the keyhole ( side view, box selection, inset… this way no need to flatten the face then, it just will create an additional loop around the exterior square faces. ( can be removed, or moved ).

Inset works for this but the operation is different. Bevel puts a quad in each corner which is useful when adding supports for subdivision surfaces, but doesn’t do it cleanly with n-gons, which was the point.

This is what I came up with: