DiGeo (Differentiable Geometry) is a Python package for differential geometry in learning and optimisation applications on triangular meshes. Built on PyTorch and custom CUDA kernels, it provides differentiable exponential maps, parallel transport, and geodesic tracing as core operations. DiGeo also features high-level tools including geodesic convolutions, biharmonic distance, and Riemannian optimisers (gradient descent and L-BFGS). It supports batched inputs, single and double precision, and runs on both CPU and GPU.

Examples#

Voronoi Tessellation

Partition complex meshes with Geodesic Centroidal Voronoi Tessellation and the Mesh-LBFGS optimiser.

GCVT tessellations
Voronoi Tessellation
MeshFlow

Learn how MeshFlow trains a stationary vector field with differentiable exponential maps and biharmonic losses.

MeshFlow vector field
MeshFlow
Shape Segmentation

Explore the AGC U-ResNet architecture for dense vertex labeling on human meshes.

AGC segmentation samples
Shape segmentation

Citing DiGeo#

If you use DiGeo in your research, please consider citing the following paper:

@inproceedings{verninas2026disgeod,
   title={Parallelised Differentiable Straightest Geodesics for 3D Meshes},
   author={Verninas, Hippolyte and Korkmaz, Caner and Zafeiriou, Stefanos and Birdal, Tolga and Foti, Simone},
   booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
   year={2026}
}