[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