All Projects → jiangzhongshi → bichon

jiangzhongshi / bichon

Licence: MIT license
Robust Coarse Curved TetMesh Generation

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to bichon

3D-Engine-OpenGL-4
3D Graphics Engine For Games | C++ OpenGL 4.1
Stars: ✭ 19 (-34.48%)
Mutual labels:  engineering, geometry-processing
Developer Roadmap
Roadmap to becoming a developer in 2021
Stars: ✭ 180,811 (+623386.21%)
Mutual labels:  engineering
Cs193p Fall 2017
These are the lectures, slides, reading assignments, and problem sets for the Developing Apps for iOS 11 with Swift 4 CS193p course offered at the Stanford School of Engineering and available on iTunes U.
Stars: ✭ 141 (+386.21%)
Mutual labels:  engineering
Autocadcodepack
AutoCAD Code Pack: A powerful library that helps you to develop AutoCAD plugins using the AutoCAD .NET API
Stars: ✭ 207 (+613.79%)
Mutual labels:  engineering
Fluids
Fluid dynamics component of Chemical Engineering Design Library (ChEDL)
Stars: ✭ 154 (+431.03%)
Mutual labels:  engineering
Security content
Splunk Security Content
Stars: ✭ 217 (+648.28%)
Mutual labels:  engineering
Soda Js
A Javascript-based library for accessing the SODA2 API.
Stars: ✭ 131 (+351.72%)
Mutual labels:  engineering
vibration toolbox
Educational Vibration programs. Intended for undergraduate and early graduate students.
Stars: ✭ 89 (+206.9%)
Mutual labels:  engineering
Gdbghidra
gdbghidra - a visual bridge between a GDB session and GHIDRA
Stars: ✭ 251 (+765.52%)
Mutual labels:  engineering
Front End Guide
📚 Study guide and introduction to the modern front end stack.
Stars: ✭ 14,073 (+48427.59%)
Mutual labels:  engineering
Congress
Helping humanity evolve
Stars: ✭ 191 (+558.62%)
Mutual labels:  engineering
Openedu
📚 The Open Source Education Initiative – a repository with resources for 60+ engineering subjects. Let's make education more open and accessible! 🚀✨
Stars: ✭ 156 (+437.93%)
Mutual labels:  engineering
How Companies Hire
An inside look into how top tech companies hire
Stars: ✭ 234 (+706.9%)
Mutual labels:  engineering
React Roadmap
【🔥持续更新中】React 前端工程师实战学习路线
Stars: ✭ 149 (+413.79%)
Mutual labels:  engineering
LearningResources
A centralised hub for learner around the globe from A-Z. You can find collections of manuals, blogs, hacks, one liners, courses, other free learning-resources and more
Stars: ✭ 63 (+117.24%)
Mutual labels:  engineering
Pydy Tutorial Human Standing
PyDy tutorial materials for MASB 2014, PYCON 2014, and SciPy 2014/2015.
Stars: ✭ 135 (+365.52%)
Mutual labels:  engineering
Ounotes
An Application built for students to access Notes , Question Papers , Syllabus and Resources for all Subjects of O.U (Osmania University) 📘👨‍🎓
Stars: ✭ 173 (+496.55%)
Mutual labels:  engineering
Reverse Engineering Tutorials
Some Reverse Engineering Tutorials for Beginners
Stars: ✭ 217 (+648.28%)
Mutual labels:  engineering
GEOMetrics
Repo for the paper "GEOMetrics: Exploiting Geometric Structure for Graph-Encoded Objects"
Stars: ✭ 116 (+300%)
Mutual labels:  mesh-generation
OutSystems.SetupTools
Powershell module to install and manage the OutSystems platform
Stars: ✭ 20 (-31.03%)
Mutual labels:  engineering

Bijective and Coarse High-Order Tetrahedral Meshes

Zhongshi Jiang, Ziyi Zhang, Yixin Hu, Teseo Schneider, Denis Zorin, Daniele Panozzo. ACM Transactions on Graphics (SIGGRAPH 2021)

