将Obj文件导入vtk

时间:2017-10-20 23:05:11

标签: c++ vtk

我正在使用vtk,我想想象一个objFile但我不知道该怎么做 我想我应该使用ReadObj.cxx但是我应该把我的ObjFile的名字放在哪里。

int main(int argc, char* argv[])
{
 // Parse command line arguments
 if(argc != 2)
 {
 std::cout << "Usage: " << argv[0] << " Filename(.obj)" << std::endl;
 return EXIT_FAILURE;
 }

 std::string filename = argv[1];
 vtkSmartPointer<vtkOBJReader> reader =
 vtkSmartPointer<vtkOBJReader>::New();
  reader->SetFileName(filename.c_str());
 reader->Update();

 // Visualize
 vtkSmartPointer<vtkPolyDataMapper> mapper =
 vtkSmartPointer<vtkPolyDataMapper>::New();
 mapper->SetInputConnection(reader->GetOutputPort());

 vtkSmartPointer<vtkActor> actor =
 vtkSmartPointer<vtkActor>::New();
 actor->SetMapper(mapper);

 vtkSmartPointer<vtkRenderer> renderer =
 vtkSmartPointer<vtkRenderer>::New();
 renderer->AddActor(actor);
 renderer->SetBackground(.3, .6, .3); // Background color green

 vtkSmartPointer<vtkRenderWindow> renderWindow =
  vtkSmartPointer<vtkRenderWindow>::New();
  renderWindow->AddRenderer(renderer);

  vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
   vtkSmartPointer<vtkRenderWindowInteractor>::New();
  renderWindowInteractor->SetRenderWindow(renderWindow);

  renderWindowInteractor->Start();

 return EXIT_SUCCESS;
 }
谁能帮助我吗?感谢。

2 个答案:

答案 0 :(得分:0)

不确定您的问题是什么。 您的代码是正确的,ObjFile的名称是filename。您应该在以命令行运行程序时指定它:

  

ReadObj.exe myobjfile.obj

答案 1 :(得分:0)

您的文件是否有效.obj?你可以将它导入搅拌机或统一或3dsmax进行验证吗? 你没有设置颜色。在hello world示例(Hello World)中,显示了一个与数据一样的多边形数据,并设置了它的颜色。 此外,添加演员后,您没有重置相机,因此相机位置不正确。问候世界也举例说明如何重置相机。 您可以将您的obj加载器的输出连接到hello world示例中的vtkPolyDataMapper,它应该可以正常工作。