A collection of tools for working with Meshes

First Commit


Last Touched

3 months ago

Commit Count

198 commits



Build Status Coverage Status

This package is designed to make it easy to work with polygon mesh data. It is a primarily a meta-package for Meshing, MeshIO, and GeometryTypes. In addition, it is a great (and recommended) place for experimental development that is not yet congruent with the GeometryTypes type heirarchy.

The current release series corresponds to v0.2.x. The pre-GeometryTypes, et. al. version, v0.1.x, is still supported by @sjkelly.

Data Types

Meshes does not define many datatypes, but rather it uses those defined by GeometryTypes where possible.



This functionality is derived from the Meshing package. Full documentation is available there. In combination with GeometryTypes it is easy to mesh implicit functions.

using Meshes
using GeometryTypes

s = SignedDistanceField(HyperRectangle(Vec(0,0,0.),Vec(1,1,1.))) do v
           sqrt(sum(dot(v,v))) - 1 # sphere
m = HomogenousMesh(s) # uses Marching Tetrahedra from Meshing.jl


Meshes v0.2.0 and up depends on the Julia FileIO framework in order to load files. This is re-exported from FileIO.

using Meshes
m = load("my3dmodel.obj")
save("my3dmodel_now_a.ply", m)


This package started with an exclusive focus on Mesh geometry. For the first year of existence it worked exclusively for computational geometry purposes. In early 2015 an effort started to generalize for compatibilty with display libraries such as OpenGL. This meant redesigning types and operations. Ultimately it was broken up into other packages to facilitate collaboration. Most notably Meshing, MeshIO, and GeometryTypes contain a significant portion of the original code. We plan to support this package as a meta-package for domain focused usability and extensions.


This package is available under the MIT "Expat" License. See LICENSE.md.