Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/zishun/awesome-geometry-processing


https://github.com/zishun/awesome-geometry-processing

List: awesome-geometry-processing

awesome-list computer-graphics digital-geometry geometry geometry-processing mesh mesh-generation python

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Libraries for Geometry Processing (GP)

## General Libraries
* [CGAL](https://www.cgal.org/) ![cpp]
![star](https://img.shields.io/github/stars/cgal/cgal?style=flat)
: The Computational Geometry Algorithms Library.
* [cg3lib](https://github.com/cg3hci/cg3lib)
![cpp]
![star](https://img.shields.io/github/stars/cg3hci/cg3lib?style=flat)
: a GP library developed by the [CG3HCI Group](http://cg3hci.dmi.unica.it/lab/en) of the University of Cagliari.
* [CinoLib](https://github.com/mlivesu/cinolib)
![cpp]
![star](https://img.shields.io/github/stars/mlivesu/cinolib?style=flat)
: a generic programming header-only C++ library for processing polygonal and polyhedral meshes.
* [DGtal](https://github.com/DGtal-team/DGtal)
![cpp]
![star](https://img.shields.io/github/stars/DGtal-team/DGtal?style=flat)
* [Easy3D](https://github.com/LiangliangNan/Easy3D/)
![cpp]
![star](https://img.shields.io/github/stars/LiangliangNan/Easy3D?style=flat)
* [Embree](https://github.com/embree/embree)
![cpp]
![star](https://img.shields.io/github/stars/embree/embree?style=flat)
: a ray tracing library with GP modules including geometry objects, ray/point queries, collision detection, BVH, etc.
* python bindings in Open3D and others.
* [Euclid](https://github.com/unclejimbo/Euclid)
![cpp]
![star](https://img.shields.io/github/stars/unclejimbo/Euclid?style=flat)
* [Geogram](https://github.com/BrunoLevy/geogram)
![cpp]
![star](https://img.shields.io/github/stars/BrunoLevy/geogram?style=flat)
: contains the main results in GP from the former ALICE Inria project.
* [Geometric Tools](https://github.com/davideberly/GeometricTools)
![cpp]
![star](https://img.shields.io/github/stars/davideberly/GeometricTools?style=flat)
: [website](https://www.geometrictools.com/)
* [Geometry Central](https://github.com/nmwsharp/geometry-central)
![cpp]
![star](https://img.shields.io/github/stars/nmwsharp/geometry-central?style=flat)
: [doc](http://geometry-central.net/)
* [GEOS](https://github.com/libgeos/geos)
![cpp]
![star](https://img.shields.io/github/stars/libgeos/geos?style=flat)
: Geometry Engine, Open Source. Computational geometry library with a focus on algorithms used in geographic information systems (GIS). [website](https://libgeos.org/)
* [gproshan](https://github.com/larc/gproshan)
![cpp]
![star](https://img.shields.io/github/stars/larc/gproshan?style=flat)
: using Compact Half–Edge (CHE) data structure.
* [gptoolbox](https://github.com/alecjacobson/gptoolbox)
![matlab]
![star](https://img.shields.io/github/stars/alecjacobson/gptoolbox?style=flat)
* [gpytoolbox](https://github.com/sgsellan/gpytoolbox)
![python]
![star](https://img.shields.io/github/stars/sgsellan/gpytoolbox?style=flat)
* [Graphite](https://github.com/BrunoLevy/GraphiteThree)
![cpp]
![star](https://img.shields.io/github/stars/BrunoLevy/GraphiteThree?style=flat)
: an experimental 3D modeler, built around geogram.
* [GTS](https://gts.sourceforge.net/)
![C]
: GNU Triangulated Surface Library.
* [GUDHI](https://github.com/GUDHI)
![cpp]
![python]
: Geometry Understanding in Higher Dimensions, a generic open source library for Topological Data Analysis (TDA).
* [Hugues Hoppe's library](https://github.com/hhoppe/Mesh-processing-library)
![cpp]
![star](https://img.shields.io/github/stars/hhoppe/Mesh-processing-library?style=flat)
: libraries and programs demonstrating mesh processing research published in ACM SIGGRAPH (1992-1998)
* [Lagrange (Adobe)](https://github.com/adobe/lagrange/)
![cpp]
![star](https://img.shields.io/github/stars/adobe/lagrange?style=flat)
: A robust GP library. [Doc](opensource.adobe.com/lagrange-docs/).
* [LibIGL](http://libigl.github.io/libigl/)
![cpp]
![star](https://img.shields.io/github/stars/libigl/libigl?style=flat)
* [libigl-python-bindings](https://github.com/libigl/libigl-python-bindings)
![python]
![star](https://img.shields.io/github/stars/libigl/libigl-python-bindings?style=flat)
* [Manifold](https://github.com/elalish/manifold)
![cpp]
![star](https://img.shields.io/github/stars/elalish/manifold?style=flat)
: a geometry library dedicated to creating and operating on manifold triangle meshes.
* [MatGeom](https://github.com/mattools/matGeom)
![matlab]
![star](https://img.shields.io/github/stars/mattools/matGeom?style=flat)
: Matlab geometry toolbox for 2D/3D geometric computing.
* [MeshLab](https://github.com/cnr-isti-vclab/meshlab)
![cpp]
![star](https://img.shields.io/github/stars/cnr-isti-vclab/meshlab?style=flat)
* [PyMeshLab](https://github.com/cnr-isti-vclab/PyMeshLab)
![python]
![star](https://img.shields.io/github/stars/cnr-isti-vclab/PyMeshLab?style=flat)
* [MeshLib](https://github.com/MeshInspector/MeshLib)
![cpp]
![star](https://img.shields.io/github/stars/MeshInspector/MeshLib?style=flat)
by MeshInspector.
* [MeshPipe](https://gitrepos.virvig.eu/jfons/meshpipe)
: a python-based tool for easy automation and demonstration of GP pipelines [(Fons et al., 2020)](https://doi.org/DOI:10.5220/0008935900710082).
* [MeshUtility](https://github.com/zishun/meshutility/)
![python]
![star](https://img.shields.io/github/stars/zishun/meshutility?style=flat)
* [MPI-IS Mesh](https://github.com/MPI-IS/mesh)
![python]
![star](https://img.shields.io/github/stars/MPI-IS/mesh?style=flat)
* [Numerical Tours](https://github.com/gpeyre/numerical-tours)
![python] ![matlab]
![star](https://img.shields.io/github/stars/gpeyre/numerical-tours?style=flat)
: includes some topics about mesh processing, mesh parameterization and deformation, and multiscale mesh processing. [website](http://www.numerical-tours.com/)
* [Open3D](http://www.open3d.org/)
![cpp]
![python]
![star](https://img.shields.io/github/stars/isl-org/Open3D?style=flat)
* [OpenGeode](https://github.com/Geode-solutions/OpenGeode)
![cpp]
![python]
![star](https://img.shields.io/github/stars/Geode-solutions/OpenGeode?style=flat)
: [doc](https://docs.geode-solutions.com/)
* [OpenGP](https://github.com/OpenGP/OpenGP)
![cpp]
![star](https://img.shields.io/github/stars/OpenGP/OpenGP?style=flat)
: deprecated.
* [OpenMesh](https://www.openmesh.org/)
![cpp]
[![python]](https://www.graphics.rwth-aachen.de:9000/OpenMesh/openmesh-python)
: Half-edge data structure for surface meshes.
* [OpenVDB](https://www.openvdb.org/)
![cpp]
![star](https://img.shields.io/github/stars/AcademySoftwareFoundation/openvdb?style=flat)
: Sparse volume data structure and tools
* [OpenVolumeMesh](https://www.graphics.rwth-aachen.de/software/openvolumemesh/)
![cpp]
: a data structure for arbitrary polytopal meshes. Its concepts are closely related to OpenMesh.
* [PMP Library](https://github.com/pmp-library/pmp-library/)
![cpp]
![star](https://img.shields.io/github/stars/pmp-library/pmp-library?style=flat)
* Its prior work: [Sieger and Botsch, 2011](https://doi.org/10.1007/978-3-642-24734-7_29).
* [Point Cloud Library (PCL)](https://github.com/PointCloudLibrary/pcl)
![cpp]
![star](https://img.shields.io/github/stars/PointCloudLibrary/pcl?style=flat)
* [Point Cloud Utils (pcu)](https://github.com/fwilliams/point-cloud-utils)
![python]
![star](https://img.shields.io/github/stars/fwilliams/point-cloud-utils?style=flat)
: a utility library for 3D processing point clouds and triangle meshes.
* [potpourri3d](https://github.com/nmwsharp/potpourri3d)
![python]
![star](https://img.shields.io/github/stars/nmwsharp/potpourri3d?style=flat)
: mainly bindings to C++ tools from [geometry-central](https://github.com/nmwsharp/geometry-central).
* [PyMesh(2)](https://github.com/PyMesh/PyMesh)
![python]
![star](https://img.shields.io/github/stars/PyMesh/PyMesh?style=flat)
* [Issue with Windows](https://github.com/PyMesh/PyMesh/issues/103)
* This is not [PyMesh](https://github.com/taxpon/pymesh)
* [pyntcloud](https://github.com/daavoo/pyntcloud)
![python]
![star](https://img.shields.io/github/stars/daavoo/pyntcloud?style=flat)
: making point clouds fun again
* [PyVista](https://github.com/orgs/pyvista/repositories)
![python]
![star](https://img.shields.io/github/stars/pyvista/pyvista?style=flat)
* [Shapely](https://github.com/shapely/shapely)
![python]
![star](https://img.shields.io/github/stars/shapely/shapely?style=flat)
: for manipulation and analysis of **planar** geometric objects.
* [Thea](https://github.com/sidch/Thea)
![cpp]
![star](https://img.shields.io/github/stars/sidch/Thea?style=flat)
* [trimesh](https://github.com/mikedh/trimesh)
![python]
![star](https://img.shields.io/github/stars/mikedh/trimesh?style=flat)
: [documentation](https://trimesh.org/)
* [trimesh2](https://gfx.cs.princeton.edu/proj/trimesh2/)
![cpp]
: different from the trimesh library above.
* [github fork](https://github.com/Forceflow/trimesh2)
![star](https://img.shields.io/github/stars/Forceflow/trimesh2?style=flat)
* [TTK](https://github.com/topology-tool-kit/ttk)
![cpp]
![python]
![star](https://img.shields.io/github/stars/topology-tool-kit/ttk?style=flat)
: The Topology ToolKit for efficient, generic, and easy topological data analysis and visualization.
* [UltiMaille](https://github.com/ssloy/ultimaille)
![cpp]
![star](https://img.shields.io/github/stars/ssloy/ultimaille?style=flat)
: allow representing: point set, polyline, triangles, quads, polygons, tetrahedra, hexahedra, wedges, pyramids.
* [VCGLib](https://github.com/cnr-isti-vclab/vcglib)
![cpp]
![star](https://img.shields.io/github/stars/cnr-isti-vclab/vcglib?style=flat)
: used by MeshLab.
* [vedo](https://vedo.embl.es/)
![python]
![star](https://img.shields.io/github/stars/marcomusy/vedo?style=flat)
: A python module for scientific analysis and visualization of 3d objects.
* [VTK](https://vtk.org/)
![cpp]
![python]
![star](https://img.shields.io/github/stars/Kitware/VTK?style=flat)
: The Visualization Toolkit (VTK) is open source software for manipulating and displaying scientific data. It comes with state-of-the-art tools for 3D rendering, a suite of widgets for 3D interaction, and extensive 2D plotting capability.

## GUI for GP
* [starlab](https://github.com/OpenGP/starlab) ![cpp]
![star](https://img.shields.io/github/stars/OpenGP/starlab?style=flat)
* [OpenFlipper](https://www.graphics.rwth-aachen.de/software/openflipper/) ![cpp]
* [polyscope](https://github.com/nmwsharp/polyscope)
![cpp] ![python]
![star](https://img.shields.io/github/stars/nmwsharp/polyscope?style=flat)
: a 3D data viewer
* Some libraries in the general list above also include GUI or viewer.

more

* https://github.com/cg3hci/py3DViewer
* https://github.com/enthought/mayavi
* https://github.com/embree/embree
* https://github.com/mmatl/pyrender
* https://github.com/moderngl/moderngl
* http://pyopengl.sourceforge.net/
* https://pyglet.org/
* https://www.panda3d.org/ and other game engines.
* [OGRE](https://www.ogre3d.org/): https://github.com/OGRECave

## Mesh Generation
* [Quartet](https://github.com/crawforddoran/quartet)
![cpp]
![star](https://img.shields.io/github/stars/crawforddoran/quartet?style=flat)
* [TetGen](http://wias-berlin.de/software/tetgen/)
![cpp]
: A quality tetrahedral mesh generator and a 3D Delaunay triangulator.
* [Triangle](http://www.cs.cmu.edu/~quake/triangle.html)
![cpp]
: A two-dimensional quality mesh generator and Delaunay triangulator.
* [python binding](https://github.com/drufat/triangle)
![python]
* [WildMeshing](https://github.com/wildmeshing)
* [TriWild](https://github.com/wildmeshing/TriWild)
![cpp]
![star](https://img.shields.io/github/stars/wildmeshing/TriWild?style=flat)
TriWild: Robust Triangulation with Curve Constraints
* [fTetWild](https://github.com/wildmeshing/fTetWild)
![cpp]
![star](https://img.shields.io/github/stars/wildmeshing/fTetWild?style=flat)
Fast Tetrahedral Meshing in the Wild
* [wildmeshing-python](https://github.com/wildmeshing/wildmeshing-python) ![python] ![star](https://img.shields.io/github/stars/wildmeshing/wildmeshing-python?style=flat)
* [jigsaw](https://github.com/dengwirda/jigsaw)
![cpp]
![star](https://img.shields.io/github/stars/dengwirda/jigsaw?style=flat)
[![python]](https://github.com/dengwirda/jigsaw-python)
![star](https://img.shields.io/github/stars/dengwirda/jigsaw-python?style=flat)
: an unstructured mesh generator and tessellation library; designed to generate high-quality triangulations and polyhedral decompositions of general planar, surface, and volumetric domains.
* [Gmsh](http://gmsh.info/)
![cpp] ![python]
: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities.
* [MeshPy](https://github.com/inducer/meshpy)
![python]
![star](https://img.shields.io/github/stars/inducer/meshpy?style=flat)
: Python interfaces to Triangle, TetGen, and gmsh.
* [Voro++](http://math.lbl.gov/voro++/)
![cpp]
: 3D computations of the Voronoi tessellation.
* [scipy.spatial](https://docs.scipy.org/doc/scipy-1.8.0/html-scipyorg/reference/spatial.html#delaunay-triangulation-convex-hulls-and-voronoi-diagrams)
![python]
: Delaunay triangulation, convex hulls, and Voronoi diagrams.
* [Qhull](https://github.com/qhull/qhull)
![cpp]
![star](https://img.shields.io/github/stars/qhull/qhull?style=flat)
: Convex hull, Delaunay triangulation, Voronoi diagrams, Halfspace intersection

## Boolean Operations
* [Carve](https://code.google.com/archive/p/carve/)
* in [PyMesh](https://github.com/PyMesh/carve).
* CGAL:
* Co-refinement for boolean operations in [Polygon Mesh Processing
library](https://doc.cgal.org/latest/Manual/packages.html#PkgPolygonMeshProcessing)
* 3D Boolean Operations on [Nef Polyhedra](https://doc.cgal.org/latest/Manual/packages.html#PkgNef3).
* [Clipper](http://www.angusj.com/delphi/clipper.php): clipping and offsetting 2D lines and polygons.
* [Clipper2](https://github.com/AngusJohnson/Clipper2)
![star](https://img.shields.io/github/stars/AngusJohnson/Clipper2?style=flat)
: a major update.
* [pyclipper](https://github.com/fonttools/pyclipper)
![python]
![star](https://img.shields.io/github/stars/fonttools/pyclipper?style=flat)
* [Cork](https://github.com/gilbo/cork)
![star](https://img.shields.io/github/stars/gilbo/cork?style=flat)
* Geogram: tetrahedralize the meshes and compute the boolean operations between all tetrahedra. [code](https://github.com/BrunoLevy/geogram/blob/5adf8c1eb6155f254da247b079862d24d0027b0e/src/lib/geogram/mesh/mesh_intersection.cpp#L806).
* [Interactive And Robust Mesh Booleans](https://github.com/gcherchi/InteractiveAndRobustMeshBooleans) ![star](https://img.shields.io/github/stars/gcherchi/InteractiveAndRobustMeshBooleans?style=flat): This code is subject to continuous updates. [Cherchi et al., 2022](https://doi.org/10.1145/3550454.3555460).
* [Fast And Robust Mesh Arrangements](https://github.com/gcherchi/FastAndRobustMeshArrangements/tree/dev-booleans) ![star](https://img.shields.io/github/stars/gcherchi/FastAndRobustMeshArrangements?style=flat)
* [mcut](https://github.com/cutdigital/mcut/)
![star](https://img.shields.io/github/stars/cutdigital/mcut?style=flat)
* [MeshIntersection](https://github.com/sallesviana/MeshIntersection)
![star](https://img.shields.io/github/stars/sallesviana/MeshIntersection?style=flat)
* MeshLab
* Before v2021.05: based on resampling, [Marching intersections](https://doi.org/10.1109/SMA.2001.923401). A more efficient approach based on [LDNI](https://github.com/zishun/LDNI-based-Solid-Modeling).
* After v2021.07: based on libigl's implementation of [Mesh arrangements for solid geometry](https://doi.org/10.1145/2897824.2925901).
* [OpenSCAD](https://openscad.org/)
![star](https://img.shields.io/github/stars/openscad/openscad?style=flat)
: creating solid 3D CAD objects. using CGAL for CSG evaluation, OpenCSG for CSG previews.
* [QuickCSG](https://gitlab.inria.fr/quickcsg/quickcsg)
* [project page](http://morpheo.inrialpes.fr/static/QuickCSG/), [Douze et al., 2017](https://arxiv.org/abs/1706.01558).

## Geodesic Distance
Survey paper: [Crane et al., 2020](https://arxiv.org/pdf/2007.10430.pdf)
* PDE-based
* Heat method, [Crane et al., 2013](https://doi.org/10.1145/2516971.2516977).
* Many implementations are available.
* Fast Marching
* In [gproshan](https://github.com/larc/gproshan) (CHE data structure). [MeshUtility](https://github.com/zishun/meshutility/) (OpenMesh data structure) ![python].
* [Kimmel and Sethian 1998](https://doi.org/10.1073/pnas.95.15.8431), implemented in [pmp-library](https://github.com/pmp-library/pmp-library/blob/850f2fcbd4ec1d7efcbe5843af1ec1207361bfa6/src/pmp/algorithms/SurfaceGeodesic.h).
* Window propagation
* MMP: an exact method proposed by [Mitchell-Mount-Papadimitriou 1987](https://doi.org/10.1137/0216045)
* Kirsanov's [code](https://code.google.com/p/geodesic/)
* In [UVAtlas](https://github.com/microsoft/UVAtlas/tree/master/UVAtlas/geodesics).
* CH: [Chen and Han 1990](https://doc.cgal.org/latest/Surface_mesh_shortest_path/index.html)
* ICH (Improved CH): [Xin and Wang 2009](https://sites.google.com/site/xinshiqing/knowledge-share)
* VTP (Vertex-oriented Triangle Propagation)
* [Du et al., 2020](https://doi.org/10.1016/j.cad.2020.102943): [code](https://github.com/djie-0329/PVTP)
* [Qin et al., 2016](https://doi.org/10.1145/2897824.2925930): [code](https://github.com/YipengQin/VTP_source_code)
* [GSP (Geodesic Source Propagation)](https://graphics.rwth-aachen.de/geodesic-source-propagation). code in its supplemental material.
* Graph-based: SVG (Saddle Vertex Graph), DGG (Discrete Geodesic Graphs),
* [DGG-SVG](https://github.com/GeodesicGraph/DGG-SVG)

## Others
* [Directional](https://avaxman.github.io/Directional/tutorial/)
![cpp]
![star](https://img.shields.io/github/stars/avaxman/Directional?style=flat)
: creating, manipulating, and visualizing directional fields on 3D meshes, based on both libigl and Eigen.
* [mmg](https://github.com/MmgTools/mmg)
![cpp]
![star](https://img.shields.io/github/stars/MmgTools/mmg?style=flat)
: 2D and 3D surface and volume remeshing.
* [ShapeOp](https://github.com/EPFL-LGG/ShapeOp)
![cpp]
: discrete geometry shaping with projections.
* [Draco](https://google.github.io/draco/): an open-source library for compressing and decompressing 3D geometric meshes and point clouds.
* [Robust Geometric Predicates](https://www.cs.cmu.edu/~quake/robust.html): adaptive precision floating-point arithmetic and fast robust predicates for computational geometry

# Books
* [Polygon Mesh Processing](http://pmp-book.org/): slides and code ![cpp]

# Courses
* [SGP Summer School Presentations](http://school.geometryprocessing.org/): from 2016.
* [Alec Jacobson's courses](https://github.com/alecjacobson)
* [Geometric Computing with Python](https://geometryprocessing.github.io/geometric-computing-python/)
* [Discrete Differential Geometry](https://www.cs.cmu.edu/~kmcrane/Projects/DDG/) by Keenan Crane
* [Summer Geometry Initiative](https://sgi.mit.edu/): by MIT

# Data
* [alecjacobson/common-3d-test-models](https://github.com/alecjacobson/common-3d-test-models)
* more links inside
* [Data for machine learning](https://github.com/timzhang642/3D-Machine-Learning#datasets)

# Other Lists on Geometry Processing (GP)
* [SGP Software/Dataset Award List](http://awards.geometryprocessing.org/)
* [Mesh Repairing Software on the Web](http://meshrepair.org/)
* [Graphics Replicability Stamp Initiative](http://www.replicabilitystamp.org/)
* [awesome point cloud processing](https://github.com/mmolero/awesome-point-cloud-processing)
* [Directory of Computational Geometry Software](http://www.geom.uiuc.edu/software/cglist/)

# Lists on Other Computer Graphics Topics
* https://github.com/tensorush/Awesome-3D-Programming
* https://github.com/luisnts/awesome-computer-graphics
* https://github.com/waitin2010/awesome-computer-graphics
* https://github.com/jslee02/awesome-graphics-libraries
* https://github.com/ericjang/awesome-graphics
* https://github.com/eug/awesome-opengl
* https://github.com/zheng95z/fun-with-computer-graphics
* https://web.engr.oregonstate.edu/~zhange/hotlist.html

# Lists from Other Communities
* https://github.com/nschloe/awesome-scientific-computing
* https://github.com/eric-erki/awesome-gis/
* https://github.com/RoboDonut/awesome-spatial
* https://github.com/fepegar/awesome-medical-imaging
* https://github.com/ccamara/awesome-architecture

[cpp]: https://img.shields.io/badge/c++-%2300599C.svg?logo=c%2B%2B&logoColor=white
[C]: https://img.shields.io/badge/c-%2300599C.svg?&logo=c&logoColor=white
[python]: https://img.shields.io/badge/python-3670A0?logo=python&logoColor=ffdd54
[matlab]: https://img.shields.io/badge/matlab-3670A0?logo=matlab