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

三角網格文件的格式處理在3D打印技術中的應用

2017-04-21 03:32:38申作林沙晨明
黑龍江科學 2017年2期
關鍵詞:定義模型

申作林,沙晨明

(哈爾濱理工大學,哈爾濱 150040)

?

三角網格文件的格式處理在3D打印技術中的應用

申作林,沙晨明

(哈爾濱理工大學,哈爾濱 150040)

三維模型是計算機圖形學重要的組成部分,用網格描述的三維模型的表示又是3D打印技術應用的先決條件,而對三角網格文件數據結構的認識將會直接影響到三維模型的分析處理。常用模型數據文件格式的提出,對擴充計算機圖形學具有重要意義。在詳細了解3D打印流程基礎上,詳細分析常用基于三角網格文件的數據結構,針對目前OFF模型文件組織結構的定義沒有形成系統的規范問題,完成一種OFF文件網格模型數據結構的定義,提出模型互轉思想,設計一種轉換算法并進行3D打印實驗驗證結果。

計算機圖形學; 格式轉換;三維模型;3D打印;三角網格文件

三維模型是計算機圖形學中的重要組成部分,目前隨著3D打印技術的興起,三維模型在計算機應用領域的研究中也扮演了更重要的角色。3D打印技術是制造業正在飛速發展的一項新興技術,被稱為“具有工業革命意義的制造技術”。美國《時代》周刊也將3D打印列為“美國十大增長最快的工業”之一。對于這一空前的技術而言,它有著必然的優勢,如:工業制造上無須模具即可加工、產出品多樣化、支持個性定制、降低技術門檻等。然而,在這種優勢下也存在一系列問題,如:難以尋找具有優良性能的可打印耗材、打印經濟代價昂貴、打印操作過于復雜、用于打印的模型冗雜且處理方式不規范導致打印效率低下等。針對3D打印模型冗雜這一問題,本文將簡述3D打印的常規流程,提出“云制造+3D打印”的新型模式,論述常見三角網格模型文件的數據結構,針對OFF模型文件的組織結構設計模型轉換算法,通過實驗做出結論。

1 3D打印流程簡述

對3D打印流程的詳細分析,是實現3D打印流程細節優化的最根本前提。傳統上認為,3D打印可大致分為六個部分,如圖1所示。

在這六個部分中,前四項是數字幾何處理部分,在這里不妨把這四部分稱作“軟處理”部分,而后兩部分為硬件相關部分,稱作“硬處理”部分。由“軟”、“硬”的劃分可見,三維模型的處理在3D打印應用中的重要性。

“云時代”的到來給制造業帶來了一種全新的流程模式,傳統的3D打印流程未能體現“云時代”的靈活性和多變性,那現在我們不妨思考一種全新的流程模式: 云制造+3D打印。在該模式下,通過基于Web的模型操作平臺處理欲打印的三維模型,亦可通過平臺結合格式轉換器轉換文件格式,上傳至三維模型庫或下載至本地,連接3D打印設備完成操作,如圖2所示。在這種模式下,不僅實現了制造的云處理,而且利用OFF文件模型庫占用空間少這一特點,實現了資源的節約。

圖1 3D打印流程圖Fig.1 3D printing flow chart

圖2 云制造+3D打印Fig.2 Cloud manufacturing + 3D printing

通過以上的大致分析,已經對3D打印流程有了一定的了解,下面本文將對數字處理階段進行解析。

2 常用模型數據文件格式

模型文件作為3D打印機的基本輸入將直接影響到3D打印的效率。對常用模型數據文件格式及文件內部組織結構的分析,有利于更深入的研究模型優化算法,下面將介紹三種常用模型數據文件格式。

2.1 OBJ文件的數據結構

OBJ文件是Alias| Wavefront公司為它的一套3D建模和動畫軟件“Advanced Visualizer”而開發的3D模型文件格式,該格式以純文本的形式存儲了模型的頂點、面片、法線及紋理坐標等使用信息。這種文件格式由于結構簡單,通常是各種模型文件格式轉換的中間文件。

2.2 STL文件的數據結構

