Libigl is a C++ library, but its functional interface make it very friendly to wrapping individual functions for popular scripting languages like Python or MATLAB. Since many libigl functions have the form "mesh in" --> "mesh out" or "mesh with scalar field in" --> "scalar field out", we would like to develop an automatic routine for generating Python and MATLAB bindings for libigl functions. This project has three parts: 1) determining the necessary mark up (e.g. comments) inside libigl header files to determine the Python interface, 2) writing a program to parse this mark up and generate valid Python bindings and compilation instructions, and 3) validating and testing these results on a variety of functions in the library.
Student: apply
Mentors: Alec Jacobson & Daniele Panozzo
Libigl avoids complicated mesh data-structures to ensure that its interface is
clean and easy to port into users' existing projects. Our mesh format is a
simple list of vertices and list of face indices to those vertices: V
and
F
. We have a number of functions for deforming a mesh: that is, modifying
the entries in V
, but currently lack functions for modifying the mesh's
topology: that is, modifying F
and/or modifying the size of V
. This
project entails implementing efficient routines for: edge collapse, edge
splitting, and edge flipping. The project will culminate in a routine combining
these core functions for surface remeshing.
Student: apply
Mentors: Alec Jacobson & Daniele Panozzo
Google Summer of Code projects with libigl are mentored by Alec Jacobson and Daniele Panozzo. Please contact us if you have questions, comments or other ideas for a fun summer of hacking on libigl.