Panozzo, DanieleJacobson, AlecJakob, Wenzel and Puppo, Enrico2019-05-052019-05-0520191017-4656https://doi.org/10.2312/egt.20191037https://diglib.eg.org:443/handle/10.2312/egt20191037Modern geometry processing algorithms depend on an ever-growing toolbox of fundamental sub-routines and data structures. Prototyping from scratch requires much time building basic tools rather than focusing on the novel research idea. Many existing code libraries have unsatisfactory APIs and the time spent implementing sub-routines is often replaced with time spent learning complex, templated object hierarchies or memory layouts. Libigl is a C++ library of geometry processing algorithms designed for and by researchers. Its wide functionality includes construction of common sparse discrete differential geometry operators (such as the cotangent Laplacian), simple facet- and edge-based topology data structures, mesh-viewing utilities for OpenGL and GLSL, and many core functions for matrix manipulation which make Eigen feel a lot more like MATLAB. Libigl places extreme importance on ease of use and experimentation. To this end, algorithms are directly exposed as functions taking simple matrix types as inputs and outputs. Libigl is a "header only" library and compiles on Windows, Mac, and Linux. In this course, we will walk through an introduction of libigl via readymade examples spanning the gamut of geometry processing applications and tasks. Attendees will be able to follow along on their laptops. We will explain the core functionality of libigl, how to piece together complex algorithms from library functions, and how to interface to libigl from Python and MATLAB. We will highlight some of libigl’'s most powerul features: including mesh booleans, quad remeshing, parameterization, and shape deformation. We will conclude with live coding sessions demonstrating libigl's effectiveness and ease-of-use.libigl: Prototyping Geometry Processing Research in C++10.2312/egt.2019103745-45