Utilities

Muscle Clip Converter

This utility is used to convert muscle clip to generic clip or legacy clip.

The main reason that we might need to convert humanoid clip to generic clip is that Unity Animation View doesn't support auto-add humanoid clip keyframes or update keyframes from the transform changes.

The secondary reason is that the humanoid clip cannot be recognized by 3D softwares like Blender/Maya/etc, so if we need to export humanoid clip, we need to convert it from "muscle space" to the traditional "bone space".

 

Background knowledge

Unity has three different animation types: Generic Humanoid Legacy

  • Humanoid clip (also called as Muscle clip) can only be applied on skeleton with specific structure, but have much benefits like retargetable clips, IK, etc.
  • Generic clip and Humanoid clip both use the Animator component with the benefits of state-machine and blend-tree, etc. Generic clip don't limit the skeleton hierarchy, and can work with any skinned mesh; but Generic clips are not retargetable like Humanoid clip. (There used to be 'retarget generic clip' on the Unity5 roadmap, not sure how it goes now)
  • Legacy is the deprecated format mainly used before Unity4, it uses the Animation component.

In case that some developers might be not very familiar with some important concepts of Unity Animations, we suggest read these docs:

Basic usage

muscleClipConvert1

Take these steps:

  • Bring up editor at MenuItem "Window/Skele/MuscleClipConverter";
  • Fill the Animator field with a Humanoid rig model;
  • Select target animation type (generic or legacy);
  • Open up the model's AnimationController, select the to-convert clip's state, make it default state;
  • Click the "Convert Animation" button, select the location and you get the converted clip;

Convert Humanoid RootMotion to Generic

RootMotionConvert

In order to convert RootMotion from Humanoid clip to Generic clip, we need to set the Conversion mode from 'Standard' to 'RootMotion'. 

This will bake the RootMotion on to the topmost transform of the model, and we'll auto-enable the RootMotion on the clip.

GOTCHA:

1. If a generic clip is enabled as RootMotion, the Animator's "Apply RootMotion" must be enabled for this clip to work as expected.

2. Be sure to set the Generic model's Root Node to None, in the (FBX/DAE) archive's inspector, or the root motion would act weird. Ref: https://docs.unity3d.com/Manual/RootMotion.html