[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