Download

Root Motion with MakeHuman?

EDIT: Problem is MakeHuman makes two root bones I think? One is called Game Engine and one is called Root. I’m not really sure how to approach this without messing up what I have here, but I can tell I want to have only one and have it called Root. Any help would be brilliant. Cheers.

Original Post:
Hi, so, I need a bit of help getting root motion to work with my MakeHuman rig. I’ve downloaded an animation pack that has root motion and in-place animations. The root motion ones work on the UE4 Mannequin but not on my MakeHuman rig, though the animations look perfect. There’s just no root motion. I really think it’s a naming convention but I don’t know what to do about that, how to confirm it, &c.

More background:
I’ve used this tutorial to get my MakeHuman character from Blender into UE4 with the animations working:https://youtube.com/watch?v=wAQFsinWqO8
Basically, do a MakeHuman character, pick the Game Engine skeleton, import into Blender, run a script to modify the bones, export with some settings that I don’t think are super important but which I followed exactly, import into UE4, and retarget.

Here’s the script the video tells you to run:
https://raw.githubusercontent.com/mipg/MakehumanToUE4/master/main.python

Thanks a million.

It does not work because you have a further bone called “Game engine”. To get rid of it delete the root bone in Blender and rename the armature (that orange icon in the outliner) from “Game engine” to “root”. If you export the mannequin from UE4 and import it into Blender you would see there is no real bone that’s called “root” (it’s just the name for the armature). If you would still keep your root bone (as real bone) but skip the armature from beeing exported you could even try this: Prevent Blender FBX Exporter adding extra root bone – Kris Redbeard - ( further info: The trials and tribulations of Blender & Skeletal Meshes - Animation - Unreal Engine Forums ). After deleting the root bone the root motion just works fine.

EDIT: Oh wow. I think I misunderstood what you said. Where you said to delete the root bone in Blender and rename the armature…you meant that would preserve everything and enable root motion…didn’t you? The rest of what you said was about using the root bone as an actual bone I think. Wow, I could have saved myself a load of time I think. I don’t care about having an actual bone there if I don’t need it.

Original comment:
Thank you very much for your help. From what I can tell, this actually worked, but in a way I hadn’t expected: when I look at my zombie character now, he is rotated 90° down to be facing up with his back on the ground, but only during animations. He is imported in his A pose, and when I look at that, he’s stood with his feet on the ground as expected. Besides that however, if I enable root motion in any animation, it looks perfect and he has his feet on the ground. The problem with this is if ever I wanted to use an animation that has no root motion animated into it, I still have to enable root motion in order for him to be orientated correctly.

Now, I’m very new to working with animations. I have a good deal of experience modelling, but barely any with animations, so if what I’m saying is normal and won’t be a problem for me, great. For example, knowing that my rig will have its back on the ground unless I enable root motion, will I be able to use the stock UE4 animations (from the Anim Starter Pack for example) for walk cycles and such? My goal is to develop a workflow to use the same skeleton for the majority of the characters and creatures in this game. I would like to use root motion as much as possible, but until we can find an animator, in cases where animations have no root motion, is my situation as it stands going to allow this skeleton to use some animations with root motion and some without?

I notice the skeleton tree still has Game_Engine but it doesn’t appear to be a bone. It’s greyed out. Is that supposed to be there?
Here’s an image:
http://prntscr.com/dyrel6

I’m sorry for going on but here’s what I did to get this result:
First, I did only the bit where I opened the script file (export_fbx_bin.py) and commented out the lines as per the instructions. I didn’t do anything with the UE4 Tools Addon.
Then I exported it and overwrote the zombie skeletal mesh that was the source of my current in-engine zombie, and reïmported it into UE4.
If I was intended to delete something with that method, I didn’t.

Yes. I wrote you two solutions. Deleting the bone and renaming the armature already fixes it. However some try to keep their root bone (for whatever reason) and just would skip the armature from the export. If you are one of them then the second solution (modify the exporter from Blender) should work as well. To be honest I just tried the first solution. I usually don’t care about a “root” bone in Blender (after I saw no such bone in the mannequin from UE4 itself) so I call my armatures always root.

Sorry, I’m sure this is a stupid question but how do I delete the root bone without breaking the rig? I’ve googled this and tried various things but I’m not getting it. Thanks.

I’ve set my scene settings in Blender to Metric and unit scale to 0.01 as usual for UE4. Export your mesh with centimeter scale as fbx from MH (1.1 final). Import your mesh as fbx into Blender, run the script, select the armature in object mode, switch to edit mode with tab, select the root bone (the hole bone not just the tail or the head of the joint) and press “x” to delete (nothing should change except the deleted root bone is gone). Rename the “Game engine” armature in the outliner to “root”. Scale your mesh 0.1 (for some reason fbx is still too big - scaling with dae works better but script seems to expect the fbx export). In object mode select armature and meshes and hit CTRL-A and apply rotation and scale. Export/Import with this settings: New project released by MakeHuman team leader - General Discussion - Unreal Engine Forums

Result (retargetted root motion anim):

Original anim from market place:

Wow…once again I may have wasted hours of my life on no-thing. I was going through this whole screenshot-ridden description of my exact steps when it occurred to me that I was moving the bones in Edit mode, not Pose mode, to check the rig and that’s when I found it broken. I’m coming to Blender from Maya, and I can actually assure everyone that I think Blender is the better software for a million reasons, but it is not remotely intuitive. In Maya, this is not how rigs would function. The flipside of this is that in Maya, rigs broke very easily when you forced them to do things that they wouldn’t let you do by default. Rigs are far more flexible in Blender after being painted.

Anyway, let me try the rest of this now, which I actually think is going to work, and we can probably end this thread on a high note after that. Thanks again, mate.

All right. So, it seems that everything is working perfectly. I attempted to export it just as I had initially with my older rig (the one with the real root bone and the Game_Engine one), just as in the video I posted in my first post here. I was going a bit mad for all the time I’d spent on this and was going on auto-pilot, so it was only afterwards that I’d realised your instructions diverged near the end. So I now have two questions:

  1. Do you foresee any problems with this? The major step of your I skipped was Ctrl-A and ‘apply rotation and scale’.
  2. I got a warning about smoothing groups on import. This seems to be owing to the fact that on export, in the Geometry tab, I chose Edge (as per the video) and I realise now that according to your other post, I should have chosen Face. Will this pose a problem for me? Is there an advantage to choosing Edge? As far as I can tell, he looks great and he’s moving great. Just curious about this, as maybe I’ll reïmport him with Face selected if it should improve things at-all.

I suppose my last question is the easiest way to get the twist bones painted correctly. Is there some way to make this happen automatically via MakeHuman, or should I import the UE4 Mannequin to each character in Blender and try to transfer the weights from that? Maybe there’s a Blender Addon?

Either way, sincerely, thanks a million. I think I should be able to get root motion in order with things as they are. Cheers.

The script looks good (I did not know it yet) but I’m not sure if the pose is really close enough to the UE4 mannequin one (it’s a lot better than the default MH A-Pose). Anyway it prepared twist bones so you could head towards and weightpaint which is great. Just take a look into the “N” tab of Blender regarding scaling. Scale should always be 1.0 before you export.

It’s not that important if you choose edge or face at export. It’s important if you choose edge or face to define your smoothing while editing. If you just set your edges to smooth (and don’t assing a shading type to your faces) you would usually don’t get smooth shading after export. If you choose smooth and flat faces you would get smooth and flad shading at export with either face or edge. In both cases you might wanna select your mesh(es) and assign some shading to it: Edit mode with Tab … A+A to select all CTRL-F (Face) and choose between Shade Flat or Shade Smooth and select individual faces if you wanna make something flat or smooth.

Smooth and flat edges in Blender. Export smoothing: Edge.

Smooth and flat faces in Blender. Export smoothing: Face.

As far I know there is no plugin. Transfer might work but it depends if your meshes are similar enough. Usually I copy the vertex groups of the non-twisting bones which would “overweight” the mesh (1.0 + 1.0 weight on the same vertex) - for example e.g. upperarm_l to upperarm_twist_01_l and subtract and smooth paint with autonormalizing on (so it gets back to a sum of 1.0). You could take a look on the mannequin where you should put the (split) weights. Most weight of the upperarm_twist group is near the shoulder and at the lowerarm twist it’s near the hand. It’s very important that you don’t assign too less weight (as Blender and UE4 differ in that case). If for example a vertex only got 0.3 weight on lowerarm_l and 0.2 weight on lowerarm_twist_01_l the sum would be 0.5 and the remaining 0.5 would be assigned by UE4 to the root bone (which creates monsters ;)).

I’m grateful for all these screenshots. It really helps. I’m about to use what I think may be Maya terminology that I hope makes sense to people that are more used to Blender when I ask this question: why do only some of the normals/edges appear to be soft in the second image? I was under the impression that smoothing the shading in Blender was akin to softening normals in Maya. Perhaps that’s not true? And either way, why would exporting with face smoothing only affect some faces? (If that’s not true, I’m only getting this from what the images look like to me; I could have quite the wrong idea of things).

I’ve painted weights occasionally. My rigs came out a bit robotic but I can have a go with this one day and see what happens. And funny you should mention the way UE4 throws the values of unpainted weights onto the root, because I’ve been meaning to make visual sense of it in a way that I could design a monster that intentionally looks that banjaxed.

I did not mention that I’ve set the upper 50% to flat and the lower to soft (I did the same with the edges in the previous screenshot but still everything is flat). The second screenshot looks how it should look like.

That makes a lot more sense. Cheers.