vtkPicker:这是VTK中用于拾取的基本类。它允许你通过射线投射技术来拾取场景中的对象。 vtkCellPicker:专门用于拾取单元格(如三角形面片),适合用于外表面拾取。 vtkInteractorStyle:定义了用户与VTK场景交互的方式,比如鼠标事件的处理。 vtkRenderer、vtkRenderWindow 和vtkRenderWindowInteractor:这些是VTK渲染系统的核心组件...
vtkPointPicker是vtkPicker的子类,它返回选择点的ID以及坐标。它也是通过发射光线与Actor相交而拾取对象的,除了返回坐标值,Actor和Mapper,它也返回在指定容差内沿着光线,最靠近光线的那个点的ID。vtkPointPicker::GetPointId()可以获取点的ID号。vtkPointPicker不能单一拾取,其速度比vtkPicker慢,但比vtkCellPicker要快...
vtkPicker用于拾取vtkProp3D实例,它通过发射一条光线到图形窗口中,并与Actor的 线框(Boundingbox)相交,光线是从窗口坐标系统中拾取的一点到相机所在的位置的连线。 因为光线可能会与多个Actor的线框相交,所以可能会返回多个vtkProp3D的实例。 vtkPicker返回的是与光线相交的Prop实例的一个列表、世界坐标系统中的拾取坐...
vtkPicker速度相对较快,可用于快速拾取几何对象。但如果想返回拾取的点或者单元的话,得用它的子类vtkCellPicker和vtkPointPicker vtkPicker里其中有一个方法:virtual void SetTolerance(double)---是设置容差。 5、vtkPointPicker vtkPointPicker -> vtkPicker -> vtkAbstractPropPicker vtkPointPicker是vtkPicker的子类...
vtkPointPicker的原理是通过相机当前位置投射一条光线到拾取点,然后将光线周围且位于容差范围内的点投射至光线上,最后返回的是距离相机最近的点以及该点所对应的actor。 vtkPointPicker用于拾取单个点,返回ID和坐标值。拾取时,它比父类vtkPicker拾取速度要慢,但比兄弟类vtkCellPicker要快。
class VTKRENDERINGCORE_EXPORT vtkAbstractPropPicker : public vtkAbstractPicker class VTKRENDERINGCORE_EXPORT vtkPicker : public vtkAbstractPropPicker class VTKINTERACTIONWIDGETS_EXPORT vtkResliceCursorPicker : public vtkPicker//交互部分自定义的一个类...
picker->AddObserver(vtkCommand::EndPickEvent, annotatePick); annotatePick->Delete(); //文字显示设置 textMapper = vtkTextMapper::New(); auto tprop = textMapper->GetTextProperty(); tprop->SetFontFamilyToArial(); tprop->SetFontSize(10); ...
翻译成中文,大概意思为:vtkCellPicker会像三维场景发射一条射线,并返回射线第一次击中的对象信息,换种表达方式就是,vtkCellPicker会返回可见面上对象的信息,而vtkPointPicker会返回在指定容差范围内投影到射线上距离最近的点的 id,即vtkPointPicker返回的不一定是可见面上的点信息,所以在使用的时候需要根据自己的情况...
从上图中能够知晓,完成点拾取功能的类是vtkPointPicker。 vtk中的消息是通过vtkRenderWindowInteractor类处理的,在类vtkRenderWindowInteractor中,定义如下函数: virtual void SetPicker(vtkAbstractPicker* ); 该函数用来设置具体的VTKAbstractPicker对象,并执行相应的拾取操作。因此对于点拾取,实际就是设置VTKPointPicker的过...
picker->Pick((double)pick[0], (double)pick[1], 0.0, ren);//拾取操作picker->GetPickPosition( pickPos );xp2 = pickPos[0];yp2 = pickPos[1];zp2 = pickPos[2];vtkPoints *points1 = vtkPoints::New();points1->InsertNextPoint ( xp1, yp1, zp1 ); //返回第一个点的ID:0points1-...