Bonjour,
J'ai écrit une petite application qui permet de charger un assemblage 3D depuis un fichier au format stl. Ensuite avec les fonctions vtk je suis capable d'en extraire les pièces de telle sorte que chaque pièce devienne un nouveau "vtkactor", ça marche très bien et du coup je suis même capable de colorier les composants. Le problème est que lorsque je déplace l'assemblage (pas la caméra ) juste avant d'effectuer l'extraction, les "vtkactor" se retrouvent au même positions qu'il y aurait eu si je n'avais pas déplacer l'assemblage.
Pour être plus clair, lorsque je bouge mon assemblage par exemple de 1m dans une direction donnée puis procède à l’extraction des composants, ceux-ci ne se superposent pas avec l'assemblage dans sa nouvelle positions mais avec celle avant le déplacement! Je ne veux pas de ça
Voici un extrait du code que
Code:appendFilter->AddInputData(vtkPolyData::SafeDownCast(actor->GetMapper()->GetInput())); appendFilter->Update(); vtkPolyDataConnectivityFilter *connectivityFilter=vtkPolyDataConnectivityFilter::New(); connectivityFilter->SetInputConnection(appendFilter->GetOutputPort()); connectivityFilter->SetExtractionModeToAllRegions(); connectivityFilter->Update(); nbracteurs=connectivityFilter->GetNumberOfExtractedRegions(); connectivityFilter->SetExtractionModeToSpecifiedRegions(); for (i=0; i<nbracteurs;i++) { connectivityFilter->Update(); connectivityFilter->InitializeSpecifiedRegionList(); connectivityFilter->AddSpecifiedRegion(i); connectivityFilter->Update(); vtkPolyData *output = vtkPolyData::New(); output->DeepCopy(connectivityFilter->GetOutput()); vtkPolyDataMapper *mapper =vtkPolyDataMapper::New(); mapper->SetInputData(output); mapper->Update(); vtkActor *actor2=vtkActor::New(); actor2->SetMapper(mapper); m_renderer->AddActor(actor2); }
-----