IPC Toolkit

IPC Toolkit is a set of reusable functions to integrate Incremental Potential Contact (IPC) into a simulation.

Features

  • IPC barrier function and its derivatives and adaptive barrier stiffness algorithm

  • Broad- and narrow-phase continuous collision detection (CCD) of linear and nonlinear trajectories

  • Distance computation and derivatives between edges in 2D and triangles in 3D

  • Distance barrier potential and its derivatives

  • Smooth and lagged dissipative friction potential and its derivatives

Limitations

This is not a full simulation library. As such it does not include any physics or solvers. For a full simulation implementation, we recommend PolyFEM (a finite element library) or Rigid IPC (rigid-body dynamics) both of which utilize the IPC Toolkit.

Usage

See the tutorial for a quick introduction to the toolkit, or the documentation for a full reference.

Python Bindings

We provide Python bindings for functions in the toolkit using pybind11. For more information see the Python documentation.

Contributing

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

Citation

IPC Toolkit is created and maintained by academics: citations let us know our work is having impact! Please cite the IPC Toolkit or otherwise give a shout-out if and when it contributes to published works.

@software{ipc_toolkit,
    author = {Zachary Ferguson and others},
    title = {{IPC Toolkit}},
    url = {https://github.com/ipc-sim/ipc-toolkit},
    year = {2020},
}

License

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