專利名稱:一種基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法
技術(shù)領(lǐng)域:
本發(fā)明屬于幾何體造型技術(shù)領(lǐng)域,特別是涉及一種基于三角形網(wǎng)格的曲面簡(jiǎn)化方法。
背景技術(shù):
三維圖形的表示通常是對(duì)三角形網(wǎng)格進(jìn)行渲染而得到的。在幾何造型中,為了使所描述的三維圖形具有較強(qiáng)真實(shí)感和光滑度,常常需要高度復(fù)雜和高度細(xì)節(jié)化的三角網(wǎng)格模型。曲面細(xì)分是一種非常成熟的生成幾何造型的方法,所生成的網(wǎng)格是重新網(wǎng)格化的網(wǎng)格(Remesh),具有細(xì)分連通性的,并且易于網(wǎng)格編輯和網(wǎng)格分裂等操作。另一方面,隨著三維掃描設(shè)備的普及,高密度任意拓?fù)渚W(wǎng)格數(shù)據(jù)的獲取變得越來(lái)越容易。然而,這些網(wǎng)格數(shù)據(jù)并不具有細(xì)分連接性,需要對(duì)網(wǎng)格數(shù)據(jù)進(jìn)行重新網(wǎng)格化。另外,即使網(wǎng)格的拓?fù)渚哂屑?xì)分連接性,其網(wǎng)格的數(shù)據(jù)也不可能正好是某一細(xì)分模式的極值曲面,網(wǎng)格數(shù)據(jù)與細(xì)分曲面的差作為曲面細(xì)分?jǐn)?shù)據(jù)保存,根據(jù)需要進(jìn)行取舍處理。
重新網(wǎng)格化是任意拓?fù)渚W(wǎng)格多分辨率分析的重要一環(huán)。Matthias Eck最早引入細(xì)分方法重采樣對(duì)任意網(wǎng)格進(jìn)行多分辨率分析。此方法對(duì)原始網(wǎng)格M,選擇一個(gè)適當(dāng)?shù)某跏季W(wǎng)格M0作為參數(shù)域?qū)進(jìn)行參數(shù)化,然后對(duì)M0用細(xì)分進(jìn)行重采樣,得到具有細(xì)分連通性的新網(wǎng)格。Aaron Lee等人通過(guò)建立任意拓?fù)渚W(wǎng)格的多分辨率參數(shù)曲面(MAPS)給出了一種重新網(wǎng)格化的方法;Kobbelt等人提出了一種稱為收縮包圍(Shrink wrapping)的重新網(wǎng)格化方法,周海等提出了利用細(xì)分曲面重建網(wǎng)格的方法;李桂清等分析了帶尖銳特性的細(xì)分曲面,給出了曲面擬合的方法。上述方法均能較好地生成具有細(xì)分連通性的Remesh。
Hoppe首先提出了漸進(jìn)網(wǎng)格(Progressive Mesh)的概念,并用漸進(jìn)網(wǎng)格把任意網(wǎng)格表示成高效、無(wú)損并具有連續(xù)分辨率的編碼,同時(shí)給出了漸進(jìn)網(wǎng)格有效的實(shí)施方法。羅笑南等提出了基于插值型逆蝶形細(xì)分的漸進(jìn)網(wǎng)格生成算法,并漸進(jìn)網(wǎng)格應(yīng)用于移動(dòng)環(huán)境下的圖形傳輸和圖形渲染,解決了移動(dòng)設(shè)備上的三維圖形顯示問(wèn)題,但是蝶形細(xì)分頂點(diǎn)的仿射組合相關(guān)2-鄰域的頂點(diǎn),且相關(guān)聯(lián)的頂點(diǎn)數(shù)目較多,大大影響了漸進(jìn)網(wǎng)格生成和圖形渲染速度。
發(fā)明內(nèi)容
本發(fā)明針對(duì)以上的不足,提出了一種基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法,首先將網(wǎng)格中的冗余信息分批刪除;最后形成由一個(gè)基網(wǎng)格和一系列誤差值組成的漸進(jìn)網(wǎng)格。本發(fā)明適用于具有細(xì)分連通性的三角形網(wǎng)絡(luò),對(duì)于任意網(wǎng)格首先要做預(yù)處理。本算法將逼近型細(xì)分模式在逆細(xì)分過(guò)程中作為插值型細(xì)分模式處理,算法適用于插值型、逼近型等多種細(xì)分模式,文中以Loop逆細(xì)分為例對(duì)算法加以說(shuō)明。另外,由于Loop細(xì)分模式的頂點(diǎn)仿射組合相關(guān)聯(lián)的頂點(diǎn)數(shù)目少,使得網(wǎng)格簡(jiǎn)化和網(wǎng)格重建過(guò)程的運(yùn)算速度相對(duì)較快,在實(shí)際應(yīng)用中更為有效。
為了實(shí)現(xiàn)發(fā)明目的,采用的技術(shù)方案為
在三角網(wǎng)格中,與六條邊相連的頂點(diǎn)定義為正則點(diǎn),所有頂點(diǎn)都是正則點(diǎn)的網(wǎng)格定義為正則網(wǎng)格,多數(shù)頂點(diǎn)為正則點(diǎn)的網(wǎng)格為半正則網(wǎng)格,通常在任意曲面的三角網(wǎng)格中均含有奇異點(diǎn)。
基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法的主要步驟包括1)網(wǎng)格分裂將已有的三角網(wǎng)格的頂點(diǎn)分裂成奇點(diǎn)集ODDj和偶點(diǎn)集EVENj;2)奇點(diǎn)預(yù)測(cè)為了三維曲面造型的網(wǎng)格還原和重建,在刪除奇點(diǎn)之前,對(duì)每個(gè)奇點(diǎn),采用Loop細(xì)分預(yù)測(cè)其位置ODD′,將現(xiàn)有的各個(gè)奇點(diǎn)ODDj與預(yù)測(cè)值對(duì)應(yīng)相減得到一組誤差值ej;3)網(wǎng)格更新刪除掉奇點(diǎn)集ODDj后,剩余的偶點(diǎn)集EVENj形成下一層的頂點(diǎn)Pj-1,更新這些頂點(diǎn)的連接信息組成新的三角形集Kj-1,生成了一個(gè)簡(jiǎn)化后的新網(wǎng)格;4)循環(huán)上述步驟,直到最終網(wǎng)格不能分裂,生成基網(wǎng)格及一系列誤差值。
所述步驟1)網(wǎng)格分裂的分裂規(guī)則為a、選網(wǎng)格上任意一個(gè)奇異點(diǎn)為偶點(diǎn)歸為偶點(diǎn)集;b、將與奇異點(diǎn)相鄰的所有鄰接點(diǎn)歸為奇點(diǎn)集;c、對(duì)這些奇點(diǎn)外圍與本偶點(diǎn)對(duì)稱位置的對(duì)稱點(diǎn)設(shè)為偶點(diǎn),歸為偶點(diǎn)集;d、遞歸調(diào)用偶點(diǎn)集中的偶點(diǎn),首先將其相鄰的所有鄰接點(diǎn)歸為奇點(diǎn)集,再將這些奇點(diǎn)外圍與該偶點(diǎn)對(duì)稱位置的對(duì)稱點(diǎn)設(shè)為偶點(diǎn),歸為偶點(diǎn)集,直到網(wǎng)格中所有頂點(diǎn)分裂完畢。
所述步驟2)奇點(diǎn)預(yù)測(cè)過(guò)程中的誤差值ej的計(jì)算方法為eij=ODDij-ODDI′]]>其中,j表示網(wǎng)格層數(shù),i表示第j層網(wǎng)格的奇點(diǎn)數(shù)。
圖1為基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法流程圖;圖2為半正則網(wǎng)格簡(jiǎn)化示意圖;圖3為頂點(diǎn)關(guān)系示意圖;圖4為預(yù)測(cè)與更新示意;圖5為頭像模型漸進(jìn)網(wǎng)格(頂點(diǎn)數(shù)/三角面數(shù))示意圖;圖6為e-Sphere模型漸進(jìn)網(wǎng)格(頂點(diǎn)數(shù)/三角面數(shù))示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本方法進(jìn)行進(jìn)一步闡述。
如圖1所示為基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法流程圖。
設(shè)三角網(wǎng)格M=(P,K),其中P表示三角網(wǎng)格頂點(diǎn)坐標(biāo)的集合,Pi=(xi,yi,zi)(1≤i≤n),K表示含有網(wǎng)格拓?fù)湫畔⒌乃腥切渭稀?br>
本算法的主要目標(biāo)就是將原始網(wǎng)格Mn(Pn,Kn)生成為同構(gòu)的Mj(Pj,Kj)(1≤j≤n),其中M0=(P0,K0)為基網(wǎng)格。
設(shè)初始曲面網(wǎng)格為Mn,經(jīng)過(guò)一次簡(jiǎn)化后得到Mn-1,對(duì)于第j層網(wǎng)格為Mj,每次網(wǎng)格簡(jiǎn)化包括以下三個(gè)過(guò)程。
(1)網(wǎng)格分裂將已有的三角網(wǎng)格的頂點(diǎn)分裂成奇點(diǎn)集ODDj和偶點(diǎn)集EVENj。由于三維圖形網(wǎng)格都存在奇異點(diǎn),而奇異點(diǎn)通常表示曲面的尖銳特性,需要全部保留下來(lái)。故在實(shí)施時(shí)首先選網(wǎng)格上任意一個(gè)奇異點(diǎn)為偶點(diǎn)v歸為偶點(diǎn)集,然后將與奇異點(diǎn)相鄰的所有鄰接點(diǎn)va歸為奇點(diǎn)集,對(duì)這些奇點(diǎn)外圍與本偶點(diǎn)對(duì)稱位置的對(duì)稱點(diǎn)vs設(shè)為偶點(diǎn),歸為偶點(diǎn)集,各頂點(diǎn)位置的關(guān)系見圖3所示。設(shè)置偶點(diǎn)是利用遞歸調(diào)用,直到網(wǎng)格中所有頂點(diǎn)分裂完畢,算法如下找任意奇異點(diǎn)v;{如果v已經(jīng)在偶點(diǎn)集中,返回成功;如果v已經(jīng)在奇點(diǎn)集中,返回失??;設(shè)置v到偶點(diǎn)集SetEvenVertex(v);對(duì)于v的每一個(gè)相鄰點(diǎn)va{如果va是奇異點(diǎn)或者va已經(jīng)在偶點(diǎn)集中,返回失??;設(shè)置va到奇點(diǎn)集SetOddVertex(va);找到va和v的對(duì)稱點(diǎn)vs;設(shè)置vs到偶點(diǎn)集SetEvenVertex(vs);}返回成功}圖2是半正則網(wǎng)格經(jīng)過(guò)二次簡(jiǎn)化的示意。陰影三角形的頂點(diǎn)是各層網(wǎng)格的奇點(diǎn)ODD,其余點(diǎn)為偶點(diǎn)EVEN。所有的奇點(diǎn)是冗余的信息,可以刪除,而保留所有的偶點(diǎn),以達(dá)到網(wǎng)格的簡(jiǎn)化。觀察圖2(a)可以發(fā)現(xiàn),奇點(diǎn)、偶點(diǎn)有規(guī)律地分布在三角網(wǎng)格中。圖中陰影的三角形是由奇點(diǎn)組成的三角形,可以刪除。
(2)奇點(diǎn)預(yù)測(cè)為了三維曲面造型的網(wǎng)格還原和重建,在刪除奇點(diǎn)之前,對(duì)每個(gè)奇點(diǎn),采用Loop細(xì)分預(yù)測(cè)其位置ODD′,如圖4所示。將現(xiàn)有的各個(gè)奇點(diǎn)ODDi與預(yù)測(cè)值對(duì)應(yīng)相減得到一組誤差值ej。
eij=ODDij-ODDi′]]>其中,j表示網(wǎng)格層數(shù),i表示第j層網(wǎng)格的奇點(diǎn)數(shù)。圖4(a)中O點(diǎn)為奇點(diǎn),E點(diǎn)為偶點(diǎn),圖4(b)是刪除O點(diǎn)前,用細(xì)分模式預(yù)測(cè)得到點(diǎn)O’,每個(gè)奇點(diǎn)O與其相應(yīng)的預(yù)測(cè)點(diǎn)O’的差值即得到誤差值ej集。
(3)網(wǎng)格更新刪除掉奇點(diǎn)集ODDj后,剩余的偶點(diǎn)集EVENj形成下一層的頂點(diǎn)Pj-1,更新這些頂點(diǎn)的連接信息組成新的三角形集Kj-1,生成了一個(gè)簡(jiǎn)化后的新網(wǎng)格Mj-1=(Pj-1,Kj-1)。圖4(c)示意刪除奇點(diǎn)后重建的網(wǎng)格。
重復(fù)上述三步,將復(fù)雜的初始網(wǎng)格數(shù)據(jù)Mn簡(jiǎn)化到網(wǎng)格M0。每一層次的網(wǎng)格簡(jiǎn)化,奇點(diǎn)的坐標(biāo)并不需要改變。簡(jiǎn)化后的數(shù)據(jù)得到一個(gè)基網(wǎng)格和一系列誤差集ej的數(shù)據(jù),構(gòu)成多個(gè)層次的數(shù)據(jù)M0→e1→e2→...→en-2→e-1,生成了漸進(jìn)網(wǎng)格,即(M0,e0)生成M1,(M1,e1)構(gòu)成M2,...,(Mn-1,en-1)可還原Mn,漸進(jìn)網(wǎng)格見表1。
表1由基網(wǎng)格和誤差組成的漸進(jìn)網(wǎng)格
如圖5、圖6所示為頭像模型漸進(jìn)網(wǎng)格(頂點(diǎn)數(shù)/三角面數(shù))示意圖和e-Sphere模型漸進(jìn)網(wǎng)格(頂點(diǎn)數(shù)/三角面數(shù))示意圖,實(shí)驗(yàn)表明,本算法效率高,與以往的算法相比,速度快,更易于在實(shí)際應(yīng)用中使用。
權(quán)利要求
1.一種基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法,對(duì)于任意具有細(xì)分連接性的三角網(wǎng)格Mj=(Pj,Kj),它的主要步驟包括1)網(wǎng)格分裂將已有的三角網(wǎng)格的頂點(diǎn)分裂成奇點(diǎn)集ODDj和偶點(diǎn)集EVENj;2)奇點(diǎn)預(yù)測(cè)為了三維曲面造型的網(wǎng)格還原和重建,在刪除奇點(diǎn)之前,對(duì)每個(gè)奇點(diǎn),采用Loop細(xì)分預(yù)測(cè)其位置ODD′,將現(xiàn)有的各個(gè)奇點(diǎn)ODDj與預(yù)測(cè)值對(duì)應(yīng)相減得到一組誤差值ej;3)網(wǎng)格更新刪除掉奇點(diǎn)集ODDj后,剩余的偶點(diǎn)集EVENj形成下一層的頂點(diǎn)Pj-1,更新這些頂點(diǎn)的連接信息組成新的三角形連接信息Kj-1,生成了一個(gè)簡(jiǎn)化后的新網(wǎng)格Mj-1;4)循環(huán)上述步驟,直到最終分裂的網(wǎng)格為基網(wǎng)格及一系列誤差值。
2.根據(jù)權(quán)利要求1所述的基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法,其特征在于,所述步驟1)網(wǎng)格分裂的分裂規(guī)則為a、選網(wǎng)格上任意一個(gè)奇異點(diǎn)為偶點(diǎn)歸為偶點(diǎn)集;b、將與奇異點(diǎn)相鄰的所有鄰接點(diǎn)歸為奇點(diǎn)集;c、對(duì)這些奇點(diǎn)外圍與本偶點(diǎn)對(duì)稱位置的對(duì)稱點(diǎn)設(shè)為偶點(diǎn),歸為偶點(diǎn)集;d、遞歸調(diào)用偶點(diǎn)集中的偶點(diǎn),首先將其相鄰的所有鄰接點(diǎn)歸為奇點(diǎn)集,再將這些奇點(diǎn)外圍與該偶點(diǎn)對(duì)稱位置的對(duì)稱點(diǎn)設(shè)為偶點(diǎn),歸為偶點(diǎn)集,直到網(wǎng)格中所有頂點(diǎn)分裂完畢。
3.根據(jù)權(quán)利要求1所述的基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法,其特征在于,所述步驟2)奇點(diǎn)預(yù)測(cè)過(guò)程中的誤差值ej的計(jì)算方法為eij=ODDij-ODDi′]]>其中,j表示網(wǎng)格層數(shù),i表示第j層網(wǎng)格的奇點(diǎn)數(shù)。
全文摘要
本發(fā)明公開了一種基于逆Loop細(xì)分的漸進(jìn)網(wǎng)格生成方法,它屬于幾何體造型技術(shù)領(lǐng)域,特別是涉及一種基于三角形網(wǎng)格的曲面簡(jiǎn)化方法。對(duì)于任意具有細(xì)分連接性的三角網(wǎng)格M
文檔編號(hào)G06T17/00GK1975786SQ20061012415
公開日2007年6月6日 申請(qǐng)日期2006年12月11日 優(yōu)先權(quán)日2006年12月11日
發(fā)明者馬建平, 羅笑南 申請(qǐng)人:中山大學(xué)