Retargeting Mixamo In-Place Animation To Epic Skeleton

There are no easy way to get a Fuse character onto the Unreal skeleton. You have to export the Fuse model as a OBJ without skin weight then manually skin/rig the character yourself inside of Maya/Blender. This takes a lot of time.

The question is why would you want to change from the default Mixamo skeleton to Unreal skeleton? The Mixamo skeleton works just fine in Unreal Engine 4 if you use inplace animation. All the face morph works too at least when I tested it out.

BTW, not sure if anyone needs this, but I converted the entire Maxscript on the Mixamo thread to Maya, including creation of the root bone, twist and IK bones:



rename "mixamorig:Hips" "pelvis";
rename "mixamorig:Spine" "spine_01"; 
rename "mixamorig:Spine1" "spine_02"; 
rename "mixamorig:Spine2" "spine_03"; 
rename "mixamorig:Neck" "neck_01"; 
rename "mixamorig:Head" "head"; 
rename "mixamorig:HeadTop_End" "head_end"; 

rename "mixamorig:LeftShoulder" "clavicle_l"; 
rename "mixamorig:LeftArm" "upperarm_l"; 
rename "mixamorig:LeftForeArm" "lowerarm_l"; 
rename "mixamorig:LeftHand" "hand_l";
rename "mixamorig:LeftHandThumb1" "thumb_01_l"; 
rename "mixamorig:LeftHandThumb2" "thumb_02_l"; 
rename "mixamorig:LeftHandThumb3" "thumb_03_l"; 
rename "mixamorig:LeftHandThumb4" "thumb_04_l"; 
rename "mixamorig:LeftHandIndex1" "index_01_l"; 
rename "mixamorig:LeftHandIndex2" "index_02_l"; 
rename "mixamorig:LeftHandIndex3" "index_03_l"; 
rename "mixamorig:LeftHandIndex4" "index_04_l";
rename "mixamorig:LeftHandMiddle1" "middle_01_l"; 
rename "mixamorig:LeftHandMiddle2" "middle_02_l"; 
rename "mixamorig:LeftHandMiddle3" "middle_03_l"; 
rename "mixamorig:LeftHandMiddle4" "middle_04_l"; 
rename "mixamorig:LeftHandRing1" "ring_01_l"; 
rename "mixamorig:LeftHandRing2" "ring_02_l"; 
rename "mixamorig:LeftHandRing3" "ring_03_l"; 
rename "mixamorig:LeftHandRing4" "ring_04_l"; 
rename "mixamorig:LeftHandPinky1" "pinky_01_l"; 
rename "mixamorig:LeftHandPinky2" "pinky_02_l"; 
rename "mixamorig:LeftHandPinky3" "pinky_03_l"; 
rename "mixamorig:LeftHandPinky4" "pinky_04_l";

rename "mixamorig:RightShoulder" "clavicle_r"; 
rename "mixamorig:RightArm" "upperarm_r"; 
rename "mixamorig:RightForeArm" "lowerarm_r"; 
rename "mixamorig:RightHand" "hand_r";
rename "mixamorig:RightHandThumb1" "thumb_01_r"; 
rename "mixamorig:RightHandThumb2" "thumb_02_r"; 
rename "mixamorig:RightHandThumb3" "thumb_03_r"; 
rename "mixamorig:RightHandThumb4" "thumb_04_r"; 
rename "mixamorig:RightHandIndex1" "index_01_r"; 
rename "mixamorig:RightHandIndex2" "index_02_r"; 
rename "mixamorig:RightHandIndex3" "index_03_r"; 
rename "mixamorig:RightHandIndex4" "index_04_r"; 
rename "mixamorig:RightHandMiddle1" "middle_01_r"; 
rename "mixamorig:RightHandMiddle2" "middle_02_r";
rename "mixamorig:RightHandMiddle3" "middle_03_r"; 
rename "mixamorig:RightHandMiddle4" "middle_04_r"; 
rename "mixamorig:RightHandRing1" "ring_01_r"; 
rename "mixamorig:RightHandRing2" "ring_02_r"; 
rename "mixamorig:RightHandRing3" "ring_03_r"; 
rename "mixamorig:RightHandRing4" "ring_04_r"; 
rename "mixamorig:RightHandPinky1" "pinky_01_r"; 
rename "mixamorig:RightHandPinky2" "pinky_02_r"; 
rename "mixamorig:RightHandPinky3" "pinky_03_r"; 
rename "mixamorig:RightHandPinky4" "pinky_04_r";

rename "mixamorig:LeftUpLeg" "thigh_l"; 
rename "mixamorig:LeftLeg" "calf_l"; 
rename "mixamorig:LeftFoot" "foot_l"; 
rename "mixamorig:LeftToeBase" "ball_l"; 
rename "mixamorig:LeftToe_End" "toe_end_l";

rename "mixamorig:RightUpLeg" "thigh_r"; 
rename "mixamorig:RightLeg" "calf_r"; 
rename "mixamorig:RightFoot" "foot_r"; 
rename "mixamorig:RightToeBase" "ball_r"; 
rename "mixamorig:RightToe_End" "toe_end_r";

select -cl;

joint -p 0 0 0 -n "root";
connectJoint -pm root pelvis;

select -cl;

vector $lowerarm_l_pos=`xform -q -ws -t lowerarm_l`;
joint -p ($lowerarm_l_pos.x) ($lowerarm_l_pos.y) ($lowerarm_l_pos.z) -n "lowerarm_twist_01_l";
connectJoint -pm lowerarm_twist_01_l lowerarm_l;

select -cl;

vector $upperarm_l_pos=`xform -q -ws -t upperarm_l`;
joint -p ($upperarm_l_pos.x) ($upperarm_l_pos.y) ($upperarm_l_pos.z) -n "upperarm_twist_01_l";
connectJoint -pm upperarm_twist_01_l upperarm_l;

select -cl;

vector $lowerarm_r_pos=`xform -q -ws -t lowerarm_r`;
joint -p ($lowerarm_r_pos.x) ($lowerarm_r_pos.y) ($lowerarm_r_pos.z) -n "lowerarm_twist_01_r";
connectJoint -pm lowerarm_twist_01_r lowerarm_r;

select -cl;

vector $upperarm_r_pos=`xform -q -ws -t upperarm_r`;
joint -p ($upperarm_r_pos.x) ($upperarm_r_pos.y) ($upperarm_r_pos.z) -n "upperarm_twist_01_r";
connectJoint -pm upperarm_twist_01_r upperarm_r;

select -cl;

vector $calf_l_pos=`xform -q -ws -t calf_l`;
joint -p ($calf_l_pos.x) ($calf_l_pos.y) ($calf_l_pos.z) -n "calf_twist_01_l";
connectJoint -pm calf_twist_01_l calf_l;

select -cl;

vector $calf_r_pos=`xform -q -ws -t calf_r`;
joint -p ($calf_r_pos.x) ($calf_r_pos.y) ($calf_r_pos.z) -n "calf_twist_01_r";
connectJoint -pm calf_twist_01_r calf_r;

select -cl;

vector $thigh_l_pos=`xform -q -ws -t thigh_l`;
joint -p ($thigh_l_pos.x) ($thigh_l_pos.y) ($thigh_l_pos.z) -n "thigh_twist_01_l";
connectJoint -pm thigh_twist_01_l thigh_l;

select -cl;

vector $thigh_r_pos=`xform -q -ws -t thigh_r`;
joint -p ($thigh_r_pos.x) ($thigh_r_pos.y) ($thigh_r_pos.z) -n "thigh_twist_01_r";
connectJoint -pm thigh_twist_01_r thigh_r;

select -cl;

joint -p 0 0 0 -n "ik_foot_root";
connectJoint -pm ik_foot_root root;

select -cl;

joint -p 0 0 0 -n "ik_foot_l";
connectJoint -pm ik_foot_l ik_foot_root;

select -cl;

joint -p 0 0 0 -n "ik_foot_r";
connectJoint -pm ik_foot_r ik_foot_root;

select -cl;

joint -p 0 0 0 -n "ik_hand_root";
connectJoint -pm ik_hand_root root;

select -cl;

joint -p 0 0 0 -n "ik_hand_gun";
connectJoint -pm ik_hand_gun ik_hand_root;

select -cl;

joint -p 0 0 0 -n "ik_hand_l";
connectJoint -pm ik_hand_l ik_hand_gun;

select -cl;

joint -p 0 0 0 -n "ik_hand_r";
connectJoint -pm ik_hand_r ik_hand_gun;



Select your skeleton and paste into the Mel command line.

Would this work for a Mixamo/Fuse character to be rigged to the UE4 skeleton (or does it only work for animations)?

It works on the character yeah.

My animations exported from Mixamo to the UE4 Skeleton have a big problem, the feet of the character (ik_foot_root apparently) is not moving at all, any clues ?

Here’s an updated version of the Script I posted earlier:
https://forums.unrealengine.com/comm…ownload-script

Have you followed the instructions from the first post?
Also, what are you using the IK bones for exactly?

I tried the blender tutorial from the first page and root motion works fine but my mesh looks shrink-ed like in this image.
Any ideas what could be wrong ?

For anyone wanting to convert mixamo animations to ue4 skeleton, there is a blender plugin that works perfectly.

Hey, this method is really cool but i keep having issues with head rotation, do you know why could it be or how to fix it? All bones move correctly except head which stays frontal and doesn’t turn seperately. Just moves with the rest of the skeleton.

First, this script is amazing. I love it.

Second, I ran this using the Maximo default bones. Before trying to convert to UE4’s skeleton. This will be a problem, right? The only reason I haven’t converted it yet is that I’m searching for a 3D Max solution and I haven’t found one yet. Any suggestions for 3D Max users? Just trying to get my Maximo animations into UE4 through 3D Max easily.

This is perfect, @kelfire! Thanks for the tip.

I know this is kind of old, but reading through the thread I can see a few people struggling with these steps in Blender. Since others will probably land here through search, here’s my contribution:

– For those of you having trouble with in-place animations in Blender –

Step 10) Import the original UE4 Mannequin with root…
\ …then you need to un-parent SK_Mannequin from root. Click on root, then in the viewport, press Alt+P > Clear and keep transformation. Blender interprets “SK_Mannequin” as an empty, which UE4 will see as an extra bone.

Step 11) Import one animation downloaded from Mixamo to original UE4 Mannequin…
\ …then copy the animation to the UE4 Mannequin imported in step 10. The easiest way to do this is to first select the UE4 Mannequin’s armature, shift select the armature containing the Mixamo animation, and create a data link by pressing Ctrl+L > Animation Data. Now you can delete the no-root Mixamo assets and import the rest to UE4.

Thanks, that work well, i thinking i will need buy some software or pay someone, you are awesome.

I know this is a year old now, but I tried some things with Mixamo and stumbled over the exact same problems (working with **Blender **here).

As I didn’t read every post, hopefully this has not been posted already and I didn’t do the typing for nothing ;D

There was a bunch of very weird results. Completely twisted bodies or the animation being locked at the pelvis resulting in a weird rotation of the whole animation…
I finally got it to work yesterday in a veeery inconvenient way. Basically I had to download with mesh from Mixamo, then import in Blender to find the mesh rotated by 90°… rotating it back allowed me to import it, but there where like 10 different animation layers where one of them was the correct animation.

