I'm trying to figure out how to create a surface mesh from a set of labeled 3D points. The 3D object could be something like part of a cave system or asteroid where there would be parts of the surface not visible from looking on the outside. Each point has a radius and not all points are on the surface. The output should be a Nx3 matrix (coordinate matrix) and another matrix to represent the triangles of the mesh (as in the Libigl tutorial https://libigl.github.io/tutorial/). What algorithms are there to find the points on the surface and what algorithms can create meshes from 3D points with complicated pockets? A example 2D slice is below.