VTK入门——VTKCamera

  • Post author:
  • Post category:其他


最近写项目时被这个camera搞得晕头转向的,先介绍下camera的一些常用接口

1、

ParallelProjectionOn

()开启平行光投影,需要注意的时一旦你用了这个你后面对camera的setpostion()、zoom()这些操作都无法正常生效,想要改变大小你只能通过SetParallelScale(int temp)这个数表示着camera到图像距离越小图像就越大

2、

OrthogonalizeViewUp

()设置正交角度,这个一般和1那个函数一起用

3、

ComputeViewPlaneNormal

()基于当前的位置和焦点重置视平面法向,否则会出现斜推剪切效果,这个我一般和resetCamera()一起用,就是说在初始化的用

4、

ResetCameraClippingRange

()重置相机的最远端和最近段的距离范围,这个我遇到的是我用了setpostion然后没效果后面加这个函数就行了

5、

SetVierAngle

(double angle)默认角度是30°如果是平行投影,这个函数也无效

6、vtkCamera::


Dolly


(),vtkCamera::


Roll


()旋转,vtkCamera::


Azimuth


()(纬度),vtkCamera::


Yaw


(),vtkCamera::


Elevation


()(经度),vtkCamera::


Pitch


(),vtkCamera::


Zoom


()这些都是可以控制camera的移动

下面是我使用的几个接口:


构造函数

:m_render->GetActiveCamera()->ParallelProjectionOn();//二维的开启平行光投影

m_render->GetActiveCamera()->OrthogonalizeViewUp();//设置正交角度


设置远近交互

:double temp_scale = m_viewer->GetRenderer()->GetActiveCamera()->GetParallelScale();

m_viewer->GetRenderer()->GetActiveCamera()->SetParallelScale(temp_scale–);

m_viewer->GetRenderer()->GetActiveCamera()->SetParallelScale(temp_scale++);//由于开启了平行投影,用zoom会出现bug,用setpostion没用也不知道为啥


初始化reset

: this->m_render->ResetCamera();

this->m_render->GetActiveCamera()->ComputeViewPlaneNormal();

this->m_render->GetActiveCamera()->SetParallelScale(75.0);//越近越大



版权声明:本文为qq_41077484原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。