STL同樣也是采用三角形面片進而離散的表示三維模型,STL已成為快速原型技術領域的接口標準。對于STL文件來說,它是由一系列無序的三角面片組成,而三角面片是直接用點來表示的,沒有用來反映三角面片之間的拓撲關系,并且每個三角面片都與相鄰的三角面片之間共用兩個頂點。以部分STL文件片段為例進行分析,分析如下:

solid STL File

Facet normal 0.000000e+000 0.000000e+000 8.729460e+000

outer loop

Vertex 6.198058e-001 2.317201e+001 3.826742e+001

Vertex 6.198058e-001 2.273891e+001 3.826742e+001

Vertex 6.376099e-001 2.318196e+001 3.826742e+001

endloop

endfacet

...

endsolid STL File

片段中以solid關鍵字開頭,指定了文件名,第二行用facet normal關鍵字指定了指向模型外部的面片法向量,隨后以outer loop和endloop為一對關鍵字描述三角形的三個頂點,endfacet是面片定義結束,endsolid 意味著STL文件的結束。

STL文件的數據結構只能描述三維模型的幾何信息,不能表示樣式信息,這區別于OBJ文件,STL是計算機圖形學、數字幾何處理、數字幾何工業應用等領域最常用的文件格式,亦是三維打印機支持的最常見文件格式。

2.3 OFF文件的數據結構

利用三角形圖元可以近似逼近出幾乎所有的三維立體模型,這種逼近方法也是多數三維網格數據文件所采用的方法。OFF( Object Format File )文件也采用了這種方法,它利用點和邊組成許多空間三角形來逼近三維模型表面。與其他文件不同,OFF文件的數據只支持ASCII格式存儲,利用ASCII格式存儲的優點是可讀性強,方便理解數據。下面再看一個例子,來理解OFF的數據結構。

OFF

4 4 6

0.0 0.0 2.0

1.632993 -0.942809 -0.666667

0.000000 1.885618 -0.666667

-1.632993 -0.942809 -0.666667

3 1 0 3

3 2 0 1

3 3 0 2

3 3 2 1

圖3 OFF文件顯示圖Fig.3 OFF document display image

如圖3所示為該OFF文件的顯示圖。由示例可知,OFF文件與OBJ文件非常相似,只不過與OFF相比OBJ文件多了一組表示信息,例子中的第二行“4 4 6”,分別代表模型頂點數,三角面片數,邊數。隨后是頂點坐標及三角面片,拿一個面片為例:“3 1 0 3”中第一個“3”代表隨后跟著3個點的索引值,值得注意的是,索引值從0開始( 與OBJ文件不同 )。與STL相似,OFF也沒有表示模型樣式的相關信息,這很方便進行OFF到STL的轉換。

3 一種OFF模型的規范定義

盡管在計算機圖形學方面有所建樹的國內外學者對三維圖形有了深入的研究,但是對于OFF文件數據結構的定義卻沒有形成一種規范定義。在對OFF模型的數據結構有了一定的了解之后,本小節試圖給出OFF描述的三維模型的定義。

3.1 頂點的定義

從集合論的角度很容易得到如下頂點的定義:

V:{p1(x1,y1,z1),…,pn(xn,yn,zn)}

使用C++語言描述的頂點部分定義如下:

Class Vector

{

unsigned int id; /*頂點標識*/

float x,y,z; /*頂點坐標*/

};

3.2 面片的定義

設面片集合:

S:{s1,s2,…,sn}

根據頂點的定義,有映射:

f:V→S

sn=f(pn,pm,pv)

其中pn,pm,pv∈V,sn∈S

得到面片集為:

S:{sn|sn=f(pn,pm,pv),p∈V}

使用C++語言描述的三角面片部分定義如下:

Class Triangle

{

unsigned int id; /*面片標識*/

int verts[3]; /*三角形的三個點的標識*/

int nverts; /*頂點索引個數*/

};

3.3 網格模型的定義

有了上述頂點和面片的定義,很容易完成網格模型的定義。

網格定義如下:

M:{(V,S)}

其中V是包含全部頂點的集合,S是包含由3個V集合上的點所組成的面片集合。

使用C++語言描述的網格模型部分定義如下:

class CMesh

