Skip to content

ipc-sim/ipc-toolkit

Repository files navigation

IPC Toolkit

Description

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.

Build

Instruction for building and including the IPC Toolkit in your CMake project can be found on the website here.

Dependencies

The IPC Toolkit depends on a handful of third-party libraries, which are used to provide various functionality.

All required dependencies are downloaded through CMake depending on the build options, and are built automatically when you build the IPC Toolkit. You do not need to install them separately.

A full list of dependencies can be found on the dependencies page.

Python Bindings

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

For more information see the Python documentation.

Usage

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

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},
}

Additionally, you can cite the original IPC paper:

@article{Li2020IPC,
    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}
}

License

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

About

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

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 14