# Rigging an umbrella-like object

I'm trying to figure out the best way to rig this setup. I have several pipes arranged vertically, right next to each other. I want a rig where I can use a single controller to have them spread out at the base, similar to opening an umbrella.

Here's an example object showing how it should look when opened:

I want the rig to work by scaling a controller at the base of the pipes (like the circle in the image.) I also want to be able to translate the controller, and have the individual pipes stay locked to it, but not have their lengths change.

I know I can do the rotation by putting a bone down every pipe, then using constraints to have them rotate on their local axis based on the scale of the controller. But this doesn't handle the translation. I could also do it by IKing each one to a point on the circle, but then it starts getting very complicated and can have Roll problems.

The actual object I'm trying to rig will have a lot more pieces than this example, so I'm trying to find a way to NOT need to make and position a ton of bones or constraints.

Is there any simpler way to solve this problem?

Not sure if this helps or not but here is what I could come up with using only constraints to simulate an umbrella like opening mechanism.

If you actually need an armature (for exporting purposes, linking, or otherwise) you could probably construct a similar setup with bone constraints on an armature object.

Make a three rod system with a $Post$ (blue), the $Arm$ (white) and the "muscle" or $Piston$ (red) object.

After that add two empties, one at the base will be the $Master$ controlling object, and should lie somewhere along the blue post, the other $Pivot$ will act as a hinge point and should lie somewhere along the arm length.

Then it is all based on a system of parents and constraints. The red piston should be parented to the $Master$ controller empty, and constrained with a Track To to the Pivot empty along the $Arm$.

The white $Arm$ should have a Track To constraint to the $Pivot$ empty;

And lastly the $Pivot$ empty should have a Limit Distance constraint set to the $Master$.

The distance value should exactly match the total length of the "Piston" object (red). You can optionally constrain angles and movements of different parts, like say, constrain the master to move only in $Z$ axis no more than the height of the blue $Post$ rod.

Lastly duplicate the whole system around, making sure you leave the $Post$ and $Master$ out of selection so they remain as single objects

You can then probably use drivers to link the positioning of the $Master$ control object to the scale of any other object, thus achieving what you need.

• Duarte, you have no idea how much time I spent creating similar umbrella rig some time ago. If I only knew your answer then... Very smart solution! +1 from me. Aug 20 '17 at 18:29

This is an alternative, if you're looking for a fixed hinge on the umbrella spokes, using drivers.

Working Y up, X across.

• 4 Empties. A circular handle at the bottom, 'A' the slider, 'B' the hinge, 'C' the stop.
• ABC must be isosceles: B's Y must be halfway between A's and C's
• By Pythagoras, B's X must be the square root of (CB squared - (AC / 2 ) squared). CB is fixed. AC varies with the position of the slider.
• Stop, Hinge, and Slider Empties are all parented to the handle

The hinge at B is driven by A and C as follows:

X location (all driving and driven coordinates in the handle's space):

Y location:

The AB spar is parented to the slider at A. The spoke which extends CB is parented to the stop at C. Both have Damped Track constraints, so they are aimed at B.

Once the rig has been set like this in 2D, The hinge at B, the spoke, spar and handle can be duplicated round, using, for 8 spokes, ShiftDRY45, leaving a single copy of the slider and the stop.

The duplicate handles can be parented to a single root for moving the whole rig: the larger cube Empty at the base, below.

• Very nice. Could the distance type driver var be used here? Mar 21 '20 at 2:37
• @batFINGER I was wondering about that, myself, I don't know whether it would constrain radial direction. I guess you could just use IK, anyway? Mar 21 '20 at 2:39

Since someone has resurrected this thread, I thought I would just add a little more here. Here is an example I was tasked with a couple of years ago, bones only, copy rotation constraint for the 'R(number)' bones, A driver for the 'R(number - letter)' bones that just copy rotation in reverse and doubles it. Everything copies 'R0' bones local 'Z' rotation. This pic shows everything needed to reproduce this, bones axis is displayed, Outliner shows parenting. Here is a compact folding version, this one was a bit of a challenge Lastly, A more technically correct one that acts more like the real ones where the stretchers actually flex, uses a spline IK. If anyone is interested in the blend files, contact me or PM me(ajcdfin) here. Thanxs

• If you wish to add a blendfile use blend-exchange.giantcowfilms.com rather than requesting personal messaging requests. Mar 21 '20 at 15:18