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 83eacd6100 mailmap test 11 年之前
documentation 23a51e62f6 point to mesh distances in cgal 11 年之前
examples c3325c9d16 duplicate vertex support in selfintersect 11 年之前
file-formats 404a719d25 stl file format 11 年之前
include 4fbf0da74b more fixes to Viewer.cpp 11 年之前
scripts c2646d97f6 medit 11 年之前
tutorial 4fbf0da74b more fixes to Viewer.cpp 11 年之前
.gitignore 659cb932ed fixed many issues with Viewer, compiles statically 11 年之前
.mailmap 83eacd6100 mailmap test 11 年之前
ACKNOWLEDGEMENTS bc64088603 better hgignores explicit instanciation for doublearea 11 年之前
LICENSE 695e3393cd readme 11 年之前
LICENSE.GPL 166ae80c7e strip copyrights 11 年之前
LICENSE.MPL2 166ae80c7e strip copyrights 11 年之前
Makefile 659cb932ed fixed many issues with Viewer, compiles statically 11 年之前
Makefile.conf 659cb932ed fixed many issues with Viewer, compiles statically 11 年之前
README.md 6506ab2741 friendlier readme for yimg 11 年之前
RELEASE_HISTORY.txt 98ea7783e2 ++ version for winding number 11 年之前
VERSION.txt 98ea7783e2 ++ version for winding number 11 年之前
exclude.lst cb15a39694 better excludes and readme 11 年之前
libigl-dependency-diagram.ai.REMOVED.git-id 532720dc68 merge, orient_outward_ao compiles on mac os x 11 年之前
libigl-logo.ai.REMOVED.git-id 166a191467 clean up some headers, auto doc and todos 12 年之前
libigl-logo.jpg 96f38d6247 missing cpp files 12 年之前
libigl-teaser.pdf.REMOVED.git-id f182dbbfb5 header clustering scripts 11 年之前
matlab-to-eigen.html 404a719d25 stl file format 11 年之前
style.css d10afaa873 fixed many missing IGL_INLINEs 11 年之前
style_guidelines.html c39ca7747a fixed many style issues, missing copyrights, inlines 11 年之前
todos.txt 946a60f916 mv most winding number code from project 11 年之前
tutorial.html f92bae1b4f missing igl_no_opengl s 11 年之前

README.md

libigl - A simple c++ geometry processing library

http://igl.ethz.ch/projects/libigl/ https://github.com/alecjacobson/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 libiglboost, libiglcgal extra only
  • SSE/AVX libiglsvd3x3 extra only
  • CGAL libiglcgal extra only
    • boost
    • gmp
    • mpfr

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.

Installing AntTweakBar

To build the a static AntTweakBar library on Mac OS X issue:

cd external/AntTweakBar/src
make -f Makefile.osx.igl
Installing Tetgen

To build the tetgen library and executable on Mac OS X issue:

cd external/tetgen
make clean
rm -f obj/*.o
make -f Makefile.igl tetgen
rm -f obj/*.o
make -f Makefile.igl tetlib
Installing medit

To build the igl version of the medit executable on Mac OS X issue:

cd external/medit
make -C libmesh 
make -f Makefile.igl medit
Installing Embree 2.0

To build the embree library and executables on Mac OS X issue:

cd external/embree
mkdir build
cd build
cmake ..
# Or using a different compiler
#cmake .. -DCMAKE_C_COMPILER=/opt/local/bin/gcc -DCMAKE_CXX_COMPILER=/opt/local/bin/g++
make
# Could also install embree to your root, but libigl examples don't expect
# this
#sudo make install
Installing tinyxml2

To build the a static tinyxml2 library on Mac OS X issue:

cd external/tinyxml2
cmake .
make
Installing YImg

To build the a static YImg library on Mac OS X issue:

cd external/yimg
make

You may need to install libpng. Systems with X11 might find this already installed at /usr/X11/lib.

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 .git litter and binaries using:

git archive —prefix=libigl/ -o libigl.zip master

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!

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