Giter VIP home page Giter VIP logo

interactiveandrobustmeshbooleans's Introduction

Interactive And Robust Mesh Booleans

This is the reference implementation of the mesh booleans pipeline presented in the paper

Interactive And Robust Mesh Booleans
G. Cherchi, F. Pellacini, M. Attene, M. Livesu
ACM TOG, SIGGRAPH Asia 2022

Usage

โš ๏ธ WARNING: The octree used in the main branch has a known bug that we'll fix asap. Should you have any problem, we have created a separate branch that uses the cinolib's octree. This is a bit slower, but more reliable.

Clone this repository:

git clone https://github.com/gcherchi/InteractiveAndRobustMeshBooleans.git

Once done, you may build the executable as follows (put Release or Debug instead of <build_type>):

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=<build_type>
make

The make comand produces 5 executable files:

  • mesh_booleans: it allows to make boolean operations (intersection/union/subtraction) between the meshes passed as input (check the code for the command syntax)

  • mesh_booleans_arap: it reproduces the interactive demo with ARAP described in the paper (page 9)

  • mesh_booleans_rotation: it reproduces the interactive rotation demo described in the paper (page 9)

  • mesh_booleans_stencil: it reproduces the demo with variadic booleans described in the paper (page 11)

  • mesh_booleans_inputcheck: it checks if your input meshes respect the requirements imposed by our algorithm (they must be manifold, watertight, self-intersections free, and well-oriented). If the Boolean pipeline fails, check the validity of your inputs with this executable before opening an issue

We tested our code on MacOS (CLANG 14.0 64 bit), Linux (GCC 7.3.0 64 bit) and Windows (MSVC 2019 64 bit).

Citing us

This project is based on algorithms described in the following scientific articles. If you use our code in your academic projects, please consider citing our articles using the following BibTeX entries:

@article{CPAL22,
  title   = {Interactive and Robust Mesh Booleans},
  author  = {Cherchi, Gianmarco and Pellacini, Fabio and Attene, Marco and Livesu, Marco},
  journal = {ACM Transactions on Graphics (SIGGRAPH Asia 2022)},
  year    = {2022},
  volume  = {41},
  number  = {6},
  doi     = {10.1145/3550454.3555460}
}

@article{CLSA20,
  title   = {Fast and Robust Mesh Arrangements using Floating-point Arithmetic},
  author  = {Cherchi, Gianmarco and Livesu, Marco and Scateni, Riccardo and Attene, Marco},
  journal = {ACM Transactions on Graphics (SIGGRAPH Asia 2020)},
  year    = {2020},
  volume  = {39},
  number  = {6},
  doi     = {10.1145/3414685.3417818}
}

@article{LCSA21,
  title   = {Deterministic Linear Time Constrained Triangulation using Simplified Earcut},
  author  = {Livesu, Marco and Cherchi, Gianmarco and Scateni, Riccardo and Attene, Marco},
  journal = {IEEE Transactions on Visualization and Computer Graphics (TVCG)},
  year    = {2022},
  volume  = {28},
  number  = {12},
  doi     = {10.1109/TVCG.2021.3070046}
}

interactiveandrobustmeshbooleans's People

Contributors

gcherchi avatar marcoattene avatar mlivesu 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.