Giter Club home page Giter Club logo

diffcloth's Introduction

DiffCloth

Code repository for our paper DiffCloth: Differentiable Cloth Simulation with Dry Frictional Contact

1. Download the repo:

Make sure to use the --recursive option to install the dependencies

git clone --recursive https://github.com/omegaiota/DiffCloth.git

2. Build CPP code:

From the top directory:

mkdir build
cd build
cmake ..
make

3. Optimize/Visualize Section 6 Experiments:

  • Run optimization:

    ./DiffCloth -demo {demooptions} -mode optimize -seed {randseed}
    

    where {demooptions} is the name of the demos from the following options and {randseed} is an integer for random initialization of the initial guesses of the tasks.

    The corresponding option for each of the experiments is:

    • 6.1 T-shirt: tshirt
    • 6.1 Sphere: sphere
    • 6.2 Hat: hat
    • 6.2 Sock: sock
    • 6.3 Dress: dress
  • Visualize optimization iters:

    ./DiffCloth -demo {demooptions} -mode visualize -exp {expName}
    

    where {expName} is the iteration folder for visualization. The code repo comes with an example optimization run of T-shirt in output/tshirt-exampleopt/, and you can visualize the first iteration with

    ./DiffCloth -demo tshirt -mode visualize -exp tshirt-exampleopt/iter0/
    

The progress of the optimization is saved into the output/ directory of the root folder. Intermediate progress are visualized using the custom written OpenGL viewer.

4. Build Python Binding and Run Hat Controller example:

Build Python Binding:

  • Install anaconda for virtual environment.
  • In project root folder, run python setup.py install to install the python binding package. Rerun this command if you modify the CPP code.
  • Create conda virtual environment: conda env create python=3.8 --file environment.yml, and activate it through conda activate diffcloth

Train/Test Hat Controller example:

  • Navigate to src/python_code
  • Test pretrained network: run python hatController.py --eval --render --load_expname 20210809-trainedBest
  • Train network: run python hatController.py --render
  • Resume train: run python hatController.py --train_resume --load_expname [expName] --load_epoch [epochNum]

Simulations are saved to output/ directory of the root folder.

Note

Feel free to contact me or creating a Github issue if you have questions regarding setting up the repository, running examples or setting up new examples.

Citation

Please consider citing our paper if your find our research helpful:

@article{Li2022diffcloth,
author = {Li, Yifei and Du, Tao and Wu, Kui and Xu, Jie and Matusik, Wojciech},
title = {DiffCloth: Differentiable Cloth Simulation with Dry Frictional Contact},
year = {2022},
issue_date = {February 2023},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {42},
number = {1},
issn = {0730-0301},
url = {https://doi.org/10.1145/3527660},
doi = {10.1145/3527660},
abstract = {Cloth simulation has wide applications in computer animation, garment design, and robot-assisted dressing. This work presents a differentiable cloth simulator whose additional gradient information facilitates cloth-related applications. Our differentiable simulator extends a state-of-the-art cloth simulator based on Projective Dynamics (PD) and with dry frictional contact [Ly et al. 2020]. We draw inspiration from previous work [Du et al. 2021] to propose a fast and novel method for deriving gradients in PD-based cloth simulation with dry frictional contact. Furthermore, we conduct a comprehensive analysis and evaluation of the usefulness of gradients in contact-rich cloth simulation. Finally, we demonstrate the efficacy of our simulator in a number of downstream applications, including system identification, trajectory optimization for assisted dressing, closed-loop control, inverse design, and real-to-sim transfer. We observe a substantial speedup obtained from using our gradient information in solving most of these applications.},
journal = {ACM Trans. Graph.},
month = {oct},
articleno = {2},
numpages = {20},
keywords = {differentiable simulation, cloth simulation, Projective Dynamics}
}

diffcloth's People

Contributors

omegaiota avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.