LoginSignup
0
0

More than 3 years have passed since last update.

QVTKOpenGLWidgetの表示内容をファイルに出力する

Posted at

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();
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0