Geometric Computing with Python¶
This course is based on efficient C++ libraries binded to python.
The main philosophy is to use NumPy
arrays as a common interface, making them highly composable with each-other as well as existing scientific computing packages.
Installation¶
The easiest way to install the libraries is trough the conda or miniconda python package manager.
All libraries are part of the channel conda forge, which we advise to add to your conda channels by:
conda config --add channels conda-forge
conda install <package>
.
To install all our packages just run:
conda install meshplot conda install igl conda install wildmeshing conda install polyfempy
Note 1: that you can install only the ones you need.
Note 2: in case of problem we advise to create a new conda environment conda create -n <name>
.
Note 3: if problem persist or your want you feature please post issues on the github bugtracker of each library or here.
Packages Description¶
The four packages have specific functionalities and own website.
- Meshplot: fast 2d and 3d mesh viewer based on
pythreejs
. - Wildmeshing: robust 2d and 3d meshing package (python documentation)
- igl: swiss-army-knife of geometric processing functions (python documentation)
- polyfempy: simple but powerful finite element library (python documentation)
Additional Useful Dataset¶
- ABC CAD dataset: 1 million meshed CAD models with feature file
Course Material¶
Most of the course material consist of Jupyter Notebook which can be easily installed trough conda:
conda install jupyter
For completeness we include the html rendered notebook in this website and interactive and editable binder version.
The course is divided in five parts:
- Introduction
- Geometry Processing and Visualization
- Meshing and Simulation
- Ultimate Example
- Closing Remarks
Motivation¶
Many disciplines of computer science have access to high level libraries allowing researchers and engineers to quickly produce prototypes. For instance, in machine learning, one can construct complex, state-of-the-art models which run on the GPU in a few lines of Python.
In the field of geometric computing, however such high-level libraries are sparse. As a result, writing prototypes in geometry is time consuming and difficult even for advanced users.
In this course, we present a set of easy-to-use Python packages for applications in geometric computing. We have designed these libraries to have a shallow learning curve, while also enabling programmers to easily accomplish a wide variety of complex tasks. Furthermore, the libraries we present share NumPy arrays as a common interface, making them highly composable with each-other as well as existing scientific computing packages. Finally, our libraries are blazing fast, doing most of the heavy computations in C++ with a minimal constant-overhead interface to Python.
In the course, we will present a set of real-world examples from geometry processing, physical simulation, and geometric deep learning. Each example is prototypical of a common task in research or industry and is implemented in a few lines of code. By the end of the course, attendees will have exposure to a swiss-army-knife of simple, composable, and high-performance tools for geometric computing.
Contact¶
This course is a group endeavor by Sebastian Koch, Teseo Schneider, Francis Williams, Chengchen Li, and Daniele Panozzo. Please contact us if you have questions or comments. For troubleshooting, please post an issue on github. We are grateful to the authors of all open source C++ libraries we are using. In particular, libigl, tetwild, polyfem, pybind11, and Jupyter.