| []( | |
| https://atlas.is.localnet/bamboo/browse/PS-FMP/latest) | |
| Perceiving Systems Mesh Package | |
| =============================== | |
| This package contains core functions for manipulating meshes and | |
| visualizing them. It requires ``Python 3.5+`` and is supported on | |
| Linux and macOS operating systems. | |
| The ``Mesh`` processing libraries support several of our projects such as | |
| * [CoMA: Convolutional Mesh Encoders for Generating 3D Faces](http://coma.is.tue.mpg.de/) | |
| * [FLAME: Learning a model of facial shape and expression from 4D scans](http://flame.is.tue.mpg.de/) | |
| * [MANO: Modeling and Capturing Hands and Bodies Together](http://mano.is.tue.mpg.de/) | |
| * [SMPL: A Skinned Multi-Person Linear Model](http://smpl.is.tue.mpg.de/) | |
| * [VOCA: Voice Operated Character Animation](https://github.com/TimoBolkart/voca) | |
| * [RingNet: 3D Face Shape and Expression Reconstruction from an Image](https://github.com/soubhiksanyal/RingNet) | |
| * [Expressive Body Capture: 3D Hands, Face, and Body from a Single Image](https://smpl-x.is.tue.mpg.de/) | |
| Requirements | |
| ------------ | |
| You first need to install the `Boost <http://www.boost.org>`_ | |
| libraries. You can compile your own local version or simply do on | |
| Linux | |
| ``` | |
| $ sudo apt-get install libboost-dev | |
| ``` | |
| or on macOS | |
| ``` | |
| $ brew install boost | |
| ``` | |
| Installation | |
| ------------ | |
| First, create a dedicated Python virtual environment and activate it: | |
| ``` | |
| $ python3 -m venv --copies my_venv | |
| $ source my_venv/bin/activate | |
| ``` | |
| You should then compile and install the ``psbody-mesh`` package easily | |
| using the Makefile: | |
| ``` | |
| $ BOOST_INCLUDE_DIRS=/path/to/boost/include make all | |
| ``` | |
| Testing | |
| ------- | |
| To run the tests, simply do: | |
| ``` | |
| $ make tests | |
| ``` | |
| Documentation | |
| ------------- | |
| A detailed documentation can be compiled using the Makefile: | |
| ``` | |
| $ make documentation | |
| ``` | |
| Viewing the Meshes | |
| ------------------ | |
| Starting from version 0.4 meshviewer ships with `meshviewer` -- a | |
| program that allows you to display polygonal meshes produced by `mesh` | |
| package. | |
| ### Viewing a mesh on a local machine | |
| The most straightforward use-case is viewing the mesh on the same | |
| machine where it is stored. To do this simply run | |
| ``` | |
| $ meshviewer view sphere.obj | |
| ``` | |
| This will create an interactive window with your mesh rendering. You | |
| can render more than one mesh in the same window by passing several | |
| paths to `view` command | |
| ``` | |
| $ meshviewer view sphere.obj cylinder.obj | |
| ``` | |
| This will arrange the subplots horizontally in a row. If you want a | |
| grid arrangement, you can specify the grid parameters explicitly | |
| ``` | |
| $ meshviewer view -nx 2 -ny 2 *.obj | |
| ``` | |
| ### Viewing a mesh from a remote machine | |
| It is also possible to view a mesh stored on a remote machine. To do | |
| this you need mesh to be installed on both the local and the remote | |
| machines. You start by opening an empty viewer window listening on a | |
| network port | |
| ``` | |
| (local) $ meshviewer open --port 3000 | |
| ``` | |
| To stream a shape to this viewer you have to either pick a port that | |
| is visible from the remote machine or by manually exposing the port | |
| when connecting. For example, through SSH port forwarding | |
| ``` | |
| (local) $ ssh -R 3000:127.0.0.1:3000 user@host | |
| ``` | |
| Then on a remote machine you use `view` command pointing to the | |
| locally forwarded port | |
| ``` | |
| (remote) $ meshviewer view -p 3000 sphere.obj | |
| ``` | |
| This should display the remote mesh on your local viewer. In case it | |
| does not it might be caused by the network connection being closed | |
| before the mesh could be sent. To work around this one can try | |
| increasing the timeout up to 1 second | |
| ``` | |
| (remote) $ meshviewer view -p 3000 --timeout 1 sphere.obj | |
| ``` | |
| To take a snapshot you should locally run a `snap` command | |
| ``` | |
| (local) $ meshviewer snap -p 3000 sphere.png | |
| ``` | |
| License | |
| ------- | |
| Please refer for LICENSE.txt for using this software. The software is | |
| compiled using CGAL sources following the license in CGAL_LICENSE.pdf | |
| Acknowledgments | |
| --------------- | |
| We thank the external contribution from the following people: | |
| * [Kenneth Chaney](https://github.com/k-chaney) ([PR #5](https://github.com/MPI-IS/mesh/pull/5)) | |
| * [Dávid Komorowicz](https://github.com/Dawars) ([PR #8](https://github.com/MPI-IS/mesh/pull/8)) | |