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

基于WPF的STL可視化系統

2019-11-06 00:28:00陳軍任王艷紅
微處理機 2019年5期
關鍵詞:可視化信息模型

陳軍任,王艷紅

(1.沈陽工業大學信息科學與工程學院,沈陽 110870;2.沈陽工業大學管理學院,沈陽 110870)

1 引 言

隨著科技發展,人們對加工速度以及加工質量有了更高的要求,STL 的可視化技術在應用中占據了很大的比重。STL 的可視化技術就是將3D 掃描的STL 文件快速轉化為可視化的三維模型,便利于人們對其進行人機交互等操作,提高加工速率及精確度。研究者對于STL 的可視化進行了大量的研究,占志敏[1]等結合OpenGL 圖形編程技術,成功實現STL 三維模型的可視化,其算法簡單,只是經過簡單的冗余處理及拓撲關系。鄭毅[2]使用C++標準模板庫和迭代器技術進行編程,借助紅黑樹結構,加快了拓撲重建任務,但沒有實現三維顯示及人機交互。鄒學涌[3]等采用基于哈希表的拓撲重建算法,并借助了OpenGL 顯示技術,實現顯示效果及信息獲取,該算法中哈希函數的設定對算法效率影響較大,設置不當會使效率大幅降低。尚旭明[4]利用WPF 及XAML技術實現了對3ds Max 模型的顯示及簡單人機交互。Tata[5]等人提出了一種自適應分層算法,可以根據局部幾何形狀改變層厚,算法基于三個基本概念:選擇適應曲面復雜性的準則、識別對象的關鍵特征和物體特征,以及開發用于表示對象的facet 的分組方法。Choi[6]等人提出了一種用于分層制造的切片輪廓處理的容錯切片算法,該算法旨在克服計算機內存的限制和傳統切片方法所固有的計算不穩定性。Brown[7]等人運用切片算法實現了能夠處理和切割一個或多個STL 文件。

在此,針對上述研究成果的不足及可行之處,并結合某機械加工企業的實際需求,提出一種基于WPF 的STL 系統可視化設計方案,通過建立WPF模型數據,對直接導入的STL 文件模型進行轉化,對模型頂點、邊、以及三角片面進行拓撲關系建立,生成三維模型,從而確定模型特征,在此基礎上,利用WPF 的3D 顯示模塊將三維模型顯示出來,進而實現STL 文件對應模型的旋轉、縮放、平移等人機交互功能。

2 系統整體結構

系統主要由STL 文件分析處理、算法研究實現、人機交互三個主要功能組成。

1)STL 文件分析處理

研究STL 文件格式,分析不同格式間的共同性,對STL 文件進行結構分析,探究其更合適的拓撲關系。

2)算法研究實現

針對對STL 文件的分析,設計STL 文件的讀取儲存方式,給出STL 文件可視化實現算法流程圖。

3)人機交互功能設計及實現

首先利用WPF 的3D 模塊搭建可顯示3D 效果的場景,然后利用給出的算法處理STL 文件,在3D場景中顯示,最后針對可視化的模型進行可操作化設計。

系統整體結構圖如圖1所示。

圖1 系統整體結構圖

3 STL文件分析與處理

STL 格式文件以三角形面為單位記錄了每個三角形的簡單幾何信息,每個三角形面都包含該三角形所在平面的法向矢量以及三角形的三個頂點坐標。目前為止,STL 文件有文本(ASCII)和二進制(BINARY)兩種格式[8]。

3.1 STL文件的文本格式

ASCII 格式的STL 文件逐行給出三角形面片的幾何信息,每一行由1 個或2 個關鍵字開頭。在STL文件中一個帶矢量方向的三角形面片是由三角形面片的信息單元facet 來表述的,每一個facet 由7 行數據組成。

關鍵字facet normal 后面給出三個數是三角面指向實體外部的法向矢量坐標;

outer loop 隨后的3 行數據分別是三角面的3個頂點坐標;

end loop 表示完成三角形面片的3 個頂點坐標定義;

end facet 表示完成一個三角形面片定義;

end solid 表示整個STL 文件定義結束,由若干個三角形面片的信息單元facet 構成整個STL 文件格式模型,3 個頂點沿指向實體外部的法矢方向逆時針排列。

