vtk3DWidget
vtk3DWidget是用于3D交互观察器的基类,也就是各种3D小部件类的基类,主要是在三维渲染场景中生成一个可以用于控制数据的可视化实体,比如点,线段(曲线)、平面、球体、包围盒(线框)等。
这些3D小部件在场景中表示它们自己,并且具有与它们相关联的特殊回调,允许对小部件进行交互式操作。特别是,vtk3DWidget与其抽象超类vtkInteractorObserver之间的区别在于vtk3DWidget被“放置”在3D空间中。vtkInteractorObservers 不知道它们放在哪里,也可能根本不存在于3D空间中。3D小部件还提供辅助功能,如生成转换、创建polydata(用于播种流线、探测等)或创建隐式函数。详细信息请参见具体的子类。
通常,通过指定vtkProp3D或VTK数据集作为输入,然后调用“On”方法来激活小部件(您还可以指定一个边界框来帮助定位小部件。)在调用On()方法之前,用户可能还希望使用PlaceWidget()对其进行初始定位。“i”(表示“interactor”)按键也可以用来打开和关闭小部件(存在更改键值和启用按键激活的方法)。
为了支持对象的交互操作,这个类(和子类)调用事件StartInteractionEvent、InteractionEvent和EndInteractionEvent。当vtk3DWidget进入需要快速响应的状态(鼠标移动等)时,会调用这些事件。例如,可以使用这些事件设置所需的更新帧速率(StartInteractionEvent),对vtkProp3D或其他对象(InteractionEvent)进行操作,并将所需帧速率设置回正常值(EndInteractionEvent)。
请注意,从vtkInteractorObserver继承的Priority属性有一个新的默认值,即现在的0.5,因此所有3D小部件的优先级都高于通常的interactor样式。
接口
输入输出
vtkProp3D* Prop3D;// 用于定位和缩放小部件
virtual void SetProp3D(vtkProp3D*);
vtkGetObjectMacro(Prop3D, vtkProp3D);
virtual void SetInputData(vtkDataSet*);
virtual void SetInputConnection(vtkAlgorithmOutput*);
virtual vtkDataSet* GetInput();
位置因子和Handle Size
double PlaceFactor;
double HandleSize;
vtkSetClampMacro(PlaceFactor, double, 0.01, VTK_DOUBLE_MAX);
vtkGetMacro(PlaceFactor, double);
vtkSetClampMacro(HandleSize, double, 0.001, 0.5);
vtkGetMacro(HandleSize, double);
vtk3DWidget派生出的子类有:vtkBoxWidget、vtkBrokenLineWidget、vtkImageCroppingRegionsWidget、vtkImageTracerWidget、vtkLineWidget、vtkPointWidget、vtkPolyDataSourceWidget、vtkSphereWidget以及vtkSplineWidget;