Ha, a little recursion joke there . . . sorry
I’ve been messing around more with Steven’s methods for creating recursion and finding some really simple, interesting and flexible methods that live within it.
Conceptually and Actually simple to set up
This is the most iconic example I can think of
And damn if it isn’t easy to make!
Performance: Simple and complex models
Complexity in these models doesn’t effect performance in a linear manner, but it seems exponential. However, there seem to be 2 kinds of complexity, geometric and parametric. On a relatively brief examination, geometric complexity, having more form elements and rigging, creates much less slowdown than additional parameters. For instance, this model with only 2 parameters and a nested shared family with sweeps and blend regenerates in only a few seconds
but this one, with only model lines but with 8 parameters (some of which don’t even get used) takes over 2 minutes to regenerate.
Shared Families, using Placeholders
Key to the setup of the basic recursive structure is having 2 identical unshared families, each nested into each other. There is a lot to discuss and understand about the difference between shared and unshared families, but for the purposes of this exercise, let’s just describe the difference for this application. Unshared families act in relative isolation in nesting relationships. That is, an unshared family can be operated on in the family that it is nested into, but is virtually undistinguishable from regular geometry once the host family is loaded into yet another family. Shared families however keep percolating back up to the top in successive nesting operations, and retain their own “identity” if you will.
This persistent rising to the top is interesting for recursion, as it creates an opportunity to plant a parametric seed at the root of a recursive system. This allows you to nest and intelligent placeholder inside a simple skeleton of recursion, and later come back to make changes to that placeholder.
Triggering Events during recursion
When I showed my friend Lira the basic tree she asked: “can you put leaves on it?”
The answer is a resounding “YES!” In this example, there is a shared family that has a reporting parameter that detects when the family has gotten shorter than a given threshold. At that point, a piece of geometry that has a visibility parameter is triggered. The logic is “if the stem length is less than 4 times the size of the leaf, make the leaf visible”
Download sample recursion files from here.