• Stars
    star
    975
  • Rank 44,744 (Top 1.0 %)
  • Language
    C++
  • License
    MIT License
  • Created over 6 years ago
  • Updated 13 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Applied 3D geometry in C++, with a focus on surface meshes.

Documentation is hosted at geometry-central.net


Welcome to Geometry Central

actions status linux actions status macOS actions status windows

Geometry-central is a modern C++ library of data structures and algorithms for geometry processing, with a particular focus on surface meshes.

Features include:

  • A polished surface mesh class, with efficient support for mesh modification, and a system of containers for associating data with mesh elements.
  • Implementations of canonical geometric quantities on surfaces, ranging from normals and curvatures to tangent vector bases to operators from discrete differential geometry.
  • A suite of powerful algorithms, including computing distances on surface, generating direction fields, and manipulating intrinsic Delaunay triangulations.
  • A coherent set of sparse linear algebra tools, based on Eigen and augmented to automatically utilize better solvers if available on your system.

Sample:

// Load a mesh
std::unique_ptr<SurfaceMesh> mesh;
std::unique_ptr<VertexPositionGeometry> geometry;
std::tie(mesh, geometry) = readSurfaceMesh("spot.obj"); 

// Compute vertex areas
VertexData<double> vertexAreas(*mesh);

geometry->requireFaceAreas();
for(Vertex v : mesh->vertices()) {
  double A = 0.;
  for(Face f : v.adjacentFaces()) {
    A += geometry->faceAreas[f] / v.degree();
  }
  vertexAreas[v] = A;
}

Check out the docs, tutorials, and build instructions at geometry-central.net. Use the sample project to get started with a build system and a gui.

Related alternatives: CGAL, libIGL, OpenMesh, Polygon Mesh Processing Library, CinoLib


Credits

Geometry-central is developed by Nicholas Sharp, with many contributions from Keenan Crane, Yousuf Soliman, Mark Gillespie, Rohan Sawhney, and many others.

If geometry-central contributes to an academic publication, cite it as:

@article{geometrycentral,
  title={GeometryCentral: A modern C++ library of data structures and algorithms for geometry processing},
  author={Nicholas Sharp and Keenan Crane and others},
  howpublished="\url{https://geometry-central.net/}",
  year={2019}
}

Development of this software was funded in part by NSF Award 1717320, an NSF graduate research fellowship, and gifts from Adobe Research and Autodesk, Inc.

More Repositories

1

polyscope

A C++ & Python viewer for 3D data like meshes and point clouds
C++
1,598
star
2

potpourri3d

An invigorating blend of 3D geometry tools in Python.
Python
388
star
3

diffusion-net

Pytorch implementation of DiffusionNet for fast and robust learning on 3D surfaces like meshes or point clouds.
Python
369
star
4

happly

A C++ header-only parser for the PLY file format. Parse .ply happily!
C++
278
star
5

robust-laplacians-py

Build high-quality Laplace matrices on meshes and point clouds in Python. Implements [Sharp & Crane SGP 2020].
C++
178
star
6

neural-implicit-queries

Queries on neural implicit surfaces via range analysis: ray casting, intersection, closest point, & more. SIGGRAPH 2022 paper. JAX implementation.
Python
169
star
7

neural-physics-subspaces

Fit low-dimensional subspaces to physical systems with neural networks (SIGGRAPH 2023)
Python
134
star
8

DDGSpring2016

Code repository for 15-869 Discrete Differential Geometry at CMU in Spring 2016.
Python
122
star
9

intrinsic-triangulations-tutorial

An introductory course intrinsic triangulations for powerful & robust geometry processing --- tutorial code and links.
Python
119
star
10

nonmanifold-laplacian

A robust Laplace matrix for general (possibly nonmanifold) triangle meshes, and point clouds [Sharp & Crane SGP 2020]
C++
113
star
11

learned-triangulation

Source code for "PointTriNet: Learned Triangulation of 3D Point Sets", by Nicholas Sharp and Maks Ovsjanikov at ECCV 2020
Python
98
star
12

variational-surface-cutting

Codebase for "Variational Surface Cutting" by Sharp & Crane, SIGGRAPH 2018
C++
87
star
13

flip-geodesics-demo

Construct geodesic paths, loops, networks on surface with a fast and simple edge flipping algorithm. C++ demo app and more.
C++
80
star
14

vector-heat-demo

C++ demo of the Vector Heat Method (Sharp, Soliman, and Crane. 2019.)
C++
58
star
15

navigating-intrinsic-triangulations-demo

Demo code for "Navigating Intrinsic Triangulations". Sharp, Soliman, and Crane. 2019
C++
46
star
16

gc-polyscope-project-template

A template project to get started with geometry-central and Polyscope.
C++
43
star
17

polyscope-py

Python bindings for Polyscope
Python
29
star
18

arrgh

A small python utility to pretty-print a table summarizing arrays & scalars from numpy, pytorch, etc.
Python
24
star
19

discretization-robust-correspondence-benchmark

Benchmark for the generalization of 3D machine learning models across different remeshing/samplings of a surface.
Python
11
star
20

geometry-central-tutorials

Tutorials for the geometry-central geometry processing library.
C++
9
star
21

libigl-polyscope-project-template

An example project and build system using libIGL and Polyscope
CMake
7
star
22

RNA-Surface-Segmentation-Dataset

A dataset of segmented RNA molecule surfaces, as a benchmark task in 3D machine learning on surfaces. From Poulenard et al., 3DV 2019.
7
star
23

polyscope-docs

Documentation for polyscope
HTML
3
star
24

nmwsharp.github.io

HTML
1
star