一種面向四邊形割分下遞歸曲面生成方法及其裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及三維成像顯示技術(shù)領(lǐng)域,尤其涉及一種面向四邊形割分下遞歸曲面生 成方法及其裝置。
【背景技術(shù)】
[0002] 隨著工業(yè)產(chǎn)品的設(shè)計(jì)朝著多樣化、特殊化、拓?fù)浣Y(jié)構(gòu)復(fù)雜化方向發(fā)展,現(xiàn)在的參數(shù) 曲面造型方法的局限性越來(lái)越明顯,因?yàn)榍姹硎痉椒ㄔ跇?gòu)造復(fù)雜拓?fù)浣Y(jié)構(gòu)的物體表面 時(shí),需要對(duì)曲面片進(jìn)行裁剪或拼接,不僅費(fèi)時(shí),而且存在數(shù)值誤差,而曲分曲面可以克服參 數(shù)曲面的不足,能夠表示任意拓?fù)浣Y(jié)構(gòu)的曲面,算法簡(jiǎn)單。
[0003] 根據(jù)細(xì)分所生成的網(wǎng)格類(lèi)型,有三角細(xì)分模式、四邊形細(xì)分模式、六邊形細(xì)分模式 以及多邊形細(xì)分模式,Catmull-Clark模式是基于逼近的一種經(jīng)典四邊形網(wǎng)格細(xì)分模式,用 該方法得到的三維模型相比真實(shí)模型偏大。
[0004] 然而基于插值的方法得到的三維模型相比真實(shí)模型偏小。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種面向四邊形割分下遞 歸曲面生成方法及其裝置,能更好地實(shí)現(xiàn)對(duì)三維模型的漸進(jìn)快速精確顯示。
[0006] 為了解決上述問(wèn)題,本發(fā)明提出了一種面向四邊形割分下遞歸曲面生成方法,所 述方法包括:
[0007] 對(duì)物體進(jìn)行掃描獲得相應(yīng)離散的三維點(diǎn)云數(shù)據(jù);
[0008] 利用Delaunay三角剖分算法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理得到良好數(shù)據(jù)結(jié) 構(gòu);
[0009] 融合插值細(xì)分方法根據(jù)遞歸公式迭代生成新的頂點(diǎn)和新的四邊形面片;
[0010] 根據(jù)所需精細(xì)程度迭代相應(yīng)次數(shù),完成后繪制每個(gè)新的四邊形面片,顯示出物體 三維模型。
[0011] 優(yōu)選地,所述利用Delaunay三角剖分算法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理得 到良好數(shù)據(jù)結(jié)構(gòu)的步驟包括:
[0012] 構(gòu)造一個(gè)超級(jí)三角形,包含所有散點(diǎn),放入三角形鏈表;
[0013] 將點(diǎn)集中的散點(diǎn)依次插入,在三角形鏈表中找出外接圓包含插入點(diǎn)的三角形, 刪除影響三角形的公共邊,將插入點(diǎn)同影響三角形的全部頂點(diǎn)連接起來(lái),完成一個(gè)點(diǎn)在 Delaunay三角形鏈表中的插入;
[0014] 根據(jù)優(yōu)化準(zhǔn)則對(duì)局部新形成的三角形優(yōu)化,將形成的三角形放入Delaunay三角 形鏈表;
[0015] 循環(huán)執(zhí)行上述的三點(diǎn)插入步奏,直到所有散點(diǎn)插入完畢。
[0016] 優(yōu)選地,在執(zhí)行所述利用Delaunay三角剖分算法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù) 處理得到良好數(shù)據(jù)結(jié)構(gòu)的過(guò)程中,通過(guò)相應(yīng)處理構(gòu)造三維模型文件。
[0017] 優(yōu)選地,所述融合插值細(xì)分方法根據(jù)遞歸公式迭代生成新的頂點(diǎn)和新的四邊形面 片的步驟,包括:
[0018] 將相應(yīng)三維模型文件讀入內(nèi)存并用半邊表結(jié)構(gòu)存儲(chǔ);
[0019] 綜合基于四邊形的Catmull-Clark逼近和插值細(xì)分模式獲得含一個(gè)參數(shù)α的遞 歸模型。
[0020] 相應(yīng)地,本發(fā)明還提供一種面向四邊形割分下遞歸曲面生成裝置,所述裝置包 括:
[0021] 掃描模塊,用于對(duì)物體進(jìn)行掃描獲得相應(yīng)離散的三維點(diǎn)云數(shù)據(jù);
[0022] 預(yù)處理模塊,用于利用Delaunay三角剖分算法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處 理得到良好數(shù)據(jù)結(jié)構(gòu);
[0023] 面片生成模塊,用于融合插值細(xì)分方法根據(jù)遞歸公式迭代生成新的頂點(diǎn)和新的四 邊形面片;
[0024] 顯示模塊,用于根據(jù)所需精細(xì)程度迭代相應(yīng)次數(shù),完成后繪制每個(gè)新的四邊形面 片,顯示出物體三維模型。
[0025] 優(yōu)選地,所述預(yù)處理模塊包括:
[0026] 構(gòu)造單元,用于構(gòu)造一個(gè)超級(jí)三角形,包含所有散點(diǎn),放入三角形鏈表;
[0027] 插入單元,用于將點(diǎn)集中的散點(diǎn)依次插入,在三角形鏈表中找出外接圓包含插入 點(diǎn)的三角形,刪除影響三角形的公共邊,將插入點(diǎn)同影響三角形的全部頂點(diǎn)連接起來(lái),完成 一個(gè)點(diǎn)在Delaunay三角形鏈表中的插入;
[0028] 優(yōu)化單元,用于根據(jù)優(yōu)化準(zhǔn)則對(duì)局部新形成的三角形優(yōu)化,將形成的三角形放入 Delaunay三角形鏈表;循環(huán)執(zhí)行上述的三點(diǎn)插入步奏,直到所有散點(diǎn)插入完畢。
[0029] 優(yōu)選地,所述預(yù)處理模塊還用于在執(zhí)行所述利用Delaunay三角剖分算法對(duì)三維 點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理得到良好數(shù)據(jù)結(jié)構(gòu)的步驟過(guò)程中,通過(guò)相應(yīng)處理構(gòu)造三維模型 文件。
[0030] 優(yōu)選地,所述面片生成模塊包括:
[0031] 存儲(chǔ)單元,用于將相應(yīng)三維模型文件讀入內(nèi)存并用半邊表結(jié)構(gòu)存儲(chǔ);
[0032] 模型獲取單元,用于綜合基于四邊形的Catmull-Clark逼近和插值細(xì)分模式獲得 含一個(gè)參數(shù)α的遞歸模型。
[0033] 在本發(fā)明實(shí)施例中,使用了融合經(jīng)典Catmull-Clark和插值細(xì)分模式的遞歸曲面 顯示方法,新的插值細(xì)分方法對(duì)粗糙三維模型細(xì)分的光滑三維模型比真實(shí)模型將會(huì)偏小, 融合的帶參數(shù)的新遞歸曲面顯示方法能夠做到與真實(shí)模型最相近的保形精確顯示,能更好 地實(shí)現(xiàn)對(duì)三維模型的漸進(jìn)快速精確顯示。
【附圖說(shuō)明】
[0034] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其它的附圖。
[0035] 圖1是本發(fā)明實(shí)施例的面向四邊形割分下遞歸曲面生成方法的流程示意圖;
[0036] 圖2是本發(fā)明實(shí)施例的面向四邊形割分下遞歸曲面生成裝置的結(jié)構(gòu)組成示意圖。
【具體實(shí)施方式】
[0037] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0038] 圖1是本發(fā)明實(shí)施例的面向四邊形割分下遞歸曲面生成方法的流程示意圖,如圖 1所示,該方法包括:
[0039] Sl,對(duì)物體進(jìn)行掃描獲得相應(yīng)離散的三維點(diǎn)云數(shù)據(jù);
[0040] S2,利用Delaunay三角剖分算法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理得到良好數(shù) 據(jù)結(jié)構(gòu);
[0041] S3,融合插值細(xì)分方法根據(jù)遞歸公式迭代生成新的頂點(diǎn)和新的四邊形面片;
[0042] S4,根據(jù)所需精細(xì)程度迭代相應(yīng)次數(shù),完成后繪制每個(gè)新的四邊形面片,顯示出物 體三維模型。
[0043] 其中,S2包括:
[0044] 構(gòu)造一個(gè)超級(jí)三角形,包含所有散點(diǎn),放入三角形鏈表;
[0045] 將點(diǎn)集中的散點(diǎn)依次插入,在三角形鏈表中找出外接圓包含插入點(diǎn)的三角形, 刪除影響三角形的公共邊,將插入點(diǎn)同影響三角形的全部頂點(diǎn)連接起來(lái),完成一個(gè)點(diǎn)在 Delaunay三角形鏈表中的插入;
[0046] 根據(jù)優(yōu)化準(zhǔn)則對(duì)局部新形成的三角形優(yōu)化,將形成的三角形放入Delaunay三角 形鏈表;
[0047] 循環(huán)執(zhí)行上述的三點(diǎn)插入步奏,直到所有散點(diǎn)插入完畢。
[0048] 其中,良好的數(shù)據(jù)結(jié)構(gòu)文件是指在通過(guò)相應(yīng)處理形成的常用的三維模型文件如 obj、off、3dx、stl等,存儲(chǔ)相應(yīng)的頂點(diǎn),四邊形面片,紋理貼圖坐標(biāo)等信息。
[0049] 具體實(shí)施中,在執(zhí)行利用Delaunay三角剖分算法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行相應(yīng)的預(yù) 處理得到良好數(shù)據(jù)結(jié)構(gòu)的過(guò)程中,通過(guò)相應(yīng)處理構(gòu)造三維模型文件。
[0050] S3進(jìn)一步包括:
[0051] 將相應(yīng)三維模型文件讀入內(nèi)存并用半邊表結(jié)構(gòu)存儲(chǔ);半邊表具有高效計(jì)算效率;
[0052] 綜合基于四邊形的Catmull-Clark逼近和插值細(xì)分模式獲得含一個(gè)參數(shù)α的遞 歸模型。
[0053] 在上述過(guò)程中半邊表結(jié)構(gòu)需要針對(duì)頂點(diǎn)、半邊和面存儲(chǔ)一些相關(guān)信息,其中相應(yīng) 結(jié)構(gòu)為:
[0054] 頂點(diǎn)結(jié)構(gòu):
[0055] struct HE_vert
[0056] {
[0057] float x, y, z ;// 頂點(diǎn)的 x、y、z 坐標(biāo)值
[0058] HE_edge*edge ;//以該點(diǎn)為起始點(diǎn)的半邊指針
[0059] int index ;//頂點(diǎn)索引
[0060] };
[0061] 半邊結(jié)構(gòu):
[0062] struct HE_edge
[0063] {
[0064] HE_vert*vert ;//該邊的起始點(diǎn)指針
[0065] HE_face*face ;//該邊所在的面指針
[0066] HE_edge*next ;//該邊所在面的下一條半邊的指針
[0067] HE_edge*pair ;//該邊的相對(duì)半邊指針
[0068] };
[0069] 面結(jié)構(gòu):
[0070] struct HE_face
[0071] {
[0072] HE_edge*edge ;//該面中任意一條半邊的指針
[