3.2 STL文件的二進制格式

二進制STL 文件用固定的字節數來給出三角面片的幾何信息。

文件起始的80 個字節是文件頭,用于存貯文件名,緊接著用4 個字節的整數來描述模型的三角面片總數,后面逐個給出每個三角面片的幾何信息。每個三角形面片占用固定的50 個字節,依次是:

3 個4 字節浮點數,表示三角面法矢量;

3 個4 字節浮點數,表示三角面片第一個頂點坐標;

3 個4 字節浮點數,表示三角面片第二個頂點坐標;

3 個4 字節浮點數,表示三角面片第三個頂點坐標;

最后2 個字節為預留字,一般表示屬性特征。

一個完整的二進制STL 文件的大小為三角面的個數乘以50 再加上84 個字節。

3.3 STL文件結構分析

其實不管何種的格式的STL 文件,一個基本的三角片中,都包括了三角片的法向量normal 以及三個頂點的三維坐標vertex 等信息。憑借這些信息都可以唯一確定一個三角片,進而確定完整的三維曲面模型。為更好分析STL 文件結構,以下給出部分STL 文件結構圖,如圖2所示。

圖2 STL 文件局部結構示意圖

根據圖2所示,假設頂點所對應的邊以及邊的兩個相鄰的邊為鄰接邊,那么在三角形ABC 中,點A 的鄰接邊是a,邊a 在該三角形中的鄰接邊分別為邊b 和邊c。但是這只是一個三角形的頂點以及鄰接邊信息,STL 文件所表示的是n 個三角片的信息,其中會有很多相同的頂點以及鄰接邊。經過觀察可以得到一個頂點最多可以達到6 個鄰接邊,最少有4 個。而邊的鄰接邊最多可以有4 個鄰接邊,最少2 個。由此可見,若只是簡單地減少冗余量提升打開文件的速度,直接處理點的冗余就可以實現,但是如果要進行后續的操作,邊的信息也是非常重要的一部分,例如后續在線建模和NC 代碼自動生成等。故此不能只處理點的冗余,也須處理邊的冗余,然后建立點與鄰接邊、邊與鄰接邊的拓撲關系。

4 算法研究實現

儲存STL 文件信息時,并不能簡單地儲存點、邊以及三角片的信息,還需要儲存它們各自的鄰接邊信息。通過研究還可發現,雖然每三個頂點可以確定唯一的三角片,但是不同的三角片有可能用到相同的頂點以及相同的鄰接邊,這樣就極大地浪費了儲存空間以及處理速度。所以為了存取方便,避免點和邊的重復存取,設計給每個點和邊一個專用的ID號,依據讀取的順序,設計點和邊的ID 號從0 開始依次遞增。這樣就便于在存取的過程中同時也可以剔除重復的頂點和邊信息,進而能夠大幅度提高存取效率,節省儲存空間及讀取時間。

為此,需要建立三個容器分別來儲存頂點、邊和三角片的數據集合。三維頂點的屬性包含頂點的三維坐標,以及頂點的鄰接邊和頂點的專用ID;邊的屬性包含邊的位置信息(兩個頂點)、邊的鄰接邊的序號的集合以及邊的ID 號;三角片容器屬性包含三角形的頂點、邊和法矢量信息。容器結構示意圖如圖3所示。

圖3 容器結構示意圖

憑借頂點和邊的鄰接關系,完全可以確定網格模型各三角面片之間的連接關系。由一個頂點出發,可根據其鄰接邊獲取包含該頂點的所有三角形;由產生的鄰接邊,可分別獲取它們自身的鄰接邊組合。如此循環擴展,直到擴展到整個網格模型為止。然后把STL 文件中的三角片的法矢量信息儲存到建立的三角片容器中,這樣由以上三個容器的建立就可以獲取STL 文件中的所有信息并建立起基本圖元之間的鄰接關系。簡易的演示過程如圖4所示。

圖4 三角片拓展關系演示圖

參考圖2的設定,具體算法流程可如圖5所示。

圖5 STL 可視化算法流程圖

如圖,假設先讀取三角片ABC,首先讀取三角片三個頂點的信息,然后按照上述建立的鄰接邊關系,分別將三角片ABC 的頂點信息儲存到頂點容器中,設置點信息ID 號以及點對應的鄰接邊ID 號;然后把邊的信息儲存到邊容器中,設置邊信息ID 號以及邊所對應的鄰接邊ID 號;最后在三角片容器中儲存三角片三個頂點ID 以及法矢量信息。接下來讀取三角片BDC,首先判斷三角片BDC 的三個頂點以及邊是否被處理(判斷依據是用頂點的三維坐標值與已儲存在容器中的三維坐標值相比較),若被處理,將不再處理此信息不同的保留作為下一個處理頂點,然后將欲處理的點邊信息分別儲存到對應的容器中,且添加鄰接邊關系。往后的三角片按照上述方法處理,直到達到文件的末尾位置為止。

5 可視化模型操作設計

對可視化模型進行操作化設計,可直觀地看出所打開的STL 文件是否有缺陷,并為實現后續在線建模提供操作基礎。目前大多數研究者利用C++語言跟OpenGL 或者3ds Max 結合實現3D 模型顯示功能,但此方法實際操作性復雜。在此利用XAML技術WPF 框架來實現系統3D 模型顯示功能。XAML 技術提供了一種便于擴展和定位的語法來定義與程序邏輯相分離的用戶界面,XAML 中界面表現和邏輯功能的分離使得界面開發和功能開發代碼分離,有利于開發團隊的合理分工,提高了開發效率。WPF 技術主要是用來實現3D 效果,使用WPF實現3D 顯示只需要設置好3D 場景,然后將需要打開的STL 文件經過算法處理就可以直接顯示。利用C#語言除了因為其與WPF 可以組合實現外,還可以避免C++語言中存在的bug。

5.1 3D環境搭建與可視化實現

3D 環境搭建首先需要在XAML 板塊中編寫一個Viewport3D 模塊,用來顯示打開處理的STL 文件,然后在后臺程序當中初始化顯示3D 模型的必要元素:攝像機(Camera)、光源(Light)、模型(Model)。

設置好這些3D 環境所需要的固定屬性,就可以去處理STL 文件來顯示STL 文件里面所儲存的3D 模型。主要步驟如下:

1)在編寫的系統3D 模塊中加入3DTools 工具;

2)建立世界坐標;

3)利用上文算法處理STL 文件:

①構建頂點容器,儲存頂點的三維坐標x、y、z,以及頂點的鄰接邊和頂點的專用ID;

②構建鄰接邊容器,儲存邊的位置信息(兩個頂點)、邊的鄰接邊的序號的集合以及邊的ID 號;

③構建三角片容器,儲存三角形的頂點、邊和法矢量信息;

④利用鄰接邊信息進行三維模型拓展;

⑤定義表面材質(設置Material 屬性);

最終,通過調用處理后的STL 文件,就可在系統中的3D 顯示區域實現STL 模型的可視化。可視化效果展示如圖6所示。

圖6 STL 文件可視化展示圖

5.2 操作功能設計

主要設計旋轉、縮放、平移等三大功能。這些可通過操作模型的變化來實現,也可通過操作Camera來實現。操作模型時需要變化模型的全部坐標以及更新,而操作Camera 時只需要變化Camera 的坐標信息,故實現三大功能全部用操作Camera 來實現。

當操作Camera 時,首先需要獲得Camera 的初始位置以及模型的中心位置,然后需要設置每個功能的計算公式以及獲取的變化變量,這樣就可以得到新的Camera 坐標位置,以此實現操作功能。

1)模型中心位置獲取

在WPF 的MeshGeometry3D 中,有一個 Bounds屬性,該屬性的功能是返回MesheGeometry3D 的邊界Rect3D。Rect3D 表示一個三維矩形,也就是模型的外切矩形。由此信息可以得到外切矩形的三條邊長分別為SizeX、SizeY、SizeZ,并且可以得到模型的中心位置(SizeX,SizeY,SizeZ),同時可以計算外切圓半徑,計算公式為:

通過初始設置時可以得到Camera 最初的坐標位置為(x0,y0,z0),這樣可以得到Camera 到模型中心距離為a,其計算公式為:

2)旋轉功能設計

旋轉功能除了中心位置的獲取,還需要旋轉半徑及旋轉角度。旋轉角度可通過鼠標的控制來獲取。旋轉半徑首先比較a 與r 的大小,當a 大于r 時選取a 為旋轉半徑,否則選r。此舉主要是為防止Camera 旋轉時進入模型內部出錯。

