Saturday, July 9, 2011

Rigging an Umbrella - A working rig at last


Sometimes simplicity is a good thing. This rig (for a single rib) is much simpler than the previous one, and also works much better.

Inspired by this video (on Youtube), and some of the reverse footlock mechanisms, I came up with the L-shaped "puller" arm, where this puller arm (with 3-bone IK chain to automatically resolve the appropriate distances) is responsible for pulling the upper-rib inwards as the runner goes downwards.

The lower rib has a tracking constraint pointing at a "tip target", with this target responsible for straightening out the rib as the runner moves downwards, by using a transformation constraint which remaps the transforms of the runner. A nice caveat of this transformation constraint is that we can still animate on top of this, manually moving this control (though it is unlikely to be exposed directly to an animator), which could be useful later for adding flipping controls.
TIP: A tracking constraint is used here instead of an IK solver since it is just a single-bone chain, so I try to avoid the overheads that IK solvers would introduce in this simple case. However, this is only possible because the tip movement method is not dependent on the result of the IK solver on the angle of the rib; otherwise, you'd be forced to use an IK constraint given that IK is evaluated in a separate pass after all constraints are done making the IK "invisible" to the other constraints.

Finally, here's a simplified screenshot of just the bones involved.

After applying the above setup to the umbrella model, it became apparent that there were some proportion issues with the current design which will need to be addressed, as when collapsed, the canopy vs shaft don't quite match up in a manner consistent with the intended design. Nevertheless, it's great to have a working setup now :D


  1. Have you considered the compact umbrella design?


  2. Actually I have. Personally I really hate using those, hence why I'm not trying to make one. :)