0

我正在尝试使用 David Doria 的 vtkOBJWriter 将 .vtk 文件转换为 .obj 文件。我从https://github.com/daviddoria/vtkOBJWriter克隆了 git ,为 CMake 和 make 添加了构建目录,并将文件 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 )。我不确定为什么没有输出文件。

我没有收到任何错误消息。

4

1 回答 1

0

这是一个目录问题(我的命令行参数指向错误的目录)。它应该只是 ./vtkOBJWriterExample trytry1.vtk comeOn.obj

于 2013-10-24T04:55:58.553 回答