999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VTK和MFC的管道建模及可視化實現(xiàn)

2016-09-20 07:22:40譚顯峰董超黃斌四川大學(xué)計算機(jī)學(xué)院成都610065
現(xiàn)代計算機(jī) 2016年7期
關(guān)鍵詞:可視化方向模型

譚顯峰,董超,黃斌(四川大學(xué)計算機(jī)學(xué)院,成都 610065)

基于VTK和MFC的管道建模及可視化實現(xiàn)

譚顯峰,董超,黃斌
(四川大學(xué)計算機(jī)學(xué)院,成都610065)

0 引言

目前,自來水、石油、天然氣等物質(zhì)的運輸離不開管道,管道的合理敷設(shè)至關(guān)重要。由于受到地理位置和環(huán)境因素的影響,管道敷設(shè)通常是任何一個大型項目中最費時的工作,也是產(chǎn)生問題最多的部分。管道建模及可視化可以提高設(shè)計質(zhì)量,嚴(yán)格控制材料,高效率、高精度地構(gòu)造出管道網(wǎng)絡(luò),并且最大可能地避免設(shè)計錯誤的產(chǎn)生[1-2]。

本文以VTK(Visualization Toolkit)可視化圖形類庫為基礎(chǔ),在 Windows上,以VC 6.0為開發(fā)平臺,結(jié)合MFC,對VTK的顯示功能進(jìn)行封裝和修改,建立了管道材料庫,實現(xiàn)了管道的添加、刪除等建模過程,以及管道模型繪制,管道圖形旋轉(zhuǎn)、平移、縮放等基本的可視化功能。

1 VTK

VTK是一個開源、跨平臺、可自由獲取、支持并行處理的圖形應(yīng)用函數(shù)庫。通過VTK可以將科學(xué)實驗數(shù)據(jù)如建筑學(xué)、氣象學(xué)、醫(yī)學(xué)、生物學(xué),對體、面、光源等的逼真渲染,從而幫助人們理解那些采取錯綜復(fù)雜而又往往規(guī)模龐大的數(shù)字呈現(xiàn)形式的科學(xué)概念或結(jié)果。

1.1VTK 概述

VTK包含一個C++類庫和眾多的翻譯接口層,包括Tcl/Tk、Java、Python。VTK是在三維函數(shù)庫OpenGL的基礎(chǔ)上采用面向?qū)ο蟮脑O(shè)計方法發(fā)展起來的,它將我們在可視化開發(fā)過程中會經(jīng)常遇到的細(xì)節(jié)屏蔽起來,并將一些常用的算法封裝起來。例如VTK將我們在表面重建中比較常見的Marching Cubes算法封裝起來,以類的形式供用戶使用,這樣我們在對三維規(guī)則點陣數(shù)據(jù)進(jìn)行表面重建時就不必再重復(fù)編寫Marching Cubes算法的代碼,而直接使用VTK中已經(jīng)提供的vtkMarchingCubes類。

1.2VTK 原理

VTK中的兩個重要組件:可視化管線和渲染引擎。可視化管線主要負(fù)責(zé)數(shù)據(jù)獲取或者創(chuàng)建,數(shù)據(jù)處理,然后將數(shù)據(jù)寫入文件或者傳遞至渲染引擎中進(jìn)行顯示。渲染引擎負(fù)責(zé)創(chuàng)建傳遞過來的數(shù)據(jù)的一個可視表達(dá)。

可視化管線的運行原理如圖1所示:

圖1 VTK可視化管線的運行原理圖

數(shù)據(jù)源用于讀入或生成需要處理的原始數(shù)據(jù)。數(shù)據(jù)對象表示了VTK中不同類型的數(shù)據(jù),主要包括:Structured points(結(jié)構(gòu)化點集),vtkRectilinearGrid(線性網(wǎng)格),Structured grid(結(jié)構(gòu)化網(wǎng)格),Unstructured grid(非結(jié)構(gòu)化網(wǎng)格,管線的建模就是利用這種數(shù)據(jù)的子對象aQuad),Polygonal Data(多邊形體數(shù)據(jù))。

VTK通過管道過濾器來操作和變換數(shù)據(jù)。過濾器即各種算法(例如碰撞檢測、常用數(shù)學(xué)函數(shù)、矩陣變換和圖像處理等)所封裝成的代碼,用于對數(shù)據(jù)對象進(jìn)行相應(yīng)的處理和分析,它可以接收一個或多個數(shù)據(jù)對象的輸入,也可以產(chǎn)生一個或多個對象的輸出。

