/PyMesh

Geometry Processing Library for Python

Primary LanguageC++

CircleCI Build Status Documentation Status

About PyMesh

PyMesh is a code base developed by Qingnan Zhou for his PhD research at New York University. It is a rapid prototyping platform focused on geometry processing. PyMesh is written using both C++ and python, where computational intensive functionalities are realized in C++, and Python is used for create minimalistic and easy to use interfaces.

PyMesh (Model source: Bust of Sappho)

Documentation

Latest documentation

Quick try

Perhaps the easiest way of trying out PyMesh is through docker:

docker run -it qnzhou/pymesh
Python 3.6.4 (default, Feb 17 2018, 09:32:33)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymesh

For example, to run meshstat.py:

docker run -it --rm -v `pwd`:/models qnzhou/pymesh meshstat.py -x /models/model.obj

This command mounts your currect working directory to the /models directory in a docker container and executes the meshstat.py script on the mesh file model.obj in the currect directory.

Download Source

To retrieve the code:

git clone https://github.com/qnzhou/PyMesh.git
cd PyMesh
git submodule update --init

Dependencies

PyMesh depends on the following tools/libraries:

Optional library:

Libraries marked with * are included in $PYMESH_PATH/third_party directory.

Environment Variables

If any of the dependent library is not installed in standard locations (/usr/local/, /opt/local), one needs to set environment variables that point to the correct directories. PyMesh check the following environment variables:

  • EIGEN_INC: directory containing the Eigen library.
  • GOOGLEHASH_INCLUDES: directory containing sparse hash.
  • CGAL_PATH: path to CGAL library
  • BOOST_INC: directory containing boost.
  • LIBIGL_PATH: path to libigl.
  • CORK_PATH: path to cork.
  • TETGEN_PATH: path to tetgen
  • TRIANGLE_PATH: path to triangle
  • QHULL_PATH: path to qhull
  • CLIPPER_PATH: path to clipper
  • CARVE_PATH: path to carve
  • GEOGRAM_PATH: path to GeoGram
  • QUARTET_PATH: path to quartet

Build

Let $PYMESH_PATH be the root directory of the repository. The first step is to compile the optional third party dependencies:

cd $PYMESH_PATH/third_party
mkdir build
cd build
cmake ..
make
make install

Third party dependencies will be installed in $PYMESH_PATH/python/pymesh/third_party directory.

Now we can build the main project. It is recommended to build out of source:

cd $PYMESH_PATH
mkdir build
cd build
cmake ..

To build the PyMesh library:

make
make all_tests

Make sure all unit tests are passed before using the library.

Install

The output of building PyMesh consists a set of C++ libraries and a python module. Installing the C++ library is currently not available. However, installing the python package can be done:

./setup.py build # This an alternative way of calling cmake/make
./setup.py install

To check PyMesh is installed correctly, run the following python unit tests::

python -c "import pymesh; pymesh.test()"

Once again, make sure all unit tests are passed, and report any unit test failures.