There already is a tutorial covering the “Mixamo” workflow here.
If this does not work for you, read on.
The ready Mixamo files have non-normalised transformations, in my case 0.01 scaled armature with 100 scaled child mesh as well as 90° x rotation in Blender.
Upon closer inspection some bones are misaligned (you know what I mean when you see it).
- Blender 3.1.0
- Mixamo animations Swat guy and Orange bot (combat animations)
- Babylon 5 pre
Fix for 2:
Download Mixamo animation with skin. Dont know why, but this fixed it.
Fix for 1:
Please let me know if this can be fixed within the intial model setup (ie pre Mixamo). Does Mixamo need certain transformations?
Anyway, to normalise Mixamo animations imported into Blender:
- Using fbx (binary)
- Have a new Blender file where you import all animations and rename them as appropriate.
- Have a new Blender file where you import the downloaded fbx of the model without animations.
- Make an action for its rest pose.
- Append animations from 2 into 3.
- Select Armature and go to Dope Sheet → Actor Edtior.
- Select each animation from the dropdown list and stash.
- Select Armature and go to script,
import bpy for a in bpy.data.actions: for fc in a.fcurves: if "location" not in fc.data_path: continue if "Hips" in fc.data_path: for kf in fc.keyframe_points: kf.co = kf.co/100 #BEWARE: read below else: a.fcurves.remove(fc) ob = bpy.context.object for pb in ob.pose.bones: pb.location = (0,0,0) bpy.ops.object.transform_apply(scale = True)
- All fbx imports/exports in Blender using default settings.
About the line
kf.co = kf.co/100
The “100” is the scale you want to correct. So, in my case, Mixamo scaled the model to 0.01.
I am not sure why it is divided by 100 though.
I wasted some hours and tried countless other solutions that did not work. So take this solution here as yet another thing that hopefully works.