前言:本博文主要介绍vtk中基于Camera的交互方式vtkInteractorStyleTrackballCamera 及其子类,小伙伴可以根据需求自定义交互方式。
目录
vtkInteractorStyleTrackballCamera
vtkGeoInteractorStyle
vtkInteractorStyleImage
vtkInteractorStyleMultiTouchCamera
vtkInteractorStyleRubberBand3D
vtkInteractorStyleRubberBandPick
vtkInteractorStyleTrackballCamera
位置:../Interaction/Style
描述:vtkInteractorStyleTrackballCamera允许用户交互操作(旋转,平移等)相机,场景的视点。在轨迹球交互中,鼠标运动的幅度与与特定鼠标绑定相关的摄像机运动成比例。例如,小的左键运动会引起相机围绕焦点旋转的小变化。对于3键鼠标,左键用于旋转,右键用于缩放,中间键用于平移,ctrl +左键用于旋转,shift +右键用于环境旋转。(鼠标按键更少,ctrl + shift +左键用于缩放,shift +左键用于平移。)
注意:在该类及其子类中,Actors并没有发生移动,而是Camera移动。
vtkGeoInteractorStyle
描述:vtkInteractorStyleTrackballCamera子类,包含地理视图的交互功能,包括轨道、缩放和倾斜。它还包括一个罗盘小部件,用于更改视图参数。在9.0.3中不存在该类。
vtkInteractorStyleImage
描述:vtkInteractorStyleTrackballCamera子类,专门设计用于使用vtkImageActor渲染的图像。几个事件从它的超类vtkinteractstyle重载,因此鼠标绑定是不同的。(绑定使相机的视图平面垂直于x-y平面。)综上所述,二维图像交互的鼠标事件如下:
-鼠标左键触发窗口级事件
- CTRL鼠标左键旋转相机周围的视野平面正常
-鼠标左键SHIFT平移相机
- CTRL SHIFT鼠标左键多利(位置缩放)相机
-鼠标中键平移相机
-鼠标右键拖动相机。
- SHIFT鼠标右键触发选择事件
如果SetInteractionModeToImageSlicing()被调用,那么一些鼠标事件被改变如下:
- CTRL鼠标左键切片图像
- SHIFT中鼠标切片图像
- CTRL鼠标右键旋转相机
如果SetInteractionModeToImage3D()被调用,那么一些鼠标事件被改变如下:
-鼠标左键SHIFT旋转摄像机进行倾斜切片
- SHIFT中鼠标切片图像
- CTRL右键鼠标也切片图像
在所有模式下,以下按键绑定生效:
- R重置窗口/级别
- X重置为矢状视图
- Y重置为冠状视图
- Z复位为轴向视图
vtkInteractorStyleMultiTouchCamera
描述:采用多点触摸,不太理解。
vtkInteractorStyleRubberBand3D
描述:vtkInteractorStyleRubberBand3D在3D视图中管理交互。该样式还允许使用左键绘制橡皮筋。当按下按钮时,所有的相机变化都会调用StartInteractionEvent,当鼠标(或滚轮)移动时调用InteractionEvent,当按钮释放时调用EndInteractionEvent。绑定如下:
鼠标左键-选择(调用SelectionChangedEvent)。
鼠标右键-旋转。
Shift +鼠标右键-缩放。
鼠标中间-移动
滚轮-缩放。
vtkInteractorStyleRubberBandPick
描述:与父类功能相似,但该类可以选择矩形框。当用户点击“r”时,使用左键会绘制矩形。当释放左键时,Pick点为矩形的中心点。若对应的Picker为vtkAreaPicker时,则会作用于整个选择的矩形框。当用户点击“p"时,上述操作会作用于一个1X1的矩形。
vtkParallelCoordinatesInteractorStyle
描述:交互式操作的相机专门用于平行坐标
vtkParallelCoordinatesInteractorStyle使相机的视角平面垂直于x-y平面。总的来说,鼠标事件如下:
+鼠标左键触发窗口级事件
+ CTRL鼠标左键旋转相机围绕其视图平面正常
+ SHIFT鼠标左键平移相机
+ CTRL SHIFT鼠标左键多利(位置缩放)相机
+鼠标中键平移相机
+鼠标右键拖动相机。
+ SHIFT鼠标右键触发选择事件
另附 常用的交互方式