{

Vertex * vertex; /*點集合*/

Triangle * triangle; /*面片集合*/

...

int nVertices,nTriangles,nEdges;

/*存儲相關數目*/

public:

void Read();

void RenderScene();

...

};

3.4 網格模型的操作

根據上述模型的定義,可以結合OpenGL編程技術進行模型的讀取及繪制操作,OpenGL編程技術的使用能更好的實現三維模型的立體感和真實感,在繪圖方面更加有優勢。圖4為OpenGL顯示效果圖,可以利用OpenGL提供的各種API接口實現模型的顯示。

下面部分代碼使用了部分繪圖函數:

void CMesh:: RenderScene(){

...

for(int i=0;i

glBegin(GL_TRANGLES);

glVertex3f(vertex[i].x,vertex[i].y, vertex[i].z);

glVertex3f(vertex[i+1].x,vertex[i+1].y, vertex[i+1].z);

glVertex3f(vertex[i+2].x,vertex[i+2].y, vertex[i+2].z);

glEnd();}

...

}

圖4 OFF模型顯示示例Fig.4 OFF model display scale

3.5 模型互轉研究

研究常用三維網格數據文件格式之間的轉換,無論對于擴充計算機圖形學還是更好地應用3D打印技術來說,都具有非常重要意義。基于上述分析,我們已經對常用模型數據文件格式( OBJ、STL、OFF ) 的內部數據組織結構有了一定了解,下面本文將根據模型的定義分析三種文件的各自特點,提出轉換思想。

前面提到的OBJ文件很適合用于模型之間的互轉,所以本小節著重分別分析OBJ與STL、OFF的聯系和區別。從OBJ文件中可以很容易找到與STL文件、OFF文件的一些聯系和區別。

A.OBJ文件可以存儲模型的樣式等信息,而STL文件與OFF文件并沒有相關表示信息,所以在設計轉換時只需舍去樣式表示信息即可。

B.OBJ文件與OFF文件用索引表示三角面片,但兩者表示范圍不同,OBJ文件的點索引下標從1開始, OFF文件的點索引下標從0開始。STL用outer loop和endloop關鍵字結合三個頂點描述三角形面片,所以在設計轉換時使用適當的表示方法即可。

C.OBJ文件與STL文件均可存儲面片法向量信息,而OFF文件沒有相關表示信息。所以在設計轉換時,需要計算面片法向量。

D.OFF文件存儲了相關點、邊及面片的數量信息,而OBJ文件與STL文件沒有明確給出,所以在設計轉換時需要計算相關信息數目。

通過以上分析可以發現,利用文件的各自特點,通過使用提供的索引信息,使用幾何學中的向量法,可求出表示STL文件所用的法向量,進而得到3D打印需要的STL文件格式。

3.6 一種簡單的OFF到STL的轉換算法

OFF文件和STL文件同樣采用二進制文本信息來描述三維模型的方式,但是OFF文件通過其特有的數據結構,較STL文件在數據存儲上占有一定的優勢,這種優勢在建立大型三維模型庫、云制造的資源空間等應用上表現得更加明顯。因此,可以利用OFF文件存儲空間較小這一特點,應用OFF模型文件處理平臺對OFF文件進行預處理操作,再通過調用轉換算法完成模型轉換,來達到節約時間和空間的目的。

圖5 轉換算法流程Fig.5 Transition algorithm flow path

圖5描述了轉換算法的流程,下面將實現轉換算法代碼:

Void Transformation algorithm

( CMesh inputMesh/*輸入模型文件*/ )

{

FILE*fout=fopen(“D://outputMesh.stl”,“w”);

//打開輸出文件

for(int i = 0; i

//遍歷表示模型的所有三角形

{

Vector vertexA, vertexB, vertexC,

tempVector1, tempVector2, normalVector;

//結點的獲取

vertexA.x=inputMesh.vertex[inputMesh.triangle[i].verts[0]].x;

VertexA.y=inputMesh.vertex[inputMesh.triangle[i].verts[0]].y;

vertexA.z=inputMesh.vertex[inputMesh.triangle[i].verts[0]].z;

/*用第i個三角形的第0個點的索引值來訪問第i個三角形的第0個點的坐標值*/

vertexB.x=inputMesh.vertex[inputMesh.triangle[i].verts[1]].x;

vertexB.y=inputMesh.vertex[inputMesh.triangle[i].verts[1]].y;

vertexB.z=inputMesh.vertex[inputMesh.triangle[i].verts[1]].z;

/*用第i個三角形的第1個點的索引值來訪問第i個三角形的第1個點的坐標值*/

vertexC.x=inputMesh.vertex[inputMesh.triangle[i].verts[2]].x;

vertexC.y=inputMesh.vertex[inputMesh.triangle[i].verts[2]].y;

vertexC.z=inputMesh.vertex[inputMesh.triangle[i].verts[2]].z;

/*用第i個三角形的第2個點的索引值來訪問第i個三角形的第2個點的坐標值*/

//法向量計算區域

tempVector1.x = vertexB.x-vertexA.x;

tempVector1.y = vertexB.y-vertexA.y;

tempVector1.z = vertexB.z-vertexA.z;

tempVector2.x = vertexC.x-vertexA.x;

tempVector2.y = vertexC.y-vertexA.y;

tempVector2.z = vertexC.z-vertexA.z;

normalVector.x=tempVector1.y*tempVector2.z-tempVector1.z*tempVector2.y;

normalVector.y=tempVector1.z*tempVector2.x-tempVector1.x*tempVector2.z;

normalVector.z=tempVector1.x*tempVector2.y-tempVector1.y*tempVector2.x;

//單位化法向量

float mol=

sqrt(normalVector.x*normalVector.x+normalVector.y*normalVector.y+normalVector.z*normalVector.z);

//向量的模

normalVector.x=normalVector.x/mol;

normalVector.y=normalVector.y/mol;

normalVector.z=normalVector.z/mol;

fwrite();//按照STL格式寫入關鍵字

}

fclose(fout);//關閉文件

}

4 實驗

實驗步驟:本實驗在VC++6.0平臺上實現轉換算法,并完成若干模型的轉換得到3D打印需要的STL文件格式。使用型號為BI V2.0的實驗型3D打印機,如圖6所示。實驗耗材選用ABS樹脂,模型使用計算機虛擬合成的三維模型,原始模型如圖7中M1所示。實驗利用的簡化基本操作為邊折疊,采用誤差測度-二次誤差度量算法,并將簡化測度化簡為計算簡單的遞推表達式的方法預處理原始模型文件,得到M2所示模型。

圖6 BI V2.0 3D打印機Fig.6 BI V2.0 3D printer

利用以上模型,調節切片厚度,填充密度級別并保持其他參數不變的前提下進行打印測試,欲打印模型大小為(W,D,H:100.0 mm,45.07 mm,73.12 mm)。其他主要控制參數見表1。

圖7 模型簡化Fig.7 Model simplification

表1 其他主要控制參數

5 結語

新一代信息技術與制造業的融合,正引發影響深遠的全球產業革命,更為我國制造業的轉型升級、創新發展提供重大機遇,在《中國制造2025》的強國戰略下,從“中國制造”到“中國智造”,全面提升產業技術水平和國際競爭力刻不容緩。對于3D打印這一具有跨時代意義的技術而言,大力推動其發展不僅可以促進制造業轉型升級,更可為我國科學研究工作貢獻強大的力量。

[1] 劉利剛,徐文鵬,王偉明,等.3D打印中的幾何計算研究進展[J].計算機學報,2015,(06):1243-1267.

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

[3] 沙晨明,申作林,申可心.三角網格文件OFF的格式分析及OFF到STL的轉化[J].計算機系統應用,2016,(04):232-236.

[4] 劉源.三維幾何模型的重建與結構優化[D].合肥:中國科學技術大學,2015.

[5] 胡瑞珍,黃惠.3D打印啟發下的模型實例化優化研究綜述[J].計算機輔助設計與圖形學學報,2015,(06):961-967.

[6] 曾龍,劉永進,張東亮.面向三維打印的特征驅動輪廓線編輯方法[J].計算機輔助設計與圖形學學報,2015,(06):974-983.

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

[8] 牛振華,付婭琦,董遷遷. 3D打印速度的研究[J].江蘇科技信息,2014,(07):61-62.

[9] 王勝法,李寶軍,呂掌權,等.面向三維打印的殼狀結構汽車及部件模型輕量化建模[J].計算機輔助設計與圖形學學報,2015,(06):968-973.

[10] 李小麗,馬劍雄,李萍,等.3D打印技術及應用趨勢[J].自動化儀表,2014,(01):1-5.

The geometry of triangular mesh file processing in the application of 3D printing

SHEN Zuo-lin, SHA Chen-ming

(Harbin University of Science and Technology, Harbin 150040, China)

Three dimensional model plays an important part in computer graphics, and the 3D model of mesh description is the precondition of 3D printing application. Understanding of the data structure of triangular mesh file will directly affect the processing of 3D model. Commonly used model data file format is of great significance to the expansion of computer graphics. On the basis of detailed understanding of the 3D printing process, a detailed analysis of the commonly used data structure based on the triangular grid file was made. In view of the problem that the definition of the structure of the OFF model file is not standardized, this paper defines the data structure of the OFF model, presents ideas of a model for transformation, designs a transformation algorithm and designs an experiment to verify the results through 3D printing.

Computer graphics; Format conversion; 3D Model; 3D printing; Triangular mesh file

2017-01-06

黑龍江省大學生創新創業訓練項目(201510214027)

申作林(1995-),男,本科在讀學生。 沙晨明(1981-), 女,碩士,講師。

TP391.41

A

1674-8646(2017)02-0018-05

猜你喜歡
定義模型
一半模型
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
重要模型『一線三等角』
定義“風格”
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 国产一区二区三区免费| 天天综合色天天综合网| 国产传媒一区二区三区四区五区| 尤物亚洲最大AV无码网站| 91日本在线观看亚洲精品| 成人一级黄色毛片| 69国产精品视频免费| 亚洲天堂精品在线| 午夜福利无码一区二区| 国产你懂得| 97se亚洲综合在线天天| 欧美日本视频在线观看| 久久国产精品嫖妓| 在线观看国产一区二区三区99| 国产农村妇女精品一二区| 无码专区国产精品一区| 激情无码视频在线看| 亚洲精品男人天堂| Aⅴ无码专区在线观看| 无码中文字幕精品推荐| 日韩麻豆小视频| 丁香五月婷婷激情基地| 亚洲欧美精品一中文字幕| 亚洲色婷婷一区二区| 欧美视频二区| 国产精品成人免费视频99| 国产丝袜91| 国产麻豆91网在线看| 国产成人综合日韩精品无码首页 | 伊人无码视屏| 毛片网站在线看| 原味小视频在线www国产| 国产成人亚洲无吗淙合青草| 99热这里只有精品在线播放| 亚洲日本精品一区二区| 成年人午夜免费视频| 亚洲国产成熟视频在线多多 | 日韩国产亚洲一区二区在线观看| 超碰aⅴ人人做人人爽欧美 | 亚洲第七页| 欧美中文字幕在线视频| 好吊色妇女免费视频免费| 欧美成人第一页| 国产区成人精品视频| 欧美www在线观看| 国产精品短篇二区| 91毛片网| 日韩一二三区视频精品| 日本午夜精品一本在线观看| 777午夜精品电影免费看| 91久久青青草原精品国产| 99伊人精品| 九九热视频精品在线| h网址在线观看| 色婷婷在线影院| 99精品伊人久久久大香线蕉 | 亚洲男人在线| 2021国产在线视频| 美女视频黄又黄又免费高清| 国产精品久久久久久久久久98| 国产男女XX00免费观看| 国产一级视频在线观看网站| 成人福利在线观看| 精品三级网站| 国产成人艳妇AA视频在线| 最新国产网站| 伊人丁香五月天久久综合 | a天堂视频| 免费Aⅴ片在线观看蜜芽Tⅴ| 日本午夜影院| 亚洲成人网在线观看| 精品国产aⅴ一区二区三区| 亚洲男人天堂2020| 日本尹人综合香蕉在线观看| 国产精品短篇二区| 538精品在线观看| 国产精品香蕉在线观看不卡| 国产高潮流白浆视频| 亚洲成年网站在线观看| 国产视频久久久久| 久久天天躁狠狠躁夜夜躁| 小说区 亚洲 自拍 另类|