[vtkusers] Connected Components
prabhat246
prabhat246 at yahoo.com
Mon Nov 24 16:01:07 EST 2008
Hi Mike,
Thanks a million.... It worked. :)
Regards,
Prabhat
Mike Jackson-19 wrote:
>
> First off you need a matching con->Delete() for the
> vtkPolyDataConnectivityFilter * con =
> vtkPolyDataConnectivityFilter::New(); function otherwise you are
> leaking that filter object.
>
> Next, I bet this takes a really long time to run because for 10,000
> components, you have to run the same filter 10,000 times. How about
> this filter instead:
>
> //Find all the discrete components
> vtkSmartPointer<DiscreteParticleFilter> connectivity =
> vtkSmartPointer<DiscreteParticleFilter>::New();
> connectivity->SetInput( mc->GetOutput() );
> connectivity->Update(); //Force the pipeline to execute ...
> vtkPolyData* currentComponent = NULL;
> vtkPolyDataCollection* components = connectivity->GetPolyRegions();
> components->InitTraversal(); //Init the enumeration
> int count = components->GetNumberOfItems();
>
> //Iterate over each PolyLoop and decide how to triangulate it
> for (int i = 0; i < count; ++i) {
> currentComponent = components->GetNextItem();
> // Add Mapper and Actor code from below
> vtkPolyDataMapper *polymap;
> vtkActor * polyact;
>
> //std::cout<<connect->GetOutput()->GetNumberOfCells()<<std::endl;
>
> polymap = vtkPolyDataMapper::New();
> polymap->SetInput(currentComponent);
> polyact = vtkActor::New();
> polyact->SetMapper(polymap);
> renderer->AddActor(polyact);
>
> vtkBoxWidget *boxWidget = vtkBoxWidget::New();
> boxWidget->SetInteractor(iren);
> boxWidget->SetPlaceFactor(1);
> boxWidget->SetProp3D(polyact);
> boxWidget->PlaceWidget();
> boxWidget->SetOutlineFaceWires(1);
> boxWidget->SetScalingEnabled(0);
> boxWidget->SetRotationEnabled(1);
> boxWidget->OutlineFaceWiresOff();
> boxWidget->OutlineCursorWiresOff();
> boxWidget->HandlesOff();
> boxWidget->On();
>
> vtkMyCallback *callback = vtkMyCallback::New();
> boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);
> }
>
> I am attaching the source files.
>
> _________________________________________________________
> Mike Jackson mike.jackson at bluequartz.net
> BlueQuartz Software www.bluequartz.net
> Principal Software Engineer Dayton, Ohio
>
>
>
>
>
>
> On Nov 24, 2008, at 9:13 AM, prabhat246 wrote:
>
>>
>> Hi,
>>
>> I have a object containing large no. of multiple connected
>> components(say
>> 10,000). I want to be able to transform each component seperately.
>> I am
>> doing it in following way.
>>
>> for(int i = 0; i< NoOfRegions; i++)
>> {
>> vtkPolyDataConnectivityFilter * con =
>> vtkPolyDataConnectivityFilter::New();
>> con->SetInput(mc->GetOutput());
>> con->SetExtractionModeToSpecifiedRegions();
>> con->AddSpecifiedRegion(i);
>> connect->Update();
>>
>> vtkPolyDataMapper *polymap;
>> vtkActor * polyact;
>>
>> //std::cout<<connect->GetOutput()->GetNumberOfCells()<<std::endl;
>>
>> polymap = vtkPolyDataMapper::New();
>> polymap->SetInput(con->GetOutput());
>> polyact = vtkActor::New();
>> polyact->SetMapper(polymap);
>> renderer->AddActor(polyact);
>>
>> vtkBoxWidget *boxWidget = vtkBoxWidget::New();
>> boxWidget->SetInteractor(iren);
>> boxWidget->SetPlaceFactor(1);
>> boxWidget->SetProp3D(polyact);
>> boxWidget->PlaceWidget();
>> boxWidget->SetOutlineFaceWires(1);
>> boxWidget->SetScalingEnabled(0);
>> boxWidget->SetRotationEnabled(1);
>> boxWidget->OutlineFaceWiresOff();
>> boxWidget->OutlineCursorWiresOff();
>> boxWidget->HandlesOff();
>> boxWidget->On();
>>
>> vtkMyCallback *callback = vtkMyCallback::New();
>> boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);
>> }
>>
>>
>> But It runs successfully if I have less no. of components say 10 but
>> it
>> crashes on large no of componenets.. I feel that It is due to memory
>> crash.
>> Of course all these objects inside loop are not being deleted.
>>
>> is there anything that can be avoided to save memory?? or Is there
>> any other
>> lighter way to do this???
>> Please help me out.
>>
>> Thanks a lot
>> Prabhat Kumar Gupta
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Connected-Components-tp20661092p20661092.html
>> Sent from the VTK - Users mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> 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
>
>
--
View this message in context: http://www.nabble.com/Connected-Components-tp20661092p20669762.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list