Problem using Bevel and Subdivision Workflow

I am trying to model a simple piece of a sniper scope. For that I am using a Bevel and Subdivision modifier to get clean and crisp edges when raising the model’s resolution.

As you will see it is based on a simple cylinder, nothing fancy. However when I add the bevel and subdivision modifier on top I get a weird pinching effect in the areas I marked red. see the image:

I have to admit this is a problem that comes around pretty often but I never figured out how to fix it yet. I already tried adding some support loops, but it is important to me to keep the perfect circular shape of the scope part.

If you are reading this and know what to do in this case I would be more than happy if you could give some advice. Please find the blend file attached.

Blend File

That workflow isn’t an end all be all solution. Sometimes you just have to bite the bullet and go for a high-res base mesh to preserve your shapes. Although, in this specific case you can still work around the issue, by using the Arc outer miter, some support loops, and using custom normals for Subsurf too (see attached .blend).

I’d recommend using the Wireframe overlay to see what geometry the Bevel modifier is generating, that may uncover various potential issues for Subsurf. In this case, even with the aforementioned “fixes”, Bevel would create n-gons, which may not be an issue here but can be a problem elsewhere.

scope.blend (343.3 KB)