How to transfer animation from an unreferenced rig to a referenced rig
Kiel Figgins -

A common technical issue in animation is getting the animation from an unreferenced character back onto a referenced character. Sometimes the character is broken, the animator started working inside the rig file and a newer rig version is available, or any other reason has caused the referenced file to be imported. Whatever the cause, the result is the same, the inability to swap the rig for another one or work with tools/pipeline that expects a namespace/referenced file. To learn more about the benefits and workflow of file referencing, feel free to check out my other write up on the topic here.

Below are the steps I use to transfer the animation in these instances. The more complex the animation or different the rigs, the harder a clean transfer is. These steps assume that the rig is the same (the one you've transferring to and from).

1. Inside the animation file with the imported rig, bake down the animation layers, constraints and any custom setups, save this as a _Baked file

Img 0 - Animation layers to bake down

2. Create a new file

3. Reference in the character rig
  • File > Create Reference > Option Box
  • Reference Options > Edit > Reset Settings
  • Reference Options > Namespace Options > (X) Use selected namepsace as parent and add namespace string: char
  • Click Reference and locate the character rig file

  • Img 1 - Reference Settings

    4. Reference in the _Baked animation file
  • File > Create Reference > Option Box
  • Reference Options > Edit > Reset Settings
  • Reference Options > Namespace Options > (X) Use selected namepsace as parent and add namespace string: anim
  • Click Reference and locate the _Baked animation file

  • Img 2 - New Rig and Animation file referenced into new scene

    5. Download the kfAnimTransfer.mel tool here (Right Click > Save As). This is a small tool to help speed up the process of copying keys from one object or hierarchy to another

    6. Run kfAnimTransfer.mel in your Maya scene
  • Windows > General Editors > Script Editor
  • Script Editor > File > Source Script > locate the kfAnimTransfer.mel file
  • In a MEL tab, run the following command:

  • kfAnimTransfer();

    A small UI should open:

    Img 4 - kfAnimTransfer.mel UI

    7. In the Outliner, select top group of the anim:rig then select the top group of the char:rig

    Img 5 - Selection order for Anim Transfer

    8. In the Anim Transfer UI, click 'Transfer Keys (Hierarchy)`

    9. Now compare the results as you may need to key unkeyed channels/offset/spaces to get the full transfer to line up.

    Img 6 - Initial results of Anim Transfer

    For example, in this scene I had to adjust the following:
  • CTRL_Kunoichi_World had an unkeyed offset on tz
  • Once I keyed that, I repeated the Transfer Keys (Hierarchy) again

  • Img 7 - Keying unkeyed channels

    You may hit an issue where keys from the animation file are causing problems. In this case anim:CTRL_PropB has a 000 scale. This is undesirable, but I'm unable to change the keys since the file is referenced. With that in mind, there are a few options:
  • A) Fix the keys on the char:CTRL_PropB (set the scale back to 1, delete keys, etc)
  • B) Windows > Settings/Pref > Settings > File Refernces > [x] Allow edits on referenced animation curves
  • C) Update the _Baked animation file to fix the keys there, then reload the reference into the transfer scene

  • I personally perfer A, since editing referenced curves can be a touchy, plus the end result is a clean char: animation

    10. Once you're pleased with the transfer you can remove the anim: file reference
  • Outliner > Select the anim: top group
  • Right click > Reference > Remove

  • Img 8 - Removing the reference from the Outliner

    11. Save the file and you should be good to go

    Other Opinions, Further References, Typos, and Grammar Issues please contact