VtkRenderWindowInteractor evento bucle y subprocesos

Lo que estoy tratando de hacer en una aplicación que usa vtk para interactuar y renderizar es tener dos partes diferentes: 1 - Un hilo con Rendering y vtkRenderWindowInteractor para la interacción con el mouse. 2 - Un hilo que llama a algunas funciones modificadoras de los datos definidos en el VTK Thread.

Por lo que he llegado hasta ahora en mi investigación, parece bastante complicado y VTK no es seguro para subprocesos. Ahora me he topado con esta publicación (http://vtk.1045678.n5.nabble.com/Multi-threaded-VTK-td4514620.html) en la lista de correo VTK que sugiere usar Qt Signals y Slots. Una primera pregunta sería ¿sigue siendo la buena solución?

Una segunda pregunta que todavía está vinculada a eso y a un problema que he encontrado antes es que elstart()delvtkRenderWindowInteractor está bloqueando Y hasta ahora, no importa lo que haya intentado, todas las modificaciones realizadas por rotación o funciones de traducción o escalado no se realizan siempre que se llame al método start () (porque ingreso un bucle de representación). Mi pregunta sería: si uso Qt Signals and Slots, ¿eso me evitará ese problema?

Aquí está el código básico que tengo hasta ahora para renderizar y lanzar vtkRenderWindowInteractor:

std::string filename = BUNNY;
// Read all the data from the file
vtkSmartPointer<vtkXMLPolyDataReader> reader =vtkSmartPointer<vtkXMLPolyDataReader>::New();
reader->SetFileName(filename.c_str());
reader->Update();
inputPolyData = reader->GetOutput();

cout << "File Found and Loaded : " << filename << endl ;

vtkSmartPointer<vtkTransform> translation = vtkSmartPointer<vtkTransform>::New();
translation->Translate(0.3, -0.05, 0);
transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
//transformFilter->SetInputConnection(reader->GetOutputPort());
transformFilter->SetInputData(inputPolyData);
transformFilter->SetTransform(translation);
//transformFilter->Update();

vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(transformFilter->GetOutputPort());

mainActor = vtkSmartPointer<vtkActor>::New();
mainActor->SetMapper(mapper);

ren->AddActor(mainActor);

vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(win);
vtkInteractorStyleMultiTouchCamera *style =
vtkInteractorStyleMultiTouchCamera::New();
iren->SetInteractorStyle(style);

//Start the event loop
iren->Initialize();
iren->Start();

//defineClipping();
win->PolygonSmoothingOn();
win->Render();
win->Start();

ctxView->Render();

Para poder resumirlo preguntando: ¿Qt me permitirá tener que llamar a funciones transformadoras mientras el hilo de representación e interacción de vtk se ejecuta con el bloqueostart() método devtkRenderWindowInteractor? Si no, ¿debería cambiar mi código y pensar en diferentes posibilidades para interactuar con mis objetos en VTK?

Respuestas a la pregunta(1)

Su respuesta a la pregunta