Tools

This is a collection of Maya tools I’ve written that I use on a daily basis. I’ve had so much help over the years from people sharing their scripts, that I’ve always wanted to do the same. Feel free to use, share and edit these.

If you want to always keep everything up to date, your best bet is to clone my gitHub repository.

If you’re happy with these tools and would like to see more, consider supporting my Patreon.

Download Description

ml_animCurveEditor.py
Various tools for editing animation curves, similar to video clip non-linear editing tools.Maya’s tools for editing lots of keys can be slow or cumbersome, this is meant to bean alternative interface for editing lots of keyframes.

ml_arcTracer.py
This tool is a substitute for tracing arcs on your screen by hand with a marker.It creates a thick line to represent the path of an object, either as an overlay on your camera view,or in world space. It’s a bake process; like a marker it doesn’t update interactively.Lines are colored randomly, to distinguish between multiple traces.Frames are marked along the arc as black dots, with keyframes colored red, andthe current frame is highlighted.

ml_ballisticAnimation.py
Runs very simple gravity physics on the translation of an object, taking into accountinitial velocity.

ml_breakdown.py
Blend a keyframe or pose with the next or previous keys, essentiallycreating a breakdown pose that is weighted one way or the other.

ml_breakdownDragger.py
Blend a keyframe or pose with the next or previous keys, essentiallycreating a breakdown pose that is weighted one way or the other.The weight of the blend is controlled by dragging the mouse in the viewport.

ml_cameraDepthDragger.py
Move objects closer to or further from camera, such that they don’t change locationin screen space, just get larger or smaller in frame.

ml_centerOfMass.py
Create a locator that approximates the Center of Mass for the character.This locator can be live and simply used as reference, or you can transferthe root animation of your character to the center of mass, and thenback again after you’ve adjusted any motion.This workflow is helpful for debugging action animation when a charactersbody needs to move in a believable way.

ml_colorControl.py
Color selections of nodes as a gradient. Choose a first and last color,and the intermediate colors will be generated by offsetting hsv.

ml_controlLibrary.py
This tool is for exporting and then importing nurbs curvesto be used as animation controls.

ml_convertRotationOrder.py
This is a tool for changing the rotation order of an object while preserving keyed poses, forwhen you want to change the rotation order after you’ve already done animation, or don’twant to alter the pose of an object.

ml_copyAnim.py
Copy animation curves either completely or in part from one node or hierarchy to another.

ml_copySkin.py
Copy a skinCluster from one mesh to another, or to a selection of vertices.If no skin exists on the destination, one will be created with the same influences.Otherwise any missing influences will be added in order to copy accurate weights.

ml_deleteKey.py
This is a more robust tool for deleting keyframes in Maya, includingdeleting keys on the current frame and which are visible in the graph editor.Alternately, delete selected channels.

ml_frameGraphEditor.py
Frame the graph editor nicely based on the time slider range or the selected keys.

ml_goToKeyframe.py
This is simply a more robust way to navigate to the next or previous keyframe.It recognizes only keys that are visible in the graph editor, and has options toonly navigate through selected keys, and to round to the nearestwhole frame, if you don’t like editing on sub-frames.Finally, it can look for keys in the whole hierarchy of the selected node,to help with keeping all a character’s keys on the same frames.

ml_graphEditorMask.py
Quickly mask the visible curves in the graph editor.

ml_hold.py
This is a tool for creating animation holds, either for individualposes or over a range of keys. Select a range of keys in the graph editoror the time slider, or match your current pose to the next or previous one.

ml_lockAndHideAttributes.py
Quickly set the locked and keyable state of attributes in the channel box. This toolis designed to be used as hotkeys for quickly locking and hiding attributes. It will operateon all visible attributes, unless specific channels are selected. When using to unhide attributes,it will unhide all standard transform attributes, and all user defined attributes.

ml_parentShape.py
Reparent shape nodes to a different transform, or unparent shapenodes to a new transform.

ml_pivot.py
Change the rotate pivot of animated nodes. This is not a pivot switcher, it changes the pivot forthe whole animation but preserves position by baking translation on ones. EventuallyI’d like to make it a bit smarter about how it bakes.

ml_puppet.py
Support tools for puppets created by http://morganloomis.com/puppeteer

ml_resetBind.py
Quickly remove and recreate a skinCluster while maintaining history.Essentially this allows you to “reset” the skin cluster after you’vemoved some joints. It also deletes the original bindPose node.

ml_resetChannels.py
Sets the selected channels in the channel box to their default values,or if no channels are selected, resets all keyable channels.

ml_selectKeyed.py
Select any node in an animated hierarchy, such as a puppet, and runthe command to select all the nodes in the hierarchy that are keyed.If the selected object has a namespace, it will only return nodes inthat namespace. The top node of the hierarchy is excluded.

ml_setKey.py
This is a more robust tool for setting keyframes in Maya, includingsetting keys on selected channels, keyed channels, and several other options.

ml_softWeights.py
Set cluster or skinCluster weights based on the current vertex soft selection.

ml_stopwatch.py
This is a tool for helping to plan out the timing of a shot. It’s a simpletimer that records the timing of button clicks, and then reports them in aUI that allows you to record notes for individual beats and navigate throughthem in the timeslider.

ml_tangentWeight.py
Scale keyframe tangents up or down incrementally without changing their angle.The result is basically increasing or decreasing the influence of a keyframe on the animCurve.Can also weight tangents toward the left or right, which increases influenceon one side of the keyframe while reducing it on the other.

ml_toggleVisibility.py
Toggle the visibility of an object off and on, regardless of the attribute’slocked or keyable state.

ml_toolbox.py
Create custom menus in Maya’s main menu bar for organizing scripts, just by putting them into directories.Insert tools into the existing maya menus, or add entirely new menus.

ml_transferKeytimes.py
Copy keytimes from one node to another. Animation isn’t fundamentally changed, but keyswill be added or deleted.

ml_utilities.py
ml_utilities isn’t a stand alone tool, but rather it’s a collection of support functionsthat are required by several of the tools in this library. The individual tools will tellyou if this script is required.

ml_worldBake.py
Temporarily bake animation to locators in world (or custom) space.Use this tool to preserve the worldspace position of animation when you need to makepositional changes to an object’s parent.