[vtkusers] Stretch/deform surface

Miguel Ángel Rodríguez Florido marf at ctm.ulpgc.es
Fri Jun 20 08:46:46 EDT 2008


	Perhaps in my case it was easier, but what I did was just the same that
you comment. The only difference was that I applied the combinations of
transforms to different regions of the surface (rotations and displacement)

	For me this was enough.

	I guess that in your case is more complex. I don't know if somebody in
this list has developed a BSpline for VTK.

	Please, let me know if I can help you or let the vtkusers' list know if
you find a solution.

	Hth.


Marius Erdt escribió:
> 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
>>
> 
> 
> _______________________________________________
> 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

-- 
Miguel Angel Rodriguez Florido
Center for Technology in Medicine-ULPGC-Gran Canaria-CanaryIslands,Spain
Emails:marf@{ctm.ulpgc.es,bwh.harvard.edu}-http://www.ctm.ulpgc.es/~marf
Tfnos:+34 928 451253, +34 928 452956 - Fax:+34 928 451243






More information about the vtkusers mailing list