VTK將處理完后的數(shù)據(jù)通過映射器將其轉(zhuǎn)換成可被顯示幾何對象。

當(dāng)數(shù)據(jù)對象完成上述流程后,用戶只需按順序調(diào)用指定的渲染類(vtkLight、vtkAbsractMapper、vtkRen-derer、vtkCamera、vtkActtor等),就可將結(jié)果渲染到指定的窗口中[3]。

1.3VTK 與 MFC 的集成

VTK本身不提供圖形用戶接口,相對于其他語言,C++應(yīng)用程序體積更小,運行更快,而且容易部署安裝。此外,采用C++語言開發(fā)VTK應(yīng)用程序,不需要編譯額外的Tcl、Java和Python支持。

建立新的VTK項目時,在正確安裝VTK的基礎(chǔ)上,必須在項目的Project-setting中對相關(guān)參數(shù)進(jìn)行設(shè)置,以便將需要的VTK頭文件和lib庫引入MFC項目

中[4]。

在本文中VTK與MFC的集成方法是新建一個CCubeView類,作為整個軟件顯示功能的實現(xiàn),該類繼承自MFC的CView類,封裝了VTK中的渲染類 (如vtkRenderer)和數(shù)據(jù)對象類(如vtkUnstructuredGrid),以及映射器等。通過調(diào)用類中redraw()函數(shù)進(jìn)行視圖重繪。

2 管道建模及可視化實現(xiàn)

管道模型中管道的數(shù)量和種類繁多,連接方式錯綜復(fù)雜,管道模型的建立離不開數(shù)據(jù)模型的支撐。本文采用數(shù)據(jù)文本的行式,通過關(guān)鍵字記錄每根管道的基本屬性(長度、方向、材料、連接方式等),利用VTK的可視化管線原理進(jìn)行數(shù)據(jù)輸出,實現(xiàn)管道的三維建模及可視化。

2.1管道模型的建立

(1)管道材料庫建立

建立管道時,管道材料參數(shù)較多(泊松比、彈性模量等),并且在不同的溫度下,各參數(shù)還要進(jìn)行差值計算,為簡化用戶操作,在參照GB/T20801-2006《壓力管道規(guī)范》、GB/T12459-2005《鋼制對焊無縫管件》等國家標(biāo)準(zhǔn)的基礎(chǔ)上,將管道材料做成材料文件,用戶只需選擇材料名就可以將相應(yīng)的材料參數(shù)根據(jù)不同的溫度進(jìn)行差值計算后的結(jié)果讀入程序中。如果用戶使用的材料不在材料庫中,可進(jìn)行自定義添加,或者在某種材料的參數(shù)上進(jìn)行修改。

(2)管道數(shù)據(jù)的存儲

模型中管道的數(shù)量及連接關(guān)系通過文本文件的方式進(jìn)行存儲,一個文件對應(yīng)一個模型。

文件中通過關(guān)鍵字記錄每根管道的屬性。主要包括:*Model,記錄管道是模型中的第幾段以、管道的起點信息以及管道方向;*Dimension,記錄管道的長度及終點坐標(biāo);*Temperature,記錄管道的溫度;*Material,記錄管道的材料參數(shù),包括材料名稱、彈性模量、泊松比、屈服強(qiáng)度等;*Welding Material,記錄管道焊接區(qū)的材料參數(shù);*start point,記錄管道起點的公稱直徑、彎頭系列、壁厚;*end point,記錄管道終點的公稱直徑、彎頭系列、壁厚。

模型中每根管道有自己獨立的編號,關(guān)鍵字末尾加上編號就可成為該段管道所有參數(shù)的唯一標(biāo)識。新建模型時編號從1開始遞增,通過全局變量控制當(dāng)前添加的是第幾段管道。

(3)管道的添加與刪除

添加和刪除管道錢必須新建或者打開一個模型。在改模型上添加管道時,除第一根管道外,用戶通過拾取模型中已有管道的起點(終點)坐標(biāo),作為新管道的起點,隨后輸入相關(guān)參數(shù)。程序通過識別已拾取的管道起點ID,在文件中查找管道起點坐標(biāo),根據(jù)長度和方向等參數(shù)進(jìn)行計算得到管道的終點坐標(biāo),和用戶輸入的其他參數(shù)一起寫入數(shù)據(jù)文件。管道的方向可以是沿坐標(biāo)軸的方向,也可以是空間中任何一個方向,若是后者,通過輸入水平面夾角和水平投影與X軸夾角連個參數(shù)可以唯一確定新管道的方向。每添加一段管道,程序?qū)⒃跀?shù)據(jù)文件末尾增加一組帶管道編號的關(guān)鍵字,兵將添加的管道顯示在界面中。

