I don't have a perfect answer but I will give it a try.
When I apply the function LoopSubdivide from this post to your examples, the results are as follows
NestList[LoopSubdivide, mesh1, 2] NestList[LoopSubdivide, mesh2, 3] NestList[LoopSubdivide, mesh3, 3] As I said, it's not perfect. The issue is that the creases of the initial surfaces are not too clean. The cube would get rounder if the initial mesh was coarescoarser (and a bit more regular).


