Version: 2019.2
Animator Override Controllers
Performance and optimization

Retargeting of Humanoid animations

One of the most powerful features of Mecanim is retargeting of humanoid animationsAn animation using humanoid skeletons. Humanoid models generally have the same basic structure, representing the major articulate parts of the body, head and limbs. This makes it easy to map animations from one humanoid skeleton to another, allowing retargeting and inverse kinematics. More info
See in Glossary
. This means that with relative ease, you can apply the same set of animations to various character models. Retargeting is only possible for humanoid models, where an AvatarAn interface for retargeting animation from one rig to another. More info
See in Glossary
has been configured, because this gives us a correspondence between the models’ bone structure.

Recommended Hierarchy structure

When working with Mecanim animations, you can expect your sceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
to contain the following elements:-

  • The Imported character model, which has an Avatar on it.
  • The Animator ComponentA component on a model that animates that model using the Animation system. The component has a reference to an Animator Controller asset that controls the animation. More info
    See in Glossary
    , referencing an Animator ControllerControls animation through Animation Layers with Animation State Machines and Animation Blend Trees, controlled by Animation Parameters. The same Animator Controller can be referenced by multiple models with Animator components. More info
    See in Glossary
    asset.
  • A set of animation clipsAnimation data that can be used for animated characters or simple animations. It is a simple “unit” piece of motion, such as (one specific instance of) “Idle”, “Walk” or “Run”. More info
    See in Glossary
    , referenced from the Animator Controller.
  • ScriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
    See in Glossary
    for the character.
  • Character-related components, such as the Character ControllerA simple, capsule-shaped collider component with specialized features for behaving as a character in a game. Unlike true collider components, a rigidbody is not needed and the momentum effects are not realistic. More info
    See in Glossary
    .

Your project should also contain another character model with a valid Avatar.

If in doubt about the terminology, consult the Animation Glossary

The recommended setup is to:

  • Create a GameObjectThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
    See in Glossary
    in the Hierarchy that contains Character-related components
  • Put the model as a child of the GameObject, together with the Animator component
  • Make sure scripts referencing the Animator are looking for the animator in the children instead of the root; use GetComponentInChildren<Animator>() instead of GetComponent<Animator>().

Then in order to reuse the same animations on another model, you need to:

  • Disable the original model
  • Drop in the desired model as another child of GameObject
  • Make sure the Animator Controller property for the new model is referencing the same controller asset
  • Tweak the character controller, the transform, and other properties on the top-level GameObject, to make sure that the animations work smoothly with the new model.
  • You’re done!

Did you find this page useful? Please give it a rating:

Animator Override Controllers
Performance and optimization