
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).