下面是個添加管道的實例:第一步,在新建模型中沿x軸正方向添加一根1000米長的管道;第二步,以第一根管道終點為起點沿y軸正方向添加一根1000米長的管道;第三步,以第二根管道終點為起點沿Z軸正方向添加一根1000米長的管道;第四步,以第二根管道終點為起點,水平面夾角和水平投影與X軸夾角都設(shè)置為30度,添加一根1000米長的管道。管道添加過程如圖2所示:

圖2 VTK可視化管線的運行原理圖

刪除管道時只能刪除模型中最后一段管道,同時刪除數(shù)據(jù)文件中最后一組關(guān)鍵字。2.2管道模型的可視化

(1)顯示

根據(jù)VTK的可視化管線和渲染原理,將數(shù)據(jù)文件作為VTK的數(shù)據(jù)源。

程序中CCubeView類提供用來顯示功能。CGlob-alData是數(shù)據(jù)類,封裝了VTK中所有的數(shù)據(jù)類型,作為全局變量,存儲模型中的所有數(shù)據(jù)信息,在不同類之間中轉(zhuǎn)數(shù)據(jù)。

以下處理使VTK的圖像顯示在CCubeView中:

CGlobalData中的GetMesh()函數(shù)完成將模型數(shù)據(jù)文件轉(zhuǎn)換成VTK數(shù)據(jù)源的操作;SetInput()函數(shù),將CGlobalData中的VTK數(shù)據(jù)源傳給CCubeView;最后調(diào)用CCubeView的redraw()函數(shù),重繪視圖區(qū)。redraw()函數(shù)部分代碼和功能如下:

放進(jìn)VTK的渲染器,實現(xiàn)圖像繪制。

(2)旋轉(zhuǎn)

程序 vtkInteractorStyleRubberBandPick類繼承自vtkInteractorStyleTrackballCamera,OnLeftButtonDown()方法捕捉鼠標(biāo)左鍵和Ctrl鍵同時按下去的操作,隨后調(diào)用VTK的StartRotate()函數(shù),實現(xiàn)圖像旋轉(zhuǎn)。

旋轉(zhuǎn)效果如圖3所示:

圖3 旋轉(zhuǎn)對比圖

(3)縮放

vtkInteractorStyleRubberBandPick中OnMouseWheel Forward()方法捕捉鼠標(biāo)滑輪向前滾動和Ctrl鍵同時按下去的操作,隨后調(diào)用VTK的StartDolly()函數(shù),實現(xiàn)圖像放大。圖像縮小功能原理和放大時一樣,調(diào)用的方法是OnMouseWheelBackward()。

縮放效果如圖4所示。

(4)平移

vtkInteractorStyleRubberBandPick中 OnRightBut-tonDown()方法捕捉鼠標(biāo)右鍵和Ctrl鍵同時按下去的操作,隨后調(diào)用VTK的StartPan()函數(shù),實現(xiàn)圖像平移。

平移效果如圖5所示。

3 結(jié)語

圖4 縮放對比圖

綜上所述,采用VTK和MFC結(jié)合的方式,以數(shù)據(jù)文件的形式記錄管道信息實現(xiàn)管道建模。封裝VTK的數(shù)據(jù)類和顯示類,實現(xiàn)管道模型的可視化。但管道的建模過程比較繁瑣,刪除方式還不夠靈活,這是下一步的研究重點。

圖5 平移對比圖

[1]陳文賢.CAD三維建模技術(shù)在管道敷設(shè)中的具體應(yīng)用.石油化工建設(shè),2014.

[2]楊飛,王解先.空間管道的連接建模及3D打印.工程勘察,2015.

[3]余偉巍,席平,何飛.利用VTK與MFC的醫(yī)學(xué)模型重建方法研究與實現(xiàn).工程圖學(xué)學(xué)報,2009.

[4]羅火靈,許永忠,陳世仲.基于VTK和MFC的醫(yī)學(xué)圖像三維重建研究與實現(xiàn).生物醫(yī)學(xué)工程學(xué)進(jìn)展,2010.

