[vtkusers] Stretch/deform surface
Karthik Krishnan
karthik.krishnan at kitware.com
Thu Jun 19 09:08:23 EDT 2008
Marius Erdt wrote:
> Hi,
>
> I'd like to manually deform a polyData surface, i.e. I set two mouse
> positions and I want a part of the surface to be stretched in the
> direction given by the vector between the points (just like what is
> possible in CAD programs).
>
> I've tried to use the vtkThinPlateSplineTransform on the surface, but
> this has a very global effect on the model. That means, the whole
> surface is translated in the given direction, instead of just a small
> neighborhood.
The Kernel splines, one of which is the Thin plate spline (Thin Plate,
Thin Plate R2LogR) have infinite support. You can change the decay, but
it will still have a non-zero deformation at an infinite distance from
the center.
You might want to consider BSpline transforms for your purpose. They are
local in support and you can define the locality (number of nodes).
VTK does not have a BSpline implementation, but ITK does. You can use
the method
itk::BSplineTransform< double, 3, 3 >::TransformPoint(..)
and iterate over each point in your polydata.
--
Karthik Krishnan
R & D Engineer,
Kitware Inc,
Ph: +1 518 3713971 x119
Fax: +1 518 3714573
More information about the vtkusers
mailing list