Extension of libigl which allows to also read the texture of wrl-files in Python as igl.read_triangle_mesh(wrFilePath, V, F, TC)

Alec Jacobson 4a382e039a some performance optimization před 10 roky
build 18ecd80948 fix example, openmp in selfintersect před 10 roky
documentation 23a51e62f6 point to mesh distances in cgal před 11 roky
examples 18ecd80948 fix example, openmp in selfintersect před 10 roky
file-formats 404a719d25 stl file format před 11 roky
include 4a382e039a some performance optimization před 10 roky
scripts 2e979ab8a2 header needs relative link před 10 roky
tutorial a2d9560bd0 hint to disable mosek před 10 roky
.gitignore e610d807ae Excluded shared objects (.so.MAJOR.MINOR) from git tracking. před 11 roky
.mailmap 83eacd6100 mailmap test před 11 roky
ACKNOWLEDGEMENTS bc64088603 better hgignores explicit instanciation for doublearea před 11 roky
LICENSE 695e3393cd readme před 11 roky
LICENSE.GPL 166ae80c7e strip copyrights před 11 roky
LICENSE.MPL2 166ae80c7e strip copyrights před 11 roky
README.md 77beed5642 bad link před 10 roky
RELEASE_HISTORY.txt 64d3018863 clean up in the readme/tutorial/build před 10 roky
VERSION.txt 1fe4830514 ++ vERsion před 10 roky
exclude.lst cb15a39694 better excludes and readme před 11 roky
index.html 506b9447a1 update index.html to match README.md před 10 roky
libigl-dependency-diagram.ai.REMOVED.git-id 532720dc68 merge, orient_outward_ao compiles on mac os x před 11 roky
libigl-logo.ai.REMOVED.git-id 166a191467 clean up some headers, auto doc and todos před 12 roky
libigl-logo.jpg 96f38d6247 missing cpp files před 12 roky
libigl-teaser.pdf.REMOVED.git-id f182dbbfb5 header clustering scripts před 11 roky
matlab-to-eigen.html 88a01da152 floor/ceil, slice and sort exampels před 11 roky
style.css d10afaa873 fixed many missing IGL_INLINEs před 11 roky
style_guidelines.html 4783f7505d IGL_HEADER_ONLY --> ~IGL_STATIC_LIBRARY před 11 roky
todos.txt 516ffe9da8 links in references před 11 roky

README.md

libigl - A simple C++ geometry processing library

https://github.com/libigl/libigl/

libigl is a simple C++ geometry processing library. We have a wide functionality including construction of sparse discrete differential geometry operators and finite-elements matrices such as the contangent Laplacian and diagonalized mass matrix, 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.

It is first and foremost a header library. Each header file contains a single function. Most are tailored to operate on a generic triangle mesh stored in an n-by-3 matrix of vertex positions V and an m-by-3 matrix of triangle indices F. The library may also be compiled into a statically linked library, for faster compile times with your projects.

We use the Eigen library heavily in our code. Our group prototypes a lot in MATLAB, and we have a useful conversion table from MATLAB to libigl/Eigen.

Tutorial

As of version 1.0, libigl includes an introductory tutorial that covers its basic functionalities.

Installation

Libigl is a header library. You do not need to build anything to install. Simply add igl/ to your include path and include relevant headers. Here is a small "Hello, World" program:

#include <igl/cotmatrix.h>
#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <iostream>
int main()
{
  Eigen::MatrixXd V(4,2);
  V<<0,0,
     1,0,
     1,1,
     0,1;
  Eigen::MatrixXi F(2,3);
  F<<0,1,2,
     0,2,3;
  Eigen::SparseMatrix<double> L;
  igl::cotmatrix(V,F,L);
  std::cout<<"Hello, mesh: "<<std::endl<<L*V<<std::endl;
  return 0;
}

If you save this in hello.cpp, then you could compile this with (assuming Eigen is installed in /opt/local/include/eigen3):

gcc -I/opt/local/include/eigen3 -I./igl/ hello.cpp -o hello

Running ./hello would then produce

Hello, mesh:
 0.5  0.5
-0.5  0.5
-0.5 -0.5
 0.5 -0.5

Dependencies

Dependencies are on a per-include basis and the majority of the functions in libigl depends only on the Eigen library.

For more information see our tutorial.

Download

You can keep up to date by cloning a read-only copy of our GitHub repository.

How to contribute

If you are interested in joining development, please fork the repository and submit a pull request with your changes.

License

libigl is primarily MPL2 licensed (FAQ). Some files contain third-party code under other licenses. We're currently in the processes of identifying these and marking appropriately.

Attribution

If you use libigl in your academic projects, please cite the papers we implement as appropriate. To cite the library in general, you could use this BibTeX entry:

@misc{libigl,
  title = {{libigl}: A simple {C++} geometry processing library},
  author = {Alec Jacobson and Daniele Panozzo and others},
  note = {http://igl.ethz.ch/projects/libigl/},
  year = {2014},
}

Contact

Libigl is a group endeavor led by Alec Jacobson and Daniele Panozzo. Please contact us if you have questions or comments. We are happy to get feedback!

If you're using libigl in your projects, quickly drop us a note. Tell us who you are and what you're using it for. This helps us apply for funding and justify spending time maintaining this.

If you find bugs or have problems please use our github issue tracking page.

Copyright

2014 Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi Takayama, Leo Sacht, Wenzel Jacob, Nico Pietroni, Amir Vaxman