All Projects → PyMesh → Pymesh

PyMesh / Pymesh

Geometry Processing Library for Python

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pymesh

Trimesh2
C++ library and set of utilities for input, output, and basic manipulation of 3D triangle meshes
Stars: ✭ 206 (-81.85%)
Mutual labels:  graphics, 3d, geometry
Sophus
C++ implementation of Lie Groups using Eigen.
Stars: ✭ 1,048 (-7.67%)
Mutual labels:  graphics, 3d, geometry
Mathc
Pure C math library for 2D and 3D programming
Stars: ✭ 504 (-55.59%)
Mutual labels:  graphics, 3d
Worldwindjava
The NASA WorldWind Java SDK (WWJ) is for building cross-platform 3D geospatial desktop applications in Java.
Stars: ✭ 526 (-53.66%)
Mutual labels:  graphics, 3d
3dmatch Toolbox
3DMatch - a 3D ConvNet-based local geometric descriptor for aligning 3D meshes and point clouds.
Stars: ✭ 571 (-49.69%)
Mutual labels:  3d, geometry-processing
Dwarfcorp
An open-source 3D colony management game for PC, Mac and Linux
Stars: ✭ 460 (-59.47%)
Mutual labels:  graphics, 3d
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (-56.48%)
Mutual labels:  graphics, 3d
Im3d
Immediate mode rendering and 3d gizmos.
Stars: ✭ 561 (-50.57%)
Mutual labels:  graphics, 3d
Cpp 3d Game Tutorial Series
C++ 3D Game Tutorial Series is a YouTube tutorial series, whose purpose is to help all those who want to take their first steps in the game development from scratch.
Stars: ✭ 400 (-64.76%)
Mutual labels:  graphics, 3d
Anki 3d Engine
AnKi 3D Engine - Vulkan backend, modern renderer, scripting, physics and more
Stars: ✭ 688 (-39.38%)
Mutual labels:  graphics, 3d
Fauxgl
Software-only 3D renderer written in Go.
Stars: ✭ 658 (-42.03%)
Mutual labels:  graphics, 3d
Xeogl
A WebGL-based 3D engine for technical visualization. Not actively maintained.
Stars: ✭ 920 (-18.94%)
Mutual labels:  graphics, 3d
Atlasnet
This repository contains the source codes for the paper "AtlasNet: A Papier-Mâché Approach to Learning 3D Surface Generation ". The network is able to synthesize a mesh (point cloud + connectivity) from a low-resolution point cloud, or from an image.
Stars: ✭ 450 (-60.35%)
Mutual labels:  3d, geometry-processing
Lume
Create CSS3D/WebGL applications declaratively with HTML. Give regular DOM elements shadow and lighting.
Stars: ✭ 445 (-60.79%)
Mutual labels:  graphics, 3d
Manif
A small C++11 header-only library for Lie theory.
Stars: ✭ 494 (-56.48%)
Mutual labels:  3d, geometry
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (-61.76%)
Mutual labels:  graphics, 3d
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (-52.95%)
Mutual labels:  graphics, 3d
Beam
✨ Expressive WebGL
Stars: ✭ 383 (-66.26%)
Mutual labels:  graphics, 3d
Touchdesigner shared
TouchDesigner toxes and small projects
Stars: ✭ 385 (-66.08%)
Mutual labels:  graphics, geometry
Osmbuildings
3d building geometry viewer based on OpenStreetMap data
Stars: ✭ 652 (-42.56%)
Mutual labels:  3d, geometry

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 with both C++ and Python, where computational intensive functionalities are realized in C++, and Python is used for creating 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 pymesh/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 pymesh/pymesh meshstat.py -x /models/model.obj

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

Download Source

To retrieve the code:

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

Dependencies

PyMesh has the following required dependencies:

The following C++ libraries are required. They are included in $PYMESH_PATH/third_party directory.

PyMesh also has a number of optional dependencies:

  • Carve: A fast, robust constructive solid geometry library.
  • CGAL: The Computational Geometry Algorithms Library.
  • Clipper: An open source freeware library for clipping and offsetting lines and polygons.
  • Cork: A 3D boolean/CSG library.
  • Draco: An open-source library for compressing and decompressing 3D geometric meshes and point clouds
  • Geogram: A programming library of geometric algorithms
  • libigl: A simple C++ geometry processing library.
  • MMG: Robust, open source & multidisciplinary software for remeshing.
  • Qhull: Engine for convex hulls, Delaunay triangulations, Voronoi diagrams computations.
  • Quartet: A tetrahedral mesh generator that does isosurface stuffing with an acute tetrahedral tile.
  • TBB: Thread building blocks from Intel.
  • Tetgen: Tetrahedral mesh generation engine.
  • Triangle: A two-Dimensional quality mesh generator and Delaunay triangulator.

All of the optional libraries are included in $PYMESH_PATH/third_party directory.

Specify Dependency Locations

All dependencies are included as git submodules in the third_party directory. It is recommended to build these dependencies directly (see Build section). However, it is possible to use an existing dependency installed on your system. If 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: Set EIGEN_PATH to the directory containing the eigen3 directory.
  • CGAL: Set CGAL_PATH to the directory containing UseCGAL.cmake file.
    • Boost: Set BOOST_INC to the directory containing boost.
    • GMP: Set GMP_INC and GMP_LIB to the directories containing GMP header and library.
  • libigl: Set LIBIGL_PATH the include directory of libigl sources.
  • Cork: Set CORK_PATH to the install directory of Cork.
  • Tetgen: Set TETGEN_PATH to the install directory of Tetgen.
  • Triangle: Set TRIANGLE_PATH to the install directory of Triangle.
  • Qhull: Set QHULL_PATH to the install directory of Qhull.
  • Clipper: Set CLIPPER_PATH to the install directory of Clipper.
  • Carve: Set CARVE_PATH to the install directory of Carve.
  • Geogram: Set GEOGRAM_PATH to the install directory of Geogram.
  • Quartet: Set QUARTET_PATH to the install directory of Quartet.
  • Draco: Set Draco_PATH to the install directory of Draco.
  • MMG: Set MMG_PATH to the install directory of MMG.

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
build.py all

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 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.

Feedback

Thank you for using PyMesh! Please consider help PyMesh improve by leaving feedback!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].