Chaos Rigid Bodies lose angular momentum over time.

I created a simple project with a Cube StaticMeshActor with Simulate Physics enabled, and gravity turned off. I also zero’d out linear and angular velocity. In a blueprint, I call SetPhysicsAngularVelocityInRadians and set the X angular vel to 100.0. When I log out the angular velocity over time, it decays. You can also visually see the object slowing down. My expectation would be that it spins at the same rate indefinitely, and this is indeed the behavior observed with PhysX in 4.26. The problem (and take this with a grain of salt because I’m no Chaos expert), seems to be in PBDRigidsEvolutionGBF.h::Integrate. This integrates orientation of object based on angular velocity W. Then, later in UpdateVelocities in PBDRigidsEvolutionGBF.cpp, the new angular velocity is back calculated from the new orientation, and old orientation. I’ve determined there’s a loss in angular velocity during that step, that seems proportional to the magnitude of the angular velocity. Lower angular velocities decay more slowly. I’ve determined that EtherAngularDamping is -1 (off). I can’t seem to figure out the culprit here, but I suspect it’s in the back calculation? Could totally be missing something though.

1 Like