For years now, I’ve been trying to automate as much of the rigging process as possible, particularly the limbs. Two problem that’s dogged me the whole time was a lack of customization, and code that was needlessly complex and difficult to maintain. My latest tool at least comes closer to solving both issues – rather than attempting to set up a full rig with single click, I’ve opted to set up each portion of the rig separately, while also including a one-click option.
For a quick, basic rig, the all I need to do is enter in the start, middle, and end joints, check ‘Use Default Settings’, and hit the Auto-Rig button. For a more customized rig, ‘Use Default Settings’ can be left unchecked… though I’ve yet to document which options can be set.
In the FK section, either a new chain can be created based on the input joints, or an existing chain can be specified. By default these joints will be parented to controls, but there’s an option to apply control shapes directly to the joints instead. Gimbal controls can also be created, for an extra layer of rotation. The results are then output to the their respective lists, making it easier to select and keep track of each component.
Like with FK, the IK section can also prepare a new chain, but has the added option of an orient control. This is mostly useful if, say, I want the IK chain to have a different default pose than the FK. Without any other options checked, the “Apply IK” button will build a no-frills IK setup – an IK handle, a pole vector, and nothing else. Stretching can be set up with either an expression or utilities, and as a bonus, can also be applied to the FK joints. “Apply Stretching to Selection” will do just that – if an IK handle is selected, stretching will be added to its joints.
Blending is fairly straight-forward – enter a control, specify a blending attribute (either a new name or an existing one), then hit the setup button. If there are no twist joints, the original input joints will be used. Otherwise, a new chain will be created.
The twisting section – if there are twist joints – is where the rig really comes together. Hitting the detect button will fill out the upper and lower joint lists. Three types of twisting are offered – simple, spline, and ribbon – although only simple and spline are currently implemented. Simple and spline both use spline-IK, the only difference is that simple uses 2-point linear curves.
Since spline uses cubic curves, it allows for rubber-hose effects even with the minimum amount of controls.
One thing I haven’t quite figured out yet, is how to easily rename all the nodes. Currently generic names are used, which is hardly ideal. Reverse-foot rigging is also something I need to implement, but for now the script is at least functional.