Issue with shading on a surface that suppose to be smooth. Why it happens?

Hi. Can somebody explain to me please why I start seeing sharp edges when I scale the top face of the cylinder? Shading set to Smooth and auto smooth with 30° is enabled.

It is perfectly smooth when it’s just a cylinder. Then I scale down the top face and here is what I get:

I can fix it by adding many edge loops on the sides that suppose to be smooth or by adding Subdivision Surface modifier. But I just want to know why it happens :slightly_smiling_face:
As you can see it is smooth near to top and bottom edges but hard in the center.
It probably has something to do with how 3D software interpolates normals. Maybe somebody can point me a tutorial or manual with deeper explanation on how it works which will explain this effect?

Gouraud shading

Basically the same issue as with Gouraud shading. The shading results from interpolation of values so it’s dependent on the geometry.


@Felix_Kutt thank you for your reply.

It seems I found an intuitive way to explain why it happens. At least it looks intuitive for me :blush:
If somebody like myself is wondering why this happens — keep on reading, I will try to explain (probably with many words). Hope somebody will find it useful.

You can google more information on the topic requesting “cone smooth normals”.

First of all, when Blender (and probably most of the other polygonal 3D software) renders polygons under the hood it breaks all polygons into triangles (unless it’s triangle already). Here I created a plain that resembles the shape of faces of a cone from my previous message:

Figure 1

It’s just a planar quad. For explanation I marked its vertices with numbers. Also, I set shading to Smooth and edited the normals of all four vertices so they point just like the normals of faces of a cone from my initial message. The vertices 1 and 3 point in the same direction, and vertices 2 and 4 point in the same direction:

Figure 2

As you can see from Figure 1 it’s already visible that shading is messed up. We can see a visible line that goes from vertex 3 to vertex 2. That’s where Blender splits our quad into triangles. In fact, if we explicitly connect vertices 2 and 3 with an edge — nothing will change, it will not affect the shading. I marked these triangles in Figure 1 with letters A and B.

Figure 1 already well illustrates (especially on triangle B) how Blender interpolates normals. Let’s take a closer look:

Figure 3

On the image above normals on the left from blue line point to the left and normals on the right point to the right direction. Normal that lie directly on blue line point straight upwards. Here I created an image that better illustrates normals orientation:

Figure 4

Maybe illustrating the shading middle line (where normals point straight upward) can help to understand the problem.
Here is how we would want this middle line to look like:

Figure 5

If the middle line went like this the shading would be perfect.

Figure 6

But in fact this middle line goes like this — that’s why we have that bad shading.