A command opposite to SubDivide would be great

A command to reduce globally the number of faces in a SubD object would be great IMHO

This would greatly simplify the task of reducing the number of faces that at the moment implies eliminating edges manually

Maybe this could be implemented as a right click on the Subdivide button

Joao

2 Likes

Hi Joao,

_QuadRemesh could do that for you.

Cheers

Michael

Hi Joao - MergeCoplanarFaces and MergeAllCoplanarFaces may help in the meantime. I suppose Quadremesh on the extracted control polygon of a subD might also be a workaround.

-Pascal

Thank you both for the replies , I am going to try your suggestions
Cheers

Joao

I wrote something a while back I’d been meaning to add as a tool, but here’s a script in case it is useful to anyone.
Given a mesh which was generated by a Catmull-Clark subdivision, it groups together faces into 4s to recreate the coarse faces.

Just doing this gets you the topology, but the shape will not be the same as the original mesh before subdivision, since the vertices get moved by the smoothing part of the subdivision.
Then I found and implemented bits of this paper [Lanquetin and Neveu 2006], which describes a neat way to recover exactly the original vertex positions just from the subdivided version.

This script gives the option to just to do the topological grouping, or to also do this vertex relocation.
Note that this will only work if the input mesh has fully Catmull-Clark topology - i.e. quad faces which can be grouped into 4s.

Reverse_Catmull_Clark.gh (21.6 KB)

For closed meshes without any valence 3 vertices it should recover the original exactly.
Valence 3 vertices require a slightly more involved procedure described in the paper to find the weights which recover the exact positions, which I didn’t implement here, but instead used an approximation that gets pretty close. If it would be useful the exact version doesn’t look to hard to add though.
Any naked vertices are just kept fixed, and I didn’t think at all about creases here, so it assumes everything is smooth.

12 Likes

Fantastic, thank you !

1 Like

This is super useful. I’d love to see an unsubdivide fuction native in Rhino.

4 Likes

@DanielPiker - so… do I have your blessing to make you a YT to add this functionality to Rhino?

RH-61918 Reduce SubD faces

-Pascal

5 Likes

Absolutely. Glad to hear it’s useful

8 Likes

Is there any new options on this front? I don’t use Grasshopper, so @DanielPiker awesome script won’t work for me, sadly!

1 Like

Have a problem with the unsibdivide script, the horse is missing parts of his legs. Any ideas how to solve this? Mesh is internalised, takes here 1 min to calculate. Thanks.
Reverse_Catmull_Clark_DL.gh (6.4 MB)


Ah, I found the problem.
When I was writing this I included a counter in the expansion loop so that it wouldn’t get stuck processing indefinitely if something went wrong finding the adjacencies. The value set for this was too low for a dense model like this one.
Here’s a fixed version:


Reverse_Catmull_Clark_02.gh (6.4 MB)

3 Likes

Cool, thanks a lot!

Hi Daniel,
I’m revamping this old thread because I got into a project where I need to do a “reverse modeling” of SubD shapes.

  1. when this would become part of the Rhino full arsenal of incredible tools?
  2. would it be possible/reasonable to add an input for the level of “un-subdivision”? Like in the wb catmull-clark there’s the number of subdivision here would be interesting to be able to control how far puch the simplification.
    See my picture below, I’ve added the script 4 times to get back to the original shape.

Thanks for any tought on this.
Riccardo

1 Like