VTK;MFC;Pipe Modeling;Visualization

Pipe Modeling and Visualization Based on VTK and MFC

TAN Xian-feng,DONG Chao,HUGNG Bin
(College of Computer Science,Sichuan University,Chengdu 610065)

1007-1423(2016)07-0084-04

10.3969/j.issn.1007-1423.2016.07.019

譚顯峰(1983-),男,重慶人,在讀研究生,研究方向為信息安全

董超(1985-),男,山東新泰人,碩士研究生,研究方向為智能信息處理

黃斌(1986-),男,云南曲靖人,在讀研究生,研究方向為信息安全和高性能計算

2016-01-21

2016-02-25

VTK在圖像處理與顯示方面有強(qiáng)大的功能和源代碼開放特點,但是它缺乏友好的交互界面,通過將其與MFC結(jié)合,實現(xiàn)管道建模及可視化,可以提高管道網(wǎng)絡(luò)建設(shè)的效率和精度,最大程度地避免設(shè)計錯誤的產(chǎn)生。

VTK;MFC;管道建模;可視化

VTK in image processing and display has powerful function and open source characteristics,but it lacks a friendly interactive interface, through the combination with MFC,can realize pipe modeling and visualization,and can improve the efficiency and accuracy of the pipeline network construction,the maximum to avoid design errors.

猜你喜歡
可視化方向模型
一半模型
基于CiteSpace的足三里穴研究可視化分析
2022年組稿方向
基于Power BI的油田注水運行動態(tài)分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
2021年組稿方向
2021年組稿方向
重要模型『一線三等角』
基于CGAL和OpenGL的海底地形三維可視化
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
“融評”:黨媒評論的可視化創(chuàng)新
傳媒評論(2019年4期)2019-07-13 05:49:14
主站蜘蛛池模板: 青青草原国产精品啪啪视频 | 亚洲无线观看| 毛片免费观看视频| 亚洲午夜国产精品无卡| 一区二区三区精品视频在线观看| 精品综合久久久久久97超人该| 福利一区三区| 青青青国产精品国产精品美女| 亚洲欧洲日韩久久狠狠爱| 欧美黑人欧美精品刺激| 中文字幕在线播放不卡| 欧美精品一区在线看| 五月天天天色| 成年人福利视频| 国产永久在线视频| 精品人妻系列无码专区久久| 亚洲日韩精品无码专区| 国产青青操| 一级毛片免费的| 毛片网站在线播放| 国产在线自乱拍播放| 91小视频在线观看| 日韩中文无码av超清| 91亚洲精品国产自在现线| 免费观看国产小粉嫩喷水 | 国产女人在线视频| 狠狠色噜噜狠狠狠狠色综合久| 成人午夜视频网站| 欧美精品在线免费| 无码在线激情片| 亚洲精选高清无码| 99在线观看视频免费| 青青青视频91在线 | 日韩A∨精品日韩精品无码| av在线5g无码天天| 亚洲精品视频网| 亚欧成人无码AV在线播放| 成人在线不卡| 亚洲经典在线中文字幕| 国产成人啪视频一区二区三区| 亚洲人人视频| 精品午夜国产福利观看| 欧美精品成人一区二区在线观看| 无码aⅴ精品一区二区三区| 亚洲美女AV免费一区| 亚洲无码高清免费视频亚洲| 一级香蕉视频在线观看| 日韩国产 在线| 五月天久久婷婷| 国产精品开放后亚洲| 国产精品久久久久久久久久98| 欧美一级夜夜爽www| 999国产精品| 亚洲精品第1页| 国内精品九九久久久精品| 日韩毛片基地| 成人精品免费视频| 国产精品亚欧美一区二区| 免费在线看黄网址| 91小视频在线| 日韩色图在线观看| 精品久久国产综合精麻豆| 久久婷婷综合色一区二区| 亚洲免费成人网| 亚洲国产看片基地久久1024| 日韩东京热无码人妻| 玩两个丰满老熟女久久网| 在线毛片免费| 精品国产一二三区| 69av在线| 好紧太爽了视频免费无码| 国产真实二区一区在线亚洲| 亚洲va精品中文字幕| jijzzizz老师出水喷水喷出| 中文字幕日韩欧美| 久久大香伊蕉在人线观看热2| 亚洲国产AV无码综合原创| 免费黄色国产视频| 免费看久久精品99| 精品久久久无码专区中文字幕| 91麻豆精品视频| 成人毛片免费在线观看|