[vtkusers] Stretch/deform surface

Marius Erdt marius.erdt at gmx.de
Fri Jun 20 08:13:53 EDT 2008


Thanks for your suggestion Miguel.

I've tried to use the vtkWeightedTransformFilter. The input is the 
surface and a thinPlateSpline transform. In addition I've created a 
label array that weights the transform for every point, i.e. 1 for every 
point I want to transform and 0 for every point that should not be 
transformed. However, the result was, that the whole surface was 
distorted, so I think the weights have to be set in another way. What I 
do know is that setting of all weights to 1 results in a global 
transformation as one would expect. But setting some of the weights to 0 
does not seem to work..


Miguel Ángel Rodríguez Florido wrote:
>     If you know the points (or regions) or you can choose them, you 
> could try vtkWeightedTransformFilter
>
> http://www.vtk.org/doc/release/5.0/html/a02205.html
>
>     I hope to help.
>     Best
>
> Karthik Krishnan escribió:
>> 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
>>
>> _______________________________________________
>> This is the private VTK discussion list.
>> Please keep messages on-topic. Check the FAQ at: 
>> http://www.vtk.org/Wiki/VTK_FAQ
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>





More information about the vtkusers mailing list