AbAutoRig version 2 is now available! You download it here.
It's full of new features and improvements to the original, including:
This release will be a bit different than previous versions. This time I'm releasing two versions of the script, and for the first time ever, one will not be free.
This is the only script that I currently have any plans to sell. Everything I've released for free will remain so.
So which of the above features do I plan to strip from the free version and charge for?
None of them.
All of the features listed above are in there. So abAutoRig Standard is still a huge update to the previous version of the script. What you will get with the Premium version are some of the more advanced features, like:
If you decide to buy a copy, I appreciate your support. If not, no worries. I hope you find the standard version a worthy upgrade.
For those unfamiliar with the script, here's a quick rundown of how to use it. You can also check out the post for the previous version here.
When working with the script you want to make sure that you move through the tabs of the UI from left to right. Begin with the "Start" tab and end with "Hands". If you don't, you'll lose big chunks of functionality that depend on other parts of the rig existing at the time of creation, features like space switching and adjustable rig settings.
Assuming you've copied the scripts and icons into their appropriate folders and have restarted Maya (or run the mel command "rehash"), you can bring up the script UI by running the following bit of mel in the command line (or script editor):
Now let's begin at the "Start".
Enter your character name in the text field and click "Create a Skeleton". A new window named "abSkeletonMaker" should pop up. You'll use this to create a proxy skeleton which you can pose to match your character mesh.
Set the slider to the number of fingers that you wish your character to have and click the "Make Proxy Skeleton" button. A stick-like character will appear in your viewport. This is your Proxy Skeleton. Move, scale and rotate it using the standard and group controls (red wire spheres). Try and get it to conform as closely as possible to your character mesh.
Note that any locked channels you come across are locked for a reason. Resist the urge to unlock them.
Once you're happy with your posed proxy, specify the number of split and spine joints, and click the "Build Skeleton" button. By default, a button will be saved to your shelf that you can use to recall your proxy if you later find that you need to make adjustments. Note that the number of split and spine joints you specify can be changed without rebuilding your skeleton, so don't get too hung up on those values (the defaults are a good place to start).
The "Spine Root" and "Hip" fields should be filled in with your character's root and hip joints. If not click "Refresh UI" in the "Options" menu.
The number of spine joints should be set to whatever value you specified in the Skeleton Builder. This is the number of weight joints that will be distributed evenly along the ikSpline which is constrained to (and moves with) the spine control curves.
Enable the "Align Control Curves to Spine" checkbox if you want the spine control curves to align to their respective spine joints. This means, in all likelihood, that the spine controls' Z axes will be offset from the world Z axis, which can be a hassle when animating. You probably want to leave it disabled.
Click "Create Spine Rig".
Enable the "Hide Translate on Head/Neck Controls" checkbox if you don't intend to move the head and neck controls around and would like to prevent the translation attributes from cluttering up your channelBox.
Click "Create Head Rig".
Here's where we get into the magical realm of split joints, and an important difference between this and previous versions of the script. The up (upArm, upLeg), mid (elbow, knee), down (wrist, ankle), and split joints are now broken out into individual weight joints (joints to which you bind your mesh) and the underlying rig joints upon which they sit. So now, instead of binding your mesh to and upArm joint, you'll bind it to an upArm_weight joint which is constrained to the upArm joint. It's an additional bit of complexity that allows for much greater flexibility in dealing with limb joint X rotation.
The UpLeg and LowerLeg number split joint should match the number of split joints on your skeleton. Note that you can change either of these values before creating the rig, but if you do, your existing split joints will be deleted. This isn't a big deal if you haven't bound a mesh to the skeleton, but if you have, you'll have to add the newly created joints (influences) to your skinCluster and adjust your skin weights accordingly.
You're almost done, but before you can rig the leg, you have to specify where the heel should be positioned. Click the "Create Heel Locator", and two locators will appear, one under each ankle. Move the locator under the character's left ankle to the position where the foot should pivot on the heel.
When you're happy with the heel position and number of split joints, click "Create Leg Rig".
The arm split joint sliders are like those for the legs. The only other arm option on the "Arms" tab is the "Align Hand IK to World Axes" checkbox. Disable to align the hand IK control to the wrist/hand joints instead of the world axes. This can cause issues when working with animation cycles, and unless you have a good reason (which I can't think of), you should just leave it checked.
Click "Create Arm Rig".
The final tab, "Hands", has one checkbox: "Create IK Finger Controls". Enable it if you want your rig to include the option to manipulate the fingers with individual IK controls.
Click the "Create Hand Rig" button, and you're done!
The Rig Settings Control holds attributes that govern other parts of the rig. A couple of important examples:
The master controls (spineMaster_ctrl and neckMaster_ctrl) have attributes on the rigSettings_ctrl that specify the amount of translation and rotation inherited by each child control curve. You can adjust these values to tweak the way movement is distributed among the control curves. Note that values for each control should add up to 1.0, otherwise the movement of the child curves won't match that of the master control.
The rotations of split joints are another important set of attributes that are carried on the rigSettings_ctrl. It will have an attribute for each split joint in your rig. You can adjust these values to specify the amount of the upper (in the case of the upArm and upLeg splits) or lower joint's (foreArm and lowLeg) twist (X rotation) that each split joint will inherit.
Two notes here: first, the split joint rotation values do not have to add up to one, and second, the rig's upArm and upLeg split joints (if they exist) will carry all of the upArm and upLeg X rotation. The shoulder and upLeg have no X rotation, unless there are no split joints.
Here's a quick run through of the items in the "Tools" menu.
Note that several tools require a rig to be selected before they will work. All it means for a rig to be "selected" is that one or more of its control curves are selected.
The tools menu contains:
Select All Character Controls: Select all of the control curves for the currently selected rig.
Skeleton Maker: Bring up the Skeleton Maker UI.
Rig Remover: A tool to remove all or part of a rig from a skeleton.
Weight Joint Selector: A UI to help you select the weight joints for binding a mesh to its skeleton.
Skeleton Updater (Premium): A tool that enables you to update your abAutoRig v. 1 skeleton to a type that will work with the current version of the script. The existing rig must be removed from the skeleton before it can be updated (remember to save your wires first).
Install Character Marking Menu (Premium): Click to install and select the hotkey for the abAutoRig character marking menu.
Joint Orientation Tool: A simple tool to rotate the local rotation axes of joints on your skeleton. You shouldn't need to use this one.
Change Rotation Order Tool: Use this tool to change the rotation order of a control curve while preserving any existing animation on it. If there are no keyframes set on the control, you should change the rotation order with the attribute editor.
Stretchy Spline From Curve: Create a stretchable, ikSpline based joint chain from a curve.
Wire Replacer: Customize your rig's control curves by choosing from a library of shapes, all of which can be rotated, resized, and mirrored.
Wire Color Control (Premium): Quickly change the default colors of the control curves on the currently selected rig.
Save Wires To Shelf: Save the currently selected character's customized control curve shapes (and colors, if you're using abAutoRig Premium) to a shelf button for later recall. Note that if you hold the control key while you click the saved shelf button, only the currently selected control curves will be restored.
Quick Create Character Set: Create a character set for the currently selected rig.
Make abxPicker Character Sheet: Creates a node that will show up as a character UI when using the abxPicker script (I know it starts with "ab", but I didn't write it). If you have an awesome customized character sheet that you've created for an abAutoRig rig (and you want to share), please send it my way and I'll incorporate it into the script.
Show IK/FK Snap UI: Bring up the IK/FK snap UI for the currently selected rig.
Make IK/FK Snap UI Shelf Button: Creates a shelf button that, when clicked, will display the IK/FK snap UI for the currently selected rig.
Space Switcher (Premium): A space switching UI.
Space Switch Matcher: Copy and paste control curve positions across keyed space switches.
Mirror Pose Tool (Premium): An easy way to mirror your character's poses.
Reset Character To Default Pose: Resets the currently selected rig to its default T-pose.
Reset Selected Control Curves To Default: Resets only the currently selected control curves to their default positions.
Reset Character To Proxy Pose (Premium): Resets the currently selected rig to the last pose of the proxy before being turned into a skeleton.
That's it for now. Don't forget to use the new "Check for Updates" item in the "Help" menu of the script. I probably went a little overboard on it, but it should be pretty useful.
I plan to post some run through videos soon, so keep an eye out for those, and be sure to email me with any feedback that you might have. It's always appreciated.
Added "useAimTwist" attribute to hand and foot ctrl curves. Enabled (set to one) it will use the previous aim constraint method of reading twist from wrist and ankle joints, set to zero it will use a ikHandle based reader, which is less prone to flipping.
Note that there is now no distinction in the way the upper and lower limb split joint twist values on the rigSettings_ctrl are interpreted. Each value is now specified as the percentage (0 to 1) of the limb section's total twist that the split joint should inherit.
For each S&S system, there is a set of attributes created on the cogCtrl, footCtrl, or handCtrl curves (based on the part of the rig being created with S&S) and another set added to the rigSettings curve. The limb ctrl curve (cog, foot, or hand) will hold two new S&S attributes:
The rigSettings ctrl will receive the following Squash and Stretch attributes:
Added option for adding lattice based S&S to the head (Premium), which can be applied any time after the head rig has been built. Added Eye and Jaw selector buttons to Weight Joint Selector. UpLimb joints now have attribute to specify twist inherit on the rigSettingsCtrl curve. Fixed bugs with the rubberhose arms that caused the wrist to be flippy. Fixed issue with rubberhose UI not updating correctly.
Note that scaling joints (as the rig does to create Squash and Stretch) can cause issues when working with Dual Quaternion skinned meshes. I'm not sure why, but it doesn't happen when the "Classic Linear" skinning method is selected in the skinCluster node.
Added "HeadSqStrLatticeVis" attribute to the rigSettingsCtrlCrv when the Head Squash and Stretch Rig is applied (Premium).
Added translateable hip and shoulder controls (with visibility controls on the foot and hand control curves) (Premium). Added rubberhose controls for knees and elbows to move them independently of the limb joint chain (Premium). Adjusted default S+S values.
Added abAutoRigAnimatorTools to Premium. It allows animators who don't need any of abAutoRig's rigging tools access to its animation tools, like the marking menu, IK/FK snapping, space switching, etc. You are welcome to use it with any number of animators working on a project with at least one registered copy of abAutoRig Premium. However, because the tools overlap some of those in Premium, you are not allowed to redistribute it. Please do not include it with any characters rigged with abAutoRig that you release to the public. Doing so would be severely uncool.
Moved Reset Pose functions to new script menu named "Reset Pose" and added three new menu items:
To allow poses to be reset, the PV and several spine controls are group frozen instead of having their transforms frozen.
Added "Split Joint Weighter" to "Tools" menu. It's a UI to help quickly set the twist contributions of multiple upLimb split joints by specifying the first and last joint twist amounts (I recommend beginning with a start value of .4).
Added "Set Split Joint Weight Defaults" and "Revert To Default Split Weight Settings" to the "Options" menu. Note that split joint weight settings are saved inside the skeleton of a rig, so when you load a character that has previously been rigged into the UI, its default split weight settings will overwrite the previous default settings. Use "Revert To Default Split Weight Settings" to get back to the default settings.
Added buttons to adjust the split joint settings to the "Leg" and "Arm" tabs of the UI.
Elbows and knees are now rotatable in both Z and Y. Rotating them in their secondary axis will contribute to the upLimb twist. You can disable this twist contribution by setting the "midJntUpLimbTwistScalar" attribute (found on the hand and foot control curves) to zero. Note that switching limbs with non-zero secondary rotations from FK to IK will sometimes display twist discrepancies (yes dear reader, the very same twist discrepancy issue first elucidated upon by the esteemed F. S. Scrimmenhour in the year 1843).
The default elbow FK control rotationOrder is now "xzy", and the default knee FK control rotationOrder is "xyz".
Added "upLimbAutoTwist", "upLimbTwist", "upLimbTwistScalar", and "midJntUpLimbTwistScalar" (mentioned above) attributes to the hand and foot control curves. If "upLimbAutoTwist" is 1, the upLimb will rotate as it always has and the "upLimbTwist" can be used to modify the twist amount. If "upLimbAutoTwist" is 0, the upLimb will only rotate based on the value of "upLimbTwist". "upLimbTwistScalar" allow you to adjust how much of the actual twist reader's rotation is fed to the twist joints.
Mid RH control is no longer dual constrained to the up and mid limb joints (fixes an issue with the mid joint flipping at full extension in earlier versions of Maya).
Added shoulder and hip controls that were being missed to mirrorPoseUI.
UpCtrlParentSplitJnt is now reverse rotated to offset upArmJnt rotation when setting up non-RH limbs with split joints.
Exposed rotate attributes on PV controls to allow spaceSwitching to match rotation.
Discovered a flip on the first low limb split joint in an extremely narrow range which turns out to be a Maya bug. You can find a description and script fix here.
Added "Freebies" folder that contains an unreleased version of abScriptMenu 2.0. New to this version is the ability customize the order in which the scripts are listed in the menus, the ability to add dividers to your menus, and a "Recent Script" menu, which lists the last ten (by default) scripts that you've run. I'll probably release it for free soon, but until then please don't redistribute this copy.
Note that there must be an existing (abAutoRig created) skeleton in your scene before you can use it.
The basic workflow is:
And with that, here's what's changed: