Coder Social home page Coder Social logo

gqm3d's Introduction

gQM3d

3D Constrained Delaunay Refinement on the GPU

Project Website: https://www.comp.nus.edu.sg/~tants/gqm3d.html

Paper:

  1. Computing Three-dimensional constrained Delaunay Refinement Using the GPU. Z. Chen and T.S. Tan. The 28th International Conference on Parallel Architectures and Compilation Techniques, 21-25 September, 2019, Seattle, WA, USA. (PDF)
  2. On Designing GPU Algorithms with Applications to Mesh Refinement. Z. Chen, T.S. Tan, and H.Y. Ong. arXiv, 2020. (PDF)
  • A NVIDIA GPU is required since this project is implemented using CUDA.
  • The development environment: Visual Studio 2017 and CUDA 9.0. (Please use x64 and Release mode.)
  • TetGen 1.5 is used. Check http://wias-berlin.de/software/index.jsp?id=TetGen&lang=1 for more information.
  • CGAL 4.13 is used for comparision. Check https://www.cgal.org/index.html for more information. You might remove Experiment_CGAL.h and Experiment_CGAL.cpp if you don't want to use CGAL.

GPU Refinement Routine (located in GPU_Refine_3D/MeshRefine.h and GPU_Refine_3D/MeshRefine.cpp):
void refineInputFileOnGPU(
     char* infile,
     MESHBH* input_behavior,
     char* outmesh,
     char* outdata)

This routine calls both TetGen (GPU_Refine_3D/tetgen.h and GPU_Refine_3D/tetgen.cpp) and the GPU refinement pipeline (GPU_Refine_3D/CudaRefine.h and GPU_Refine_3D/CudaRefine.cu) to refine the input mesh, and output the quality mesh and its statistic.

char* infile:
The path for input mesh.

MESHBH* input_behavior:
Different behaviors used to control the refinement process; see GPU_Refine_3D/MeshStructure.h for more details.

char* outmesh:
The path for output mesh.

char* outdata:
The path for output mesh statistic. This includes the final element numbers, timing for different stages, and the dihedral angle distribution.


Experiment

All experiments were conducted on a PC with an Intel i7-7700k 4.2GHz CPU, 32GB of DDR4 RAM and a GTX1080 Ti graphics card with 11GB of video memory.

  • Synthetic dataset:
    The synthetic data was generated by our input generator (InputGenerator.h and InputGenerator.cpp) and might have small angles. Some samples and result statistics by TetGen, CGAL and this software are provided in GPU_Refine_3D/input/.

  • Real-world dataset:
    3D printing models from the Thingi10K dataset were used. Some samples and result statistics by TetGen and this software are provided in GPU_Refine_3D/input_real/.


Proceed to GPU_Refine_3D/main.cpp to check how to call gpu and cpu refinement routines properly.

gqm3d's People

Contributors

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