Hi
There already is a tutorial covering the “Mixamo” workflow here.
If this does not work for you, read on.
Issues:
-
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).
Assumptions:
- 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,
- Run
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[1] = kf.co[1]/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)
(source)
- All fbx imports/exports in Blender using default settings.
Script notice
About the line
kf.co[1] = kf.co[1]/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.
Disclaimer
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.
Best wishes
Joe