拣选(拾取,picking)是一个常用的可视化操作。它常常用于拣选数据及演员(actor),或者查询隐含的数据值。当一个显示坐标(像素坐标)被选中时,一个拣选操作就发生了。当选中像素坐标时就会触发vtkAbstractPicker的Pick()方法。Pick()方法返回的信息取决于拣选类(picking class)的类型。返回的信息可能仅仅是简单的x-y-z的球体坐标,也可能包含cell’s ids,point ids,cell 参数化坐标,被拣选的vktProp的实例,装配路径(assembly paths)等。Pick()方法的语法是:pick(x,y,z,Renderer)。注意Pick()方法需要一个渲染器。与Renderer关联的actor是要拣选的对象,z通常设为0。在典型的用法中,Pick()方法并不是直接被触发的,而是用户通过与vtkRenderWindowInteractor的交互来调用这个方法的。在这种情况下,用户可以通过指定一个picking class的实例对象给vtkRenderWindowInteractor来控制拣选操作。
VTK提供了几种不用功能和性能的picker类型。vtkAbstractPicker类是所有picker是基类。该类定义了最小集合的API,用于通过这些API(GetPickPosition()方法)来跟踪pick的位置(球体坐标)。
vtkAbstractPicker一共有三个直接子类: