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發送過來的它所截獲的渲染窗口上發生的事件, 當事件發生了執行相關的系統自定義操作.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM