Animation Tool Kit
A production-focused Maya toolkit that removes repetitive setup from blocking, polish, and shot handoff — so animators can spend their time animating.
Animation Tool Kit (ATK) is a Maya toolbar that consolidates the small, repetitive jobs animators do every day — tweening, retiming, ghosting, mirroring, versioning, playblasting — into a single docked strip of one-click tools.
Why it exists
Most animation friction isn’t the animation itself — it’s the setup around it. Switching panels to add a frame, hand-rolling a tween, snapping a control, or saving a versioned scene all add up across a shot.
ATK collapses those steps into a toolbar built by animators, for animators. Every tool is designed to do one thing quickly and predictably, with sane defaults that hold up under production deadlines.
What you get
Download & source
The Latest Release card on this page pulls the current build straight from GitHub. The package includes a drag-and-drop MEL installer — drag it into the Maya viewport and the toolbar installs immediately, with a shelf icon added to your current shelf for toggling it on and off. No scripts-folder setup, no Maya restart.
For source, changelogs, and full release history, follow the GitHub Repository link in the sidebar.
Who it's for
- Character animators working in Maya who want fewer clicks between idea and pose.
- Animation students building production-grade habits before they hit a studio pipeline.
- Technical artists looking for a lightweight, readable starting point for their own utility scripts.
Feedback, bug reports, and feature requests are welcome on GitHub — ATK grows directly out of what production animators ask for.
Toolbar Tool Reference
A complete reference for every tool in the ATK toolbar — what each one does and which Python entry point it calls internally.
Timing Tools
Blends poses between keyframes with multiple easing modes.
vertex_tweener
fn: show
Inserts or removes frames while rippling downstream keys.
insert_remove_frames_tool
fn: show
Provides Graph Editor tangent and interpolation controls.
tangent_tools.main
fn: launch
Creates in-between poses from selected keys/controls.
3rd-partyBundled open-source tool by Justin Barrett. Available independently at github.com/The-Maize/tweenMachine.
tweenMachine
fn: start
Adds noise, easing, and scale effects to animation curves.
noise_generator_1_0_0
fn: launch
Copies and pastes world-space transforms between objects.
xform_copy_paste
fn: show
Creates and navigates timeline bookmarks.
time_bookmarks.main
fn: launch
Viewport Tools
Gives precision transform controls with micro-speed scrubbing.
Micro_Manipulator_v1_0_0
fn: show
Creates temporary non-destructive rotation pivots.
temp_pivot_tool
fn: show
Displays multi-frame ghosting for motion reference.
onion_skin_2_1_0
fn: launch
Snaps one object to another using world-space transforms.
anim_snap
fn: launch
Rigging Tools
Builds curve-based rig control shapes.
wire_shape_tool
fn: show
Resets translate/rotate/scale on selected objects.
transform_reset_tool
fn: show
Creates, stores, and recalls named selection sets.
SmartSelectSets_v2
fn: show_smart_select_sets
Captures rig snapshots for Mirror Controls and related tools.
character_snapshot_v1_0_0
fn: show_dialog
Mirrors, swaps, or flips controls across left/right sides.
mirror_controls_v2_3_0
fn: MirrorControls.show_dialog
Pipeline Tools
Handles intelligent scene versioning and backup.
savePlus_launcher
fn: launch_save_plus
Manages animation clips and poses in a visual library.
3rd-partyBundled open-source tool by Kurt Rathjen. Available independently at studiolibrary.com.
studiolibrary
fn: main
Creates preview playblasts with masks and presets.
playblast_creator_ui
fn: show_ui
Verifies key Maya user directories and path setup.
user_directory_check
fn: show
Source of truth: atk_toolbar/atk_loader.py (TOOL_REGISTRY).
Release Notes — ATK_v1.1.0
## ATK_v1.1.0 — Bookmarks, Inbetweener, Noise Generator, Character Snapshot, and Mirror Controls Reliability Update This release improves the reliability, usability, and visual polish of several core tools in the **Animation Tool Kit** for Autodesk Maya. The update includes major timeline reliability fixes for the **Bookmarks** tool, improved interaction and workflow safeguards for the **Inbetweener / World Tweener**, a rebuilt **Noise Generator** interface that now matches the updated Inbetweener slider style, a refreshed ATK toolbar mini-slider interface, and a substantial **Character Snapshot / Mirror Controls** update that makes Character Snapshot the central source of truth for rig matching, manual pairs, exclusions, channel rules, and mirror/flip behaviour. This release also includes UI cleanup for the Character Snapshot and Mirror Controls windows, removes redundant snapshot buttons, replaces unsupported Maya UI glyphs, updates tool version numbers, and syncs the updated files into the distribution build. --- ## Release Highlights * Improved Bookmarks timeline accuracy and refresh stability. * Improved Maya timeline callback and scriptJob cleanup. * Added World Tweener safeguards to prevent multi-controller use. * Rebuilt the Inbetweener slider with a cleaner custom visual style. * Added live percentage feedback while dragging the Inbetweener slider. * Rebuilt the Noise Generator UI in Qt to match the updated Inbetweener style. * Fixed Noise Generator typed value fields, track-click behaviour, channel filtering, bake checks, and undo chunk handling. * Restyled the ATK toolbar mini-slider dropdown. * Refactored Mirror Controls to use Character Snapshot as the source of truth. * Added Character Snapshot schema updates for mirror rules, default values, manual pairs, exclusions, and flip settings. * Fixed Mirror Controls rule editing so user edits now affect runtime mirroring. * Fixed Mirror Controls flip, middle-control, and Not Selected workflows. * Cleaned up Character Snapshot and Mirror Controls interfaces. * Removed redundant snapshot buttons and replaced unsupported emoji/glyph icons. * Updated Noise Generator, Character Snapshot, and Mirror Controls version references. * Synced installers, toolbar registry, HTML reference, and `dist` build copies. --- # What’s Changed --- ## Bookmarks Tool Updates ### Timeline Reliability The Bookmarks tool has been updated to better align bookmark markers with actual Maya timeline frame values. * Bookmarks are now tied more reliably to Maya frame positions. * Marker placement is calculated from the current timeline and playback range. * Bookmark markers now update more accurately when the timeline range changes. * Improved handling for playback start, playback end, animation range, and timeline display changes. * Refresh logic has been improved so bookmarks no longer remain visually locked after range adjustments. ### Timeline and Callback Stability The Bookmarks tool now responds more consistently to Maya timeline updates. * Improved scriptJob and callback handling. * Added safeguards to reduce duplicate or orphaned callbacks. * Improved stability when the Maya UI is refreshed, reopened, or rebuilt. * Reduced fragile hardcoded assumptions in timeline positioning logic. * Improved error handling around UI refreshes and scene changes. --- ## Inbetweener / World Tweener Updates ### World Tweener Single-Controller Safeguard The World Tweener now enforces a safer one-controller-at-a-time workflow. * World Tweener now blocks use when more than one controller or object is selected. * The selection check includes both viewport selections and objects connected to selected Graph Editor keys. * If multiple objects are detected, the tool now shows a clear popup explaining that World Tweener works on one controller at a time. * The safeguard is shared across the main Inbetweener window, World Tweener pop-out, and ATK toolbar mini slider. * Undo handling has been improved so an interrupted drag does not leave an open undo chunk. ### World Tweener Usage Guidance Additional guidance has been added to clarify how World Tweener should be used. * Main window World Tweener section now states that it works on one controller or object at a time. * Help dialog includes a World Tweener usage note. * ATK toolbar mode tooltip now identifies `WT` as World Tweener and notes the one-controller workflow. --- ## Slider Interface Updates ### Restyled Inbetweener Slider The shared Inbetweener slider has been visually rebuilt for a cleaner and more professional appearance. * Replaced the native Qt groove and handle with a custom-drawn slider. * Added a dark rounded pill-style track. * Added small square tick marks at regular intervals. * Added larger square end caps at both extremes. * Updated the handle to a rounded dark label box using the active mode colour. * LT overshoot zones now display with orange tick accents. * The updated style applies to the main tool window, pop-outs, and ATK mini slider because they share the same slider class. Mode colours remain distinct: * `LT` — blue * `WT` — gold * `BN` — green * `BD` — orange * `BE` — purple ### Live Slider Percentage Readout The slider now provides clearer visual feedback while being used. * While dragging, the slider handle fills with the active mode colour. * The current percentage value appears inside the track while the slider is being moved. * The readout automatically shifts position to avoid overlapping the handle. * When the slider is released, it returns to the standard slider appearance. * Percentage readouts remain consistent across all Inbetweener modes. ### Improved Slider Interaction Slider interaction has been refined for a smoother user experience. * Clicking the visible handle now grabs it without causing an unwanted value jump. * Clicking directly on the track still jumps the slider to that location. * Press, drag, and release actions continue to run through the proper undoable slider session. --- ## Noise Generator Updates ### Qt Interface Rebuild The Noise Generator interface has been rebuilt in Qt to better match the updated Inbetweener tool style. * Replaced the older `maya.cmds` floatSlider interface with a PySide2 / PySide6 tool window. * Uses the same custom-drawn slider style as the Inbetweener. * Added dark pill-style slider tracks. * Added square accent tick marks. * Added labelled handle boxes for each mode: * `NZ` — Noise * `NB` — Noise Build * `SC` — Scale * `ES` — Ease * `EB` — Ease Both * Slider handles now fill with their accent colour while dragging. * Added live value readouts directly on the slider track. * Each slider group now has its own accent colour. * Added styled group frames with short descriptors to match the Inbetweener layout. * Uses the same Qt compatibility layer as the Inbetweener, supporting PySide6 / PySide2 and shiboken across supported Maya versions. ### Window Fit and Layout Improvements The Noise Generator window now fits more cleanly on screen. * Window now sizes itself to fit all five slider groups. * Window height is clamped to the available screen height. * A scrollbar appears only when the screen is too short to display the full tool. * Removed the permanently visible scrollbar from the older layout. * Min / Max range fields have been moved into each group header row. * Layout is more compact and better aligned with the updated ATK interface style. ### Noise Generator Interaction Fixes Several interaction issues have been repaired. * Fixed dead value fields where typed values moved the slider thumb but did not apply changes to animation keys. * Pressing Enter in a value field now applies the effect as a single undoable operation. * Value fields now snap back to zero after applying. * Removed the five per-group Reset buttons because the restore cache is cleared on release and undo is the correct restoration path. * Track clicks now jump the handle and run a full press / apply / release session inside an undo chunk. * Prevented Qt page-step behaviour from changing values outside an undo chunk. ### Channel Filter and Bake Fixes The Noise Generator now identifies driven animation channels more reliably. * Fixed `_get_curve_attr` so it queries downstream connections only. * Prevented animCurve inputs such as pairBlend nodes or character sets from being mistaken for the driven channel. * Applied the downstream-only channel query fix to both the channel filter and `bake()`. * Improved `bake()` end-frame checking by replacing an O(n) range membership scan with a modulo test. ### Robustness Improvements General reliability improvements have been added. * Undo chunks are now guaranteed to close even if an apply operation fails mid-drag. * Tightened broad `except:` handling. * Leftover Noise Generator `1.0.0` workspace controls are deleted on launch. * The animation math for noise, noise build, scale, ease, ease both, and bake remains unchanged. * The `launch()` entry point used by the ATK toolbar remains unchanged. ### Documentation and Version Updates Noise Generator documentation and version references have been updated. * README and install documentation updated. * Fixed stale install instructions that referenced the wrong filename and shelf label. * Noise Generator version bumped to `v1.1.0`. * Toolbar registry updated. * Reference page updated. * `dist/` copies synced. ### Testing Notes The Noise Generator update was verified through offscreen Qt testing with a mocked Maya package. * Module import verified. * Slider painting verified. * Full window build verified. * Slider session paths verified. * Range-change paths verified. A quick in-Maya smoke test is still recommended to confirm drag feel and dock behaviour. The tool is now a floating Qt tool window like the Inbetweener rather than the previous dockable workspace control. --- ## ATK Toolbar Mini Slider Updates ### Mini Slider Dropdown Restyle The ATK toolbar mini-slider dropdown has been updated to better match the visual style of the mini slider. * Dropdown now uses a dark rounded badge style. * The selected mode key uses the active mode colour. * The dropdown border highlights with the active accent colour when open. * The popup list now uses a matching dark theme. * Selection highlighting has been improved for better readability. * Tooltips now provide the full name of each mode. --- ## Character Snapshot Updates ### Character Snapshot as Source of Truth Character Snapshot has been updated to act as the central source of truth for rig matching, mirror pairing, exclusions, channel rules, and flip behaviour. * Character Snapshot now stores validated mirror-pair data used directly by Mirror Controls. * Partner lookup, side classification, manual pairs, exclusions, channel rules, flip-sign overrides, and persistence now delegate through Character Snapshot. * Snapshot data now supports more reliable matching across common naming conventions. * Legacy Mirror Controls snapshot data is migrated non-destructively into Character Snapshot data when available. * Existing schema-1 snapshots still load, with missing data falling back to heuristic behaviour. ### Character Snapshot Schema 2 Character Snapshot now uses an expanded schema for more complete rig data. * Stores tokens, mirror axis, rig metadata, and per-control data. * Per-control data now includes: * side * partner * dominant axes * attributes * default values from the snapshot pose * auto-detected mirror rules * Stores manual pairs and excluded controls. * Adds metadata for channel flip overrides and whole-control flip signs. * Default-pose values are now stored at snapshot time to support better channel copy/negate detection. ### Improved Matching Logic Automatic matching has been rebuilt to support more naming conventions and reduce false positives. * Matching now checks configured tokens first. * Added support for common side-token conventions, including: * `lt` / `rt` * `LT` / `RT` * `l` / `r` * `left` / `right` * `lf` / `rf` * `lft` / `rgt` * Matching is now boundary-aware and case-preserving. * Reduced false matches caused by naive substring checks, such as detecting `rt` inside unrelated names like `shirt` or `upperteeth`. * Partner results are now validated against the scene before being used. * Manual pairs are now namespace-tolerant so bare-leaf entries can still resolve on namespaced rigs. ### Manual Pair Editor Improvements Manual pair handling is now more reliable and safer. * Manual pairs are validated before saving. * Invalid, missing, or temporary names are rejected instead of silently stored. * The pair editor now uses centralized validated lookup logic. * Manual pair detection now works more consistently with namespaced rigs. * Invalid entries are reported clearly to the user. ### Character Snapshot UI Cleanup The Character Snapshot interface has been simplified and cleaned up. * Character Snapshot updated to `v1.2.0`. * Removed redundant left-panel buttons: * Import JSON * Export JSON * Delete * These actions remain available through the File menu. * Removed the redundant `Update / Replace Prefix` button beside Save Details. * Prefix replacement remains available through the Edit menu. * Left panel now focuses on the primary actions: * New from Selection * Refresh * Added clearer hint text for menu-based actions. * Removed emoji/glyph icons that were not rendering correctly in Maya’s Windows UI font. * Replaced unsupported glyphs with plain text labels. * Manual Pair Editor pick buttons now use clearer text labels such as `+ Src` and `+ Prt`. --- ## Mirror Controls Updates ### Character Snapshot Integration Mirror Controls has been significantly refactored to rely on Character Snapshot data instead of maintaining a duplicated snapshot system. * Mirror Controls updated to `v2.3.3`. * Removed the duplicated legacy `RigSnapshot` system. * Removed the legacy Mirror Controls Manual Pair Editor and Snapshot Manager. * Removed duplicate scene-node storage previously written to `digetMirrorControlSettings`. * Mirror Controls now uses a single Character Snapshot adapter for integration. * `Take Snapshot` now builds a Character Snapshot instead of separate Mirror Controls data. * `Manual Pairs` now opens the Character Snapshot pair editor. * `Manage` now opens the Character Snapshot tool. * Legacy Mirror Controls settings are migrated into Character Snapshot data when available. Migration preserves: * manual pairs * exclusions * tokens * per-attribute rules ### Mirror Controls Rule Editing Fixes The rule editing workflow has been repaired so user edits now affect actual mirroring behaviour. * Fixed an issue where `Edit Rules` wrote to legacy data that was not used by runtime mirroring. * Rule edits now connect to Character Snapshot channel rules. * Per-channel mirror behaviour now supports copy, negate, ignore, and auto reset states. * User overrides now properly take priority over auto-detected rules. ### Mirror / Flip Behaviour Fixes Several Mirror Controls workflow issues have been repaired. * Fixed Flip in selection mode so it now swaps values correctly instead of copying one side over the other. * Fixed Mirror Middle in selection mode so middle controls can be processed correctly. * Implemented the previously ignored `Not Selected` workflow. * Direction radio buttons now properly affect `Not Selected` behaviour. * Improved undo handling so exceptions no longer leave Maya undo chunks open. * Added safer chunk handling around mirror operations. ### Missing Snapshot Workflow Mirror Controls now provides clearer guidance when Character Snapshot data is missing. * If no snapshot exists, Mirror Controls shows a clear missing-snapshot message. * The message explains that Character Snapshot data should be created in the character’s default pose. * Users can open Character Snapshot directly from the prompt. * Users can choose to continue without a snapshot using heuristic matching. * Users can cancel the operation. ### Mirror Controls UI Cleanup The Mirror Controls interface has been simplified and cleaned up. * Removed the redundant `Take Snapshot` button from the main window. * Snapshot capture remains available through the Tools menu and missing-snapshot prompts. * The snapshot tools area is now a compact single row: * Edit Rules * Manual Pairs * Flip Sign * Replaced unsupported emoji/glyph icons with plain text or proper Qt icons. * Character-list refresh now uses a proper Qt standard reload icon. * Main action button now uses a plain `Mirror` label. * Removed emoji from menus, tooltips, Help, and About text. --- ## Version and File Updates Version labels and build copies have been updated consistently across the toolkit. * Noise Generator updated to `v1.1.0`. * Character Snapshot updated to `v1.2.0`. * Mirror Controls updated to `v2.3.3`. * Updated README and install documentation for Noise Generator. * Updated installer MEL files. * Updated ATK toolbar registry entries. * Updated `atk_loader.py`. * Updated `toolbar_tool_reference.html`. * Synced updated files into the `dist` build folder. * Removed accidental `__pycache__` test artifacts from the committed update. --- ## Testing and Verification The Character Snapshot and Mirror Controls updates were tested against a stubbed Maya scene. * 46 integration tests passed for the snapshot-to-mirror workflow. * 81 total logic and integration tests passed. * Tested snapshot build, save/load, partner matching, mirror operations, and flip behaviour against a fake Maya command environment. The Noise Generator update was verified through offscreen Qt testing with a mocked Maya package. * Module import verified. * Slider painting verified. * Full window build verified. * Slider session paths verified. * Range-change paths verified. A real Maya smoke test is still recommended before final production use. Recommended in-Maya smoke test: 1. Create a Character Snapshot from the rig’s default pose. 2. Test mirror left-to-right and right-to-left. 3. Test Flip. 4. Test Manual Pairs. 5. Test Edit Rules. 6. Test the Noise Generator drag feel. 7. Test Noise Generator typed value entry. 8. Test Noise Generator track-click behaviour. 9. Save and reopen the scene. 10. Confirm Character Snapshot and Mirror Controls still resolve the same data. --- ## Fixed * Bookmark markers not aligning correctly with actual timeline frames. * Bookmark markers staying visually locked after timeline range changes. * Marker positions becoming inaccurate after changing playback start or end frames. * Timeline refresh issues in the Bookmarks tool. * Potential instability from outdated or fragile Maya UI update logic. * Callback and scriptJob cleanup issues during longer Maya sessions. * World Tweener being used with multiple selected controllers or objects. * Possible undo chunk issues when a World Tweener drag was interrupted. * Slider handle interaction causing unwanted value jumps. * Mini slider dropdown appearance not matching the updated toolbar style. * Noise Generator typed value fields moving the slider thumb without applying changes to keys. * Noise Generator Reset buttons not restoring values as expected. * Noise Generator track clicks changing values outside a proper undo chunk. * Noise Generator channel filtering incorrectly reading upstream connections. * Noise Generator bake channel detection using the same unreliable connection query. * Noise Generator end-frame check using an inefficient range membership scan. * Noise Generator undo chunks potentially remaining open after apply errors. * Noise Generator leftover `1.0.0` workspace controls remaining on launch. * Character Snapshot side classification incorrectly matching side tokens inside unrelated names. * Character Snapshot pair counts returning incorrect results. * Character Snapshot pairing analysis reporting controls incorrectly when rigs were not currently referenced. * Manual pairs saving invalid or missing control names. * Bare-leaf manual pairs failing on namespaced rigs. * Import-time crashes caused by evaluating Maya UI access too early. * Mirror Controls maintaining duplicated snapshot data separate from Character Snapshot. * Mirror Controls `Edit Rules` writing to data that runtime mirroring did not use. * Flip selection mode overwriting one side instead of swapping values. * Mirror Middle selection mode skipping middle controls. * `Not Selected` mirror mode not being implemented. * Direction radio buttons being ignored in `Not Selected` mode. * Exceptions leaving Maya undo chunks open. * Unsupported emoji/glyph icons rendering as empty boxes or question marks in Maya on Windows. * Redundant snapshot buttons creating duplicate workflows and accidental delete risk. --- ## Notes This update focuses on production reliability, clearer tool feedback, stronger shared data between related tools, and a cleaner Maya UI experience. The Bookmarks tool should now behave more consistently in animation workflows where timeline ranges are frequently adjusted. The Inbetweener, World Tweener, and Noise Generator tools now provide clearer interaction feedback, stronger undo handling, and a more consistent Qt-based visual style. The Character Snapshot and Mirror Controls update is a larger workflow improvement. Character Snapshot now acts as the authoritative rig-matching system, while Mirror Controls reads from that shared data instead of maintaining its own duplicated snapshot structure. This should reduce conflicting data, improve manual pair reliability, and make mirror behaviour easier to maintain across the Animation Tool Kit. The Noise Generator animation math remains unchanged. The update focuses on interface consistency, value entry behaviour, undo safety, channel filtering, bake reliability, and documentation accuracy. --- ## Tag `ATK_v1.1.0`