Hull Representation of a PointCloud on a Mesh Surface

74 Views Asked by At

I got a manifold, watertight 3D triangle mesh. On a small subset of that mesh the surface is sparsely sampled, which results in a 3D pointcloud.

I now want to compute a boundary or concave hull representation of the point cloud registered to the original mesh. In the simplest form, someone could just select the triangles where points are present. However, because the point cloud is relatively sparse, this would give a very bad representation. Therefore, I need some sort of remeshing, introducing new vertices and triangles. The new mesh however should perfectly register with the old one, namely, for every point on the new "patch"-mesh, it has to have zero distance to the surface of the "base"-mesh.

Ideally I want something like Alpha-Shapes but not on an euclidean plane, but on the meshes surface. And edges between two points would be represented by a geodesic shortest path on the underlying mesh surface.

For example consider the following point cloud on the 3D mesh. Note that this is not on the euclidean plane. The cloud should be wrapped in an envelope which behaves similar to alpha-wrapping with alpha shapes on an euclidean plane:

enter image description here

When we triangulate that envelope it should be registered to the original mesh. Note that for e.g. even a section of a triangle which was not covered by the original point cloud is added to the final triangle patch.

Hull mesh registered to base mesh.

Is anybody aware of a method or an algorithm, which goes into that direction? I have a hard time finding anything in the literature. Seems like alpha-shapes where not generalized to the degree, that they could be applied to this problem?

1

There are 1 best solutions below

0
On

This is more of a long comment. Just roughly thinking through this, it seems that you might want to do this in two steps.

  1. Get the "alpha-shapes"-like hull you are interested in and,
  2. Then make the mesh, ignoring points not used in the hull.

Both of these can probably be solved by making circles (spheres in 3D) around your points of some radius $r$, different for step 1 and 2, and then connecting points/making triangles based on what other points are in the interior of these circles. The trick will be to find the $r$ for each step which makes it look like you want. Too small and you will be disconnected in some places, too large and it will become the classic convex hull.