Recursive Subdivision (Geometry-Nodes)
This file provides a Geometry-Nodes (GN) setup for Recursive-Subdivision (RS).
This setup has been tested with Blender >=4.0.
For any inquiries or feedback, feel free to reach out on Twitter.
Summary of the setup
To use, just apply the rec_subdivision GN node-tree to your target object. Notice that the setup works better with quad-only meshes. It will return the resulting subdivided geometry. You can optionally apply the test_extrude node-tree to better see the results, via randomized extrusion of the generated faces.
Here a summary for the rec_subdivision parameters:
"Iterations (x10)" how many time to apply RS to the target geometry (the provided number will be multiplied by 10). With "Min Area Face" set to zero, this number will be equivalent to the resulting number of new faces.
The "Min Edge Ratio" and "Max Edge Ratio" control where the split happens along the edges. The ratio value will be randomly chosen across those two during each iteration. Values of 0.5 and 0.5 will imply that the split will always happen halfway the edges. If "All Equal Ratio" is selected, then the same ratio will be used for both edges of the split, otherwise an individual random value will be selected. For example if original lines are perpendicular, then with "All Equal Ratio" selected you guarantee that the results will be perpendicular too.
"Min Area Face" min area for a face to undergo subdivision. If a face area is smaller than this value, than the face will remain unchanged. Notice that an iteration is still used. The more of such small faces there are, the more likely for the node to waste iteration without affecting results.
"Seed" seed to randomize results.
Technical Considerations
Currently the setup works best with quad-only meshes, this because the subdivide-face logic is well defined only for quads. It will still provide results for other N-gons, but results are unpredictable.