[vtkusers] example of vtkPolyDataConnectivityFilter
David Doria
daviddoria+vtk at gmail.com
Thu Dec 24 09:22:30 EST 2009
On Wed, Dec 23, 2009 at 9:15 PM, David Doria <daviddoria+vtk at gmail.com> wrote:
> On Wed, Dec 23, 2009 at 8:42 PM, Jinyoung Hwang <hwangjinyoung at gmail.com> wrote:
>> Hi all,
>>
>> I implemented an example of vtkPolyDataConnectivityFilter, because
>> vtk wiki do not provide it yet.
>> You can use it as below codes.
>>
>> Thanks,
>>
>> Jinyoung
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> #include "vtkSmartPointer.h"
>> #include "vtkStructuredPointsReader.h"
>> #include "vtkMarchingCubes.h"
>> #include "vtkPolyDataConnectivityFilter.h"
>> #include "vtkPolyDataMapper.h"
>> #include "vtkActor.h"
>> #include "vtkProperty.h"
>> #include "vtkRenderer.h"
>> #include "vtkRenderWindow.h"
>> #include "vtkRenderWindowInteractor.h"
>>
>> int main(int argc, char* argv[])
>> {
>> // data load
>> vtkSmartPointer<vtkStructuredPointsReader> reader =
>> vtkSmartPointer<vtkStructuredPointsReader>::New();
>> reader->SetFileName("test.vtk");
>> reader->Update();
>> // MC is used to display in 3D
>> vtkSmartPointer<vtkMarchingCubes> cubes =
>> vtkSmartPointer<vtkMarchingCubes>::New();
>> cubes->SetInputConnection(reader->GetOutputPort());
>> cubes->ComputeNormalsOn();
>> cubes->ComputeGradientsOn();
>> cubes->SetValue(0, 20);
>> cubes->Update();
>> // this is to use remove other parts of largest region
>> // you can set specific region using
>> 'SetExtractionModeToPointSeededRegions' function
>> vtkSmartPointer<vtkPolyDataConnectivityFilter> cfilter =
>> vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
>> cfilter->SetInputConnection(cubes->GetOutputPort());
>> cfilter->SetExtractionModeToLargestRegion();
>> //cfilter->SetExtractionModeToPointSeededRegions();
>> //cfilter->SetClosestPoint(x,y,z);
>> cfilter->Update();
>> // create a mapper
>> vtkSmartPointer<vtkPolyDataMapper> mapper =
>> vtkSmartPointer<vtkPolyDataMapper>::New();
>> mapper->SetInputConnection(cfilter->GetOutputPort());
>> mapper->ScalarVisibilityOn();
>> mapper->Update();
>> // create an actor
>> vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
>> actor->GetProperty()->SetColor(1,1,1);
>> actor->SetMapper(mapper);
>>
>> // create a renderer
>> vtkSmartPointer<vtkRenderer> renderer =
>> vtkSmartPointer<vtkRenderer>::New();
>> renderer->AddActor(actor);
>> // create a render window
>> vtkSmartPointer<vtkRenderWindow> renwin =
>> vtkSmartPointer<vtkRenderWindow>::New();
>> renwin->AddRenderer(renderer);
>>
>> // create an interactor
>> vtkSmartPointer<vtkRenderWindowInteractor> iren =
>> vtkSmartPointer<vtkRenderWindowInteractor>::New();
>> iren->SetRenderWindow(renwin);
>> iren->Initialize();
>> iren->Start();
>> reader->Delete();
>> cubes->Delete();
>> cfilter->Delete();
>> mapper->Delete();
>> actor->Delete();
>> renderer->Delete();
>> renwin->Delete();
>> iren->Delete();
>>
>> return 0;
>> }
>> _______________________________________________
>> 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
>>
>>
>
> Excellent! I have added it to the wiki here:
> http://www.cmake.org/Wiki/VTK/Examples/vtkPolyDataConnectivityFilter
>
> Note that you do not have to call Delete() on objects that you have
> created with smart pointers, that is part of their power :)
>
> I think this type of contribution back to VTK will really make a difference!
>
> Thanks,
>
> David
>
Jinyoung,
Can you please send the test.vtk that you used for this example?
Thanks,
David
More information about the vtkusers
mailing list