• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于vtk的自定義交互器的研究

      2015-07-24 21:33:20王家林王松
      電腦知識(shí)與技術(shù) 2015年14期
      關(guān)鍵詞:軟件開(kāi)發(fā)可視化

      王家林 王松

      摘要:由于vtk在可視化軟件開(kāi)發(fā)中,其提供的交互器不能滿足開(kāi)發(fā)者的要求?;趘tk的各種交互類(lèi),提出自定義交互器的開(kāi)發(fā)方法。利用vc++和MFC開(kāi)發(fā)了基于vtk的可視化軟件,并進(jìn)行可視化操作。通過(guò)開(kāi)發(fā)的交互器與vtk自帶的交互器相比,結(jié)果得出,能夠更加方便地操作視圖,提高了對(duì)數(shù)據(jù)可視化的效率。

      關(guān)鍵詞:可視化;vtk;軟件開(kāi)發(fā);MFC;交互器

      中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)14-0088-02

      Abstract:Beacuase the vtks interactor do not meet the requirements of the developers during the visualization software development.Based on the vtks interactor,this paper delevelop user-defined interactor and utilize it.Compared user-defined interactor with the vtk own interactor,which show the user-defined is more convenient to manipilate interface and more efficient for dara visualization.

      Key words:Visualization;vtk;software;MFC;Interactor

      1 vtk簡(jiǎn)介

      開(kāi)源免費(fèi)可視化工具包VTK[1,6],是目前最為流行的軟件之一,并且具有強(qiáng)大的數(shù)據(jù)圖形顯示功能,優(yōu)越的結(jié)構(gòu)體系,優(yōu)秀的移植性,是以O(shè)penGL[2]圖形庫(kù)為基礎(chǔ)開(kāi)發(fā)的。目前VTK主要用于醫(yī)學(xué)圖像三維重建[3]和虛擬手術(shù)[4],也有國(guó)內(nèi)學(xué)者[5]應(yīng)用于橋梁建模。為了直接對(duì)數(shù)據(jù)操作,就需要良好的交互操作。但vtk軟件提供的交互操作不能滿足研究者的要求,不利于可視化程序的開(kāi)發(fā)與應(yīng)用。

      圖形(Graphic)模型指通過(guò)轉(zhuǎn)換幾何體而形成圖像,達(dá)到顯示對(duì)象的目的。圖形模型包括了可視化渲染窗口類(lèi)(vtkRenderWindow)、渲染器類(lèi)(vtkRender)和交互器類(lèi)(vtkRenderWindowInteractor)。它們可以在屏幕上顯示可視化對(duì)象或角色并且進(jìn)行交互操作。

      可視化模型采用可視化管道機(jī)制(PipeLine)以源數(shù)據(jù)vtkSource為起點(diǎn),經(jīng)過(guò)過(guò)濾器(vtkFilter),最終到達(dá)可視化管道機(jī)制的終點(diǎn)—映射器(vtkMapper)。網(wǎng)絡(luò)結(jié)構(gòu)如圖1。

      2 vtk軟件中交互式類(lèi)的簡(jiǎn)介

      vtkObject[7]在vtk軟件中幾乎是所有類(lèi)的基類(lèi),擁有自動(dòng)更新,調(diào)試,打印,事件回調(diào)等功能。vtkInteractorStyle繼承于vtkObject,是所有交互方式的父類(lèi),并且擁有一些最簡(jiǎn)單的交互功能。由于操作需求的不同,在此類(lèi)的基礎(chǔ)上衍生了一部分交互類(lèi)。部分交互類(lèi)如下:

      2.1 vtkInteractorStyle

      vtkInteractorStyle是其他交互類(lèi)的基類(lèi),提供了與交互器vtkRenderWindowInteractor的接口,能對(duì)事件進(jìn)行響應(yīng)。其提供了大量鍵盤(pán)事件進(jìn)行響應(yīng)的功能,但沒(méi)有響應(yīng)鼠標(biāo)操作的功能。鍵盤(pán)操作包括如下部分:

      1)按下鍵盤(pán)w鍵以線框方式顯示物體

      2)按下鍵盤(pán)p鍵拾取單個(gè)物體

      3)按下鍵盤(pán)q或e鍵關(guān)閉應(yīng)用程序以及其他鍵盤(pán)操作方式。

      2.2 vtkInteractorStyleJoystickActor

      vtkInteractorStyleJoystickActor開(kāi)發(fā)了不同于父類(lèi)的操作方式,能在視圖中對(duì)某個(gè)獨(dú)立的顯示對(duì)象進(jìn)行縮放、平移和旋轉(zhuǎn)。縮放比例決定于鼠標(biāo)位置與顯示對(duì)象中心位置豎直方向的差。差為正時(shí),角色放大,反之縮小。平移是變速移動(dòng),速度大小取決于鼠標(biāo)與角色中心的相對(duì)距離。旋轉(zhuǎn)時(shí),角色繞其中心轉(zhuǎn)動(dòng)。此交互方式主要針對(duì)單個(gè)顯示對(duì)象操作,并且操作不影響其他角色。

      2.3 vtkInteractorStyleJoystickCamera

      vtkInteractorStyleJoystickCamera類(lèi)對(duì)相機(jī)進(jìn)行操作,其并不能對(duì)單個(gè)對(duì)象操作,而是改變相機(jī)的位置,從不同角度來(lái)觀察整個(gè)空間。同樣,此類(lèi)也可以實(shí)現(xiàn)基于相機(jī)變換的縮放,平移和旋轉(zhuǎn)。通過(guò)所有顯示對(duì)象的幾何中心來(lái)確定平移和旋轉(zhuǎn)中心。

      2.4 vtkInteractorStyleSwitch

      vtkInteractorStyleSwitch 類(lèi)合并了四個(gè)交互類(lèi),通過(guò)按鍵j,t,c,a來(lái)切換不同的交互模式(vtkInteractoStylejoystickactorvtkInteractoStylejoystickcamera,vtkInteractoStyletrackballactor,vtkInteractoStyletrackballcamera)。能夠自由切換四種交互方式,但四種交互方式效率并不高。

      3 應(yīng)用需求分析

      在GUI應(yīng)用開(kāi)發(fā)中,對(duì)于圖形交互有如下需求:

      1) 平移:按下鼠標(biāo)左鍵,通過(guò)移動(dòng)鼠標(biāo)實(shí)現(xiàn)顯示對(duì)象跟隨鼠標(biāo)進(jìn)行平行移動(dòng);

      2) 縮放,通過(guò)鼠標(biāo)滾輪的前后滾動(dòng)實(shí)現(xiàn)顯示對(duì)象的放大、縮小顯示,或者通過(guò)彈出菜單切換到縮放模式后,通過(guò)鼠標(biāo)的豎向坐標(biāo)實(shí)現(xiàn)顯示對(duì)象的縮放;

      3)旋轉(zhuǎn),按下鼠標(biāo)左鍵,通過(guò)移動(dòng)鼠標(biāo)實(shí)現(xiàn)顯示對(duì)象繞窗口中心的旋轉(zhuǎn)。

      4) 矩形框,按下鼠標(biāo)左鍵,同時(shí)移動(dòng)鼠標(biāo),以鼠標(biāo)按下左鍵的位置和當(dāng)前位置的連線為對(duì)角線畫(huà)一矩形框。

      5) 窗選放大,按下鼠標(biāo)左鍵并移動(dòng)鼠標(biāo)畫(huà)一矩形框,根據(jù)矩形框與窗口的比例放大顯示對(duì)象。

      6) 點(diǎn)選對(duì)象,通過(guò)單擊鼠標(biāo)左鍵實(shí)現(xiàn)對(duì)顯示對(duì)象的拾取。

      7) 窗選對(duì)象,通過(guò)按下鼠標(biāo)左鍵并移動(dòng)鼠標(biāo)畫(huà)一矩形框,實(shí)現(xiàn)對(duì)矩形框內(nèi)所有顯示對(duì)象的拾取。

      由于上述各項(xiàng)交互中,根據(jù)鼠標(biāo)運(yùn)動(dòng)實(shí)現(xiàn)的交互行為有重疊之處,因此加入了利用彈出菜單進(jìn)行交互模式切換的功能,見(jiàn)圖2。

      通過(guò)對(duì)VTK交互類(lèi)的功能分析發(fā)現(xiàn),沒(méi)有一個(gè)類(lèi)能夠完全實(shí)現(xiàn)了所有的功能。因此,作者通過(guò)分析研究現(xiàn)有VTK交互類(lèi)的實(shí)現(xiàn)方法,開(kāi)發(fā)了一個(gè)具有前述各項(xiàng)功能的交互類(lèi)。

      3 軟件的實(shí)現(xiàn)方法

      MFC[9]是微軟開(kāi)發(fā)的一個(gè)基礎(chǔ)的框架類(lèi),能夠響應(yīng)消息,創(chuàng)建控件來(lái)開(kāi)發(fā)一些簡(jiǎn)單而實(shí)用的軟件。以c++為基礎(chǔ),結(jié)合MFC與VTK共同開(kāi)發(fā)一個(gè)可視化軟件(VTKMFC),以此來(lái)現(xiàn)實(shí)本文開(kāi)發(fā)的交互類(lèi)。

      本文開(kāi)發(fā)的新型交互類(lèi)vtkWInteractor以vtkInteractorStyle為基類(lèi),封裝了以上各類(lèi)的鼠標(biāo)與鍵盤(pán)的響應(yīng)函數(shù)。

      3.1 功能函數(shù)的定義

      作者設(shè)計(jì)的交互類(lèi)vtkWInteractor中的功能函數(shù)取自其他交互類(lèi)并在此基礎(chǔ)上改進(jìn)。各功能函數(shù)實(shí)現(xiàn)如下:

      1)平移,取自vtkInteractorStyleJoystickCamera交互類(lèi)的pan()函數(shù)。

      2)縮放,取自vtkInteractorStyleJoystickCamera交互類(lèi)的Dolly()函數(shù)。

      3)旋轉(zhuǎn),取自vtkInteractorStyleJoystickCamera交互類(lèi)的Rotate()函數(shù)。

      4)矩形框,取自vtkInteractorStyleRubberBand2D交互類(lèi)的RedrawRubberBand()函數(shù)。

      5)窗選放大,取自vtkInteractorStyleRubberBandZoom交互類(lèi)的Zoom()函數(shù)。

      6)點(diǎn)選對(duì)象,取自vtkInteractorStyle交互類(lèi)的OnCha-r()函數(shù)的一部分,vtkInteractorStyle以P鍵來(lái)拾取顯示對(duì)象,而本文設(shè)計(jì)的vtkWInteractor根據(jù)鼠標(biāo)左鍵單擊時(shí)的位置來(lái)拾取對(duì)象。

      7)窗選對(duì)象,根據(jù)vtkInteractorStyleRubberBand2D交互類(lèi)的RedrawRubberBand()函數(shù)繪制矩形框,再用vtkAreaPicker類(lèi)中的AreaPick函數(shù)對(duì)框內(nèi)的顯示對(duì)象進(jìn)行拾取。

      3.2 實(shí)例應(yīng)用與效果展示

      在vtk可視化管道中加入六面體(vtkCubeSource),在渲染窗口中顯示,并在窗口中單擊右鍵彈出菜單,應(yīng)用界面如圖2。

      右鍵彈出菜單,依次選擇操作方式,對(duì)窗口中的角色進(jìn)行操作。僅憑鼠標(biāo)右鍵、中鍵和右鍵就能夠完成各種操作。操作方式類(lèi)似于日常的電腦界面操作方式,所以使用者可以很快的熟悉。各種操作方式的效果如圖3。

      圖中得到的操作畫(huà)面能全視角的對(duì)物體進(jìn)行觀察,且窗選對(duì)象之后能夠?qū)崿F(xiàn)對(duì)物體本身的轉(zhuǎn)化,但本文欠妥沒(méi)能實(shí)現(xiàn)這一功能。

      4 結(jié)束語(yǔ)

      基于VTK自帶交互類(lèi)的缺點(diǎn),開(kāi)發(fā)更為通用且高效的交互類(lèi)是很有必要的。本文對(duì)VTK自帶交互類(lèi)進(jìn)行研究并 開(kāi)發(fā)了新的交互類(lèi)vtkWInteractor。從方法上給VTK進(jìn)一步的研究帶來(lái)啟示,研究了如何快捷的繼承VTK自帶交互類(lèi)的特點(diǎn)。并且基于VTK開(kāi)發(fā)的vtkWInteractor類(lèi)可以運(yùn)用于今后的軟件開(kāi)發(fā),通過(guò)加入新設(shè)計(jì)的交互類(lèi)實(shí)現(xiàn)數(shù)據(jù)的可視化交互。

      參考文獻(xiàn):

      [1] 周振環(huán), 肖汝. ITK和VTK及其應(yīng)用新進(jìn)展[J]. 計(jì)算機(jī)應(yīng)用究, 2009, 26(6): 2027-2031.

      [2] 王蘭美, 趙繼成, 秦華東. OpenGL及其在VC++下的開(kāi)發(fā)應(yīng)用[J]. 武漢大學(xué)學(xué)報(bào): 工學(xué)版, 2006, 39(4): 62-65.

      [3] 陳潔敏. 基于VTK的醫(yī)學(xué)圖像體繪制及交互實(shí)現(xiàn)[J]. 現(xiàn)代計(jì)算機(jī): 專(zhuān)業(yè)版, 2009(8): 176-178.

      [4] 王利, 姜紅, 張兆臣, 等. 基于VTK的虛擬手術(shù)系統(tǒng)中的關(guān)鍵技術(shù)[J]. 中國(guó)醫(yī)療設(shè)備, 2009, 24(5): 58-59.

      [5] 馬林, 李興田. 三維可視化方法研究與應(yīng)用[J]. 蘭州交通大學(xué)報(bào), 2013, 32(6): 77-81.

      [6] Will S, Martin K, Lorensen B.The Visualization Toolkit An Object-Oriented Approach To 3D Graphics[M]. 3rd ed. Kitware, 2002.

      [7] Will Schroeder. The VTK Users Guide[M]. Kitware, 2002.

      [8] 謝裕敏, 舒輝, 陳建敏, 等. MFC消息響應(yīng)函數(shù)的逆向定位[J]. 計(jì)算機(jī)應(yīng)用, 2009(5): 1393-1396.

      猜你喜歡
      軟件開(kāi)發(fā)可視化
      自然資源可視化決策系統(tǒng)
      思維可視化
      師道·教研(2022年1期)2022-03-12 05:46:47
      基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
      云南化工(2021年8期)2021-12-21 06:37:54
      自然資源可視化決策系統(tǒng)
      基于CGAL和OpenGL的海底地形三維可視化
      “融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
      信息安全環(huán)境下的計(jì)算機(jī)軟件開(kāi)發(fā)研究
      計(jì)算機(jī)軟件開(kāi)發(fā)中的分層技術(shù)運(yùn)用
      建模技術(shù)在軟件開(kāi)發(fā)中的應(yīng)用
      軟件開(kāi)發(fā)中數(shù)據(jù)庫(kù)設(shè)計(jì)理論的實(shí)踐
      哈巴河县| 巫溪县| 阜康市| 米易县| 七台河市| 阿拉尔市| 海阳市| 沂源县| 繁昌县| 青田县| 五寨县| 万盛区| 蛟河市| 莱西市| 广东省| 九江市| 钟山县| 宣威市| 柘荣县| 图们市| 抚顺县| 随州市| 崇阳县| 志丹县| 锡林郭勒盟| 宁波市| 五河县| 武冈市| 松江区| 山东省| 石棉县| 博爱县| 商南县| 北辰区| 金沙县| 石城县| 宁城县| 沁源县| 思南县| 安新县| 新沂市|