[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