在VTK中设置相机和截头台参数
Setting camera and frustum parameters in VTK
我正在VTK中渲染网格模型,如下所示:
string mesh_filename = "mesh.ply";
vtkSmartPointer<vtkPLYReader> mesh_reader = read_mesh_ply(mesh_filename);
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(mesh_reader->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetSize(640, 480);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
//Add the actors to the scene
renderer->AddActor(actor);
renderer->SetBackground(1, 1, 1);
我正试图通过呼叫来设置相机
vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
renderer->SetActiveCamera(camera);
camera->SetPosition(0, 650, 0);
然后通过调用渲染场景
renderWindow->Render();
renderWindowInteractor->Start();
问题是,在这种透视投影下,模型并没有在这个视点上显示出来。我可以通过调用来获取和设置截头体的远近值
double near, far;
camera->GetClippingRange(near, far);
near = 0.001;
far = 1000000;
camera->GetClippingRange(near, far);
但模型仍然没有显示出来。我需要更改顶部、底部、左侧和右侧吗?如果是,我该怎么做?
编辑:
我已经设置了相机的焦点、视角和位置,并使剪辑范围巨大,仍然看不到物体:
camera->SetFocalPoint(0,0,0);
camera->SetViewUp(0,1,0);
camera->SetPosition(0,650,0);
renderer->ResetCameraClippingRange(-10000,100000,-100000,100000,100000,0.0001);
相机的位置由其焦点、位置和上方向向量定义。要查看模型,您需要将焦点放在模型附近,以便相机观察它。如果其他一切都正常,则相机可能只是指向错误的方向。
您可以使用vtkCamera
方法SetFocalPoint
的过载来设置相机焦点。
您可能还想尝试vtkRenderer
方法ResetCamera()
,该方法将修改相机以查看所有可见的演员。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- LIBELAS是否取决于相机参数
- 使用缝合一组图像的相机参数使用针迹不同的图像集
- Opencv2.4 设置相机参数
- 如何在PCL获取相机的参数?
- 如何获得具有已知内部参数的外部相机参数
- 在VTK中设置相机和截头台参数
- 如何在用于增强现实的OpenCV上使用相机校准参数