VTK的交互器

VTK中鼠标消息是在交互类型对象(interactorstyle)中响应,因此通过为交互类型对象(interactorstyle)添加观察者(observer)来监听相应的消息,当消息触发时,由命令模式执行相应的回调函数

vtkRenderWindowInteractor能捕捉渲染窗口中的鼠标和键盘事件,并将这些事件转变为对相机、演员和属性对象的相应操作,具体的转变由交互方式确定;
  vtkRenderWindowInteractor为鼠标/键计时器事件提供独立于平台的交互机制。它作为平台相关实现的基类,处理将鼠标/键/计时器消息交给vtkInteractorObserver 及其子类进行处理。

    注意:vtkRenderWindowInteractor通过VTK的命令/观察者设计模式路由事件。也就是说,当vtkRenderWindowInteractor(实际上是它在平台上的具体一个子类,比如在Windows平台下会使用vtkWin32RenderWindowInteractor)看到依赖于平台的事件时,它会使用InvokeEvent()方法将其转换为VTK事件;然后,为该事件注册的任何vtkInteractorObserver 都将视情况作出响应。

具体的使用流程:
    1.创建一个交互器vtkRenderWindowInteractor对象iren;

	vtkSmartPointer<vtkRenderWindowInteractor> iren = 
		vtkSmartPointer<vtkRenderWindowInteractor>::New();


    2.给对象iren设定SetRenderWindow()需要交互的窗口;

	iren->SetRenderWindow(renWin);


    3.给对象iren指定SetInteractorStyle()特定的交互方式style,如果没有指定,交互器会使用默认交互方式;(VTK提供了多种交互方式,最常用的包括joysticktrackball,并且可以分别对actor和camera进行操作。)

	vtkSmartPointer<vtkInteractorStyleImage> style = 
		vtkSmartPointer<vtkInteractorStyleImage>::New();
	iren->SetInteractorStyle(style);


    4.将对象iren初始化Initialize,调用Start开始进行交互;Start()方法表示开始进入事件响应循环,交互器处于等待状态,等待用户交互事件的发生。

一般在Start()前,先调用Initialize()方法:

	iren->Initialize();//初始化
	iren->Start();//开始执行

正常需要将成员对象Enabled标志设置为1。如果没有初始化interactior,Start()将自动调用它,但是如果需要在初始化和事件循环开始之间执行任何操作,则可以手动调用它。

相关推荐

  1. VTK交互

    2024-04-06 07:08:07       39 阅读
  2. VTK 交互事件

    2024-04-06 07:08:07       48 阅读
  3. VTK使用交互来从三维体数据中提取二维切片

    2024-04-06 07:08:07       49 阅读
  4. VTK----VTK事件机制

    2024-04-06 07:08:07       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 07:08:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 07:08:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 07:08:07       87 阅读
  4. Python语言-面向对象

    2024-04-06 07:08:07       96 阅读

热门阅读

  1. 【QT教程】QT6设计模式

    2024-04-06 07:08:07       40 阅读
  2. gbm模型做分类

    2024-04-06 07:08:07       32 阅读
  3. Acwing2024蓝桥杯日期问题

    2024-04-06 07:08:07       38 阅读
  4. Spring Boot单元测试快速入门Demo

    2024-04-06 07:08:07       43 阅读
  5. L1-016 查验身份证

    2024-04-06 07:08:07       32 阅读
  6. Azure Firewall rule limits and calculations

    2024-04-06 07:08:07       32 阅读
  7. Linux文件查找命令详解——以CentOS为例

    2024-04-06 07:08:07       34 阅读