Bone size too small to create physics asset?

Hello, I’m having a warning when importing skeletal meshes from Blender 2.81 to Unreal 4.24.1. It says the bone size is too small to create a physics asset.
I followed this tutorial here. The workflow is as follows:

  1. Create a new project in Blender 2.81. Units are metric and set to 1 (default). Frame rate set to 30.
  2. Create a mesh, apply all rotations and scale.
  3. Create an armature, apply all rotations and scale.
  4. Rename the armature as “root”.
  5. Parent the mesh to the armature and make some animations.
  6. Select the mesh and the armature.
  7. Export FBX using “Selected Objects”, Face smoothing, Don’t Add Leaf Bones, Only Deform Bones.
  8. Import the FBX to Unreal.

After importing, the root bone has a scale of (100, 100, 100), the first child of the root bone has rotation (90, 0, 0) and the rest of the bones are correctly rotated (0, 0, 0) and scaled (1, 1, 1).
It says in the tutorial and in many other places that we no longer need to set unit scale to 0.01 inside Blender for it to work with UE4. But when I follow the workflow described in the tutorial I get the warning. What is the correct way to do this?

1 unreal unit is equivalent of 1 centimeter
so, first and foremost make sure that’s the case in blender.
100 units in unreal is a Meter.

I’m really not sure what the default scale for blender is now a days, but set it manually or use my plugin (import sk_mannequin once, then delete everything and save startup file) to make double sure you have the correct scaling setup.

with that done/said.
you can change and manually generate PHAT asset for smaller bones.

90% of the time you can’t rely on the automated process anyway.
To do this, you have an option in the lower right corner of PhAt that is called min bone size - the default of which is 20, or 2cm.

if you need to go below 1cm, either your scale is set incorrectly, or you have a rogue bone of 0 size in your hierarchy.

I understand that, but in the tutorial I linked, they did not set any units and left it at default in Blender, which is meters. They did not encounter this issue.
Setting the unit scale in Blender messed up the view and just makes things 10 times more complicated than they need to be, like for example the first added armature bone has size (1cm, 1cm, 1cm) and needs to be scaled almost a 100 times up.

I might just create the Physics assets myself each time, seems to be the cleanest solution.

My solution for this problem is:

Scale the Armature and the Mesh up 100x.

Set the Metric scale to 0.01

Export as normal.

The animations may need to be created at that scale too.

@DyotoOrion
The issue there is if you’ve already made a collection of animations then it might not be worth the time trying to remake them

One solution around this is (note this will break all location-dependant drivers):

  • set Blenders unit scale to 0.1 (I’m using 0.1 because scale manipulation in ue4 physics asset window becomes hectic at 0.01)
  • set armatures scale to 10
  • apply armatures scale
  • apply meshes scale
  • enter pose mode and select all bones on the armature
  • open the graph editor
  • filter by location
  • select all keyframes
  • move the 2d cursor to as close to 0,0 as possible (there is no snapping tool to achieve this)
  • press hotkey scale (default is S (blender) or R (industry compatible))
  • press Y (to limit scaling to the Y axis)
  • type “10” (to scale by 10)
  • press enter (confirm scale operation)
  • scrub the timeline and verify animation is working (if not working then abandon all hope; jk just ctrl z until graph editor scaling is undone, check to see if you accidentally scaled rotators, or keyframed scale data, or the pivot point is set to median rather than 2d cursor)
  • ???
  • export

The funny thing about scales with blender is, you can have any combination of system units, export “apply unit” on or off, ue4 import “convert scene” and “convert scene unit” on or off, WON’T MAKE A DIFFERENCE for the physics asset. You have to set blenders unit scale. We just happen to set it to 0.1, metric, centimeters because that matches unreal. But the closer to 0.0 that number gets, the more blender breaks down. Drivers still work, you just have to rewrite them in new units (which is easy). The blender project itself has the potential to become corrupted. And you’ll know it is when: many of the weight painting tools will stop function appropriately or not at all; many other tools reliant on unit scale will become difficult to manipulate. Just be wary of new issues, you can solve corruptions by merging into a new scene.

fyi The issue is exclusive to blender 2.8 and 2.8.1

3 Likes

Thanks for the detailed reply NotSoAccurateNo1. :slight_smile: Some interesting info there. Cheers! :wink:

I had a similar issue to this, I couldn’t resize the rigid body components as apparently my skeletal mesh was to small, despite it being scaled again the UE4 mannequin in Blender. I am no 3D modeller, I just model placeholder stuff, so instead of mucking about with changing settings in blender, I just used the Send to Unreal blender addon, and it ported it straight through and sorted scaling issues automatically, and set up the physics asset correctly. Just way more simple as a process.

Link to the quick start video for it: