Thursday, July 18, 2013


More circular rigs, or at least " use of circles in rigs".  Most of my rigs to date have featured planar paths (splines in a flat plane) used to host profiles.  I have favoured this approach because of it's simplicity (as in the old adage "keep it simple stupid")  Parametric form finding is only going to be useful if it's user friendly.  Too much complexity and people will revert to direct free-form modelling.

One approach is to hide some of the complexity under the hood.  Display three or four main controls up at the top & bury the rest deeper down.

So how do we escape from the flat plane ?  How to make a spline that twists around in 3d space ?  One approach would be to make a box and divide it up with a 3 dimensional grid.  I may well try that later, but it struck me that circles might reduce the clutter.  Let's say we want 5 points arrayed in 3d space to define the path of our spline.  The length of our object can be considered as a straight line & each point defined by an angle and a distance from this line.  Hence the circles.

So:  New Mass family, 2 ref planes equalised & with a Length parameter.  Place points where these new planes cross the existing axis (centre front/back)  Spline through points, & flex to check that the points move when the length is changed.  Change the line to a ref line & place 5 points along it.  Make their planes "always visible" & draw a circle on each.  Give the 5 circles Radius parameters.

Place a point on each circle. select these 5 new points and "spline through points"  Hey presto a twisty 3d spline.  For "total control" we need 3 parameters for each point.  These will define the following:

Position   (of the circle along the original staight line)    P1, P2, P3 etc
Angle   (of the point on the circumference of the circle)   A1, A2, A3 etc
Radius   (of the circle, already done)  R1, R2. R3 etc

The positions are values between 0 & 1 (Normalised Curve Parameter)  Select each point that hosts a circle & associate its NCP with an instance parameter.  For the Angles, select the points on the circumference of each circle, change the "Measurement Type" from NCP to Angle & associate parameters.

The rest is a matter of rigging up "Master Parameters" in order to "Keep it Simple".  Length is fine as it is but I would like the circles to scale up automatically when I increase the length.  Then I would also like to have a "Straightness" control.

How can I make "Length" automatically generate a scale factor ?  First of all add a number parameter called "Scale", then make it equal to "Length / 500mm".  I chose 500mm because this gives me a scale factor of 100 for the family as originally drawn.  Remember this scale factor will vary depending on the length I type in for each instance in the project.  I won't be setting the Radii directly.  They will be set by input values * scale.  I'm going to use F1, F2 etc for the input values & I want these to be easy read, let's say values in the range of 1 to 150.  With a scale factor of 100 that will generate circles of 100mm to 15m  which is about right.

Now I can add a "Straightness" parameter.  (originally called slenderness, but I changed it later on)  This will reduce all the circles at the same time.  Bigger numbers mean "more straight" so I want to add "divide by Straightness" to my formulae.  Just set the initial value of "Straightness" to 1 so that your initial spline is the default.  Radius formula now reads:

R1 = F1 * Scale / Straightness

Flex a few parameters to make sure it's all working properly.  Then it's time to load a profile and thread a few onto the spline.  I chose the one from my Brasilia Cathedral form-finding experiment.  It's just a triangle with 2 flattened edges.  Add 5 points. hosted on the curve "backbone" spline.  Make the workplanes "Visible : Always"  Place a profile on each.  I had to rotate my points 90 deg.  and adjust the profile sizes.  Then select the 5 profiles plus the backbone & create form.

Now you can play around with the Angles & Radii to see how this affects the form.  Later on I decided to add a "Slenderness" parameter.  This works just like Straightness, but this time it controls the width of the profiles.  Set up 5 parameters (W1 to W5) linked to the width of each profile.  Then control these by formulae.  For example, if a profile 5 has an existing width of 9m the formula will be:

W5 = 90mm * Scale / Slenderness

I visualised this form as a sinuous roof to an open air exhibition space / cafe.  Loaded into a project it was easy to make a roof-by-face & choose "Sloped Glazing" in the Type Selector.  Adjust the settings for mullions etc.  Along one edge I made a wall-by-face to represent an edge beam.  On the other side a made some walls using the Tangent-End-Arc tool which makes it easy to a draw sequence of smooth curves.  Placed a few round columns to support the beam, some topo & paving, a few flat people & off we go.

Now I could have made this roof using an in-place mass and "3 freehand" splines.  But the whole point of this is to explore "Form Finding"  This implies a controlled exploration of variations on a theme.  So I made a few copies and played around with the parameters.  The first row of 4 demonstrate the 3 main controls (Length, Straightness, Slenderness)

It's child's play to scale the whole roof up by say 5% without distorting the shape, just type in a new length.  Using the freehand method, it can be frustrating.  You have a form that you like, but when you lay out the cafe tables it's not big enough.  Not so easy to scale it up without distorting the shape.  Similary if you decide half-way through that the curves are too sharp (maybe there's too much twist on the glazing) it's a chore to adjust the freehand version.  You have to adjust the 3 splines separately and try to maintain the smooth flow of the shape.

I'm not saying my method is "always better".  Sometimes "quick & dirty" is the right approach.  But it's worthwhile learning how to make parametric forms & thinking hard about how to set up master controls.  The "Inner Logic" that you define may well show up in the resultant form.  And if you want to make 3 or 4 elements that read as variations on a single idea, the advantages are obvious.


  1. Fantastic as always. I wonder if this rig would give me better leaves on my corinthian capital???

  2. Maybe, although I think it's main strength is where you need to put a twist into the spine. There could be versions of the Corinthian with a twist to the leaves, but mostly the spine lies in a flat curve. One of these days I'll get back to that challenge :-)


I've been getting a lot of spam so had to tighten up comments permissions. Sorry for any inconvenience. I do like to hear from real people