Argus v0.1.0:
Corresponding authors: Jie Li ([email protected]), Gilles Daviet ([email protected]), Rahul Narain ([email protected]), Florence Bertails-Descoubes ([email protected])
Argus is an adaptive cloth simulator with implicit frictional contact. It uses the open-source So-Bogus library for solving the Coulomb friction problem, and a modified version of ARCSim for the adaptive cloth model with anisotropic remeshing.
If you use Argus for research, please cite the following paper:
- Jie Li, Gilles Daviet, Rahul Narain, Florence Bertails-Descoubes, Matthew Overby, George Brown, Laurence Boissieux. "An Implicit Frictional Contact Solver for Adaptive Cloth Simulation". ACM Transactions on Graphics (Proc. SIGGRAPH), 2018.
Other earlier papers may also be cited:
Reference paper for So-Bogus:
- Gilles Daviet, Florence Bertails-Descoubes, and Laurence Boissieux. "A Hybrid Iterative Solver for Robustly Capturing Coulomb Friction in Hair Dynamics". ACM Transactions on Graphics (Proc. SIGGRAPH Asia), 2011.
Reference papers for ARCSim:
- Rahul Narain, Armin Samii, and James F. O'Brien. "Adaptive Anisotropic Remeshing for Cloth Simulation". ACM Transactions on Graphics (Proc. SIGGRAPH Asia), 2012.
- Rahul Narain, Tobias Pfaff, and James F. O'Brien. "Folding and Crumpling Adaptive Sheets". ACM Transactions on Graphics (Proc. SIGGRAPH), 2013.
The ARCSim license requires that any publication that uses code based on it should cite the above two papers.
To install the Argus code, please see the compilation instructions.
To run the simulation, the easiest way is to execute the Python scripts under the examples
folder. The examples include the validation examples and characther animations with full garments:
Each file corresponds to one validation example shown in the paper. For instance, you can try running the following command to test if everything is correct so far.
python examples/box_and_cone.py
If all went well, you should be able to see a square cloth sheet above two obstacles. Once you hit the Space
key, it should begin to simulate. Pressing Space
again will pause the simulation.
Note that this can only succeed if you compiled the project under
build
folder at the root of the project. If you compiled it somewhere else, you need to modify the following line in fileexamples/argus.py
to the right path of the executable:ARGUS = 'build/apps/argus-cloth'
You can also run the script examples/argus_interface.py
directly. This allows you to save the simulated meshes (as OBJ files), and replay the generated sequence to save the images (as PNG files) for making videos. You can also choose to run an online (with display) or offline (headless) simulation. Run the following command to get detailed usage information:
python examples/argus_interface.py -h
Note that the generated sequence of OBJ files (or PNG files) contains as many files as frames simulated. By default, each frame lasts 32ms so the generated results are 31.25 FPS. The actual running timestep dt is the frame time divided by the number of timesteps per frame. If you want to generate a result with a different FPS or use another timestep, just tune the frame_time
and frame_step
in the json configuration files (mentioned below).
Character examples (5 examples in total, under 5 repositories 'Arabesque', 'Clubbing', 'HipHop', 'Shawl', and 'Twist'):
Each repository contains between 2 and 4 files corresponding to variations of friction coefficients. IMPORTANT: To run the character examples, you need to have access to the corresponding character meshes (garment mesh + character motion mesh sequence), which are under private Inria license.
- For ACM replicability stamp reviewers: a private link has been provided to the reviewer(s) to download these files. These files should only be used for reviewing purposes.
- For regular users: please contact [email protected] and [email protected] to obtain a license.
Once you've downloaded the archive data_private_license.tar.gz
, please place it in the Argus root directory and follow these commands (under the Argus root directory as well):
bash extract_character_files.sh
Then you'll be able to run the character examples. For instance, using the command line below will run the Arabesque example with friction coefficient = 0.3:
python examples/character/Arabesque-0-3.py
There is a script you can use to run all the examples in the paper and provide the performance data as shown in Table 2 in the paper. Run the following command and the performance data will be saved to the file performance.txt
under the project folder:
bash examples/run_all.sh
To create your own simulation, you can create the json
files following those in folder conf
and execute build/apps/argus-cloth
directly. See the following section for more details.
Simulation. You can run the following commands to run a full simulation either online or offline. The config files are placed in conf
folder. The output directory indicates the location you want to save the intermediate object files, which is optional.
build/apps/argus-cloth simulate <config file> [output dir]
build/apps/argus-cloth simulateoffline <config file> [output dir]
Resume. If you saved the object files in simulation, you can rerun the simulation from any frame you want by the command resume
or resumeoffline
if you want to run it offline.
build/apps/argus-cloth resume <output dir> <frame>
build/apps/argus-cloth resumeoffline <output dir> <frame>
Replay. You can replay the simulated results if you saved the object files and save the screenshots of the simulation using the command replay
. Image directory indicates the location you want to save the screenshots. These screenshots can be used to create the final videos.
build/apps/argus-cloth replay <output dir> [image dir]
Control the view by mouse:
- Drag with left mouse button down: rotate the camera.
- Drag with the middle mouse button down: translate the camera.
- Scroll the mouse wheel: zoom in/out.
- Press the key 'm' to show/hide the wireframes.
mu = 0 | mu = 0.3 |
---|---|
![]() |
![]() |
mu = 0 | mu = 0.1 | mu = 0.3 |
---|---|---|
![]() |
![]() |
![]() |
mu = 0 | mu = 0.3 |
---|---|
![]() |
![]() |
mu = 0.3 | mu = 0.6 |
---|---|
![]() |
![]() |
mu = 0 | mu = 0.1 |
---|---|
![]() |
![]() |
mu = 0.3 | mu = 0.6 |
---|---|
![]() |
![]() |