Source Codes for Codimensional Incremental Potential Contact (C-IPC)

Overview

Source Codes for Codimensional Incremental Potential Contact (C-IPC)

Reference

This repository provides source code for:

Minchen Li, Danny M. Kaufman, Chenfanfu Jiang, Codimensional Incremental Potential Contact, ACM Transactions on Graphics (SIGGRAPH 2021)

Installation

UBUNTU

Install python

sudo apt install python3-distutils python3-dev python3-pip python3-pybind11 zlib1g-dev libboost-all-dev libeigen3-dev freeglut3-dev libgmp3-dev
pip3 install pybind11

Build library

python build.py

MacOS

Build library

python build_Mac.py

To run paper examples

All examples can be executed with:

cd Projects/FEMShell
python batch.py
Comments
  • Rod bending question

    Rod bending question

    First, thank you for making this incredible work available publicly. In playing with this a bit to see if it might be useful for a specific application related to our research, it appears that the code assumes that the initial configuration of any rod is straight. For example, if a rod with a curved geometry is imported, a bending stiffness multiplier greater than zero will cause the rod to want to assume a straight orientation. Thus, for an example of a curled hair, there doesn't appear to be a way to define its curled reference configuration as a zero stress state. In other words, you could not deform that hair with a non-zero bending stiffness, release that boundary condition, and then have the hair return to its curled state. It would be wonderful if you could let me know if this a limitation of the current version of this code or am I missing something? Again, thanks for your outstanding contributions to the field.

    opened by sdast9 3
  • Meaning of muComp

    Meaning of muComp

    I was wondering about the meaning of muComp variable. If I understand correctly, mu is used as the coefficient of friction between all objects in the simulation. I don't yet understand what happens when both mu and muComp are set.

    For example 6_cloth_on_rotating_sphere.py mu and muComp are set like so:

    sim.mu = 0.4
    sim.muComp = StdVectorXd([0, 0, sim.mu,  0, 0, sim.mu,  sim.mu, sim.mu, 0.1])
    

    What does the muComp vector mean here and how can we use it?

    opened by Victorlouisdg 2
  • Process Mesh with Texture

    Process Mesh with Texture

    Hi, thank you for sharing the code! I wonder if there is a way to process and output mesh with texture. If no, how do you render the result with texture? Thank you!

    opened by HimeragiYukina 1
  • Export physical parameters like contact forces

    Export physical parameters like contact forces

    Thank you for this amazing piece of software and for open sourcing it.

    I'm planning to use your software in an engineering research context. After playing around with it for a bit I was wondering if there is any way to get contact forces and other values like torques, internal foces, positions and velocities resulting from the simulation with the python bindings. I guess latter two can be calculated from the resulting obj files.

    opened by Shamp0o 1
  • Run paper examples on GPU

    Run paper examples on GPU

    Hello! I'd like to say that what you've accomplish is amazing and this work looks very promising! Is there a way to run the examples simulation on GPU (cuda)? I use ubuntu and have Nvidia card. Is CPU the only way? Is there a way to speed up things a little bit?

    opened by gdangalov 1
  • how to visualize simulation process?

    how to visualize simulation process?

    Dear author, thank you for opensourcing your excellent work. How can I visualize the simulation? I see initialize_gui() function in SimulationBase.py. But I am not clear how to show gui. Thank you very much

    opened by ZeyingXuHuaWei 1
  • Infinite loop when 2 shells are contacting?

    Infinite loop when 2 shells are contacting?

    Hi, here is a test case where I put a card 0.001 meter above a table, with 0 friction and normal gravity. The simulation seems to be stuck after frame 6 in loops of searching for an alpha value. The other simulations parameters and meshes used are the same as those in 8_precision_card_shuffle.py example file. This example can be run in the same way running the original Codim-IPC exmaples. one_card_above_table.zip

    opened by HimeragiYukina 0
  • Stacked cards do not stay still when friction is 0?

    Stacked cards do not stay still when friction is 0?

    Hi, I have built 4 test cases of stacked cards. But when the friction is set to 0, they do not work as expected. Without any forces other than gravity, the cards slide or even rotate. Besides, when the gravity is set to 0, the simulations of these test cases do not terminate and keep looping on searching alpha value. Also, the 3D meshes used in my test cases are the same as the meshes used in the file 8_precision_card_shuffle.py, and I am running the latest source code.

    I wonder if my test cases are incorrect, there is a bug in the source code, the friction model is not appropriate, or anything else is wrong?

    In all my test cases, I set the shells (cards and tables) apart by their thickness plus a 1e-5 offset; so, they are barely touching each other. The 4 test cases are designed as:

    1. one_card_on_table.py: one card on a fixed table. Also, in this case, the simulation seems to be stuck in the loops of searching alpha value after frame 47.
    2. three_cards_on_table.py: 3-card stack on a fixed table.
    3. two_card_stack.py: 2-card stack, the bottom card is fixed.
    4. three_card_stack.py: 3-card stack, the bottom card is fixed.

    The code of my test cases is in the attached zip file. They can be run using the same way to run the C-IPC examples. stacked_cards_tests.zip

    opened by HimeragiYukina 1
