3
$\begingroup$

I found this thread but there is no solution. I have a model and can't prevent it from losing its original dimensions. I simplified the problem with a simple mesh. What is the technical reason for the Subdivision Modifier to leave this gap? I think it should be possible to perfectly inscribe the subdivided surface into the original shape as to prevent further shrinkage or maybe this is a bug. Also, is there a way to set an offset as to avoid a shrinking mesh?

enter image description here

$\endgroup$
6
  • 2
    $\begingroup$ That's how it's supposed to work, otherwise it couldn't smooth the geometry out. You can use the Simple mode to keep the shape though: blender.stackexchange.com/questions/254487/… Is this what you want? $\endgroup$
    – Kuboå
    Commented Dec 26, 2022 at 9:31
  • $\begingroup$ "That's how it's supposed to work, otherwise it couldn't smooth the geometry out." > Yes but at least it should inscribe into the original mesh and not leave that gap. Just imagine increasing the scale of the final shape and it will eventually perfectly inscribe into the original shape. As a developer I don't see a reason why that is not possible and I would like to understand why it's not working as expected. $\endgroup$
    – Harry McKenzie
    Commented Dec 26, 2022 at 9:36
  • $\begingroup$ It works for 1 level subdivision if I turn off Use Limit Surface but once I increase the level to 2, it creates the gap again. I would expect it to also adjust the size to still fit into the original mesh so as to prevent shrinkage. $\endgroup$
    – Harry McKenzie
    Commented Dec 26, 2022 at 9:49
  • $\begingroup$ @HarryMcKenzie Yeah that's what I meant, even if you untick Limit Surface it would have to shrink eventually, I thought that was obvious but maybe I'm ignorant about something since all I ever knew was this behaviour in Blender. If I understand right you want it to scale the mesh up sequentially so it always touches the original bounding box? Is that right? $\endgroup$
    – Kuboå
    Commented Dec 26, 2022 at 10:29
  • 1
    $\begingroup$ Here's a solution I came up with for any mesh: blender.stackexchange.com/a/309536/60486 $\endgroup$ Commented Jan 9 at 21:09

3 Answers 3

4
$\begingroup$

If you want to continuously scale your mesh back up after each level of subdivision so it stays close to the original size, you could use a simple Geometry Nodes setup like this:

enter image description here

enter image description here

Perhaps it's just my ignorance of how subdivision works elsewhere, but I'm not convinced the default Blender behaviour is either unexpected or a bug. Continuously scaling the mesh would be a design choice, and while it can yield natural feeling result like in the gif above, it wouldn't always be possible to have an easily retrievable "correct size" for all shapes. Consider these two:

enter image description here

By its nature, subdivision surface would go in and out of the original area depending on the edge angles etc, so I'm not sure how it would be feasible or even desirable to have a complex scaling behaviour that would always produce good results.

$\endgroup$
0
4
$\begingroup$

The correct (if pedantic) answer is... that's how Catmull-Clark works. In order to not exhibit this effect, you would need to use a different subdivision algorithm. While there are other algorithms out there, Blender unfortunately does not implement any.

Doo-Sabin might do what you want, if it was implemented.

Why does Blender use Catmull-Clark? Well, when you understand its properties, it does have a number of advantages. For one, it's very popular, which means it's more likely to match the output of other tools. It's well understood, geometrically stable, and relatively easy to implement. In most cases, it gives "pretty good" results, especially when you understand how to use it.

A disadvantage, however, is that it's hard to achieve dimensional accuracy.

Frankly, if you need that, Blender may not be the right tool for you. Blender is good at making things where the visual result is the "primary output". If you need dimensional accuracy, it's tools are much more limited compared to a good NURBS package. (Frankly, modern Blender is inferior to 20-year-old CAD software in that respect.) Depending on your budget and feelings toward open source, you could look at FreeCAD (free in both senses), or there are a variety of commercial, proprietary packages out there.

That said, it's worth noting that NURBS has the same problem to an extent, however most NURBS software has algorithms that figure out how to construct the control mesh so that the final surface intersects target points. I suppose in principle one could do the same thing with Catmull-Clark surfaces, however I'm not aware of any tools that actually do so¹. (Also, with NURBS you have knots, the boundaries tend to be more controlled, and use of multiple patches is common.)

(¹ Actually, Blender sort of does this. If you click the 'triangle with vertices' icon next to the modifier name, it will show you the smoothed surface and allow you to change the final vertex positions directly. However, manipulating those can have an undesired effect on your control mesh. In NURBS modeling, it's typical to define target curves and then form a surface from those, which is what I've not seen done with Catmull-Clark surfaces.)

$\endgroup$
1
1
$\begingroup$

Disable "Use limit surface" in the subdivision modifier enter image description here

$\endgroup$
1
  • 2
    $\begingroup$ Yes I tried that, works for level 1 but not level 2. $\endgroup$
    – Harry McKenzie
    Commented Dec 26, 2022 at 10:16

You must log in to answer this question.

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