相机在世界中的缩放发生变化后,vtkActor大小会随之变化,当我们项目设计一些3D控制器时或者标记点时,我们是不希望标记点大小发生变化的,这样就能保证标记点或者控制点大小永远不会发生变化。那么改如何解决这个问题,其实很简单,我们获取相机的缩放系数后,将此系数附加到vtkActor上,这样就保证了actor与相机之间大小是固定不变的。
图片中的小球与箭头大小相对于相机固定不变。
具体实现步骤如下:
步骤一:
将相机投影方式改成平行投影矩阵:camera->ParallelProjectionOn();
步骤二:
获取相机的缩放系数:double zoom = camera->GetParallelScale();
步骤三:
将此系数附加到vtkActor中:actor->SetScale(zoom, zoom, zoom);
步骤四:
在鼠标管理事件中实时获取相机缩放系数,将最新的缩放系数设置到actor中。
上面是具体实现步骤,但在实际项目开发中,如果是按照上面方式去完成此功能,这样写的代码应该是看不下去的,代码不具备封装性、拓展性、可维护性。想很好的完成此功能最好将vtkActor重写,vt