1 VTK 建立应用程序的基本过程如下:
- 读取/生成数据
- 过滤数据
- 绘制图形
- 交互操作
2 交互:vtkRenderWindowInteractor类
提供操纵杆模式和跟踪球模式(默认)两种交互类型
键盘事件:
- 压下键盘j/t 键,在操纵杆和跟踪球交互类型间切换。
- 压下键盘c/a 键, 在相机和Actors 模式间切换。
- 压下鼠标左键,在相机模式下,围绕相机焦点旋转,在Actors 模式下,围绕Actors的原点旋转。
- 压下鼠标中键,在相机模式下,扫视相机,在Actors 模式下,平移Actors,对于2 键鼠标,使用shift+鼠标左键。
- 压下鼠标右键,在相机模式下,推拉相机,在Actors 模式下,缩放Actors。
- 压下键盘3 键,进入立体模式。
- 压下键盘e 键,退出程序。
- 压下键盘p 键,进行拾取。
- 压下键盘r 键,沿着当前的视方向重新设置相机。
- 压下键盘u 键,调用用户设定的方法。
- 压下键盘s/w 键,Actors 的显示方式在线框/表面模式间切换。
3 LightFollowCameraOn()方法让相机和光源同步
4 拾取:vtkAbstractPicker::Pick()
vtkWorldPointPicker
用于快速的对角色进行拾取,并获取拾取点的世界坐标值(x,y,z)。
vtkAbstractPropPicker
用于拾取场景中的对象,并且返回拾取对象的数据类型。
vtkPropPicker
是vtkAbstractPropPicker 类的派生类,用于硬件支持的拾取操作,在有些硬件图形系统上,该类不被支持,在这种情况下,使用软件版本的vtkPicker 类。
vtkPicker
是vtkAbstractPropPicker 类的派生类,用软件的方式实现边界拾取,由于该类执行边界拾取,所以不能实现单一拾取功能,该类还有两个派生类,用于获取更多的拾取信息,如单元ID、点ID 和拾取点坐标等,vtkPointPicker 用于获取点的信息(点ID、坐标),vtkCellPicker 用于拾取单元并且返回单元的信息(单元ID、单元参数坐标)。
vtkAssemblyPath
当场景对象由vtkAssembly 对象组装在一起时,vtkAssemblyPath 包含了vtkAssembly中每个对象的结点和变换矩阵,通过vtkAssemblyPath 类可以访问vtkAssembly 中的每个对象。
5 坐标系统:vtkCoordinate
- DISPLAY x-y pixel values in window
- NORMALIZED DISPLAY x-y (0,1) normalized values
- VIEWPORT x-y pixel values in viewport
- NORMALIZED VIEWPORT x-y (0,1) normalized value in viewport
- VIEW x-y-z (-1,1) values in camera coordinates. (z is depth)
- WORLD x-y-z global coordinate values
- USERDEFINED x-y-z in User defined space