2017-10-20 70 views
0

我使用VTK,我想要一个objFile,但我不知道该怎么做 我认为我应该使用ReadObj.cxx,但我应该在哪里放置我的ObjFile的名称。导入一个OBJ文件到VTK

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; 
} 

任何人都可以帮助我吗?谢谢。

回答

0

不知道你的问题是什么。 你的代码是正确的,你的ObjFile的名字是filename

ReadObj.exe myobjfile.obj

0

是您的文件的有效.OBJ:当您运行程序作为命令行应指定呢?你可以将它导入搅拌机或统一或3dsmax来验证它吗? 您没有设置颜色。在hello world示例中(Hello World),polydata与您的文件一样显示,并且它的颜色已设置。 另外,添加演员后没有重置相机,所以相机位置不正确。 hello world例子也说明了如何重置摄像头。 您可以将您的obj加载器的输出连接到hello world示例中的vtkPolyDataMapper,它应该可以正常工作。