Catmull-Clark mesh smoothing

Hello. This addon adds tool “C-C Smooth” to the Specials menu in Edit Mode.
It does the “Catmull-Clark” surface smoothing on the selected vertices. It doesn’t do the subdivision step, it just reshapes the selection.

Here’s how it looks compared to the built-in Smooth tool:

If you don’t know how to install a 3rd-party addon you can look in the manual.
The script can be downloaded here: catmull_clark_smoothing.py

Not sure if it’s useful, I wanted to see what it looked like. At least it might be a template script to start from if you want to test some smoothing formula on a vertex selection.

6 Likes

This is an actual useful feature that I didn’t know I wanted. It’s so much better than the regular smooth tool.

Thank you very much!

Been asking Campbell for this option for almost a year. Nice to see it added!

1 Like

Fantastic, Great work… I much prefer the results of this to the traditional vertex smoothing option! :slight_smile:

This is very useful! Thanks so much.

Good. The very usefull. Thanks

cool addon! thanks!

Good stuff! As a sidenote, I always thought having Doo-Sabin as an alternative to Catmull-Clark would be interesting, since it yields slightly different result (preserving original shape more).

http://www.holmes3d.net/graphics/subdivision/

just food for thought :slight_smile:

Thank you very much!
It seems that finally no longer need to manually do what is shown here at 1:50min:

Thanks for the script.

It seems that there were some calculations being done in the script and not being used at all, so I removed those. It should be slightly faster.

catmull_clark_smoothing.py (1.1)

If you’re using it right now you can remove it in the Add-ons tab of the User Preferences window. You can find it in the Mesh category and click the Remove button when you expand to see the add-on details.
Then you can reinstall it from that 1.1 file above.

On Doo-Sabin, I tried doing something that followed the math of that method (without the subdivision step), I hope it’s accurate:
doo_sabin_smoothing.py

The differences are really subtle. From a really gross comparison using these smoothing tools on copies of the same mesh and tweaking the parameters so the meshes have almost the same size:

  • Built-in Smooth smooths the most at the cost of losing more of the original features (according to the Blender source code it’s the same method as the Smooth brush when sculpting, it’s a simple averaging of vertices.)
  • Catmull-Clark preserves some of the original shape but adds a slight roundness.
  • That “Doo-Sabin” script above has a similar effect to C-C but does not add that roundness, so of the three you could say it should preserve the shape the most?

Cool, will give it a go when I get home from work. Yes, Catmull-Clark gives a rounder result, which is often what you want, but options are never bad in my opinion :slight_smile:

Oops, corrected a small typo in that experimental Doo-Sabin averaging script, updated the link in my post to the correct version, but it’s the same as below:
https://www.dropbox.com/s/t63z79l29rzo12c/doo_sabin_smoothing.py?dl=1

About the only modeling feature miss from max and maya is a feature called “set flow”. This would move selected geo along it’s normal according to the surrounding geometry. Like Blender’s insert loop.smoothness control - but on any arbitrary selection of faces, edges or verts.

This made was a huge timesaver when working with organic models, working big to small, etc.

Catmul Clark and Doo Sabine (nearly always) only create surfaces INSIDE their control points. Right?

Are their other maths like a Catmul ROM spline that would do both inside AND outside the control points?


Attachments


Is that what you were asking for:


https://i.imgur.com/A0K0wtF.gifv

I also added pin boundary option
Updated version link: https://www.dropbox.com/s/rfmq29st1cx8s0h/doo_sabin_smoothing.py?dl=0

5 Likes

Thank you John! Could you do also a version with the Catmullclark ?

Agreed here big time. I miss that tool like no other, and this seems to be almost on the verge of being able to do something similar.

Hey, this is neat.

Seems the Catmull-Clark script forgets to recalculate the normals after finishing though.

@Kryzon was my old account, I use this one now (real name instead of alias).

The link to the script was broken so I fixed it.
Additionally, it now recalculates normals after running (@Piotr_Adamowicz).

1 Like

@RNavega Hi. Any chance of porting this to 2.8?