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

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

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

申作林,沙晨明

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

?

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

申作林,沙晨明

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

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

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

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

1 3D打印流程簡述

對3D打印流程的詳細分析,是實現(xiàn)3D打印流程細節(jié)優(yōu)化的最根本前提。傳統(tǒng)上認為,3D打印可大致分為六個部分,如圖1所示。

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

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

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

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

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

2 常用模型數(shù)據(jù)文件格式

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

2.1 OBJ文件的數(shù)據(jù)結構

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

2.2 STL文件的數(shù)據(jù)結構

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文件的數(shù)據(jù)結構只能描述三維模型的幾何信息,不能表示樣式信息,這區(qū)別于OBJ文件,STL是計算機圖形學、數(shù)字幾何處理、數(shù)字幾何工業(yè)應用等領域最常用的文件格式,亦是三維打印機支持的最常見文件格式。

2.3 OFF文件的數(shù)據(jù)結構

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

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”,分別代表模型頂點數(shù),三角面片數(shù),邊數(shù)。隨后是頂點坐標及三角面片,拿一個面片為例:“3 1 0 3”中第一個“3”代表隨后跟著3個點的索引值,值得注意的是,索引值從0開始( 與OBJ文件不同 )。與STL相似,OFF也沒有表示模型樣式的相關信息,這很方便進行OFF到STL的轉換。

3 一種OFF模型的規(guī)范定義

盡管在計算機圖形學方面有所建樹的國內外學者對三維圖形有了深入的研究,但是對于OFF文件數(shù)據(jù)結構的定義卻沒有形成一種規(guī)范定義。在對OFF模型的數(shù)據(jù)結構有了一定的了解之后,本小節(jié)試圖給出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}

根據(jù)頂點的定義,有映射:

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; /*頂點索引個數(shù)*/

};

3.3 網(wǎng)格模型的定義

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

網(wǎng)格定義如下:

M:{(V,S)}

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

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

class CMesh

{

Vertex * vertex; /*點集合*/

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

...

int nVertices,nTriangles,nEdges;

/*存儲相關數(shù)目*/

public:

void Read();

void RenderScene();

...

};

3.4 網(wǎng)格模型的操作

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

下面部分代碼使用了部分繪圖函數(shù):

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 模型互轉研究

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

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

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

B.OBJ文件與OFF文件用索引表示三角面片,但兩者表示范圍不同,OBJ文件的點索引下標從1開始, OFF文件的點索引下標從0開始。STL用outer loop和endloop關鍵字結合三個頂點描述三角形面片,所以在設計轉換時使用適當?shù)谋硎痉椒纯伞?/p>

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

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

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

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

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

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

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

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個點的坐標值*/

//法向量計算區(qū)域

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

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

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

圖7 模型簡化Fig.7 Model simplification

表1 其他主要控制參數(shù)

5 結語

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

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

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

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

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

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

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

[7] 衛(wèi)煒,周來水,張麗艷.海量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

黑龍江省大學生創(chuàng)新創(chuàng)業(yè)訓練項目(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
主站蜘蛛池模板: 日韩国产亚洲一区二区在线观看| 国产一区二区丝袜高跟鞋| 久久久久久尹人网香蕉 | 欧美精品啪啪一区二区三区| a毛片在线| 国产内射一区亚洲| 午夜激情婷婷| 一区二区欧美日韩高清免费| 日本91在线| 国产精品毛片在线直播完整版| 亚洲乱码在线播放| 日韩精品一区二区三区大桥未久 | 亚洲成人网在线播放| 欧美亚洲日韩中文| 老司机午夜精品网站在线观看| 伊人无码视屏| 色窝窝免费一区二区三区| 国产成人h在线观看网站站| 一级在线毛片| JIZZ亚洲国产| 毛片免费试看| 国产极品美女在线观看| 亚洲福利一区二区三区| 不卡无码h在线观看| h视频在线播放| 国产99视频免费精品是看6| 伊人久久婷婷五月综合97色| 18禁高潮出水呻吟娇喘蜜芽| 亚洲综合天堂网| 国产成人免费观看在线视频| 欧美日韩专区| 国产精品手机在线观看你懂的| 久久青草免费91观看| 99热这里只有成人精品国产| 国产成人超碰无码| 欧美日韩国产系列在线观看| 特黄日韩免费一区二区三区| 欧美特黄一级大黄录像| 国产丝袜啪啪| 亚洲国产成人久久精品软件| 免费毛片全部不收费的| 久久精品嫩草研究院| 免费国产不卡午夜福在线观看| 中文国产成人精品久久一| 人妻无码中文字幕一区二区三区| 亚洲av色吊丝无码| 专干老肥熟女视频网站| 高潮毛片免费观看| 国产成人乱无码视频| 国产午夜在线观看视频| 欧美特级AAAAAA视频免费观看| 黄色网站不卡无码| 青青青视频蜜桃一区二区| 亚洲精品成人7777在线观看| 国产性猛交XXXX免费看| 国产丝袜丝视频在线观看| 亚洲精品va| 色综合天天视频在线观看| 美女国内精品自产拍在线播放 | 最新日韩AV网址在线观看| 亚洲日韩日本中文在线| 日韩国产另类| 免费网站成人亚洲| 亚洲首页国产精品丝袜| 毛片大全免费观看| 这里只有精品在线| 国产在线一区二区视频| 亚洲人成电影在线播放| 久久狠狠色噜噜狠狠狠狠97视色| 毛片网站观看| 色老头综合网| 欧美性久久久久| 思思热在线视频精品| 欧美日韩国产综合视频在线观看| 亚洲区欧美区| 99热6这里只有精品| 成人在线视频一区| 亚洲欧洲日韩综合色天使| 久久国语对白| 国产SUV精品一区二区6| 免费一级α片在线观看| 素人激情视频福利|