-
Notifications
You must be signed in to change notification settings - Fork 29
Physics
Rigidbodies have been a part of video games for a significant amount of time now. At this point, one could argue that it is something that is expected in most modern games. However, one might be tempted to think that there is no room for improving rigidbodies in terms of stability or performance. This is not true. There are a few problems that can still be solved. One of them is the large mass ratio problem.
The large mass ratio: This problem arises when a very light object is used to support a very heavy object. This problem usually arises in iterative velocity based solvers due to the fact that the collision between the light object and the heavy does not generate enough impulse to resolve the collision.
In order to solve these problems, some methods have been proposed:
Solving The large mass ratio:
- The Bullet Physics Engine uses a Projected Gauss-Seidel(PGS) Solver that is mixed with the Featherstone Algorithm which considers the entire chain of joints instead of doing pairwise constraints.
- The Roblox Physics Engine mixes the PGS with LDL. Unlike PGS, LDL is a direct solver. This means that multibody contacts are solved immediately instead of iteratively.
Implementing these methods are beyond the time scope that I currently have, however, we can set the foundation to implement these methods by implementing a projected gauss seidel solver. In our case, we implemented Sequential Impulses, which is a variation of PGS. The only difference between PGS and Sequential Impulses is implementation.
Prototypes contained in Legion