#VTKによるファイル読み込みと書き込み
VTKによるファイルからの読み込みと書き込み(保存)の方法について説明する.
##対応ファイル形式
VTK独自のフォーマットの他にもSTLなどの汎用的な形式の読み込みにも対応している.
- VTKフォーマット (.vtp, .vti, .vtu, .vtkなど)
- STL (.stl)
- PLY (.ply)
- OBJ (.obj)
- テキスト
##読み込み
読み込むファイル形式によって,使用するReaderが異なるが基本的には.以下の手順で行う.
- Readerを宣言してNew.
- SetFileName()でファイル名を指定して,Update().
- GetOutput()でデータを取得.
一例としてVTKフォーマットのポリゴンデータ(.vtp)をvtkPolyDataに読み込む方法は以下の通り.
(公式サンプル)
vtkSmartPointer<vtkXMLPolyDataReader> reader = vtkSmartPointer<vtkXMLPolyDataReader>::New();
reader->SetFileName("filename.vtp");
reader->Update();
vtkPolyData* polydata = reader->GetOutput();
また,ファイル拡張子でReaderを切り替えるようには以下のようにする.
(参考)
vtkSmartPointer<vtkPolyData> output;
if (extension == ".stl")
{
vtkNew<vtkSTLReader> reader;//vtkSmartPointer<vtkSTLReader>でもOK.
reader->SetFileName(filename);
reader->Update();
output = reader->GetOutput();
}
else if (extension = ".vtk")
{
vtkNew<vtkPolyDataReader> reader;
reader->SetFileName(filename);
reader->Update();
output = reader->GetOutput();
}
##書き込み
読み込みと同様に書き込むファイル形式によって,使用するReaderが異なる.
- Writerを宣言して,New.
- SetFileName()で書き込みファイル名を指定.
- SetInputData()でデータをセット.
- Write()を呼ぶ.正常に保存した場合には1を返し,失敗した場合には0を返す.
VTKフォーマットのポリゴンデータ(.vtp)を保存するコードを以下に示す.
(参考)
//vtkPolyData* polydataを書き込みたいデータとする.
vtkSmartPointer<vtkXMLPolyDataWriter> writer = vtkSmartPointer<vtkXMLPolyDataWriter>::New();
writer->SetFileName("file.vtp");
writer->SetInputData(polydata);
//保存形式を選べる.アスキー/バイナリを選択可能.
//writer->SetDataModeToBinary();
//writer->SetDataModeToAscii();
writer->Write();