an image alt text

Sheldon Andrews1                                              Kenny Erleben2                                              Zachary Ferguson3
1École de technologie supérieure                        2University of Copenhagen                             3New York University


Efficient simulation of contact is of interest for numerous physics-based animation applications. For instance, virtual reality training, video games, rapid digital prototyping, and robotics simulation are all examples of applications that involve contact modeling and simulation. However, despite its extensive use in modern computer graphics, contact simulation remains one of the most challenging problems in physics-based animation.

This course covers fundamental topics on the nature of contact modeling and simulation for computer graphics. Specifically, we provide mathematical details about formulating contact as a complementarity problem in rigid body and soft body animations. We briefly cover several approaches for contact generation using discrete collision detection. Then, we present a range of numerical techniques for solving the associated LCPs and NCPs. The advantages and disadvantages of each technique are further discussed in a practical manner, and best practices for implementation are discussed. Finally, we conclude the course with several advanced topics such as methods for soft body contact problems, barrier functions, and anisotropic friction modeling. Programming examples are provided in our appendix as well as on the course website to accompany the course notes.

Updated for SIGGRAPH ‘22: This version of the course adds coverage of multivariate continuous collision detection, an extended treatment of penalty-based methods to include barrier methods, a new chapter on implicit time integration schemes and methods for solving soft body contact problems has been added. Additionally, we now include a more in-depth coverage of anisotropic friction simulation, as well as a tutorial that guides the reader through the steps of creating a rigid body simulator with frictional contact

Course Notes

Course notes


Code: Tutorial: Programming a rigid body simulator with frictional contact


  author = {Andrews, Sheldon and Erleben, Kenny and Ferguson, Zachary},
  title = {Contact and Friction Simulation for Computer Graphics},
  year = {2022},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  url = {},
  doi = {},
  booktitle = {ACM SIGGRAPH 2022 Courses},
  articleno = {2},
  numpages = {124},
  location = {Hybrid Event, Vancouver, Canada},
  series = {SIGGRAPH '22}