将 Obj 文件导入 vtk
Importing an Obj File into 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;
}
谁能帮帮我?谢谢
不确定你的问题是什么。
您的代码是正确的,您的 ObjFile 的名称是 filename
。当您 运行 您的程序作为命令行时,您应该指定它:
ReadObj.exe myobjfile.obj
您的文件是有效的 .obj 文件吗?您可以将它导入到 blender 或 unity 或 3dsmax 中进行验证吗?
你没有设置颜色。在 hello world 示例 ( Hello World ) 中,显示了一个多数据,就像您的文件一样,并设置了它的颜色。
此外,您在添加演员后没有重置相机,因此相机的位置不正确。你好世界示例还展示了如何重置相机。
您可以将 obj 加载器的输出连接到 hello world 示例中的 vtkPolyDataMapper,它应该可以正常工作。
我正在使用 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;
}
谁能帮帮我?谢谢
不确定你的问题是什么。
您的代码是正确的,您的 ObjFile 的名称是 filename
。当您 运行 您的程序作为命令行时,您应该指定它:
ReadObj.exe myobjfile.obj
您的文件是有效的 .obj 文件吗?您可以将它导入到 blender 或 unity 或 3dsmax 中进行验证吗? 你没有设置颜色。在 hello world 示例 ( Hello World ) 中,显示了一个多数据,就像您的文件一样,并设置了它的颜色。 此外,您在添加演员后没有重置相机,因此相机的位置不正确。你好世界示例还展示了如何重置相机。 您可以将 obj 加载器的输出连接到 hello world 示例中的 vtkPolyDataMapper,它应该可以正常工作。