Hi, I’ve been at this for a full week now and it’s driving me crazy.
I have an asset that has legs.
I scale the leg bone using Transform(Modify) Bone, and afterwards do a control rig stuff for placement of the leg.
This works as expected, however the moment I turn on simulate physics in the skeletal mesh, the bone scales twice (I think) while the mesh remain at the scale set by Transform(Modify) Bone. This additional scaling also happens after control rig I think, because the control rig targets are not kept.
It seems like it scaled it additionaly to 0.6, BUT only the bone placement after the control rig. the collisions are scaled correctly, as is the mesh (see how it sorta sticks inside)
I have tried setting bone scales in control rig instead, doing additional bone scale corrections after control rig, tried calling RecreatePhysicsState(); on skeletal mesh after scaling is done, but nothing helps.
I am not sure this is a bug, possibly just some setting that I am forgetting - does anyone have any idea what might be causing this? Tried in 5.4.4 and 5.5.0 with same results.
I’d be very grateful for any suggestions at this point.
Thanks!
From your described scenario, and since you have exhausted most options inside Unreal Engine, your issue can be related to a scale mismatch between your origin 3D software and UE. Please confirm which software was used to create your mesh and skeleton (Blender, Maya, 3D Max, etc).
Particularly for Blender, this would be a common issue, as scales between Blender and UE are different. To fix it, go to seene properties and change unit scale from 1 to 0.01. Then, scale skeleton and connected mesh by 100, and apply scale.
You can check the entire Blender > UE5 pipeline in this guide:
Hi @brb-sebascova, thanks so much for the fast answer!
Thanks for the video - I did indeed had a root bone at scale 100, so following a video and making necessary adjustments, my physics are now behaving a bit different (correctly I guess), however the double scaling issue still persists
(needs a lot of cleaning after changing the root scale)
The thing thats bugging me is that both physical asset and the mesh itself gets scaled correctly, and its only the bone after everything was done that gets scaled once more.
I removed everything that could be causing problems and replicated it using very simple setup - just a skeletal mesh inside new level, with clean animation blueprint, no control rig, no nothing.
I am starting to think this might indeed be a bug?
Some additional info:
manually adjusting affected bone position after IK placement (offsetting knee back after it was stretched by simulating physics) does nothing when simulate physics is enabled.
So when keeping leg length at 1.0, doing all IK work, and then setting knee position at 0.6 length, offsets the leg bone position correctly when physics are disabled, but is completely ignored again with physics enabled.
deleting all colliders in physics body on the leg that I am scaling results in correct behavior, even when simulate physics is enabled.
even removing physics control plugin from the project results in the same problem, so even though its experimental it does not cause this
Currently, I think that when physics simulation happens, the engine scales everything (bones, physics body colliders) by the bone scale value to update its bodies. but because the bone was already scaled in the animator, it gets scaled twice.
But i’m not entirely sure tbh…
I don’t know if you found a solution for your issue, but I here is what I managed to find as a solution for rescaling a skeletal mesh (SKM) that has physics simulated in it.
NB : This solution works only if you need to spawn your SKM with a defined scale once and won’t rescaling afterwards.
The trick is :
Create a Pawn actor with no components
For allowing multiple instances to be spawned with different scaling, create an event that has an input its scale (otherwise create a variable with predefined scale as default and use event BeginPlay)
On event trigger : Resize your Pawn actor based on the given scale
Then add your Skeletal mesh component with the relative Scale at 1
Apply your physics on your skeletal mesh component
Seen in the pics below :
I created a BP that would be my pawn with the steps mentioned above
I created another BP called “BP_Spawn” just to check that the behavior works fine and put made the event callable from the Editor and the scale variable Editor Editable to check multiple resizing on spawn
My SKM has a simple walking ABP, the SKM has an assigned Control Rig and Physic Asset