AnimPolish Documentation


AnimPolish is a set of deformation tools that can be used on any polygon geometry in Maya 2015+, whether or not it's animated. Some of the tools can also be used on nurbs curves. The tools are intended to be used as a final step on finished animation. However, depending on your workflow, you may still be able to update animation after working in the polish step. Hover over any UI element to see summarized instructions about each tool. It is recommended to use this tool while animation evaluation is set to 'DG'. You can quickly toggle this with 'Toggle DG/Parallel' at the top of the AnimPolish UI.


Installing AnimPolish is extremely simple since it does not use any plug-ins. This also means you can install at most studios and schools, as well as at home. To install, simply unzip the download and copy the "js_animPolish" directory into "maya/scripts". The end result should be "maya/scripts/js_animPolish". The "maya" directory is usually found on your home drive or in "Documents".

In a fresh Maya session, copy/paste the following code into a Python tab of the script editor and either run it or middle-mouse drag it to a shelf to make a button:

import js_animPolish.js_animPolish_ui as js_animPolish_ui

reload (js_animPolish_ui)

js_animPolish_ui.ui ()

Or, if you find that you see UI bugs such as double buttons, try the following instead (running this way will prevent docking):

import js_animPolish.js_animPolish_ui as js_animPolish_ui
reload (js_animPolish_ui)
js_animPolish_ui.ui (None)

Multi-User Situations (For TDs)

If multiple users run this tool from a shared directory, you might want to fill in the
custom "user_data_directory" variable at the top of "". I'd recommend writing some custom code above it to query the current user and concatenate a final path. If you don't, the "Save/Load Settings" and "Copy/Paste Attrs" tools will end up overwriting eachother between users.

Sticky Mod


The Sticky Mod is an alteration of the native Maya softMod node that rides along the surface of an object or a nurbs curve, allowing quick edits. To create it in the default mode, select 1 vertex and click "Create Sticky Mod". The settings in the UI, aside from "Smooth Map" and "Force Display", simply dictate what the default values upon creation will be, and can be changed after. Make sure you turn on visibility for Nurbs Surfaces and Handles, and Nurbs Curves if you are creating in that visualization mode, or you might not see the full Sticky Mod. However, this is handled automatically for you if "Force Display" is turned on.

Basic Creation

Adjusting "Falloff Radius" adjusts how far the Sticky Mod's influence reaches when pulled away from the surface. Some of the other attributes adjust the falloff as well. The sphere that visualizes this falloff can be selected, and since it is the parent of the Sticky Mod, even if its display is turned off, selecting the Sticky Mod and pressing "up" on the keyboard will bring you back to it. Moving this sphere changes where the origin of the deformation falls. Keep in mind that the actual spot the Sticky Mod's rivet is following will always be the vertex it was created on.


If created with multiple vertices selected, the rivet will be built on the final vertex in your selection. So basically, select a bunch of vertices, then deselect and reselect the one you want to rivet to. The benefit of selecting multiple vertices is that they will be automatically flooded and smoothed, according to the "Smooth Map" option in the UI. The "Falloff Radius" will be automatically set to 100 and the sphere will be hidden, since relying on these is rare when painting maps. To paint the map by hand, right click the geometry and hover over "softMod", and choose the correct stickyMod that ends with "_DFRM".

Misc. Features

To add or remove geometry from the Sticky Mod's influence, just select it and some geometry, and hit the corresponding button. Order doesn't matter. To aim it towards an object, first select the object to aim at, followed by the Sticky Mod. Note that "Orient" and "Aim" are not continuous -- they just adjust the current orientation. If you want to have it continuously aim at or orient to something, using a standard aim or orient constraint on the offset (the sphere) should work fine, as well as on the rivet if rotations are killed, which you can do with the "Break Rotation" button. All these helpers run with the basic handle selected.

Sculpt Pose



Sculpt Pose is a quick way to create keyable sculpts that layer over existing animation. Standard sculpts are keyed manually, but Pose-To-Pose sculpts automatically tween in and out of each other over time. Because of this, it's not recommended to manually key P2P sculpts. To create any sculpt, select at least 1 geometry, and click either "Sculpt", or "Sculpt From Zero" to start sculpting with a fresh start. The existing sculpts that are negated when you click "Sculpt From Zero" can be chosen through the "SFZ" options in the UI. When you're done sculpting, select the sculpts and hit one of the "Apply" buttons.

Apply Standard

The only bonus feature of standard sculpt application is the "1-Frame" option, which automatically keys 0-1-0 around the frame you apply on.

Apply Pose-To-Pose

Applying P2P sculpts will trigger a function that re-keys all other P2P poses on the same "P2P Level", which can be changed in the UI. Changing level is useful if you want to make multiple sculpt passes for the same geo, such as a cleanup pass on one arm, and then another for the remaining arm. Note that the 2 buttons underneath "Apply P2P" are not "Apply" buttons, but should be ran on objects that already contain P2P sculpts as a way to quickly create a "zeroed out" sculpt, or a "hold" sculpt that has the same data as the previous P2P sculpt on the timeline.


Deleting sculpts requires selecting it in the channel box before running. This will delete associated nodes -- not just the attribute. Deleting P2P poses should also re-key the current P2P Level.


There is no true edit mode in this tool, it's mostly just a shortcut to create a standard sculpt that is automatically driven by the sculpt you selected at creation. This allows you to remove edits easily. There is no need to edit P2P poses, as it wouldn't be any difference in practice than just creating a new P2P sculpt on the same frame.

Misc. Features

Use the checkboxes to adjust whether sculpting and applying automatically switches visibility for you, whether sculpts get a nice shiny blue shader, and whether cluttered extra nodes get hidden from the channel box and attribute editor. Use "Sort Channel Box" if you undo a delete and the order gets messed up.

Wrap ++


Select objects to wrap, followed by the object to wrap to, to create a Wrap ++, which is just a duplicated object wrapped and then blendShaped back for paintability, and connected to a keyable attribute. If you want to wrap an object to just a few specific faces instead of a whole object, use "Extract Animated Faces". Load in some vertices to the UI to be automatically flooded and smoothed, saving bit of time. This can be left empty. "Wrap To World" isn't actually a wrap -- it just duplicates the object in space without motion, and blends it in.


Select objects and run "Subdue" to get a keyable attribute that dials in a blendShape that consists of a duplicated geometry with softer overall motion. To be more technical, the object is duplicated, its vertices are keyed to animation curves, those curves are resampled according to the "Resample Rate" option, the new geometry is geocached and cleaned up, and finally blended back. In short, set "Resample Rate" to 3 to get a pseudo-deformer that rekeys vertices on threes, 4 for fours, etc. This tool also works on selected vertices for auto-flooding and smoothing. Note that this is a fairly slow procedure since the timeline has to run through multiple times. The viewport is disabled for this to make things faster, but if it by chance errors while running, the viewport will remain locked. Use "Fix Viewport" under "Utilities" to unlock it. Be aware that this tool tends to eat up a lot of Maya's background memory when ran on dense objects and long timelines. This likely won't cause any scene slowdown, but when you close your scene or open a new one, or maybe when saving, the scene might freeze up for a while before returning to normal.

Misc. Deformation



These tools work on selected objects, or vertices for auto-flooding and smoothing. They are both heavy calculations since they run on a duplicated object with all connections intact -- basically two rigged geometry per instance. This can hurt your frame-rate. Because of this, you may select an existing attribute of "Grow/Shrink" or "Iron" to, when you click them again, add extra nodes to existing duplicates instead of creating new geometry each time. Of course, this will be not take into consideration any deformation applied after their initial creation.


Create a keyable attribute that pushes all vertices along their normal direction. In other words, it bloats and collapses geometry.


Create a keyable attribute that averages vertex positions. In other words, it softens harsh bumps and wrinkles.

Native Maya


Shortcuts to native Maya tools useful for this kind of work. Maya tool documentation can be viewed by pressing F1 in your version of Maya.

Assign Colors


When working with cached geo, it will often all come in with "lambert1" assigned, meaning it is hard to notice penetrations. Use this section to assign Blinn or Lambert shaders with bright colors for easy penetration detection. Use "Random Colors" with multiple objects selected to speed up the process.




Select 1 vertex to pin a locator to it, including orientation.

Cycle Camers

Cycle through the cameras in the scene.


Shortcuts for baking objects to keyframes with the viewport disabled. Use "Fix Viewport" if these error out. "Quick-Bake Selected" works on any object. "Rivet + Quick-Bake" and "Riveted Plane + Quick-Bake" require a vertex selection.

Fix Viewport

Unlocks the viewport, in case any of my tools that lock the viewport for speed increases error out while running.

Smooth Preview

By default, Maya's smooth preview (3 on the keyboard with objects selected) uses an imprecise algorithm that displays fake object clipping when "wireframe on shaded" is enabled, or the object is selected. While some clipping may come from the camera clipping plane, this smoothing issue is extra and causes polishing of things that needn't be polished. Using my version, the slower-yet-more-accurate smooth preview mode will be engaged instead. I recommend the "1-Div" version since it will run much faster than the default "2-Div" that is run when you press 3.

Cross-Session Copy/Paste Attr

With any object selected, this will store current attributes in an external Python file to then be pasted on any other objects. This works between Maya sessions.

Flood Smooth x10

When in the paint tool for any deformer, floods smooth 10 times.

Parent Cluster Inverse Matrix

Adjusts connections on selected clusters so that it only deforms when its values change. In other words, you can parent its parent group to rig controls and use it in local space.




Creating alembic caches allows you to polish geometry without the rig slowing you down, usually in real-time. Use this section to manage this process. Make sure you set the "Directory" or this section will not work. Simply hitting reset in a scene without any cache data will set the "Directory" to the directory of the current file, in other words, "current/polish". Try to make sure you don't plan on adjusting rig animation at this point, since it will be at least a little extra work to apply polishing after animation changes occur.

Exporting From Anim

Load geometry or their shared parent group into "Geo/Grp". Something like a "char_GEO" group is recommended, though you can dictate specific pieces if you prefer. Just know that actively changing up which geometries are in which caches could cause some snags later if you end up doing any cache swapping. Load any cameras you want to take with you too. If you want your polish version to contain a custom suffix, add this in the UI. When you hit "Export Geo" or "Export Cameras", a new directory will be created and shown in the UI list, at least if "New Version" was selected in the list. If you export with another version in the list selected, it will prompt you to overwrite it. New versions will be placed and named like so: "polish/001_polish_suffix"

Creating a Polishing Scene

Always start from a blank file when creating a polishing scene to work in. "Import Geo" and "Import Cameras" will import from the selected polish version in the UI list. Apply whatever deformers you want in this scene. Note that in any context, when you import a cache, is is stored as a "_[version]_ABC_CTRL" node in the outliner. In polishing scenes, feel free to import other caches to blend in with "Attach To Selected". This button will blend the first cache of "_ABC_CTRL" nodes in selection to the second. This will also add envelopes to the "_ABC_CTRL" nodes to blend all deformation on and off, though you can also find each of their blendShapes on each object for individual control.

Exporting To Anim

Use the same "Export Geo" button from before to export your new work. You might want to add a custom suffix so you remember what you did in this version. Back in your anim scene, import the new version and click "Attach To Anim" to automatically create blendShapes for all imported geometry. You may also use "Attach To Selected" to manually blend the first cache of "_ABC_CTRL" nodes in selection to the second. This will also add envelopes to the "_ABC_CTRL" driver nodes to blend all deformation on and off, though you can also find each of their blendShapes on each object for individual control.

Swapping Cache Versions

You can swap any selected "_ABC_CTRL" cache to a version selected in the UI list. Note that in some versions of Maya, you will have to save and re-open your file to see the changes.