ANN: Meshing 0.5.0

I am happy to announce the release of Meshing 0.5.0. The biggest additions to this release are several performance improvements, documentation, and the introduction of a more generic API.

I’ve spent a lot of time working to improve the performance of all the algorithms, and each algorithm now runs around 6x faster compared to the last release.

Meshing can now directly sample a function, thereby avoiding allocation of a large distance field. From my testing, this yields ~25x-50x speedup for things such as implicit surface modeling and visualization.

I have also added much needed documentation.
https://juliageometry.github.io/Meshing.jl/dev

Isosurface extraction will now takes AbstractArray as an argument, which makes supporting things such as AxisArrays and visualization of medical imagery such as NRRD much simpler (4 LOC minus imports).

https://juliageometry.github.io/Meshing.jl/dev/examples/#NRRD-Data-1

The isosurface function is now the common API for each algorithm. This return two vectors of vertices (default: SVector) and faces (default: SVector), which means Meshing.jl can be used without importing/using GeometryTypes. You can read more about it here: https://juliageometry.github.io/Meshing.jl/dev/api/#Isosurface-1

My hope is that this will allow people experimenting with Boundary Element Methods and topological analysis to easily integrate isosurface extraction with different vertex, face, and mesh types, such as GeometryBasics or Polyhedra.

The objective for the next few release are to improve errors, support isocaps, add different interpolation mechanisms, and finish up the Dual Contours implementation.

I hope people find this release useful.

23 Likes

I thought I’d post here to say that I’ve just used this for some testing and I really appreciated how easy it was to use with Makie and how fast it was at generating isosurfaces. Here’s a pretty picture:

(script at this gist https://gist.github.com/c42f/454c1cbaed66354b77912a1cf41a0d96)

6 Likes