QVTKOpenGLWidgetで表示中のデータをファイルにエクスポートする場合、3Dデータファイルであれば、
vtkSmartPointer<vtkPolyData> part1 = vtkPolyData::SafeDownCast(actor->GetMapper()->GetInputAsDataSet());
のようにvtkActorからpolyDataを取得し、vtkXMLPolyDataWriterを使う方法がある
2D画像であれば表示中のactorを操作せずに出力することが可能である。この時使用するクラスはベクタフォーマットとラスタフォーマットで異なる。
ベクタ画像への出力(vtkGL2PSExporter)
名前はPSExporterだがPS, EPS), PDF, SVG, TeXでの出力が可能(デフォルトはEPS)。
auto exporter = vtkSmartPointer<vtkGL2PSExporter>::New();
exporter->SetRenderWindow(qvtkWidget->GetRenderWindow());
exporter->SetFileFormatToPDF();
exporter->SetFilePrefix("test.pdf);
exporter->Write();
ラスタ画像への出力(vtkImageWriter)
vtkImageWriterはpure virtualなので、出力したいフォーマットに応じてその実装、vtkBMPWriter, vtkJPEGWriter, vtkPNGWriterなどを使う。
// qvtkWidgetが QVTKOpenGLWidgetインスタンスのポインタとする
auto writer = vtkSmartPointer<vtkPNGWriter>::New();
writer->SetFileName("test.png")
auto filter = vtkSmartPointer<vtkWindowToImageFilter>::New();
filter->SetInput(qvtkWidget->GetRenderWindow()); // 引数はvtkRenderWindow *
writer->SetInputData(filter->GetOutput());
filter->Update();
writer->Write();