zoukankan      html  css  js  c++  java
  • VTK vtkRenderWindow 与vtkRenderWindowInteractor详解

      vtkRenderWindowInteractor用于获取渲染窗口上发生的鼠标,键盘,事件事件。该类提供了独立于平台的与渲染窗口进行交互的机制,包括picking  和帧速率控制。当vtkRenderWindowInteractor(事实上是他的一个子类)观察到平台的某个事件发生时,他就通过InvokeEvent()方法把该事件转换为VTK事件。该类作为某些具体平台的基类来控制鼠标/键盘/时间消息的传送,通知vtkInteractorObserver和它的子类。注册于该交互器的所有观察者对象vtkInteractorObservers  都会接受到该事件,然后都对该事件进行响应。

      实际上,vtkRenderWindowInteractor的工作方式是这样的:这个类会截取发生在与它关联的vtkRenderWindow(通过vtkRenderWindowInteractor的SetRenderWindow()方法加入的那个渲染窗口)上的事件,然后,vtkRenderWindowInteractor类会根据具体的设备以及操作系统实例化一个对象,比如说,Unix下是vtkXRenderWindowInteractor,而Windows下则是vtkWin32RenderWindowInteractor。当vtkRenderWindowInteractor::Start()方法被调用时,事件的截取功能就会被激活。最后,这些所截取的事件会被送往vtkRenderWindowInteractor::InteractorStyle这个实例进行处理。InteractorStyle是vtkRenderWindowInteractor类里面的一个保护的数据成员,是vtkInteractorObserver类型的指针,而vtkInteractorObserver的作用是监测交互器上所发生的事件,这样,由vtkRenderWindowInteractor所截取的消息就有了归宿。如果要在VTK里要增加新的交互方式的话,应该先从vtkInteractorStyle派生出一个子类,如:vtkInteractorStyleTrackball,vtkInteractorStyleUser,  vtkInteractorStyleJoystickActor, vtkInteractorStyleJoystickCamera,  vtkInteractorStyleUser等。交互允许用户自定义方式。

                                          

     

                                   

     

          应用的流程: (1) 一个vtkRenderWindow对象rWin (2)一个vtkRenderWindowInteractor对象iRen (3)  一个vtkWidget对象widget

    则:  iRen->setRenderWindow(rWin);

          widget->setInteractor(iRen);

          iRen负责事件转换(必须指定对哪个窗口的事件进行转换),然后把一个观察者widget 注册到iRen交互器上widget->setInteracotr(iRen),负责观察iRen发送过来的它所截获的渲染窗口上发生的事件, 当事件发生了执行相关的系统自定义操作.

  • 相关阅读:
    网站微信扫码登陆总结以及在小程序登陆两者关联和关系,vue以及uniapp
    微信扫码登陆在chrome浏览器失败,浏览器禁止重定向
    element-ui多个表单如何同时验证
    vscode中react代码提示插件
    echarts主题全局颜色定义、自定义折线颜色--彩色折线图echarts
    vue本地储存加密
    Echarts多条折线图 y轴数值与实际值不符解决方法
    vue中swiper@5.3.6使用,
    解决 swiper设置loop为true时,echarts图表不显示
    vue+nginx配置,以及nginx配置跨域
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14030464.html
Copyright © 2011-2022 走看看