The correct way to create square dent in hard surface

I’ve seen a lot of tutorials from penfinity and others of doing a circular cut in hard surface object (with subdivide and bevels), and I’m struggling to do a square one.


the start mesh is on the center, just a plane with inset and extrude in.
the best result I got is on the right, with loop cuts around every corner I want to be 90deg. I don’t want to go this method because it adds tones of geometry if I do it on a model with more dents.
the left one is some tries with edge crease, and the bottom is with bevel modifier, which both produce artifacts around the corners.

I’ve found this video:


around 01:00 he shows a good way of doing something similar, but somehow he does the bevels much cleaner than what I manage to do. maybe it’s the addon he is using, maybe it’s because he is using ngons in the corners, I can’t fully understand what’s the difference.

he also says that the adding edge loops around corners is not the best way of doing it, so I’m trying to avoid it.

how would you do it?


like that

edit:



and same on a curved surface

That exactly like adding supporting edges, isn’t it?
and what’s your workflow for creating the 2nd step? couldn’t find an efficient way of doing it (simple bevel doesn’t look like that).

Yes. There are two ways of supporting edges with subdivision surface: perimeter loops and creasing. Creasing doesn’t export and might still need perimeter loops to get a clean result for both geometry and shading. Creasing is ok when things stay in Blender and the geometry is such that it doesn’t create artifacts.

Two vertices or edges close to each other will support a corner or a hard edge. Preferably three though, so they’re supported on each side, and can define a harder corner or edge.

inset, then extrude.

I tend to struggle with this type of problem too. I also use the 3 holding edges, per corner, like in the suggested workflow. However, I often need to then step that down to match the vertex count of surrounding, lower density, geometry with much fewer edges running through it. A recent problem I had was with a hexagonal shape needing these type of holding loops for all 6 sides (18 outgoing corner edges total).

It would be awesome to see the ‘proper’ way to step down in these cases. i.e. There’s 3 outgoing edges per corner in the suggested workflow. What would a step down look like if you need to eventually be left with just 1 outgoing per corner; this needs to occur a relatively short distance away from the detail in question?

I know there’s topology charts showing various step down patterns, but these types of corners sometimes aren’t amenable to that. Or should you force them to be amenable :)?

There’s no proper way to have one solution for all the hypothetical cases. There are too many variables

The use of subdivision surfaces is planned, including the targeted subdivision level. It behaves in a predictable way, especially with quads that keep the structure readable. Can’t forget the requirements from above though, subdivision requirements just add to them.
In general:

  • round curves and surfaces need more geometry than flat ones
  • the face size on a round surface should gradually change, as sharp change creates a hard detail
  • the structure on a flat surface doesn’t matter when the perimeters are supported with a quad face loop
  • most used subdivision levels are 2 and 3

It gets easier with experience as you’ll go through everything in that backwards, considering the end use first, then the pipeline, then the modeling specifics, and then start to model.

There are drawbacks to subdivision surfaces. Some details can’t be supported within those rules without adding enough control geometry. That in turn lowers the needed subdivision level, up to the point it doesn’t make sense to use subdivision surfaces to refine the geometry anymore. But it’s the result of all the requirements, and one would make compromises before abandoning the help from subdivision surfaces. Compromises such as having the detail instead of equal density for the targeted subd level, and not doing a loop reduction because the detail and forms don’t allow it.