2
$\begingroup$

Very simple question, but I cannot find a solution.

I added a Cone primitive to my scene, but I need it to be smoothly shaded so it looks perfectly round. My first instinct is to turn on smooth shading, like a lot of other people. I did this, but the bottom of the cone didn't look right so I turned on auto smooth.

The big problem is with the top vertex because now, no matter what I do, the smooth shading treats the cone as if it were flat producing a very unreal result. How can I smooth shade this cone? It would be best if the original geometry of the cone is minimally changed.

Other things I have tried:

  • Adjusting the smooth shading angle limit
  • Subdivision Surface
  • Making a Cylinder, but scaling the top to 0
  • Making a Cylinder, but scaling the top to a small number, like 0.1
  • Remesh Modifier

enter image description here

$\endgroup$
2
  • $\begingroup$ How many vertices does your cone have? $\endgroup$
    – moonboots
    Commented Sep 14, 2020 at 14:44
  • $\begingroup$ @moonboots does that matter? $\endgroup$
    – Eric Xue
    Commented Sep 14, 2020 at 14:53

2 Answers 2

4
$\begingroup$

I think I found a solution.

  1. Add a cylinder
  2. Scale top to 0
  3. Add some edge loops (I used the cylinder because you can't add edge loops on a cone)
  4. Merge the vertices by distance so you have only one top vertex
  5. Edge slide the uppermost loop as close to the tip of the cone as possible
  6. Turn on smooth shading
  7. Turn on auto smooth
  8. Select the bottom face of the cone and Edge Crease it to 1
  9. Add a subdivision surface modifier

enter image description here

$\endgroup$
4
$\begingroup$

Prepare for a long answer. If you're not interested in the technical stuff scroll to the bottom for the solution.

Technical stuff

These are beautiful and healthy high-poly cones:

enter image description here

To duplicate the shading with low-poly geometry is mathematically impossible. You have to understand how normals work in order to smooth edges.

Normals are meant to be perpendicular to a surface. They are used to calculate the direction light bounces off them. A surface consists of tris and a tri has exactly 3 split normals at each vert. When light bounces off a tri the surface normal at impact is calculated as the average of the 3 normals based on distance.

enter image description here

You smooth out edges by having adjacent faces share their edge normals. On the left side the faces have their own normals, while on the right side the normals are shared. (The two cubes in edit mode let you see the normals in pink, the cubes in object mode above are the same and let you see the shading better)

enter image description here

If you move one vert (Note: vert/verts is common abbreviation for vertex/vertices) over to the other, one of the faces ends up getting squashed. The two visible faces are no longer adjacent, because you have a face inbetween which creates a "barrier" and you end up with a sharp edge.

enter image description here

This is exactly what happens when you create a Cone (in this example with only 4 sides). The squashed face acts as a barrier and you end up with a sharp edge at the top. (Click on picture to enlarge)

enter image description here

Logically you should remove the barrier by merging the 2 verts and removing the squashed face inbetween. However you cannot merge every pair of verts without merging all the verts at once. If you merge them all into one point you get a smooth tip:

enter image description here

You can merge them into groups of 2 respectively four as in this example but you will get sharp edges around the cone.

enter image description here

How to do it:

So now that you understand that it is not possible and why, lets try and use the most efficient process to simulate a high poly cone, using minimum geometry. You have to understand that it is a tradeoff between:

  • Good Pointy tip & Bad sharp sides
  • Bad blunt tip & Good smooth sides

Create a basic low poly cone and create an edge loop by subdividing the sides. The higher you move the loop the better the tip and the worse the sides. The lower it is the blunter the tip and the smoother the sides.

enter image description here

The most efficient solution is to split the cone by creating an edge loop in the middle and keep splitting the top part until you are satisfied with the result.

enter image description here

enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .