Download

Standard Epic Skeleton in Blender without Scale to 0.01

Hi!

If I import the Standard Epic Skeleton into Blender, it works without an issue. Since 4.17 I can even create an explicit root bone (instead of having 3 of them) so long as I name the Armature ‘Armature’.

However, the Armature needs to have a scale of 0.01. This hasn’t caused problems for me yet, but I’ve had issues in the past when I accidentally had an unapplied scale factor on my Armature and couldn’t get rid of it without breaking animations.

So I’ve baked the Armature’s scale in Blender. I need to scale everything by 0.01 when I import it in Unreal Engine. The animations then play correctly, but the Armature will be sunken into the floor up to its waist :slight_smile:

I imagine that it has something to do with the scale (if the Armature’s center is at 100 units Z and I scale everything by 0.01, it’s center would now be at 1 unit) but the root bone is at position (0, 0, 0), so scaling should in my view not be able to cause such an issue.

You can set the Blender scene units to 0.01 instead and have everything at 1 scale (after rescaling/applying transforms). You should make sure your root bone is at 0/0/0 too.

Yep, I have three options:

  • set Blender units to Centimeters (or change unit scale to 0.01 manually)
  • enter 0.01 as the export scale when exporting to .fbx
  • enter 0.01 as the import scale when importing in UE4

All three lead to the exact same result, however. The animation has the default dude sunk into the floor.

My ‘root’ bone is at (0, 0, 0) - see last paragraph in original post. That’s precisely why I can’t explain why the scaling should translate him downward :smiley:

Then it’s not the scaling but something else, like the physics asset or something.

Though you’re also saying that the armature’s center is at 100 Z. I didn’t mean only the root bone should be at 0/0/0, the armature object should also have 0/0/0 as it’s origin (meaning Location in the transforms should all say 0m when selected).

The Armature’s pivot point (= baked center for bone and vertex coordinates) is at (0, 0, 0).

I was hypothesizing about what might cause the Z offset I’m observing. If the Armature’s center /was/ at (0, 0, 100) then that /could/ explain the offset, but its center is at (0, 0, 0).

I’ve trimmed my .blend file to the bare necessities and I managed to completely eliminate the scaling factors on all sides:
WorkingEpicSkeletonInBlender.zip

This is what I get. I changed the scene scale to 0.01 though.

Very strange.

This is what I’m getting leaving all scales at 1.0 (UE4 Uniform Import Scale, Blender Unit Scale, Blender Export Scale):
ue4-all-scales-1.jpg

This is what I get when I set the UE4 Uniform Import Scale to 0.01 (the mannequin is there, it’s just tiny… :))
ue4-import-scale-001.jpg

When I export the FBX from Blender with the scale in the exporter set to 0.01:
ue4-blender-export-001.jpg

When I change Blender’s World Unit Scale to 0.01:
ue4-blender-unit-scale-001.jpg

Tried this using Blender 2.78a (Linux) and Unreal Engine 4.17.0 (Linux GitHub build).

@cyaoeu: Could it be that you exported+imported the whole character instead of just the animations? Your screenshot shows a completely white mannequin which seems to confirm that.

Because that works fine in all cases and without any scale acrobatics.

I’m trying to create animations for the Standard Epic Skeleton, so they can be played on the original mannequin or any character meshes purchased from the marketplace.

Yes. Here it is on the UE4 mannequin (importing animation only) if that makes you happier. :stuck_out_tongue:

Also you can just retarget animations to the mannequin skeleton and use those instead. Animating the Maya mess in Blender is a lot of work for no real benefit.

Sorry, but precisely that doesn’t work for me :smiley:

If I export the animations with unit scale 0.01 in Blender, then import it in Unreal Engine 4 (with the Skeleton set to the UE4_Mannequin_Skeleton and import scale 1.0), the character is sunk into the floor.

It all seems to come down to the pelvis bone having a position that is precisely 1/100th as far from the root as it should be, while all bones deeper in the hierarchy have the correct translation:

Animation from scaled Armature that plays correctly:
pelvis-in-working-animation.png

Animation from baked Armature where character is sunk into floor:
pelvis-in-broken-animation.png

I will give it another try with the Unreal Engine 4.18 preview and Blender 2.79. Maybe I’m lucky and the reason your results are different is down to the version.

Maybe it’s not worth aiming for compatibility with the Standard Epic Skeleton.

My original plan was to animate via a second rig (Rigify or other) in Blender and use the ‘Copy Transform’ modifier to copy the transforms to the Epic rig.

I get the same thing as you when using your .blend as it is (without changing unit scale). It’s not that surprising because rig scaling in UE4 doesn’t work correctly. I have submitted a few bug reports but no responses.

However changing the unit scale fixes it. The right way to change the unit scale is to:

  1. Set the unit scale to metric 0.01. The rig turns tiny.
  2. Resize the rig 100 times. The rig returns to normal size.
  3. Apply object transforms for scale so that transforms are frozen. Now the rig is the correct size and what you would get in a Maya workflow (meaning 1 unit = 1cm).

Also instead of making your own rig you can use UE4Tools, it has a control rig that has the mannequin skeleton orientations and you just need to retarget animations made with it to the mannequin skeleton in UE4 (or just use it as it is).

@cyaoeu thank you very much