code of the day cotd

Code of the Day: Skinny

Skinny 3.9.0 script by asod:

Skinny is a tool that has a couple quick menus for quickly painting paints on a rigged character (or object). The tool allows grouping of objects into sets to allow them to be painted individually, as well as a number of tools for selecting or organizing mirroring, rotating joints while painting, removing influences, quick brush size options for painting and more.

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

Functionality: 7
The tool does not seem to do a lot of error checking, or at least does not seem to guide the user to use the tool correctly. I found that there are a number of error messages, but often were not that helpful to the user (without looking at what was happening in the code). Conceptually the functionality is interesting, but the having the tool guide the user to make correct decisions would certainly help it be more powerful. The ability to turn the functionality on or off in the menu is nice, but some things (such as the fact the creation of the default group name is invalid), could be put in place that help the user use the tool more effectively.

Design: 6.5
The code for the most part breaks up functionality into logical functions, most of them well encapsulated in terms of functionality. There are a of global variables, and complex scriptJobs which complicate the design, but most of that is fairly minimal. There are a number of known bugs listed both in the code and in the help menu, which would be nice to have fixes (or workarounds).

Style: 6
The code style is a little inconsistent, naming conventions for functions seem to change (for both private and public methods), but also the indentation for functions is not very consistent which makes part of it hard to read. Some of the areas such as listing attributes for the UI are consistently spaced, and yet others, such as nested if statements, are not. While it only happens in one place, hardcoding a path to E:/My Pictures/maya to look for textures could be handled in a slightly different way.

Documentation: 7.5
A lot of the code has pretty good documentation about the logic of the function. The inclusion of the help menu and bug list were also nice, but a little more information would be useful. I feel if the code guided the user a little more there need for documentation would not be as important, but as it stands, some additional information about how to use the tool would benefit most users.

Reusability: 6
The code base is not huge, but may still benefit from breaking some of the logic into separate files (perhaps one for the interface and the other for functionality). A little more consistency in the code base would improve the maintainability of the code as well. The code being released with known bugs, is understandable, but still makes updating and expanding more difficult because of these issues.

Overall: 7.5
The functionality is a clever idea, and I believe that once an artist gets a handle on how the tool can be used, they will enjoy the functionality that is has to offer. I feel that with a few additional bug fixes, some more error prevention design (to help guide the user down the correct path), and a little bit of code cleanup, this tool would be a very nice way to handle painting skin weights.

Until next time,
Michael Hubbard

Leave a Reply

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