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 (jalec 695e3393cd readme 11 years ago
documentation 2dc872211e finished draft on active set description 11 years ago
examples 695e3393cd readme 11 years ago
file-formats 404a719d25 stl file format 11 years ago
include 695e3393cd readme 11 years ago
scripts 2608885ba3 harmonic weights 11 years ago
.hgignore 83135b0027 hg cleanup' 11 years ago
ACKNOWLEDGEMENTS bc64088603 better hgignores explicit instanciation for doublearea 11 years ago
LICENSE 695e3393cd readme 11 years ago
LICENSE.GPL 166ae80c7e strip copyrights 11 years ago
LICENSE.MPL2 166ae80c7e strip copyrights 11 years ago
Makefile 5205c10219 cleaned up colored mesh example 11 years ago
Makefile.conf 5205c10219 cleaned up colored mesh example 11 years ago
README.md 695e3393cd readme 11 years ago
RELEASE_HISTORY.txt 404a719d25 stl file format 11 years ago
VERSION.txt 404a719d25 stl file format 11 years ago
exclude.lst cb15a39694 better excludes and readme 11 years ago
libigl-dependency-diagram.ai.REMOVED.git-id 532720dc68 merge, orient_outward_ao compiles on mac os x 11 years ago
libigl-logo.ai.REMOVED.git-id 166a191467 clean up some headers, auto doc and todos 12 years ago
libigl-logo.jpg 96f38d6247 missing cpp files 12 years ago
libigl-teaser.pdf.REMOVED.git-id f182dbbfb5 header clustering scripts 11 years ago
matlab-to-eigen.html 404a719d25 stl file format 11 years ago
style.css 166ae80c7e strip copyrights 11 years ago
style_guidelines.html 166ae80c7e strip copyrights 11 years ago
todos.txt 865b841fb1 openmp if catch in project_to_line* 11 years ago
tutorial.html f92bae1b4f missing igl_no_opengl s 11 years ago

README.md

libigl - A simple c++ geometry processing library

http://igl.ethz.ch/projects/libigl/

Copyright 2013 - Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi Takayama, Leo Sacht

This is first and foremost a header library. Each header file should contain a single function. The function may have multiple prototypes. All functions should use the igl namespace and should adhere to the conventions and styles listed below.

Dependencies

  • Eigen3 Last tested with Eigen Version 3.2

Optional

  • OpenGL (IGL_NO_OPENGL)
  • AntTweakBar (IGL_NO_ANTTWEAKBAR) Last tested 1.16 (see
  • libigl/external/AntTweakBar)
  • GLEW Windows only
  • OpenMP
  • libpng libiglpng extra only
  • Mosek libiglmosek extra only
  • Matlab libiglmatlab extra only
  • boost libboost extra only

Optional (included in external/)

  • TetGen libigltetgen extra only
  • Embree libiglembree extra only
  • tinyxml2 libiglxml extra only

Header only

libigl is designed to work "out-of-the-box" as a headers only library. To include libigl in your project. You need only include the libigl/include/ directory in your include path and define the IGL_HEADER_ONLY macro. To compile a hello-word example.cpp:

#include <Eigen/Dense>
#include <igl/readOBJ.h>
#include <iostream>
int main(int argc, char * argv[])
{
  if(argc>1)
  {
    Eigen::MatrixXd V;
    Eigen::MatrixXi F;
    igl::readOBJ(argv[1],V,F);
    std::cout<<"Hello, mesh with "<<V.rows()<<" vertices!"<<std::endl;
  }else{
    std::cout<<"Hello, world!"<<std::endl;
  }
  return 0;
}

using gcc (replacing appropriate paths):

g++ -DIGL_HEADER_ONLY -I/usr/local/igl/libigl/include \
  -I/opt/local/include/eigen3 example.cpp -o example

Then run this example with:

./example examples/shared/TinyTorus.obj

Compile

libigl is developed most often on Mac OS X, though has current users in Linux and Windows.

Linux/Mac OS X/Cygwin

libigl may also be compiled to a static library. This is advantageous when building a project with libigl, since the header only directive can slow down compile times.

To build the entire libigl library producing lib/libigl.a, issue:

make lib

You may need to edit Makefile.conf accordingly. Best to give yourself an IGL_USERNAME and add a custom install suite for yourself. Then you can enable appropriate extras.

Extras

Once you've set up an IGL_USERNAME and enabled extras within Makefile.conf. You can build the extra libraries (into lib/ligiglpng.a, lib/libiglmatlab.a, lib/libigltetgen.a, lib/libiglmosek.a, etc.) by issuing:

make extras

Examples

You can make a slew of examples by issuing:

make examples

External

Finally there are a number of external libraries that we include in ./external/ because they are either difficult to obtain or they have been patched for easier use with libigl. Please see the respective readmes in those directories.

Windows (Experimental)

To build a static library (.lib) on windows, open Visual Studio 2010.

  • New > Project ...
  • Visual C++ > Win32
  • Win32 Console Application
  • Name: libiglVisualStudio
  • Uncheck "Create directory for solution"
  • Then hit OK, and then Next
  • Check "Static Library"
  • Uncheck "Precompiled headers"
  • Add all include/igl/*.cpp to the sources directory
  • Add all include/igl/*.h to the headers directory
  • Open Project > libigl Properties...
  • Add the path to eigen3 to the include paths
  • Change the target name to libigl
  • Build and pray (this should create libigl.lib

Source

Examples

To get started, we advise that you take a look at a few examples:

./examples/hello-world/

./examples/meshio/

./examples/basic-topology/

./examples/ReAntTweakBar/

Development

Further documentation for developers is listed in tutorial.html, style_guidelines.html

License

See LICENSE.txt

Zipping

Zip this directory without .hg litter using:

make clean
zip -9 -r --exclude=@exclude.lst  libigl.zip ../libigl

Contact

libigl is a group endeavor led by Alec Jacobson and Daniele Panozzo. Please contact alecjacobson@gmail.com if you have questions or comments. We are happy to get feedback! Enjoy!