9

I have a 3D Y-Shape hollow tube, not so good surface.

 Import["http://dl.dropbox.com/u/68983831/tube02.vtk", "Graphics3D"]

enter image description here

I tried to use following vertex data plot and generate mesh.

pts = Import["tube02.vtk", "VertexData"];
Graphics3D[Point@pts]

enter image description here

Question: How to plot a smooth surface from vertex data and then generate tetrahedral or simple mesh? I was trying to use following thread to solve my problem: How to calculate volume of convex hull and volume of a 3D object and My donut has holes in it!.

1 Answers1

6

Here is an (imperfect) starting point for how to use ListSurfacePlot3D with this example. It needs manual refinement, but I only have time for this quick test:

pts = Import["http://dl.dropbox.com/u/68983831/tube01.vtk", 
   "VertexData"];
Show[Map[ListSurfacePlot3D[#] &, Partition[pts, 300]]]

many plots

The idea is to break the over 6000 points in your shape into smaller chunks that are relatively simple to recognize. In your example data, there seems to be at least enough order in the point list that the chunking using a brutal Partition seems to work OK.

In general, you have to control the choice of the chunks more carefully.

The reason I do the Partition operation is that ListSurfacePlot3D has an easier time recognizing where the neighboring surface points are if you don't give it all the points at once.

The order of points passed to ListSurfacePlot3D doesn't matter, but a smaller chunk containing all neighboring points makes the plotting of the surface more reliable.

Jens
  • 97,245
  • 7
  • 213
  • 499