代码之家  ›  专栏  ›  技术社区  ›  hanen balti

将Obj文件导入vtk

  •  0
  • hanen balti  · 技术社区  · 8 年前

    我正在使用vtk,我想可视化一个objFile,但我不知道怎么做 我想我应该使用ReadObj。但是我应该把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 回复  |  直到 8 年前
        1
  •  0
  •   Geronimo    8 年前

    你的文件有效吗。obj?您可以将其导入blender、unity或3dsmax进行验证吗? 你没有设定颜色。在hello world示例中( Hello World )一个polydata,就像你的文件一样,被显示出来,并且它的颜色被设置。 此外,您在添加演员后没有重置摄像机,因此摄像机处于错误位置。hello world示例还显示了如何重置摄像机。

        2
  •  0
  •   Pierre S.    8 年前

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