3

I have a set of points in 3D that lie on a surface and I also have the normals at every point. I would like to generate a surface triangulation with this information. In addition I could tell the algorithm to use what points lie on the boundary if that is needed.

So, I have quite a bit of information: * points * normals * boundary

How do I triangulate a surface with this information using vtk?

A surface reconstruction algorithm is like using a bomb for this problem since I have all this information that I would like to use. This information comes from a simulation so I know the surface exists and that is quite smooth.

I would like the answer to be cast in terms of either what vtk function to use and if available (and that would be great) examples using this function.

Thank you so much in advance.

Alejandro
  • 1,064
  • 1
  • 8
  • 22
  • Have you already considered setting up an "implicit function", e.g. a radial basis one and then use marching cubes to triangulate the surface? – André Dec 27 '12 at 23:53
  • 1
    I never used vtk so I dont really know if that would be the right approach. What I have is a set of points and the surface normals at those locations. My question is if I can use vtk for this and if possible to give some details (for example what method to use). If I get a positive answer then I will learn the details. – Alejandro Dec 28 '12 at 00:00

3 Answers3

2

You can use the vtkSurfaceReconstruction filter to create a surface from a set of 3D points.

waxeye
  • 21
  • 2
1

You could try the point cloud library

Point Cloud Library

DannyK
  • 1,342
  • 16
  • 23
  • Thank you. I will take a look at it. Would you know if with this library I can also input my normals? Again, I dont need to do a surface reconstruction (at least that's what I think). – Alejandro Dec 27 '12 at 23:57
  • I tried the PCL yesterday. I found out that it works great for small data sets for which points are isotropically distributed (meaning that a point has the same chance of finding a neighbor in all directions). My data sets are large (at leas for PCL), about 200K points and could easily get to 1M points. In addition, my points are not isotropically distributed but clustered in regions (and in the direction) where more detail is needed. After playing around with it for a while PCL did not work for these cases. – Alejandro Jan 03 '13 at 15:15
1

Just the 3D points would be good enough. Since you know that your surface is smooth, you can perform a Delaunay triangulation of the points (vtkDelaunay3D) and apply a subdivision filter for smoothening (vtkButterflySubdivisionFilter).

Delaunay3D triangulation

Sunil Mathew
  • 381
  • 1
  • 5
  • 13