code of the day cotd

Code of the Day: AbAutoRig

Again with creative crash site today, I looked at the AbAutoRig script by crumbly:

This script is another auto rigging tool (a focus of mine for the last little while), and gives a feature set for building a bipedal skeleton. Some of the options include: FK/IK controls with auto align, mirroring tools, scalable stretchy spline joints.

Language: MEL
Type: Maya Editor Script
Script Files: 1
Number of lines: 10469

Functionality: 9
The functionality is quite nice, and I especially like the initial proxy rig creation. This creates a simple skeleton that allows spacing and joint placement to quickly be moved around before the actual skeleton is created. Some of the options for creation like number of fingers was a nice touch, and quick and intuitive to use, and the error messages help guide the user down the correct path. There are a ton of options in the tool menu for things like adding split joints, weighting, and lots more. Overall the tool offers quite a lot of functionality, with additional options to save information to the shelf or nice to haves like resetting the rig to the original position.

Design: 5.5
The first thing I noticed was that the code was all in one very large (10469 lines) long file. File length is certainly also an element of style, but I feel that when a file gets this long there is simply too much going on. It would be much easier to maintain and understand if it was broken up into even three or four logical files (ideally closer to fifteen to twenty different files, since there is so many different options). Aside from the huge length of the file the rest of the design is well organized, the function length is kept to a reasonable length and the code does a pretty good job separating out the logic into appropriate functions. The main function is buried in the middle of the code (line 3321) and shows that navigating around the code to be somewhat confusing.

Style: 8
The code is quite well organized (which helps when it is so large) and looks to follow consistent naming conventions and appropriate variable and function names. The use of whitespace and indentation is well done, and makes the code easier to read. The code makes good use of comments which also helps.

Documentation: 9.5
The documentation and commenting is quite well organized and there are lots of tutorial videos (hours worth) on the website. Overall a nice job on the online documentation, and the videos are very helpful and thorough. Check them out at:

Reusability: 5.5
The functions themselves could probably be made to be reusable, but the massive size of the script would make it difficult to maintain. Eventually it would get very difficult to do any bug fixes or updates as it is not that easy to navigate the code base and which functions all interact.

Overall: 8.5
The functionality is really what makes this tool useful, I feel that with some moderate refactoring the individual pieces of the code are well written, but it would greatly simplify the code by separating out and encapsulating functionality in separate functions, instead of the slightly monolithic approach.

Until next time,
Michael Hubbard

Leave a Reply

Your email address will not be published. Required fields are marked *