2013-11-26 2 views
-1

루프에서 메쉬를 렌더링하는 데 간단한 코드를 사용하고 있습니다. 실제로 각 반복마다 시점을 변경하고 렌더링 이미지를 저장합니다. 나는 아래 작은 컴파일 가능한 예제로이 감소 :VTKRenderWindow를 자동으로 닫는 방법

int main(int argc, char **argv) { 
vtkSmartPointer<vtkPLYReader> fileReader = vtkSmartPointer<vtkPLYReader>::New(); 

fileReader->SetFileName("benchvise_mesh.ply"); 
fileReader->Update(); 
vtkSmartPointer<vtkPolyData> polydata_ = fileReader->GetOutput(); 

vtkSmartPointer<vtkRenderWindow> render_win = vtkSmartPointer<vtkRenderWindow>::New(); 
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); 
vtkSmartPointer<vtkActor> actor_view = vtkSmartPointer<vtkActor>::New(); 
vtkSmartPointer<vtkCamera> cam = vtkSmartPointer<vtkCamera>::New(); 
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); 

for (int i = 0; i < 100; i++) { 

    mapper->SetInput(polydata_); 
    mapper->Update(); 


    cam->SetViewAngle(58); 
    cam->SetClippingRange(0.00001, 10000); 
    //Invert view Up 
    cam->SetViewUp(0, -1, 0); 
    cam->SetPosition(0, 0, -500); 
    cam->SetFocalPoint(0, 0, 1); 
    cam->Modified(); 

    actor_view->SetMapper(mapper); 
    actor_view->Modified(); 

    renderer->SetActiveCamera(cam); 
    renderer->AddActor(actor_view); 
    renderer->SetBackground(1.0, 1.0, 1.0); 
    renderer->Modified(); 


    render_win->AddRenderer(renderer); 
    render_win->SetSize(640, 480); 
    //white 
    render_win->Modified(); 


    render_win->Start(); 
    render_win->Render(); 
    render_win->Finalize(); 

} 

}

문제는, 내가이 많은 vtkWindow 아이콘이 내 작업 표시 줄에 나타나지 결국 중단 PC를 가지고 실행할 때. 마치 렌더링 윈도우가 살아있는 각 루프에 나타납니다. 그러나 아이콘을 클릭하면 창이 실제로 나타나지 않습니다.

각 반복에서 렌더링 윈도우를 정리할 수없는 것이 있습니까?

BTW, 나는 VTK 5.8 당신이 할 몇 가지 '잘못'이

답변

0

와 Ubntu에서 실행하고 있습니다. 모든 루프를 잘못 제거하십시오. 가장 중요한 것은 render_win->Start()입니다. 시작시 초기화하고보기에 대한 수정 사항을 수정 한 후 각 루프에서 render_win->Render()으로 전화하십시오. (매퍼 또는 카메라에 대한 호출은 SetPosition이며, similars는 다시 연결하지 않고도보기에 영향을 미치고 다시 연결은 Add????() - 행동 양식). Modified() 호출은 암시 적이어야하며 수동으로 호출해야합니다.

관련 문제