TL;DR:
In this post, Arlyn pointed me towards this very helpful wiki entry.
So the way I got it to work without much work was:

  • Export the mesh with skeleton from UE

  • Import it in blender

    • Reparent the Root Bone

    • Delete the empty

    • Export Mesh and Armature only with -Z Forward Y up (didn’t check if other setups work)

  • Upload to Mixamo

  • Animate (only have to do steps 4 - 6 for further animations)

  • Download animations without skin (no mesh necessary, smaller files), both Root Motion and In Place should work

  • Import the animation in UE without mesh and select the skeleton you previously exported (don’t reimport the skeleton)

Steps 1-3 only have to be done once, so once you have the skeleton reparented, you should be able to use Mixamo without having to do extra work.

I tested this with a Synty skeleton and retargeting it to another Synty skeleton worked too, so I don’t think it should pose any problems with other skeletons.

This is how the skeleton looked in Mixamo. The weird bones you see around are IK bones that I didn’t have to delete (they won’t be animated).

As the wiki entry suggests, the “empty” that we have to delete might cause the creation of a new root bone once you import it back. I guess this also causes problems with Mixamo (the rotations and such). Once that is gone, the animation data exported works fine without even having to reimport the skeleton.

Hope this helps some people!

Cheers
LordStuff

Hello, all sorry for reawakenig this thread once more, but this is one of the earlier and better results for how to use the animations off the mixamo site.
I thought I’d let those that stumble upon this thread with an updated method for getting the animations working if you use 3DS Max that worked for me.

First of all, LordStuff’s post really helped me get the animations working with the new mixamo site.
Mostly follow his steps, but what blender sees as “empty” is actually a dummy by the name of the skeletal mesh you have to delete, it’s in the same spot as the ik roots and the bone roots, at 0,0,0. If you don’t delete it, the hips won’t animate (despite the preview on the mixamo site looking fine) and you won’t be able to target your existing skeleton for the import of the animation. Also, there’s no need to reparent the bone, 3ds max imports it correctly.

Now for a second important step. Depending on your units setup in 3ds max versus UE4 (if you just imported the skeleton into a new plain scene, you probably didn’t do any unit adjustments), your imported animations may be at a strange scale. In my case, the imported animation made the character 10 times bigger.
Luckily the amount you need to adjust is easy to find and fix without having to do the skeleton and export/import all over again.
If you find your animations at the wrong scale, select the root bone in the animation preview in UE4, it will actually tell you the scale of the bone compared to the default. Mine was at 10,10,10.

To fix this, just reimport the animation, but set a custom scale to import. In my case this meant 0.1,0.1,0,1. In order to make it result in a proper 1-1 scale.

I only have one last issue that I’m not too sure of how to fix. No root is no longer an option at the mixamo site. Meaning that the animations also animate root, which in my case I do not want.

render preview problem in 4.24 any idea we check 4.24 and 4.25 but both same problem movie render preview not show video but output video is fine any idea preview window size change???

For anyone interested in this topic, I created a free 3Ds MAX script that renames and reparents bones from mixamo skeleton to Unreal Engine’s skeleton. Download + Tutorial of use at: https://nsabater.com/mixamo-to-unrea…nes-3ds-plugin

(This is not spam and Is NOT replacing the tutorial provided in this topic, as you need to know what is explained in this topic to know how to properly use my script)

Great job to Kelfire for making this usefull tutorial.

  • Cheers

не могу скачать скрипт мертвые ссылки перезалейте пожалуйста…(I can not download the script dead links reload please …)

It seems to me this is not working anymore. My reparented armatures can’t be uploaded to mixamo and the animations generated with the unmodified armatures have the root bone problem (hips locked).

Did anyone find a way to get this to work?

Current workaround for me is using Terribilis’ Mixamo Converter: Mixamo Converter
and reparenting them from the Mannequin.

**Kiniahipster **were you ever able to find a solution to the this? I’m having the exact same issue and it’s driving me crazy. It’s like the character is wearing a neck brace.