I have been having, fun - if you will, trying to get a stable ragdoll that gets thrown to the ground and gets up using a form of canned animation.
Through my ventures, I have found that modifying USkeletalMeshComponent::BlendPhysicsBones to be a solution - ensure that when blending the first bone with a physics body (most likely the root) to set UsePhysWeight to 1.f. Without this, all the physics bodies that I made would get a rotational force on their root bone from the blending which kept on accumulating and spinning ever faster.
Within game code, I’ve tried to set the blending to 1. for the root node, and less for the child nodes to interesting results (ie - numerical explosions).
At the moment, I prefer the modification to the engine since it is a 4-5 lines of code and removes the need for special casing for the root node. All that I must do is ensure that the physics body doesn’t move in zero gravity.
To see the instability, you can open the ContentExample’s ragdoll, and set the “Physics Blend” to something like 0.2. If you do the above changes, the ragdoll is much more stable (iff it doesn’t move in zero G!).
However, and the question of this post, is there something I missing such that I don’t have to modify the engine and still get stable ragdolls that blend back to an animation without having to do any special casing for the root physics bone in game-code?