我正在尝试使用David Doria的vtkOBJWriter将.vtk文件转换为.obj文件。我从https://github.com/daviddoria/vtkOBJWriter克隆了git,为CMake添加了一个构建目录并生成,并将文件vtkOBJWriterExample.cxx更改为:
#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataReader.h>
#include "vtkOBJWriter.h"
int main (int argc, char *argv[])
{
vtkSmartPointer<vtkPolyData> input;
std::string outputFilename;
// Verify command line arguments
if(argc > 1) // Use the command line arguments
{
if(argc != 3)
{
std::cout << "Required arguments: InputFilename.vtp OutputFilename.obj" << std::endl;
return EXIT_FAILURE;
}
vtkSmartPointer<vtkPolyDataReader> reader =
vtkSmartPointer<vtkPolyDataReader>::New();
reader->SetFileName(argv[1]);
reader->Update();
input = reader->GetOutput();
outputFilename = argv[2];
}
else
{
outputFilename = "output.obj";
vtkSmartPointer<vtkSphereSource> sphereSource =
vtkSmartPointer<vtkSphereSource>::New();
sphereSource->Update();
input->ShallowCopy(sphereSource->GetOutput());
}
vtkSmartPointer<vtkOBJWriter> writer =
vtkSmartPointer<vtkOBJWriter>::New();
writer->SetInput(input);
writer->SetFileName(outputFilename.c_str());
writer->Update();
return EXIT_SUCCESS;
}
反映我正在使用VTK 5.8.0。当我尝试做sudo ./vtkOBJWriterExample trytry1.vtk Documents / comeOn.obj时,没有输出文件(我没有在相应的目录中看到它)。我也尝试过trytry1.vtp,它似乎没有用。我的vtk文件格式是:
# vtk DataFile Version 3.0
vtk output
ASCII
DATASET POLYDATA
FIELD FieldData 3
group_id 1 1 int
0
base_index 1 3 int
0 0 0
avtOriginalBounds 1 6 double
-10 10 -10 10 -10 10
POINTS 14387 float
-5.10204 -2.65306 -9.69246 -5.10204 -2.75294 -9.59184 -5.37199 -2.65306 -9.59184
...
POLYGONS 28256 113024
3 0 1 2
...
POINT_DATA 14387
SCALARS hardyglobal float
LOOKUP_TABLE default
3.4926 3.4926 3.4926 3.4926 3.4926 3.4926 3.4926 3.4926 3.4926
...
似乎与数据目录中car.vtp的格式不匹配,但我认为我做了相应的更改(使用vtkPolyDataReader.h而不是vtkXMLPolyDataReader.h的格式)。我不确定为什么没有输出文件。
我没有收到任何错误消息。
答案 0 :(得分:0)
这是一个目录问题(我的命令行参数指向错误的目录)。应该只是./vtkOBJWriterExample trytry1.vtk comeOn.obj