3)縮放功能設計

采取向量比例的算法來實現模型縮放功能,根據鼠標轉輪采集的縮放信息進行縮放。設縮放大小為d,縮放后新的Camera 位置可如下式計算得到:

4)平移功能設計

通過計算模型中心位置與期望移動位置的偏差,來確定新的Camera 位置坐標,實現模型的平移功能。

5.3 系統測試

為測試上述構建的方法及所開發系統的有效性,選用某企業實際加工中的一些STL 文件,分別對期文本和二進制兩種格式的STL 文件進行測試。結果表明,系統實現了兩種STL 格式的可視化,并且可以通過人機交互實現模型的旋轉、縮放、平移。系統操作簡單、反應速度快。具體測試效果如圖7。

圖7 實際測試效果展示圖

6 結 束 語

采用WPF 框架以及XAML 技術的設計方案,優化了系統實現的簡約性,實現了對STL 文件的可視化,也實現了對可視化STL 文件進行操作的功能。用鄰接邊作為STL 文件快速拓展的依據,極大減少了STL 信息的冗余量,提高了可視化速度,為后續研究中進一步處理可視化的STL 模型提供了信息基礎。

猜你喜歡
可視化信息模型
一半模型
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
重要模型『一線三等角』
基于CGAL和OpenGL的海底地形三維可視化
重尾非線性自回歸模型自加權M-估計的漸近分布
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
3D打印中的模型分割與打包
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 免费亚洲成人| 欧美a级在线| 激情网址在线观看| 国产91精品调教在线播放| 国产精品蜜芽在线观看| 久久永久免费人妻精品| 丁香综合在线| 91人妻在线视频| 一级香蕉人体视频| 性色一区| 国产无码精品在线| 小蝌蚪亚洲精品国产| 无码一区二区三区视频在线播放| 18禁黄无遮挡网站| 91国内视频在线观看| 国产呦精品一区二区三区下载| 亚洲高清中文字幕在线看不卡| 国产成年无码AⅤ片在线| 黄色三级网站免费| 国产成人免费手机在线观看视频 | 色网站在线视频| 成人韩免费网站| 亚洲成人一区在线| 国产精品女在线观看| 国产精品成人观看视频国产 | 真实国产乱子伦视频| 亚洲欧美日韩另类在线一| 青青草原国产精品啪啪视频| 亚洲国产精品久久久久秋霞影院| 欧美无遮挡国产欧美另类| 精品国产中文一级毛片在线看| 日韩欧美视频第一区在线观看 | 成人在线观看不卡| 免费一看一级毛片| 亚洲天堂福利视频| 国产麻豆永久视频| 亚洲天堂777| 精品人妻AV区| 国产高清国内精品福利| 国禁国产you女视频网站| 青青青伊人色综合久久| 国产精品区视频中文字幕 | 97se亚洲综合在线| 国产麻豆精品手机在线观看| 亚洲第一精品福利| 日韩美一区二区| 国产噜噜噜视频在线观看| 尤物在线观看乱码| 中国精品自拍| 人人看人人鲁狠狠高清| 一级黄色欧美| 无码专区第一页| 26uuu国产精品视频| 在线欧美日韩| 日韩在线欧美在线| 亚洲天堂首页| 最新无码专区超级碰碰碰| 免费国产高清视频| 日韩久久精品无码aV| 久久综合国产乱子免费| 无码粉嫩虎白一线天在线观看| 毛片视频网址| 黑人巨大精品欧美一区二区区| 尤物特级无码毛片免费| 亚洲熟女偷拍| 国产欧美日韩综合在线第一| 亚洲精品国产综合99| a网站在线观看| 福利姬国产精品一区在线| 麻豆AV网站免费进入| 不卡视频国产| 亚洲视频免费播放| 狠狠v日韩v欧美v| 色综合中文综合网| 国产精品自在拍首页视频8| 国产一区二区丝袜高跟鞋| 国产又黄又硬又粗| 亚洲一级毛片在线观播放| 丰满人妻久久中文字幕| 亚洲国产成人精品无码区性色| 亚洲成综合人影院在院播放| www.亚洲一区|