Owner
Incremental Potential Contact code and related projects.
null
Multi-Joint dynamics with Contact. A general purpose physics simulator.

Multi-Joint dynamics with Contact. A general purpose physics simulator.

DeepMind 5k Nov 26, 2022
ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources

ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources

null 2.4k Nov 17, 2022
This module is a simple, lightweight and flexible way to generate QR codes in Godot

QRCodeTexture Godot Module Summary This module is a simple, lightweight and flexible way to generate QR codes in Godot. It provides a new type of text

Ben Armstrong 18 Oct 20, 2022
An Open-Source subdivision surface library.

OpenSubdiv OpenSubdiv is a set of open source libraries that implement high performance subdivision surface (subdiv) evaluation on massively parallel

Pixar Animation Studios 2.7k Nov 19, 2022
Quake GPL Source Release

This is the complete source code for winquake, glquake, quakeworld, and glquakeworld. The projects have been tested with visual C++ 6.0, but masm is

id Software 3.9k Nov 17, 2022
Quake 2 GPL Source Release

This is the complete source code for Quake 2, version 3.19, buildable with visual C++ 6.0. The linux version should be buildable, but we haven't test

id Software 2.2k Nov 19, 2022
An open-source implementation of Autodesk's FBX

SmallFBX An open-source implementation of Autodesk's FBX that is capable of import & export mesh, blend shape, skin, and animations. Mainly intended t

Seiya Ishibashi 42 Oct 13, 2022
The open-source tool for creating of 3D models

The open-source tool for creating of 3D models

3D geoinformation research group at TU Delft 423 Nov 13, 2022
StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR!

StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR! Inspired by libraries like XNA and Processing, StereoKit is meant to be fun to use and easy to develop with, yet still quite capable of creating professional and business ready software.

Nick Klingensmith 716 Nov 19, 2022
OpenCorr is an open source C++ library for development of 2D, 3D/stereo, and volumetric digital image correlation

OpenCorr OpenCorr is an open source C++ library for development of 2D, 3D/stereo, and volumetric digital image correlation. It aims to provide a devel

Zhenyu Jiang 63 Oct 30, 2022
Open source Altium Database Library with over 147,000 high quality components and full 3d models.

Open source Altium Database Library with over 147,000 high quality components and full 3d models.

Mark 1.3k Nov 20, 2022
Vizzu is a free, open-source Javascript/C++ library for animated data visualizations and data stories.

Vizzu is a free, open-source Javascript/C++ library utilizing a generic dataviz engine that generates many types of charts and seamlessly animates between them

Vizzu 1.6k Nov 20, 2022
Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.

Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.

cocos2d 16.6k Nov 23, 2022
Tesseract Open Source OCR Engine (main repository)

Tesseract OCR Table of Contents Tesseract OCR About Brief history Installing Tesseract Running Tesseract For developers Support License Dependencies L

null 47.6k Nov 26, 2022
A completely free, open-source, 2D game engine built on proven torque technology.

Torque2D 4.0 Early Access 1 MIT Licensed Open Source version of Torque2D from GarageGames. Maintained by the Torque Game Engines team and contribution

Torque Game Engines 643 Nov 21, 2022
Open-Source Vulkan C++ API

Vulkan-Hpp: C++ Bindings for Vulkan The goal of the Vulkan-Hpp is to provide header only C++ bindings for the Vulkan C API to improve the developers V

The Khronos Group 2.4k Nov 24, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Nov 19, 2022
Dust3D is a cross-platform open-source 3D modeling software

Dust3D is a cross-platform open-source 3D modeling software. Auto UV unwrapping, auto rigging with PBR Material support, pose and motion authoring all in one.

Jeremy HU 2.5k Nov 28, 2022
Source Code for "Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs" by Eric Haines and Tomas Akenine-Möller

Apress Source Code This repository accompanies Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs by Eric Haines and Tomas

Apress 851 Nov 21, 2022