VTK互動之拾取

2021-08-01 19:22:23 字數 3351 閱讀 8907

選擇拾取是人機互動過程的乙個重要功能。vtk中定義了多個拾取功能的類,所有拾取類都繼承自vtkabstractpicker類,繼承關係如下:

該類是乙個抽象基類,為它的具體的子類定義了最基本的api,最基本的功能是返回拾取位置的x-y-z 世界座標系統的座標值(pick自身是在螢幕座標中進行定義的) 。

類定義了乙個純虛函式pick(),它的作用是給定乙個選擇點(螢幕座標系統裡的,以畫素為單位)以及乙個renderer,然後通過呼叫getpickposition()方法,生成世界座標系統的座標值。

pick()函式的原型如下:

virtual

int pick (double selectionx, double selectiony, double selectionz, vtkrenderer *renderer)

通常都把selectionz設為0,與renderer相關聯的actor就是拾取的物件範圍。在拾取過程中vtkpicker會觸發一些事件:1、startpickevent, 2、pickevent, 3、endpickevent。當something被拾取的時候,並且在所有的picking申請者已經通過測試,1/2/3事件就會在picking之前呼叫。注意:在pick的過程中,vtkprop的pickevent事件會在vtkpicker的pickevent之前被呼叫。 

vtkabstractpicker以及它的子類都不能拾取」拒絕拾取」的prop(也就是該prop通過呼叫自身的pickableoff()方法)和完全透明的prop(即prop->getproperty()->setopacity(0))。

picker可以分為兩類,分別是用幾何方法拾取(典型的例子是光線投射)和基於硬體拾取。幾何方法拾取能獲取的資訊較多同時也較慢,而基於硬體的拾取拾取速度快,但返回的資訊最少。幾何方法拾取主要的類有:vtkpicker, vtkcellpicker和vtkpointpicker。基於硬體拾取的類有:vtkworldpointpicker和vtkproppicker。vtkabstractpicker有兩個直接子類:vtkworldpointpicker和vtkabstractproppicker。

vtkproppicker是基於圖形硬體拾取乙個actor/prop例項,速度比vtkcellpicker/vtkpointpicker快。這個類在世界座標系統中判定actor/prop和拾取位置,對於點和單元的id則不作判定。

opengl es 射線拾取

後來只好自己一點一點蒐集資料,但是無奈不知道為什麼網上這個內容有價值的特別特別少,但是好在這個過程中熟悉了android除錯過程,又找到了其他一些有用的東西,就寫了第乙個帖子 android平台下opengl學習例程 在第乙個帖子發完之後,很多開發者留了言,給了意見,我發現有些問題是大家都碰到的,討...

osgearth向量拾取

向量拾取是最近才做的功能,以前一直認為這個功能可能會很麻煩,原因呢 osgearth裡 估計所有的gis球中 是將向量光柵化成紋理貼到球上的,怎麼拾取一張上的一條線呢 osgearth的自帶例子裡沒有找到向量拾取的例子 最終這個功能畢竟是做出來了,這裡把自己的探索過程梳理一下.首先去google上搜...

vr發射拾取

啊void fixedupdate if device.gettouchdown steamvr controller.buttonmask.trigger if device.gettouchup steamvr controller.buttonmask.trigger if device.ge...