Code Monkey home page Code Monkey logo

rsugimoto / surfaceonlydeformables Goto Github PK

View Code? Open in Web Editor NEW
32.0 4.0 2.0 346 KB

The author's Implementation of "Surface-Only Dynamic Deformables using a Boundary Element Method."

Home Page: https://rsugimoto.net/SurfaceOnlyDynamicDeformablesProject/

License: MIT License

CMake 1.26% C++ 91.41% C 0.21% Cuda 7.13%
boundary-element boundary-element-method computer-graphics deformable-bodies-dynamics elastodynamics physically-based-animation physically-based-simulation physics-based-animation physics-simulation

surfaceonlydeformables's Introduction

Surface-Only Dynamic Deformables using a Boundary Element Method

This repository is the official implementation of Surface-Only Dynamic Deformables using a Boundary Element Method with a few extensions.

Implemented Core Simulators

  • Elastodynamics Convolution Quadrature BEM (CQBEM) [Schanz and Antes 1997]

    The default BEM method for elastodynamics with high stability. Discussed fully in our paper.

  • Elastodynamics Dual Reciprocity BEM (DRBEM) [Agnantiaris et al. 1998]

    An alternative elastodynamics BEM with no time history terms, but with more approximations and lower stability. Augmented with our new surface-only fictitious force terms similarly to CQBEM.

  • Elastostatics BEM [James and Pai 1999; Hahn and Wojtan 2016]

    Elastostatics BEM with the null-space removal method [Hahn and Wojtan 2016].

  • Rigid body

    Simple rigid body simulator.

Dependencies

The program is tested on a desktop machine running Ubuntu 20.04 with CUDA and an Apple Silicon Mac using gcc and clang compilers. Since Eigen is used with CUDA, the compilation may fail with NVCC with MS Visual Studio.

Required

  • Eigen

  • libigl

    Eigen and libigl are included as git submodules. You can fetch them when you clone this repository by

      git clone --recurse-submodules https://github.com/rsugimoto/SurfaceOnlyDeformables
    
  • OpenGL

Optional

  • OpenMP

  • Intel MKL

  • OpenCCL and METIS

    Put the compiled OpenCCL binary and METIS binary under OpenCCL/Lib directory. You can get the complied binaries from the link above. When OpenCCL is not found, vertex reordering is disabled.

  • CUDA

    CUDA is used to accelerate the precomputation process. When CUDA is not found, the program uses CPU for precomputation.

Compile

Compile this project using the standard cmake routine:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

You may want to change the CUDA architecture configuration in CMakeLists.txt before compilation.

Run

We specify the options to the program using a json file. There are a few example scene configuration files in data directory, together with the required obj files. You can run the program as follows:

build/main data/bunny_friction.json

Citation

@article{Sugimoto:2022:BEM,
  journal = {Computer Graphics Forum},
  title = {{Surface-Only Dynamic Deformables using a Boundary Element Method}},
  author = {Sugimoto, Ryusuke and Batty, Christopher and Hachisuka, Toshiya},
  year = {2022},
  publisher = {The Eurographics Association and John Wiley & Sons Ltd.},
  ISSN = {1467-8659},
  DOI = {10.1111/cgf.14625}
}

surfaceonlydeformables's People

Contributors

rsugimoto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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