[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