[vtkusers] How to cut and flat a volumedata with an spline

Bill Lorensen bill.lorensen at gmail.com
Tue Oct 26 01:48:45 EDT 2010


Try displaying the ruled surface.

On Fri, Oct 22, 2010 at 6:36 AM, Raúl Ferriz <raul at torresyvalero.com> wrote:
> El 21/10/2010 8:28, Raúl Ferriz escribió:
>>
>> El 20/10/2010 20:48, Bill Lorensen escribió:
>>>
>>> BTW, this is sometimes called curvilinear reformatting. It is
>>> available on most commercial radiology workstations and many
>>> commercial PACS systems. A google search on "curvilinear reformat"
>>> will show you many papers and examples.
>>>
>>> Bill
>>>
>>> On Wed, Oct 20, 2010 at 2:45 PM, Bill Lorensen<bill.lorensen at gmail.com>
>>>  wrote:
>>>>
>>>> I did this many years ago. This is what I recall...
>>>>
>>>> I would use the RuledSurfaceFilter to create a surface between two
>>>> splines. I assume you have one spline. You can use
>>>> vtkTransformPolyDataFilter to create a second spline translated from
>>>> the first. �The original and translated splines will be the input to
>>>> the ruled surface filter. Then I would use vtkProbeFilter to sample
>>>> the imagedata with the ruled surface The input will be the output of
>>>> the RuledSurface filter, the Source will be the image data.
>>>>
>>>> See how that works, then we can attack the flattening issue.
>>>>
>>>> Bill
>>>
>>
>> Many thanks Bill!!
>>
>> I will work around this and ask again if I weren't able to this work as I
>> want.
>>
> Hello users,
> I have this code:
>
>        line_sup = vtkPolyData::New();
>
>        this->m_LineaSP->GetPolyData ( line_sup );
>
>        // Create second spline 30 units down
>        trans = vtkTransform::New();
>        trans->Translate ( 0.0, 0.0, -30.0 );
>
>        transFilter = vtkTransformPolyDataFilter::New();
>        transFilter->SetInput ( line_sup );
>        transFilter->SetTransform ( trans );
>        transFilter->Update ();
>
>        // Merge two lines on one polydata
>        vtkAppendPolyData * mergedPolyData = vtkAppendPolyData::New();
>        mergedPolyData->AddInput ( line_sup );
>        mergedPolyData->AddInputConnection ( transFilter->GetOutputPort () );
>        mergedPolyData->Update();
>
>        // Create ruled surface
>        vtkRuledSurfaceFilter * surface = vtkRuledSurfaceFilter::New();
>        surface->SetInputConnection ( mergedPolyData->GetOutputPort() );
>        surface->SetOffset ( 0 );
>        surface->SetOnRatio ( 2 );
>        surface->PassLinesOn ();
>        surface->SetRuledModeToResample ();
>        surface->SetDistanceFactor ( 60.0 );
>
>        vtkProbeFilter * probe = vtkProbeFilter::New();
>        probe->SetSource ( imageData );
>        probe->SetInputConnection ( surface->GetOutputPort () ) ;
>        probe->Update();
>
>
> This seems to work, but at probe filter,
> vtkImageData::SafeDowncast(probe->GetOutput()) allways return NULL, if I
> don't safedowncast, object returned seems to have 0 valid points. I had
> checked bounding boxes of mergedPolyData and imageData and they intersects,
> so I can assume that surface is working properly. Am I doing something wrong
> ?
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK 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