Python Docs License

A set of reusable functions to integrate IPC into an existing simulation.

We provide Python bindings for functions in the toolkit using pybind11.

Build and Install

Currently, the bindings must be built from scratch. The easiest way to do this is to use the script which uses setuptools. For example:

python install

will build the library and python bindings and then install them on your system.

You can test the install was successful by doing python -c "import ipctk".


We provide a Jupyter notebook (python/example.ipynb) with some simple examples.


This project is open to contributors! Contributions can come in the form of feature requests, bug fixes, documentation, tutorials and the like. We highly recommend filing an Issue first before submitting a Pull Request.

Simply fork this repository and make a Pull Request! We would appreciate:

  • Implementation of new features

  • Bug Reports

  • Documentation

  • Testing


If you use the IPC Toolkit in your project, please consider citing our work:

  author = {Zachary Ferguson and others},
  title = {{IPC Toolkit}},
  url = {},
  year = {2020},

Additionally, you can cite the original IPC paper:

    author = {Minchen Li and Zachary Ferguson and Teseo Schneider and Timothy Langlois and
        Denis Zorin and Daniele Panozzo and Chenfanfu Jiang and Danny M. Kaufman},
    title = {Incremental Potential Contact: Intersection- and Inversion-free Large Deformation Dynamics},
    journal = {ACM Trans. Graph. (SIGGRAPH)},
    year = {2020},
    volume = {39},
    number = {4},
    articleno = {49}


MIT License © 2020, the IPC-Sim organization (See LICENSE.txt for details)

Last update: January 26, 2023