3D Delaunay

Hi everyone,
I am converting a GH definition into a C# plugin. In GH, I’m creating a Mesh using Delaunay Mesh component. However, in C# all I found was Grasshopper.Kernel.Geometry.Delaunay.Solver, mentioned in a couple of posts (see below).

However, this seems to only work in points on a plane, while the GH component works fine with non-coplanar points. From hopping around in VisualStudio, it seems to confirm that, since there is no Solve_Mesh accepting Node3List. Is it possible at all, using RhinoCommon or GH SDK? Also, I can’t find documentation for Grasshopper.Kernel.Geometry.Delaunay.Solver - has it been deprecated?

Thanks in advance, Eduardo

http://james-ramsden.com/create-2d-delaunay-triangulation-mesh-with-c-in-grasshopper/

The Grasshopper Delaunay mesh component solves the Delaunay meshing in the plane, even for 3d points.
If you want to keep the heights you just need to move the vertices back to their original locations at the end, like this:
delaunay_pts.gh (4.7 KB)

1 Like

If you’re scripting this you might consider implementing MIConvexHull, I believe it does “real” 3D Delaunay triangulation. I’ve been implementing its 2D and 3D convex hull solvers in GHPython lately, and it’s been really stable and fast:

https://designengrlab.github.io/MIConvexHull/

2 Likes

I believe there is no such thing as 3D Delaunay triangulation, since as Daniel already mentioned, it is always solved in a plane. I’ve recently read about the ball-pivoting algorithm, which can be used in three dimensions instead.
A three-dimensional Delaunay triangulation would probably be done with something like tetrahedrons that would fill up a shape or volume, instead of producing a hull or surface. At least that’s how I understand it.

The library @AndersDeleuran links above actually includes 3d Delaunary tetrahedral meshing - and MeshEdit (which also uses that library) includes a component for this.
This is not really what is wanted for triangulating points on a curved surface though, since it fills the space between the points and there won’t necessarily be triangles on the intended surface.
If the surface is close enough to flat, then solving in the projection like the built in GH method does works fine. For shapes which curve around more then indeed ball-pivoting (or 3d alpha shapes) might be needed.

2 Likes

Thanks everybody for chipping in!
Daniel’s suggestion of moving the points back up was exactly what I was looking for.
Thanks Daniel, should have thought of it myself!

I need ‘volumetric’ versions of these technologies. :coffee: