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

三角網格文件OFF的格式分析及OFF到STL的轉化①

2016-06-15 03:51:18沙晨明申作林申可心哈爾濱理工大學軟件學院哈爾濱50040大慶師范學院機電工程學院大慶637
計算機系統應用 2016年4期

沙晨明,申作林,申可心(哈爾濱理工大學 軟件學院,哈爾濱 50040)(大慶師范學院 機電工程學院,大慶 637)

?

三角網格文件OFF的格式分析及OFF到STL的轉化①

沙晨明1,申作林1,申可心2
1(哈爾濱理工大學 軟件學院,哈爾濱 150040)
2(大慶師范學院 機電工程學院,大慶 163712)

摘 要:OFF文件格式是一種用三角網格描述三維模型的常用格式之一,對OFF文件格式的詳細分析研究是讀取、顯示及操作OFF文件的前提條件.針對目前OFF文件的簡單分析及處理沒有形成一定系統的規范和思路這一問題.以Visual C++6.0為開發平臺;以MFC為基礎進行可視化界面設計;利用C++語言的標準IO庫實現對OFF文件進行讀取和寫入操作;應用OpenGL編程技術實現對OFF文件的顯示;建立OFF文件的讀取和顯示系統,通過實驗驗證讀取和顯示效果,并利用格式轉化算法完成OFF文件到STL文件的轉換.

關鍵詞:OFF; STL; 格式轉化; 三角網格模型; OpenGL

1 引言

三角網格模型是指由三角形網格組成的表面模型,由于三角網格模型的處理簡便快捷、可視化效果好,表現能力佳,因而被視為描述三維立體模型的常用手段之一.近年來隨著計算機圖形學的迅猛發展,三角網格模型已廣泛應用于三維動畫、電子商務、計算機輔助設計、工業制造、數字娛樂等諸多方面[2].尤其是隨著3D打印這一具有現代化工業革命性質的技術蓬勃興起,三角網格模型更成為三維立體模型表示方法的焦點.目前STL文件已成為快速原型技術領域最為常用的文件格式和事實上的接口標準,OFF文件也大量的被用于三維模型表示等三維圖像幾何處理領域中[6].OFF(Object File Format)文件格式是描述三維網狀物對象的文件格式,常用來表示基于三角網格描述的三維模型,一般通過現實采點取樣獲得數據,通過一定的預處理和一定的簡化操作,再通過一定的存儲手段形成現有的OFF文件.對OFF文件格式的分析是進行OFF文件讀取、顯示和操作的前提,更是數字圖像處理的關鍵.目前對于OFF文件的簡單分析處理沒有形成一定系統的規范和思路.本文將對OFF的文件特點進行深入的分析并在Visual C++ 6.0平臺上,利用MFC進行圖形界面設計,利用C++標準IO庫結合OpenGL編程技術實現對OFF文件的讀取和顯示.同時通過深入分析,利用格式轉換算法完成OFF文件到STL文件的轉換研究.

2 OFF文件格式的結構

利用現有的計算機圖形學知識,充分了解基于三角網格信息描述的三維立體模型數據文件格式,理解三維立體模型的數據內部組織結構是對三維立體模型處理的基礎和關鍵[5].

OFF文件是一種利用點和邊組成許多空間小三角形面片來逼近三維模型表面的一種數據文件,這種逼近方法也是大多數三維網格文件所采用的圖元表示法,利用三角形可以近似逼近出幾乎所有的三維立體模型.OFF文件的數據是采用ASCII格式存儲的,包括定義創建物體表面的平面多邊形的頂點集合、以組成三角面片的三個點為元素的三角形集合.每個OFF文件格式都是OFF關鍵字開頭的,第二行則是包括三維物體的頂點數量、三角面片數量和邊數量,其中邊的數量可以安全的省略.之后的數行是頂點和表面的表示,對于頂點是用X,Y,Z坐標值表示并記錄的,而表面則可以用點的索引來表示.

一個具體的OFF文件如下,圖一為其顯示結果:

通過對OFF文件格式的分析可知,每一個點的坐標表示了其三維空間的位置,點之間的索引關系表示了立體模型的拓撲序列.此外用ASCII碼表示的OFF文件可讀性強,以點集和面集表示思路簡單清晰,這方便了我們的進一步讀取并處理數據.

3 OFF文件的讀取及顯示操作

本文通過對OFF文件格式和內部數據組織結構的分析,以MFC作為處理三維模型的基礎,在Visual C++ 6.0平臺下使用C++語言,通過IO流操作實現文件讀取并存儲,應用OpenGL編程技術實現OFF文件的三維圖形顯示.

由OFF文件的存儲格式可知,我們可以從中讀取出三維模型的頂點以及用頂點索引表示的一系列小三角面片,對于每個三角面片的邊來說,我們可以進行相應的計算,所以邊數可以安全的省略.

3.1頂點和三角面片

對于三維立體模型而言,無非是一系列頂點和三角面片,所以對于這兩種基本組成元素而言,其定義是描述三維模型的前提條件.

設頂點集合

每個頂點都有一個唯一標識的下標,下標從0到n,而每個點又可定義為:

所以有點集

設面片集合

每個三角面片是有三個點組成,所以有映射

其中

則面片集為

3.2網格模型

由以上分析可知,網格模型是由點集和三角面片集合組成,所以我們只需加入相關表示信息即可表示網格模型,完成網格模型的定義.

設網格集合為

其中V包括組成網格模型的全部頂點,且每個頂點都有唯一的索引,索引滿足從0到n,F包括由3個V上的點所組成的元素.

3.3文件讀取

由于OFF文件的可讀性強,可用一般的文本編輯器打開,所以通過C++標準IO庫的輸入輸出流來實現OFF文件的讀取功能.

通過使用C++標準庫的FILE類創建文件指針,指向欲打開的OFF文件; 使用fopen()函數進行文件打開并通過返回值是否為NULL判斷成功與否; 使用fscanf()函數實現字符的讀入功能并用strcmp()進行字符的匹配; OFF文件中存在三維模型頂點、面片的數目,利用此信息通過一定的循環方式逐行讀入字符并存儲數據.

讀取方法流程如圖2所示.

圖2 讀取方法流程圖

3.4文件顯示

OpenGL編程技術的使用能更好的實現三維模型的立體感和真實感,在繪圖方面更加有優勢[1].在OpenGL提供的API中,有一系列畫圖的函數,在這里我們使用指定圖元為三角面片的繪圖.

glBegin(GL_TRIANGLES)函數指定了以下為圖元列表的開始; glEnd()函數指定了圖元列表結束; 在glBegin()與glEnd()之間使用三個參數的glVertex3f()函數繪制.

4 OFF到STL的格式轉換

STL(stereo lithographic)文件格式由3D Systems公司于1987年推出,同樣也是采用三角形面片進而離散地近似表示三維模型,目前STL已成為快速原型技術領域最為常用的文件格式和事實上的接口標準[2].研究各類三維網格圖形文件格式之間的轉化對于發展和擴充計算機圖形學領域來說,具有非常重要意義[4].在之前分析的基礎上,我們已經對OFF文件的內部數據結構有了清晰的了解,它主要描述了點集合以及用點索引表示的三角面片集合.對于STL文件來說,它是由一系列無序的三角面片組成,而三角面片是直接用點來表示的,沒有用來反映三角面片之間的拓撲關系,并且每個三角面片都與相鄰的三角面片之間共用兩個頂點[3].根據兩者之間的聯系與區別,本小節設計并完成OFF文件到STL文件的轉化.

4.1STL格式文件的分析

如下為一個簡單的STL文件,以此為例進行分析.

第一行以solid關鍵字開頭,可指出文件路徑和文件名,第二行則以facet normal關鍵字指出指向實體外部的三角面片法向量的信息,隨后從outer loop開始到endloop結束為描述三角面片的三個頂點,endfacet表示本三角面片表示結束,endsolid Object01聲明了STL的結尾.

4.2OFF文件與STL文件的聯系與區別

從OFF文件當中我們可以很容易的找到與STL文件的一些聯系和區別.

① 點的表示OFF文件和STL文件均可用正常浮點數及科學記數法表示,如+0.75、-0.52628e+00.

② OFF文件中存在表示頂點個數和三角面片及邊數的信息,而STL文件沒有明確給出,需要后期計算.

③ OFF文件用頂點的索引表示三角面片,而STL文件之間直接用關鍵字facet羅列表示.

④ OFF文件并沒有指出指向實體外部的三角面片法向量的信息,而STL文件恰好給出了這樣的信息.

通過以上分析我們可以發現,利用OFF文件提供的表示三角面片的索引信息,通過使用向量法,可求出表示STL文件所用的法向量.

4.3轉換算法的實現

若以索引方式表示的三角面片為:

n1 n2 n3的空間坐標分別為:

則設在該三角面片上相交的兩條直線的向量為:

由三角面片的法向量定義可知,其法向量垂直于該三角面片上任何兩條相交的直線,則設該三角面片的法向量為n且有:

根據以上公式繼續推導有:

隨后將x,y,z中的任意一個賦予一便于計算的定值,則可求出法向量n.利用單位化向量公式可進一步求出一定精度下的單位化法向量,具體為:

求出法向量后,我們可以利用C++ 標準IO庫的進行文件的寫入.按照STL文件的格式,依此寫入開始定義文件的關鍵字、指向實體外部的三角面片法向量、表示三角面片的三個頂點信息、結束定義文件的關鍵字即可完成從OFF文件到STL文件的轉化.

5 實驗結果

根據以上分析,使用MFC編程技術和OpenGL提供的函數接口,在Visual C++ 6.0平臺上進行實驗,以計算機模擬合成的OFF文件為數據材料,進行讀取顯示并實現了預期效果.圖3為顯示效果圖.

圖3 模型顯示效果圖

6 結語

本文以理清OFF文件內部存儲結構、讀取及顯示OFF文件為目的,通過系統的分析、處理、實驗等操作實現了相應目的,并研究轉換算法,完成了從OFF文件到STL文件的轉換.這方便了對OFF文件相關研究的擴展,為進一步對OFF文件進行冗余數據處理、三維網格圖形的形變操作、數據結構算法的應用、相應的圖形處理的探索打下了基礎.雖然對OFF文件的分析已經有了系統的研究,但是在今后對于OFF文件的快速讀取、顯示、處理方面仍有待于我們進一步的研究和發現.

參考文獻

1嚴梽銘,鐘艷如.基于VC++和OpenGL的STL文件讀取顯示.計算機系統應用,2009,18(3):172–175.

2衛煒,周來水,張麗艷.海量STL文件的快速讀取與顯示.機械科學與技術,2006,25(8):935-938,975.

3朱虎,楊忠鳳,張偉.STL文件的應用與研究進展.機床與液壓,2009,37(6).

4羅東.三維模型表現形式轉換技術及存儲格式定義的研究與實現[碩士學位論文].西安:西北大學,2010.

5黎華,肖偉.幾種三維模型文件在OpenGL中的輸入與處理.物探化探計算技術,2007,29(1):83–86.

6丁麗.基于OpenGL的三維模型的可視化研究[碩士學位論文].濟南:山東大學,2009.

Format of Triangular Mesh File OFF and Transformation of STL to OFF

SHA Chen-Ming1,SHEN Zuo-Lin1,SHEN Ke-Xin2
1(School of Software,Harbin University of Science and Technology,Harbin 150040,China)2(School of Mechtronics Engineering,Daqing Normal University,Daqing 163712,China)

Abstract:OFF (Object File Format)is a kind of common format for three-dimensional model described with triangular mesh.The research of OFF is the foundation condition for reading,displaying and other operations.Nowadays,it doesn’t have a set of standards and specifications about the simple analysis of OFF.First of all,the software is based on Visual C++ 6.0 developing platform and uses MFC to achieve a visual interface.In addition,we can read and write the OFF file taking advantage of C++ standard I/O library and the view of OFF file is implemented by using OpenGL technology.In the end,we have a system that realizes the functions of reading and displaying for OFF file while it completes the transformation of file from OFF to STL with format conversion algorithms.

Key words:OFF; STL; format transformation; trianglular mesh model; OpenGL

基金項目:①黑龍江省大學生創新創業訓練計劃項目(201510214027)

收稿時間:2015-07-17;收到修改稿時間:2015-09-16

主站蜘蛛池模板: 国产午夜不卡| 久久女人网| 国产在线日本| 国产精品免费入口视频| 亚洲天堂网2014| 特级aaaaaaaaa毛片免费视频 | 欧美日韩在线国产| 成人国产精品一级毛片天堂| 久青草免费在线视频| 国产精品亚欧美一区二区| a毛片在线播放| 亚洲国产精品一区二区高清无码久久| 中文国产成人久久精品小说| 精品无码人妻一区二区| 亚洲欧美成人| 亚洲免费福利视频| 99久久精品国产麻豆婷婷| 欧美中文字幕一区二区三区| 在线观看视频99| 亚洲swag精品自拍一区| 免费人成又黄又爽的视频网站| 久久五月视频| 亚洲无码熟妇人妻AV在线| 亚洲日韩在线满18点击进入| 五月天福利视频| 91欧美亚洲国产五月天| 欧美黄网站免费观看| 国产视频一区二区在线观看| 日韩午夜片| 国产精品午夜福利麻豆| 91亚洲精选| 无码区日韩专区免费系列 | 亚洲精品卡2卡3卡4卡5卡区| 国产精品xxx| 国产一区在线视频观看| 欧美日韩第二页| 中文无码精品A∨在线观看不卡 | 亚洲成aⅴ人在线观看| 日韩毛片基地| 亚洲啪啪网| 欧美五月婷婷| 亚洲无码日韩一区| 精品一区国产精品| 国产欧美日韩精品综合在线| 欧美日韩亚洲国产| 色综合中文字幕| 四虎成人精品在永久免费| 亚洲成人在线网| 日韩精品免费一线在线观看| 色综合婷婷| 九九九久久国产精品| 久久狠狠色噜噜狠狠狠狠97视色| 国产精品自拍合集| 国产在线观看第二页| 国产va免费精品观看| 亚洲va视频| 久久五月视频| 深爱婷婷激情网| 国产福利不卡视频| 青青草原国产免费av观看| 久久人人爽人人爽人人片aV东京热| 久久久成年黄色视频| 思思热精品在线8| 国产农村精品一级毛片视频| 91久久夜色精品| 黄色福利在线| 久久精品娱乐亚洲领先| 亚洲免费毛片| 国产精品任我爽爆在线播放6080 | 自拍亚洲欧美精品| 99中文字幕亚洲一区二区| 中国精品久久| 老色鬼久久亚洲AV综合| 亚洲人网站| 香蕉99国内自产自拍视频| 国产福利免费视频| 国产精品免费p区| 国产伦精品一区二区三区视频优播| 国产青榴视频| av一区二区三区在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ| 亚洲中文字幕日产无码2021|