3
$\begingroup$

I have a mesh of a section of conveyor belt that gets extended into a complete belt extending along the Y-axis with an Array modifier and wrapped around the X-axis with a Curve modifier, and I want the edges along that curve to be smooth-shaded. The belt also has a 45° bevel on the sides, and I want that bevel to be flat-shaded. The Auto Smooth feature sounds like it should do what I want, but when I activate it, it does not behave as described in Blender's documentation.

At the default value of 30°, the 45° bevel gets smooth-shaded along the entire length of the belt, and there are visible seams between some of the Array-added belt segments.

Image of the belt mesh with smooth-shaded edges and with red circles around the visible seams

Dropping the Auto Smooth angle down to 19° causes a small portion of the belt's bevel at the center of the curved sections to become flat-shaded while the rest remains smooth-shaded. The seams between sections remain.

Image of the belt mesh with small flat-shaded portions highlighted by red circles

Lowering the angle further causes the flat-shaded regions to gradually extend along the length of the curved sections of the belt...

Image of the belt mesh with larger flat-shaded portions

but I have to drop the angle all the way down to 2.2° before the flat-shaded regions reach the straight sections of the belt and join up, simultaneously removing the seams between sections.

Image of the belt mesh with completely flat-shaded edges and no seams

Why is Auto Smooth behaving like this?

I tried recalculating normals, merged vertices by distance to ensure there are no doubles, and made sure that the belt mesh has no other geometry data applied, but the strange behavior persists. As far as I can the bevel should be flat-shaded at an Auto Smooth Angle of 30°, but it isn't. What am I missing?

$\endgroup$

1 Answer 1

4
$\begingroup$

We don't have a file, so we can't see exactly what you're doing. Here's what I made:

enter image description here

It works. The edges with face angles 45 degrees or greater are sharp. The edges with face angles less than that are not. If I increase the angle a few degrees, nothing is sharp. If I decrease the angle further, first the bevelled edge becomes sharp, then eventually everything gets sharp (unevenly, because it's dependent on the curve.)

Here's what to note about this setup:

  1. Scale is applied. The autosmooth face angle is measured in object space, not world space.

  2. I've enabled "merge" on my array so that the faces are continuous (and made sure that the boundaries of the source for that array are aligned with each other so they actually will merge.)

  3. To make a continuously curved mesh, I've enabled bounds clamp and stretch to bounds on my curve, rather than trying to scale to eye, so the arrayed mesh is scaled to exactly the length of the cyclic curve.

  4. The arrayed mesh has two distinct boundary edges that are disconnected. Even after we curve this, they remain disconnected (leaving what is, visually, a sharp edge.) To fix this, I've followed my curve modifier with a weld modifier.

  5. The angles of the faces change with the curve modifier and precision is a thing. I need a little bit of fudge factor on my autosmooth angle. Not 20 degrees, but a few tenths of a degree.

  6. I've used a reasonable number of sections to my array, rather than like 1000 or something; I've used a reasonably high preview resolution for my curve.

$\endgroup$
1
  • $\begingroup$ I thought I HAD applied the scale, but it must have been on a different iteration; I just checked, and the mesh still had the scale factors I'd used when blocking out the initial shape. Applying the scale fixed all the oddities, seams included. $\endgroup$
    – Lawton
    Dec 9, 2023 at 2:23

You must log in to answer this question.

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