2017-10-20 150 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,它應該可以正常工作。