VTK学习笔记五

这篇博客探讨了VTK中的拾取机制,通过调用vtkAbstractPicker::Pick()方法来选择和获取物体信息。文章介绍了主要的拾取子类,以及如何在交互过程中使用它们。此外,还详细讲解了VTK的坐标系统,包括不同的坐标系及其转换,并给出了vtkCoordinate类的使用示例。最后,讨论了二维和三维注释的实现,特别是vtkActor2D和三维注释的创建方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拾取

  • 拾取是用来选择场景中的物体,获取物体的信息
  • 通常调用vtkAbstractPicker::Pick()方法拾取物体
  • 不同的拾取子类,返回的拾取信息也不同,如物体的全局坐标,单元ID,点ID等
  • 调用语法:Pick(SelectX,SelectY,SelectZ,Renderer)
  • 与Renderer相关联的角色都是被拾取的对象
  • Pick方法不能直接调用,而是交由交互类vtkRenderWindowInteractor进行管理

主要的拾取子类

拾取类 作用 返回值
vtkWorldPointPicker 快速拾取场景中的角色 返回拾取点的世界坐标值
vtkAbstractPropPicker 拾取场景中的对象 返回拾取对象的数据类型
vtkPropPicker:vtkAbstractPropPicker 用于硬件支持的拾取操作
vtkPicker:vtkAbstractPropPicker 用软件的方式实现边界拾
vtkCellPicker:vtkPicker 用于拾取单元的信息 返回单元ID,参数坐标
vtkPointPicker:vtkPicker 用于获取点的信息 返回点的ID,坐标
vtkAssemblyPath 以访问vtkAssembly 中的每个对象 返回每个对象的结点和变换矩阵

在交互类子类中使用pick对象,满足用户自定义交互拾取操作

	//构建一个vtkCellPicker的实例
	vtkSmartPointer<vtkCellPicker> cellPicker = vtkSmartPointer<vtkCellPicker>::New();

	//构建vtk内建的交互类对象
	vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	//将pick对象交由交互类vtkRenderWindowInteractor进行管理
	iren->SetPicker(cellPicker);
	//将绘制窗口对象与绘制交互类绑定
	iren->SetRenderWindow(renWin);


	vtkSmartPointer<MyPointPickerInteractorStyle> style = vtkSmartPointer<MyPointPickerInteractorStyle>::New();
	iren->SetInteractorStyle(style);
class MyPointPickerInteractorStyle : public vtkInteractorStyleTrackballCamera
{
public:
	static MyPointPickerInteractorStyle* New();
	vtkTypeMacro(MyPointPickerInteractorStyle, vtkInteractorStyleTrackballCamera);

	virtual void OnLeftButtonDown()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值