Rigidbody world space simulation overwrites scaling

Hello. I’m trying to simulate tail physics using the rigidbody node in world space so that it can interact with other things in the environment. However, when scaling up the mesh, the scale of the simulated tail stays the same, so it’s smaller to the rest of the body, as seen below.

If I switch the simulation space to base bone then the scaling issue is resolved, but then the tail will not interact with the environment.

The tail works fine in the physics asset editor and animation blueprint

image
image

Any ideas how to resolve this?

The node should support scale parameters.

Either way, skeleton setting, animation scaled should override it as well…

Also this is my current animation blueprint setup in case I’m doing something wrong

More info on the problem: when the skeletal mesh is put directly into the scene it works fine, but as soon as the animation blueprint is chosen the issue comes back
image

So, you’re probrably right on the rigidbody node being the culprit, but I can’t find the setting for scale parameters anywhere in the node, I only found the scales for passing world space motion to local space motion, like Component Linear Vel Scale.

Also, I think what you meant by skeleton setting is the retargeting options? If so, I set all the bones to AnimationScaled but sadly still no results.

Can I have the specific name of the mesh scaling rigidbody node setting that you are talking about?

I guess you are correct in that the RigidBody does not have a hidden pin for the bone setup (where scale would logically be), because it just uses the PHAT asset.
Could you possible have messed something up inside your PHAT asset?

IF not, Try calling a ResetDynamics on the mesh Anim Instance whenever after the scaling.

IF both fail, file a bug.
Switch to an Anim Dynamics node. See if that helps.
The difference is you have to manually set up the chain and it’s constraints within the node.

To pass your own scale (which by the way is insane. you should not need to)
You have to resort to a FABRIK or IK node of some sort.

Oh, and ofc, you can always ModifyBone to apply the scaling BEFORE the rigid body node.
Insane as it may be?

Welp, after hours of searching for an answer, turns out the actual culprit is the lizard model itself. I set the UE4 mannequin’s right arm to rigidbody and there was no issue.
image

Thanks for helping anyway, I will find if there is anything I did wrong with the lizard model or its animations

scratch that, i forgot to switch to world space, then the issue immediately comes back lol
image

Can you share your set up for the mannequin and maybe just file a bug report sharing that project?

This is my setup for the mannequin’s anim blueprint, it’s pretty much the same as the lizard’s animation blueprint

I also tried scaling the tail bone before the rigidbody node but that just breaks the world space collision in the rigidbody node.

I’ll try filing a bug report.

I know is a old thread but i had the same problem and i used this solution.
After the rigid body node, use another Transform Bone node and send the bone scale manually.
image

Hope this will help others that are struggling with this :slight_smile:

Bumping because it seems theres no perfect solution.
I can’t seem to get the bones to scale down without… this happening…
image

HOWEVER, I was able to get things close enough by adding a copy bone node

There’s still a visible offset between where the tail bone should be and where it is, so these calculations are still off, but I can’t be bothered to figure out exactly how to get the bone in the correct position.

How it is now:
image

How its supposed to be:

Would someone else maybe have a better solution?

UPDATE:

By making a virtual bone on the root for the tail with the incorrect offset, I was able to do this with perfect results, No need to use the modify bone node:

Scaled to .1:
image

Scaled to 100:

looks like the world-space physics get a little wonky at extreme scales, but at least it doesn’t look broken

1 Like

Hey ^^
I also get this issue but I can’t fix with Animation BP, The best way I found is to call UActorComponent::RecreatePhysicsState() on the mesh of my character in C++ at every scale changes.

GetMesh()->RecreatePhysicsState();

FixedTailScale_Compressed