A simple to use skeleton builder and autorigger that builds a fast, animator friendly, bipedal rig. Some of the features include:
I wrote this script with the intention of using it to rig my own characters for my Animation Mentor short. Unfortunately, it took long enough to write that I didn't have time to build and use it with my own characters.
What I'm trying to say is that it hasn't been properly put it through its paces. It might break horribly, it might not. Ok, it probably won't break horribly, but I can't imagine there isn't something that I've overlooked. Please let me know if you do find any bugs or have any problems at all with it. If it works great for you, I'd love to hear about that too.
And as always, suggestions are appreciated.
The script needs to be sourced before it will run. Once you've copied the files to the appropriate directories, you can start it like this:
And the UI should appear. Note that you'll want to move through the tabs from left to right to gain all the functionality of the rig.
Begin by entering your character name in the field and click the "Create a Skeleton" button. The abSkeletonMaker window will pop up. This and the abWireReplace can also be accessed under the Tools menu that appears at the top of the abAutoRig window.
In the abSkeletonMaker window, click the "Make Proxy Skeleton" button. You can modify the proxy by moving any of the curves or locators in the proxy. The red curves indicate grouped hierarchies, and moving or scaling them will modify their child transforms. The entire proxy can be scaled by scaling the red locator at the world origin.
If you plan on using the snap to pv controller for the knee and elbow joints, you'll want to make sure that the first three leg and arm joints share the same x and y values respectively. Otherwise you'll have no luck getting it to work.
If your character has fewer than five fingers, don't worry. You can leave them on the proxy and delete the joints once you've created your skeleton. The same goes with the neck, head and eye joints.
Once you've got the proxy where you want it you can set the number of Upleg, Uparm, and foreArm split joints that you want using the sliders. Click "Build Skeleton" and close the abSkeletonMaker UI when you're done.
Select the number of joints you want to use in your spine, the spine root joint (which will be just above the hip), and the hip joint. Click "Create Spine Rig".
You'll want to bind your character to the newly created visible spine joints and not your low, mid, or high spine joints. You'll know them by the way they turn magenta when you select the hip joint. Note that in recent versions of the script, the weightSpine joints can be found in the weightSpine_grp, which is located in your yourCharName_Skeleton_grp. If you rerig your character spine with the same number of joints, your existing weightSpine joints will be reused, so you won't have to worry about re-weighting your spine.
The octagonal control curve next to the spine (the Spine/Split control) can be used to change the influence of the hip, low, mid, and high spine control curves on each of the ik spine joints y rotation. Just make sure that the four values under each spine joint add up to one, or else your rotations will be out of whack. (Note that this control will also contain the rotation ratios for all of the split joints on the rig, as well.) The visibility for this curve can be adjusted on the root control.
The curve just below the top spine control is the spine shaper. It's useful to shape the spine when you're translating spine control curves. Its visibility attribute is located on the cog control.
As of version 1.9 you'll find the "useRootSpace" attribute on the high, mid, and hip control curves. You can enable this for each curve individually to use it as a true IK control. The low spine control curve will remain parented to the COG with only the rotation attributes available.
Note that I've changed the spine in version 2.7 to be much less flippy than before. The spine setup will still create all of the same control curves at the same locations, so if you've referenced your character it will animate in the same way. The only discernable difference (aside from less flipping) is that there are no longer spine rotation attributes on the Spine/Split control. You still need this control though, because it's used by the leg, arm and hand setups to hold some important attributes, so don't delete it. If you're unable to update to the new spine for some reason you can alleviate some of the flipping by following these instructions:
Specify the neck, head and optionally one of the eye joints to rig this part of the skeleton.
The head control has an optional control to translate the head that's hidden by default. Enable the "ikCtrlVis" attribute to see it. You can unparent the head from the rig and put it into rootSpace by enabling "useRootSpace" on the head translate curve.
Select the number of upLeg split joints in your leg hierarchy and an Upleg joint. Click the "Create Heel Locator" button and place it in the position where the foot should pivot about the heel (it might not need to be moved at all). Once you're happy with its placement, click "Create Leg Rig". Note that unlike the other rigging functions, the leg rig doesn't undo cleanly. Use the rig removal tool to get rid of it.
The leg ik control curve is located behind the ankle. Most of the attributes should be self explanatory. FootBreak is the amount of positive footRoll after which the toe will roll instead of the ball. MaxStretch is the maximum length in terms of initial length that the leg will stretch before it can't stretch no more. Setting this to 1 will disable stretchy ik. Fk stretch along with ik and fk leg visibility can be accessed by selecting the square control curve under the foot.
The pv control contains the standard translate and space switching attributes as well as snapKnee. If you've kept your upLeg, knee and ankle joints in the same xy plane then adjusting this value to one should snap the knee joint to your pv control.
You can rig the other leg by selecting its upLeg joint and corresponding heel locator and again clicking "Create Leg Rig". If you're using version 1.7 or greater, the other leg will be automatically rigged at the same time as the first. Select Options > Auto Mirror to disable this feature.
How about two. Because that's what this script will do, two. By now it should be pretty clear how to use this thing. Specify the number of split joints and an upArm (shoulder) joint. The arms are basically the same as the legs with the addition of an fk shoulder.
Once you've finished rigging at least one arm or leg, you'll see new button appear in your current shelf. You can click this button to access the FK/IK snapping UI for your character. It should be pretty self explanatory. Don't forget to change the namespace drop down if you're using your character as a reference.
So here we are at the hands. The only special thing about the hands is the way you can specify joints in the UI. You can select them in the order they're listed in the Hands tab, click "Hand Quick Select", and they'll be selected in the UI.
Also, all but the "Hand Ctrl", "Thumb", and "Index" fields are optional.
Version 1.7 introduces a few new hand attributes. MasterSpread spreads all of the fingers based on the individual finger values located on the Spine/Split control (under the Left and Right Spread attributes). MidCurlAmt and tipCurlAmt determine how much the masterFist and fingerCurl values will rotate the mid and tip joints relative to the baseJoint.
If you want to change any of the wire controls (which you probably do), you'll want to use abWireReplace, which can be found under the tools menu. With it you can select a control curve and double click your desired curve type in the scroll list (or click "Replace Selected") to replace it. The radio buttons below determine the axis that the newly created curve will face.
Use "Copy From To" to replace a curve with your own. Position your curve exactly where you want it, select it, select the control curve you want to replace and then click the button.
"Mirror Selected" will mirror the selected curve to any curves that lie on the mirror side of the xy plane. Select the curve you want to mirror and click the button.
The "Wire Scale" floatField has been added as of version 1.7. This value determines the default size of replaced controls. If a curve shape is highlighted in the UI, control-LMB, MMB, or RMB dragging over the field will interactively scale the selected curve.
All of the controls that support space switching (including the spine and head curves with the "useRootSpace" attribute) can be used with Tools > Space Switch Matcher.
To use it, just select the curves with positions that you wish to copy and press "Copy Position" in the tool UI. Now move to a frame before or after a space switch on those same curves and click the "Paste Position" button. The curves will snap to the same position they occupied on the copied frame.
As of version 1.6 I've included a tool to easily remove parts or all of the rig. It will only work on rigs made with version 1.6 of the script or greater. Rigs made with earlier versions won't be recognized. Sorry, you'll have to strip them manually and re-rig. Also, be aware that the script won't open unless it finds at least one rigged (by 1.6 or greater) character.
To begin click Tools > Rig Remover in the main UI. You'll be greeted with the abRigRemover window. Select the rig you wish to modify from the option menu. Next, hilite in the textScrollList any and all parts of the rig that you wish to remove from the skeleton. Click "Remove Selected" and it shall be done.
If you're updating the rig and you've modified your character's control curves, you'll probably want to save them before deleting the rig. Select the character's rootCtrl and click Tools > Save Wires To Shelf. A new button with your character's name should appear on the current shelf. Once you've updated the rig, your curves can be restored by selecting the rootCtrl and clicking the shelfButton.
As of version 1.8 of the script you can use the nimbly named abMakeStretchySpline tool to quickly make a stretchy spline rig from a curve.
To use it you first need to create a curve with knots placed where you want the FK controls. Note that the control curves will taper from the beginning to end, based on the direction of the curve.
Once you've got your curve, click Tools > Stretchy Spline from Curve to open the script UI. Select the curve you just made and click "Select Curve". Once you've specified the number of joints you want in your spine and a unique naming prefix, you can click "Create Stretchy Spline". And there you go.
Note that the root control has a few extra attributes compared to the others. "Stretchy" enables and disables the stretching of the joints with the curve. "Rig Scale" will scale the rig up and down. And the "Squash Driver" and "Stretch Driver" attributes are intended to drive squash and stretch blendShapes, the manner in which those blendShapes are driven can be adjusted with the falloff and scalar attributes.
A few things on my to do list for this script are:
That's pretty much it, except for a few notes for the skimmers.
The script will do strange things if your working units are in anything but centimeters. You can switch back to your preferred working units once the rig has been created.
Be aware that autoFill (in version 1.6 and greater) fills mirrorable object fields (upArm, upLeg, the hand fields, etc.) with objects on the left side of the rig (+x) by default.
Currently the script doesn't create a standard reverse foot rig. Instead of the toes pointing at the foot control when moved beyond the leg's maximum stretch, they'll stay in the position they are posed in. I prefer it this way; others might not.
The leg rig doesn't undo correctly. It can be undone, but you'll be left with some control curves and a toe rig joint (which ends up jumping into your skeleton hierarchy) that you'll have to delete manually. Use the rig removal tool to delete it (unless you're dealing with a rig created with version 1.5 or below of the script, in which case you have to do it manually).
Heel locs should be properly aligned. If not just rotate them until they are.
If you slide the IK/FK blend attribute on the legs and arms when the IK and FK limbs are in the same position, they'll rotate the long way around. This shouldn't be a problem when animating.
If your skeleton has split joints and you want to change the x rotation of the hip or wrist, remember that you can adjust those values on the Spine/Split control (the octagonal wire next to the spine). Keep in mind that the values for each category must add up to 1.
The "Char Name" attribute needs to match the character you're working on. If it doesn't, some stuff will probably break (most notably, the rigRemover).
The shelf button created along with a rig (used to access the FK/IK snapping functions) won't work unless the script has been sourced first. It also won't work if you rename your control curves. In version 1.9 (only), it won't work if you move the rig_grp folder either. It's easily fixed, though. See the updates below.
Which reminds me, don't rename your control curves. Actually, don't rename anything in the rig_grp.
You can delete a proxy skeleton by deleting "skeleton_proxy_grpLoc". All the associated nodes will be removed from the scene as well.
When building a skeleton, the first three joints of the leg (upLeg, knee, ankle) and arm (upArm, elbow, wrist) must lie in the same x and y planes respectively for the snap to pv function to work correctly.
The default skeleton is slightly misshapen and out of proportion. If you come up with a more useful default skeleton, please send it to me. I'd be more than happy to replace the current default.
Some of the curves created by the Wire Replacer are currently less than spectacular and maybe even slightly useless. I'll fix them at some point.
The rig should be in the default position for the mirror curves function to work.
Save your rigged character in its own file and reference it into your scene. That way if you need to make changes to or update your rig your animation won't be lost (as long as your control curves names stay the same).
If you're using corrective blendShapes on your rig, make sure that they're not driven by your control curves. It easier to update your rig that way.
Thanks to Olivier Ladeuix for making these:
To fix a button made with 1.9, just copy the button command into a text editor and replace all instances of ">|" with ">" and all "&|" with "&". Replace your current command (of the IK/FK snapping shelf button) with the modified version and you should be good to go.
Other new stuff: the "Add Split Joint" tool to the Tools menu, "Refresh UI" to the Options menu, knee split joints, and the addition of COG space to the hand IK controls. Also, the leg and arm hierarchies are now checked before rigging to make sure that the joints are zeroed out.
Note: If you have issues with a knee or elbow shifting slightly after it's rigged, check to make sure that the preferred angle on your joints is set to 0 0 0.