[vtkusers] Blending a curve onto a 3D surface

Will Schroeder will.schroeder at kitware.com
Wed Jan 31 06:52:24 EST 2001


Hi Alan-

At 03:47 PM 1/30/2001 -0800, feigee at us.sina.com wrote:

>Basically we have a 3D unstructured surface mesh, and a curve sits on top 
>of it.  (can be a closed curve or non-closed curve, such as a straight 
>line) We need to "blend" this curve into this 3D surface mesh so that the 
>final 3D surface mesh reflects the existence of this curve.  Quality of 
>the resulting mesh is not a concern at this step, so long as it is a valid 
>mesh.

The class vtkDelaunay2D does this, although probably not in the form that 
you'd like. In vtkDelaunay2D you can define constraint edges, where the 
edges are one or more polylines whose points are defined by points embedded 
in the mesh. The way it works is that a loop is built by travelling from 
the start point (of the polyline) to the last point (of the polyline) by 
grabbing points on the left and right side of the curve that are connected 
by edges that cross the constraint polyline. vtkDelaunay2D can process 2.5D 
meshes (i.e., the mesh can  be projected to a plane) which allows the 
algorithm to decide what is on the left and what is on the right more 
easily (half-space plane comparisons). Anyway, once the loop is built, it 
is split into two parts (cut in half by the constraint edge), and each of 
the two loops is passed to vtkPolygon::Triangulate. (Similar results could 
be achieved by swapping edges...it might be more robust with arbitrary 3D 
surfaces.)


>And if we have a set of scattered 3D points, is there any way that we can 
>"re-construct" them into a 3D surface?

Look at contrib/vtkSurfaceReconstructionFilter, 
graphics/vtkGaussianSplatter, and graphics/vtkShepardMethod. Each generates 
a volume that you isocontour to generate the final surface.

Will





More information about the vtkusers mailing list