Subdivide to make a curve smooth?

C1 is the default cylinder that was created by using the Add-> Mesh → Cylinder. C2 is created by immediately changing the vertices count to 1024 right after the creation. C3 is a default cylinder but with “Shade Smooth”. C4 is created by selecting all the side faces of a default cylinder and then invoking “Subdivide” with the maximum allowed value of “10”.

C2 looks smooth. But the option to change the vertices is only available right after its creation, so I cannot change it later. Also, there could be cases where the curved surface is not a simple single mesh, so I think changing the vertices is not a general method to smooth a curved surface.

C3 does not look as smooth as C2. When I was creating C4, I thought that I would get similar effect as C2 by subdividing the side surface. But I was wrong. If I look the object closely, even though the tool has subdivided the side surface, it just divided the existing face by the same angle, so in the rendered image C4 looks exactly like C1. So, my question is, can I take an existing curved surface (part of a round), subdivide it, but make the new edges form a curve that interpolate the existing edges, like C2?

With wondermesh you can change the settings afterwards. It is GPL3. Since the author also wants to sell it, I’ll give you this link with the added value that you can quickly get an overview of all possible addons here.

About the shading: I will frame you to delve deeper into the topic. This is just one example of many.

All of the behaviuor is expected. You need to understand the difference that a subdivide operation isn’t intended to change the look of your mesh, but simply to add geometry (even when it can look diofferent after, but thats another thing).

When you created the cylinder C2, the option to add more segments has a hidden midpoint where each face is aligned in a circular way to that midpoint. It still creates planar faces, just the alignment is optimized for that midpoint, since you want a cylinder.
After the options are gone, a subdivide will just do what it tells, it subdivide each selection and does not care for your shading in the first step. A planar face still create planar faces no matter the subdivision count. A subdivided edge will create a vertex that is the normal of exact this midpoint.

The shading kicks in after you played with this virtual topology entities, since it needs each of them to display something. If you want to change the shading of the given geometry in a smooth way, a subdivision-surface modifier is used to calculate and change all the normals in a smooth way given by the algorithm (catmull clark). The subdivision algorithm you decide to choose will tell if it’s altering the topology and therfor the shading.

Edge Splits and Sharps are again a follow up of your topology and have the intention to just interference with the shading. Creases are used to alter the topology.

In short: Shading and Topology are working together, but you modifiy both in different ways and one does not necessary influence the other.

All right, now I understand that subdividing does not interpolate the curve but just add more vertices on the same plane.

I understand that, but it does not solve my initial question. So, what you are saying is that, there is no feature in Blender to subdivide a surface (a group of faces) while adjusting the topology of new faces to smooth their angles, like transforming the left to the right in the screenshot below?

You are about to mix multiple things here. The shading is per object. The first video should have already told you how shading is controlled. For your example given, “transforming” means using the subdivision surface modifier and either enable the “Adjust edit cage to modifier results”, but that is per object. The other way to “transform” that two objects is a boolean operation modifier. It can join, substract or add multiple objects. The shading will still only change on your changes, at all or not at all. For example, you can subtract a cube from another cube that have a “Autosmooth” normals at 30.1deg and the shading will not change.

Edit: After reading your initial post again, i think the advice is to plan your topology as good as you can. Keep it as simple as it can be, it’s easy to crank up smoothing and shading later, but in destructive operations it’s not vice versa.

Example with 3 cyclinders joined (32 > 16 > 8). One has 42 faces, one 4210. Yet they have similar shading.
shading_on_joined_objects.blend (566.7 KB)

First, you can subdivide as many times as you want by entering a number - the slider function only goes to 10.

To answer your question: You need to delete the top and bottom N-Gon faces. With the N-Gons in place, the smoothing does not work. Then select the top and bottom edge loops, and subdivide. You can set the smoothness to 1 to get the behavior you are looking for.

Added: I looked at your file: the sides of the cylinders have similar looking smoothness from Shade Smooth (as they should). The object with the SubSurf modifier and creased top and bottom edge loops also has a smoother silhouette. So if you want the silhouette to look as smooth as the side faces, you need more geometry (see above), or a SubSurf modifier (as you have done).

All these comments are very knowledgeable but if I read the question as the same question I had, Subdivide the use smooth vertices worked to solve the problem for me.

C5: use Bezier with vector handles and Bezier circle as bevel object. It is smooth by default also when you convert it to mesh. Goes for any curve and bevel object.