📺 Talk (YouTube), 📝 Paper

TL;DR

  • 📐 Input: Manifold and watertight triangle mesh, without self intersections.
    • Optional: Constraint Points and Feature Tagging.
  • Output: High Order (Bezier) Tetrahedral Mesh
    • Coarsened.
    • Valid (non-flip) Elements.
    • No Intersection.
    • Distance Bound.
    • Feature Preserving.
    • Bijective High-order Surface to the input.

News

  • 📰 06/17/2021: First version of Bichon code is released!

Tips

  • 📌

Dataset

🎊 We provide generated high order tetrahedral meshes and their surface for futher research and developement.

Installation via CMake CMake

Our system is developed in a Linux 🐧 environment, with GCC-9 and Clang-12, and is tested on macOS 🍏 and Windows. Please refer to cmake.yml for a more detailed setup.

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

Usage

Input Format

Basic input is the triangle mesh, in the format of .obj/.off/.ply/.stl.

  • We ask the mesh to be manifold, watertight, no degenerate triangle, and without self intersection. The precondition checks inside the program include numerical tolerance.

Optional input is and HDF5 file, encoding feature tagging and constraint points, in the format of .h5.

  • File might contains the following fields (all optional),
    • E is feature edges. Matrix of |E|x2, with each row indicating the endpoints (v0,v1) of the marked edge.
    • V is the additional feature corners (the junction of several features). Corners can be automatically infered if there are three or more features meet. Therefore, V is only supplied when there is a corner with two feature lines meet. Vector of |V| with vertex indices.
    • P_fid and P_bc for the constraint points where the distance bound is imposed upon. Vector of |P| for the list of faces where the points are, and Matrix of |P|x3 for their corresponding barycentric coordinates on each points.
  • We typically generate these files with h5py or HighFive (C++).

Output Format

Our output file is in HDF5 format .h5, with the following fields

  • lagr as |l|x3 matrix of volume Lagrange control points for the volume.
  • cells as |t|x|n| as the matrix of connectivity.

Additionally, the following fields are useful in other cases.

  • complete_cp for the surface B'ezeir control points. Array of |F| x |n| x 3 stores (in duplicates) the control points for each face.
  • mV,mbase,mtop, mF encode the internal shell structure.

Our internal ordering of the node (inside each high order element) is generated recursively (tuple_gen). Conversion convention to GMSH (triangle6, triangle10, triangle15,tetra20, tetra35) is manually coded in the same file. Further conversion is still on the way and PRs are welcome.

Command Line Usage

./cumin_bin -i INPUT_MESH -o OUTPUT_FOLDER/
Options:
  -h,--help                   Print this help message and exit
  -i,--input TEXT:FILE REQUIRED
                              input mesh name
  -g,--graph TEXT             feature graph and constraint point file .h5
  -o,--output TEXT=./         output dir to save the serialization .h5 file
  -l,--logdir TEXT            log dir
  --curve-distance_threshold FLOAT distance bound for the sampled point. Default on all the vertices, can be specified for the feature h5.
  --curve-order INT          the order of the surface mesh. Tetrahedral mesh will be of order +1
  --feature-dihedral_threshold FLOAT automatic detecting feature based on dihedral angle.
  --shell-target_edge_length FLOAT target edge length, only as a heuritic upper bound.

Visualization

python/ folder contains several scripts to visualize or convert our serialization file.

Examples

Hello Bunny

After compilation, you can launch (from the build/ directory)

wget https://raw.githubusercontent.com/libigl/libigl-tutorial-data/master/bunny.off # get the bunny mesh
./cumin_bin -i bunny.off -o ./

To obtain bunny.off.h5 in the current directory.

Conversion

We provide a simple script to convert from our format to be compatible with gmsh visualizer for a visualization similar to Fig.4 in our paper.

Requiring python packages pip install meshio h5py numpy

python ../python/format_utils.py bunny.off.h5 bunny.msh

License

The source code in this repository is released under MIT License. However, be aware that several dependencies (notably, CGAL with GPLv3) have differing licenses.

Nerd Corner

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].