[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