CRISIS Physics Library

About Crisis Physics Library

What is Crisis?

Crisis is a robust, technologically advanced, fast and maintainable Lagrange multiplier based constrained rigid body dynamics simulator. Constraints are used to enforce body non-penetration, simulate friction at contacts or anchor bodies together to simulate nails or hinges. The simulator is able to handle very different kinds of simulations, such as mere non-penetrating bodies, bodies connected by joints, articulated human-like figures or vehicles.

Constraints, specified either as acceleration-level or velocity-level equalities or inequalities, are enforced by introducing constraint forces. An efficient constraint solver is implemented to simulate loop-free articulated structures in the linear time. The total computational cost required to advance the simulation state is reduced by separating bodies to multiple simulation groups whose equations of motion are abstracted by generic first-order ODEs and solved (integrated) independently on each other (simulation groups are merged whenever required so that the simulation consistency is ensured). Idle simulation groups consume zero CPU time, each simulation group can be integrated with a different precision and time step. Higher-order integration methods are supported.

Besides the core simulator, the test library, the figure library and the demo application are implemented to validate and demonstrate the features. An infrastructure for constraint-based motion control is implemented in the core library and further abstracted by the figure library to control the motion of articulated figures.

If you are new to rigid body dynamics or plan to dig into the simulator internals you should consider reading my master's degree thesis that can be downloaded from here.

Features
  • Rigid body dynamics with Lagrange multiplier based constraints, equations of motion expressed in terms of "maximal coordinates"
  • Global constraint solver
    • Support for equality, inequality and bounded equality constraints
    • Lagrange multiplier based analytical solvers
    • Baraff's linear time dynamics method to handle primary constraints
    • Auxiliary constraints reduced to LCP
  • Generic infrastructure for solving ODEs
    • Support for higher-order integration methods
    • Awareness of multiple simulation groups, "transactional processing" to ensure consistency
    • Adaptive time stepping, rollback on body inter-penetration
  • Ability to handle multiple (simultaneous) contacts with friction, various friction models supported
    • Constraint-based static and impulsive friction
    • Penalty-based dynamic friction
  • Collision geometries defined as volumes
    • Ability to measure penetration depth
    • Inter-penetration avoidance
  • Multiple simulation groups
    • Bodies partitioned to distinct simulation groups that can not influence each other
    • Simulation groups merged whenever required
    • Idle simulation groups consume zero CPU time
  • Written in C++
License

Crisis sources and the demo application binaries are distributed under a BSD-style license. Documentation and the demo application data are distributed under GPL.