一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法
【專利摘要】本發(fā)明公開了一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,該方法將任意結(jié)構(gòu)的三維數(shù)字幾何網(wǎng)格模型轉(zhuǎn)換為滿足3D打印要求的水密二維流形三維數(shù)字幾何網(wǎng)格模型。方法主要包括以下步驟:對輸入網(wǎng)格模型進(jìn)行體素化,將模型從多邊形網(wǎng)格形式轉(zhuǎn)化成由體素堆積的體表示形式,并將所得體素標(biāo)記為內(nèi)部體素、外部體素和邊界體素;分析每個(gè)包含8個(gè)相鄰體素的計(jì)算單元,根據(jù)其中內(nèi)部體素、外部體素和邊界體素的數(shù)量及相對位置,確定每個(gè)計(jì)算單元內(nèi)部生成面片的方式,并由這些面片組成輸出網(wǎng)格模型;檢測并修復(fù)輸出網(wǎng)格模型中的缺陷結(jié)構(gòu),校正輸出網(wǎng)格模型中面片的法向量,并使用輸入網(wǎng)格模型對輸出網(wǎng)格模型進(jìn)行校準(zhǔn)獲得最終的輸出網(wǎng)格模型。
【專利說明】一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)修復(fù)方法,屬于計(jì)算機(jī)圖形學(xué)領(lǐng)域,具體地說是一種基于體表示的三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)自動修復(fù)方法。
技術(shù)背景
[0002]隨著三維掃描技術(shù)和三維建模技術(shù)的發(fā)展,我們正處在一個(gè)三維模型爆炸式增長的時(shí)期,其中使用最廣泛的是三維網(wǎng)格模型。但是由于三維模型的來源(如遙感,醫(yī)學(xué)掃描,CAD等)多樣,使得三維網(wǎng)格模型在結(jié)構(gòu)上存在巨大的差異,進(jìn)而導(dǎo)致網(wǎng)格模型的分析和重用受到限制。例如,大多數(shù)的網(wǎng)格模型處理及分析方法,如測地近鄰計(jì)算、有限元分析、光柵化、曲面平滑、模型簡化等,都要求輸入網(wǎng)格模型是流形的網(wǎng)格曲面;另外,在三維模型的應(yīng)用領(lǐng)域,其中具有代表性的是近年來興起的3D打印,也要求所使用的網(wǎng)格模型必須是水密(watertight)二維流形(2-dimensional manifold)的,否則將無法使用或者導(dǎo)致最終打印出的實(shí)體模型出現(xiàn)嚴(yán)重錯誤。
[0003]盡管大量工作針對基于表面的(surface-based)網(wǎng)格模型結(jié)構(gòu)修復(fù)展開研究,如文獻(xiàn) 1:Attene, Marco, Marcel Campen, and Leif Kobbelt."Polygon mesh repairing:Anapplication perspective.〃ACM Computing Surveys (CSUR) 45,n0.2 (2013): 15.,然而,大多數(shù)方法都僅能對某一類特定缺陷進(jìn)行檢測和處理。如文獻(xiàn)2 =Klincsek, G.T."Minimaltriangulations of polygonal domains."Ann.Discrete Math9(1980):121-123.主要針對網(wǎng)格模型中存在的孔洞(hole)進(jìn)行處理;文獻(xiàn)3:Gueziec, Andre, GabrielTaubin,Francis Lazarus, and B.Horn."Cutting and stitching:Converting setsof polygons to manifold surfaces."Visualization and Computer Graphics, IEEETransactions on7, n0.2 (2001): 136-151.主要針對網(wǎng)格模型中的復(fù)雜邊(complexedge)和奇異頂點(diǎn)(singular vertex)進(jìn)行處理;文獻(xiàn) 4:Barequet, Gill, and MichaSharir."Filling gaps in the boundary of a polyhedron."Computer Aided GeometricDesignl2, n0.2 (1995): 207-229.,主要針對網(wǎng)格模型面片之間的縫隙(gap)和重疊(overlap)進(jìn)行處理。此類基于表面的網(wǎng)格模型修復(fù)方法的不足除了在于僅能修復(fù)某一類特定缺陷之外,還在于對輸入網(wǎng)格模型有一定的要求,然而,這些要求有時(shí)卻是難以滿足甚至無法自動檢測的。另外,此類算法需要用戶交互,因此無法用于網(wǎng)格模型修復(fù)過程的自動化。
[0004]另一方面,文獻(xiàn)5:Nooruddin, Fakir S., and Greg Turk."Simplificationand repair of polygonal models using volumetric techniques."Visualizationand Computer Graphics, IEEE Transactions on9, n0.2 (2003): 191-205.首先提出使用基于體表示(volumetric)的網(wǎng)格模型修復(fù)方法,并根據(jù)體素化得到的結(jié)果直接生成流形的網(wǎng)格模型。但是其面片提取時(shí)使用的文獻(xiàn)6:Lorensen, William E.,and HarveyE.Cline."Marching cubes:A high resolution3D surface construction algorithm.〃InACM Siggraph Computer Graphics, vol.21, n0.4, pp.163-169.ACM, 1987.中提出的Marching Cubes(MC)算法,在面片提取的某些情況存在歧義;同時(shí),文獻(xiàn)7:Newman, TimothyS., and Hong Y1.survey of the marching cubes algorithm.〃Computers&Graphics30,n0.5(2006):854-879.指出,盡管存在解決MC算法中歧義的方法,但是這些方法不僅需要用戶針對模型中出現(xiàn)的歧義選擇不同的解決方法,而且還大大增加了 MC算法的時(shí)間復(fù)雜度。
【發(fā)明內(nèi)容】
[0005]發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,主要用于滿足3D打印對三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的要求。
[0006]為了解決上述技術(shù)問題,本發(fā)明公開了一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,包括以下步驟:
[0007]步驟一,三維模型網(wǎng)格生成:借助輸入網(wǎng)格模型體素化后得到的體表示作為中間狀態(tài),對輸入網(wǎng)格模型進(jìn)行處理,生成輸出網(wǎng)格模型,包括體素化、邊界提取和網(wǎng)格提取三個(gè)步驟:
[0008]體素化包括:將輸入網(wǎng)格模型的包圍立方體空間均勻切割為NXNXN個(gè)體素,N為體素化的維數(shù),并將所得體素分別標(biāo)記為內(nèi)部體素和外部體素,所述體素為輸入網(wǎng)格模型的包圍立方體空間被切割成的一組立方體;
[0009]邊界提取包括:根據(jù)內(nèi)部體素和外部體素的相對位置,提取出處在內(nèi)部體素和外部體素交界處的邊界體素;
[0010]網(wǎng)格提取包括:從所述邊界體素中,生成頂點(diǎn)集合和三角面片集合,并將所有的三角面片組成輸出網(wǎng)格模型;
[0011]步驟二,三維模型網(wǎng)格優(yōu)化:處理步驟一獲得的輸出網(wǎng)格模型,包括缺陷結(jié)構(gòu)刪除、面片法向量校正和模型校準(zhǔn)三個(gè)步驟:
[0012]缺陷結(jié)構(gòu)刪除包括:檢測和刪除輸出網(wǎng)格模型中存在的缺陷結(jié)構(gòu),確保輸出三維網(wǎng)格模型是水密二維流形網(wǎng)格模型;
[0013]面片法向量校正包括:根據(jù)步驟122獲得的內(nèi)部體素、外部體素和邊界體素標(biāo)記結(jié)果,校正三角面片頂點(diǎn)序號的順序;
[0014]模型校準(zhǔn)包括:將輸出網(wǎng)格模型的頂點(diǎn)投影到輸入網(wǎng)格模型的邊上,使用輸入模型對輸出模型進(jìn)行校準(zhǔn)。
[0015]本發(fā)明步驟一中所述的體素化部分還包括以下步驟:步驟111,計(jì)算輸入網(wǎng)格模型的包圍盒,所述包圍盒是指包含輸入網(wǎng)格模型且邊平行于坐標(biāo)軸的最小六面體;步驟112,將輸入網(wǎng)格模型縮放平移至[0,I] X [0,I] X [0,I]的三維空間中,得到縮放比率和平移參數(shù);步驟113,通過移動OpenGL在不同視點(diǎn)下的可視空間來模擬切割輸入網(wǎng)格模型所在三維空間的過程,并根據(jù)在不同視點(diǎn)下得到的顏色緩存判斷對應(yīng)的體素是屬于三維網(wǎng)格模型內(nèi)部還是外部,從而將該體素標(biāo)記為內(nèi)部體素或外部體素,所述OpenGL的不同視點(diǎn)包括沿三個(gè)坐標(biāo)軸的正反兩個(gè)方向的共6個(gè)視點(diǎn)。
[0016]本發(fā)明步驟一中所述的邊界提取部分還包括以下步驟:步驟121,獲取每個(gè)內(nèi)部體素的三組面鄰居體素,所述一組面鄰居體素是指位于當(dāng)前體素的前后或左右或上下的兩個(gè)體素;步驟122,根據(jù)每組面鄰居體素的標(biāo)記值的和是否為零,判斷當(dāng)前內(nèi)部體素是否為邊界體素,如果為零,則將當(dāng)前內(nèi)部體素標(biāo)記為邊界體素。
[0017]本發(fā)明步驟一中所述的網(wǎng)格提取部分還包括以下步驟:步驟131,根據(jù)每個(gè)邊界體素的位置,生成相應(yīng)頂點(diǎn)的坐標(biāo),并將此頂點(diǎn)加入輸出網(wǎng)格模型頂點(diǎn)集合;步驟132,根據(jù)每個(gè)計(jì)算單元中內(nèi)部體素、外部體素及邊界體素的數(shù)量及相對位置,在這個(gè)計(jì)算單元內(nèi)部生成三角面片,并連接這些三角面片組成輸出網(wǎng)格模型,所述計(jì)算單元是指組成一個(gè)立方體區(qū)域的8個(gè)相鄰體素。
[0018]本發(fā)明步驟二中所述的缺陷結(jié)構(gòu)刪除部分還包括以下步驟:步驟211,通過檢測輸出模型中的懸掛面,迭代刪除懸掛面,所述懸掛面是指包含懸掛邊的面片,所述懸掛邊是指僅與一個(gè)面片相連的邊;步驟212,檢測與每個(gè)頂點(diǎn)相連的面片之間的邊連通性,如果與頂點(diǎn)相連的面片集合中存在非邊連通的面片,設(shè)定該頂點(diǎn)為奇異頂點(diǎn),復(fù)制該奇異頂點(diǎn),將非邊連通的面片中該奇異頂點(diǎn)的序號更新為復(fù)制得到新的頂點(diǎn)序號,以消除該奇異頂點(diǎn);所述面片的邊連通性是指兩個(gè)面片邊連通,即這兩個(gè)面片有公共邊,或者這兩個(gè)面片邊連通的面片有公共邊;步驟213,檢測與每條邊相連的面片的數(shù)量,如果邊連接的面片數(shù)量大于2,設(shè)定該邊為復(fù)雜邊。再通過檢測該復(fù)雜邊的每個(gè)頂點(diǎn)的面片在去除該復(fù)雜邊后的邊連通性,如果與頂點(diǎn)相連的面片集合中存在非邊連通的面片,則將該頂點(diǎn)復(fù)制,將非邊連通的面片中該頂點(diǎn)的序號更新為復(fù)制得到新的頂點(diǎn)序號,以消除復(fù)雜邊;步驟214,檢測頂點(diǎn)與面片之間的隸屬關(guān)系,如果頂點(diǎn)不屬于任何面片,則設(shè)定該頂點(diǎn)為懸掛頂點(diǎn),從輸出網(wǎng)格模型的頂點(diǎn)集合中刪除該懸掛頂點(diǎn)。
[0019]本發(fā)明步驟二中所述的面片法向量校正部分還包括以下步驟:步驟221,借助步驟122中獲得的體素標(biāo)記,計(jì)算每個(gè)輸出網(wǎng)格模型頂點(diǎn)的法向量;步驟222,由每個(gè)三角面片的三個(gè)頂點(diǎn)的法向量平均得到該三角面片的法向量;步驟223,計(jì)算由三角面片當(dāng)前頂點(diǎn)順序依照右手法則生成的法向量和步驟222中得到的法向量之間的夾角,依據(jù)所述夾角調(diào)整面片當(dāng)前頂點(diǎn)序號順序。
[0020]本發(fā)明步驟二中所述的模型校準(zhǔn)部分還包括以下步驟:步驟231,將輸入網(wǎng)格模型進(jìn)行網(wǎng)格細(xì)分,使細(xì)分后的輸入網(wǎng)格模型的邊的長度小于設(shè)定閾值,所述網(wǎng)格模型的網(wǎng)格細(xì)分是指通過在長度大于設(shè)定閾值的邊的中點(diǎn)位置生成新的頂點(diǎn),將每個(gè)包含該邊的三角面片替換成兩個(gè)新生成的三角面片;設(shè)定閾值為包圍盒最長邊的1/20 ;步驟232,將輸出網(wǎng)格模型的頂點(diǎn)投影到步驟231獲得的細(xì)分后的輸入網(wǎng)格模型的目標(biāo)邊上,所述目標(biāo)邊是指候選邊的集合中與待投影的輸出網(wǎng)格模型的頂點(diǎn)之間投影距離最小的邊,候選邊是指輸出網(wǎng)格模型的頂點(diǎn)能夠投影到該邊的內(nèi)部而不是該邊的延長線上;步驟233,根據(jù)輸出網(wǎng)格模型中頂點(diǎn)及與其相鄰的頂點(diǎn)的投影情況,對輸出網(wǎng)格模型中頂點(diǎn)的位置進(jìn)行調(diào)整。統(tǒng)計(jì)輸出網(wǎng)格模型中與當(dāng)前頂點(diǎn)相鄰的頂點(diǎn)投影到輸入模型中包含當(dāng)前頂點(diǎn)目標(biāo)邊的各個(gè)面片上的數(shù)量,選擇其中投影頂點(diǎn)數(shù)量最多的面片,使用投影到該面片上的頂點(diǎn)和當(dāng)前頂點(diǎn)的坐標(biāo)的平均值作為當(dāng)前頂點(diǎn)的新位置,所述頂點(diǎn)投影到面片上是指頂點(diǎn)的目標(biāo)邊是該面片的邊;步驟234,根據(jù)步驟112的縮放比率和平移參數(shù),將輸出模型還原至步驟112中縮放平移之前輸入模型的大小及所在空間。
[0021]本發(fā)明在體表示修復(fù)方法的基礎(chǔ)上,首先生成具有便于處理的網(wǎng)格結(jié)構(gòu)的三維數(shù)字幾何模型,再使用基于表面的模型修復(fù)算法對生成的模型進(jìn)行修復(fù),進(jìn)而實(shí)現(xiàn)三維數(shù)字幾何模型的自動修復(fù)。
[0022]有益效果:本發(fā)明具有以下優(yōu)點(diǎn):首先,本發(fā)明接受任意結(jié)構(gòu)的三維數(shù)字幾何網(wǎng)格模型作為輸入模型,并將其處理成滿足3D打印要求的水密二維流形三維數(shù)字幾何網(wǎng)格模型;其次,本發(fā)明通過使用輸入模型對輸出模型進(jìn)行校準(zhǔn),使得輸出模型在全局特征和局部特征上都與輸入模型保持較高的一致性;最后,本發(fā)明在處理過程中無需與用戶進(jìn)行交互,可自動完成三維數(shù)字幾何模型結(jié)構(gòu)修復(fù)的整個(gè)過程,適合批量處理大量模型。
【專利附圖】
【附圖說明】
[0023]下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明做進(jìn)一步的具體說明,本發(fā)明的上述和/或其他方面的優(yōu)點(diǎn)將會變得更加清楚。
[0024]圖1是本發(fā)明的處理流程示意圖。
[0025]圖2a?圖2h是本發(fā)明處理的三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)缺陷示意圖。
[0026]圖3是步驟132中面片生成方式示意圖。
[0027]圖4a?圖4c是實(shí)施例的輸入三維數(shù)字幾何網(wǎng)格模型中不同圖元的示意圖。
[0028]圖5a?圖5c是對圖4a?圖4c所示輸入模型體素化后,由邊界體素生成的網(wǎng)格模型中不同圖元的示意圖。
[0029]圖6a?圖6c是將圖5a?圖5c所示模型進(jìn)行缺陷結(jié)構(gòu)消除和面片法向量校正后獲得的網(wǎng)格模型中不同圖元的示意圖。
[0030]圖7a?圖7c是對圖4a?圖4c所示輸入模型進(jìn)行網(wǎng)格細(xì)分后獲得的網(wǎng)格模型中不同圖元的示意圖。
[0031]圖8a?圖8c是使用圖7a?圖7c所示模型對圖6a?圖6c所示模型進(jìn)行校準(zhǔn)后獲得的網(wǎng)格模型中不同圖元的示意圖。
[0032]圖9a?圖9c是將圖8a?圖8c所示模型進(jìn)行頂點(diǎn)位置進(jìn)行調(diào)整后獲得的網(wǎng)格模型中不同圖元的示意圖。
【具體實(shí)施方式】:
[0033]由于本發(fā)明的特殊性,附圖效果只能以灰度形式進(jìn)行展現(xiàn)。
[0034]本發(fā)明所修復(fù)的缺陷,為會導(dǎo)致輸入三維數(shù)字幾何網(wǎng)格模型無法滿足3D打印要求或打印出錯誤的模型的網(wǎng)格結(jié)構(gòu)缺陷,具體為懸掛部件(dangling element)、復(fù)雜邊(complex edge)、奇異頂點(diǎn)(singular vertex)、法向量不一致(inconsistentorientation)、面片退化(degeneracy)、縫隙(gap)、面片交錯(intersection)、孔洞(hole),各缺陷示例如圖2a?圖2h所示。其中,圖2a是懸掛部件示意圖,圖2b是復(fù)雜邊示意圖,圖2c是奇異頂點(diǎn)示意圖,圖2d是法向量不一致示意圖,圖2e是退化面片示意圖,圖2f是縫隙示意圖,圖2g面片交錯示意圖,圖2h是孔洞示意圖。
[0035]如圖1所示,本發(fā)明公開的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,具體包括以下步驟:
[0036]步驟一,三維模型網(wǎng)格生成:借助輸入網(wǎng)格模型體素化后得到的體表示作為中間狀態(tài),對輸入網(wǎng)格模型進(jìn)行處理,生成輸出網(wǎng)格模型;
[0037]步驟二,三維模型網(wǎng)格優(yōu)化:處理步驟一獲得的輸出網(wǎng)格模型。[0038]本發(fā)明的輸入三維模型為任意結(jié)構(gòu)的三維數(shù)字幾何網(wǎng)格模型。
[0039]下面具體介紹各個(gè)步驟的主要流程:
[0040]1.三維模型網(wǎng)格生成
[0041]三維模型網(wǎng)格生成過程借助輸入網(wǎng)格模型體素化后得到的體表示作為中間狀態(tài),對輸入網(wǎng)格模型進(jìn)行處理,生成輸出網(wǎng)格模型,包括體素化、邊界提取和網(wǎng)格提取三個(gè)步驟。
[0042]1.1體素化
[0043]體素化過程將輸入網(wǎng)格模型的包圍立方體空間均勻切割為NXNXN個(gè)體素,N為體素化的維數(shù),并將所得體素分別標(biāo)記為內(nèi)部體素和外部體素,所述體素為輸入網(wǎng)格模型的包圍立方體空間被切割成的一組立方體。步驟如下:
[0044]步驟I先計(jì)算輸入網(wǎng)格模型Minput的包圍盒,所述包圍盒是指包含輸入網(wǎng)格模型且邊平行于坐標(biāo)軸的最小六面體,包圍盒的兩個(gè)對角控制點(diǎn)BoundingBoxmax和BoundingBoxmin分別為:
[0045]BoundingBoxmax= (Xniax,
^max? ^max^
[0046]=(MAX{x| (x, y, z) G VinpuJ , MAX {y | (x, y, z) G VinpuJ , MAX {z | (x, y, z) G VinpuJ)BoundingBoxmin= (Xniin, ymin, Zniin)
[0047]= (MIN {x I (x, y, z) G VinpuJ,MIN {y | (x, y, z) G VinpuJ,MIN {z | (x, y, z) G VinpuJ)其中,x,y,z分別為控制點(diǎn)在三個(gè)坐標(biāo)軸上的坐標(biāo),MAX為求集合中的最大值函數(shù),MIN為求集合中的最小值函數(shù),Vinput為輸入網(wǎng)格模型Minput的頂點(diǎn)集合。
[0048]步驟2將輸入模型Minput縮放平移至[0,I] X [0,I] X [0,I]的空間中,得到縮放后的模型M' input,縮放比率scale及平移向量tmmtate分別為:
[0049]scale=l/MAX {(BoundingBoxmax [i]-BoundingBoxmin[i]) | i G {X,Y,Z}}
[0050]translate = -BoumiingBoxmifl
[0051]其中,MAX為求集合中的最大值函數(shù),X,Y,Z為坐標(biāo)系的X軸,Y軸,Z軸。
[0052]步驟3初始化OpenGL窗口大小為NXN,N為體素化的維數(shù)。通過在不同視點(diǎn)下移動OpenGL中的可視空間來模擬切割模型所在空間的過程。生成的體素使用NXNXN三維矩陣VoxelMatrix[N] [N] [N]來保存,矩陣元素的值對應(yīng)體素的標(biāo)記,初始化為O。具體方法如下:
[0053]首先,設(shè)置OpenGL的視口尺寸,多邊形繪制模式、模型繪制顏色、場景背景色及像素對其方式,分別為:
[0054]
【權(quán)利要求】
1.一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,包括以下步驟: 步驟一,三維模型網(wǎng)格生成:借助輸入網(wǎng)格模型體素化后得到的體表示作為中間狀態(tài),對輸入網(wǎng)格模型進(jìn)行處理,生成輸出網(wǎng)格模型,包括體素化、邊界提取和網(wǎng)格提取三個(gè)步驟: 體素化包括:將輸入網(wǎng)格模型的包圍立方體空間均勻切割為NXNXN個(gè)體素,N為體素化的維數(shù),并將所得體素分別標(biāo)記為內(nèi)部體素和外部體素,所述體素為輸入網(wǎng)格模型的包圍立方體空間被切割成的一組立方體; 邊界提取包括:根據(jù)內(nèi)部體素和外部體素的相對位置,提取出處在內(nèi)部體素和外部體素交界處的邊界體素; 網(wǎng)格提取包括:從所述邊界體素中,生成頂點(diǎn)集合和三角面片集合,并將所有的三角面片組成輸出網(wǎng)格模型; 步驟二,三維模型網(wǎng)格優(yōu)化:處理步驟一獲得的輸出網(wǎng)格模型,包括缺陷結(jié)構(gòu)刪除、面片法向量校正和模型校準(zhǔn)三個(gè)步驟: 缺陷結(jié)構(gòu)刪除包括:檢測和刪除輸出網(wǎng)格模型中存在的缺陷結(jié)構(gòu),確保輸出三維網(wǎng)格模型是水密二維流形網(wǎng)格模型; 面片法向量校正包括:根據(jù)步驟122獲得的內(nèi)部體素、外部體素和邊界體素標(biāo)記結(jié)果,校正三角面片頂點(diǎn)序號的順序; 模型校準(zhǔn)包括:將輸出網(wǎng)格模型的頂點(diǎn)投影到輸入網(wǎng)格模型的邊上,使用輸入模型對輸出模型進(jìn)行校準(zhǔn)。
2.根據(jù)權(quán)利要求1所述的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,步驟一中所述的體素化部分包含以下步驟: 步驟111,計(jì)算輸入網(wǎng)格模型的包圍盒,所述包圍盒是指包含輸入網(wǎng)格模型且邊平行于坐標(biāo)軸的最小六面體; 步驟112,將輸入網(wǎng)格模型縮放平移至[O,I] X [O,I] X [O,I]的三維空間中,得到縮放比率和平移參數(shù); 步驟113,通過移動OpenGL在不同視點(diǎn)下的可視空間模擬切割輸入網(wǎng)格模型所在三維空間的過程,并根據(jù)在不同視點(diǎn)下得到的顏色緩存判斷對應(yīng)的體素是屬于三維網(wǎng)格模型內(nèi)部還是外部,從而將該體素標(biāo)記為內(nèi)部體素或外部體素,所述OpenGL的不同視點(diǎn)包括沿三個(gè)坐標(biāo)軸的正反兩個(gè)方向的共6個(gè)視點(diǎn)。
3.根據(jù)權(quán)利要求2所述的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,步驟一中所述的邊界提取部分包含以下步驟: 步驟121,獲取每個(gè)內(nèi)部體素的三組面鄰居體素,所述一組面鄰居體素是指位于當(dāng)前體素的前后或左右或上下的兩個(gè)體素; 步驟122,根據(jù)每組面鄰居體素的標(biāo)記值的和是否為零,判斷當(dāng)前內(nèi)部體素是否為邊界體素,如果為零,則將當(dāng)前內(nèi)部體素標(biāo)記為邊界體素。
4.根據(jù)權(quán)利要求3所述的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,步驟一中所述的網(wǎng)格提取部分包含以下步驟: 步驟131,根據(jù)每個(gè)邊界體素的位置,生成相應(yīng)頂點(diǎn)的坐標(biāo),并將此頂點(diǎn)加入輸出網(wǎng)格模型頂點(diǎn)集合;步驟132,根據(jù)每個(gè)計(jì)算單元中內(nèi)部體素、外部體素及邊界體素的數(shù)量及相對位置,在這個(gè)計(jì)算單元內(nèi)部生成三角面片,并連接這些三角面片組成輸出網(wǎng)格模型,所述計(jì)算單元是指組成一個(gè)立方體區(qū)域的8個(gè)相鄰體素。
5.根據(jù)權(quán)利要求4所述的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,步驟二中所述的缺陷結(jié)構(gòu)刪除部分包含以下步驟: 步驟211,檢測輸出模型中的懸掛面,迭代刪除懸掛面,所述懸掛面是指包含懸掛邊的面片,所述懸掛邊是指僅與一個(gè)面片相連的邊; 步驟212,檢測與每個(gè)頂點(diǎn)相連的面片之間的邊連通性,如果與頂點(diǎn)相連的面片集合中存在非邊連通的面片,設(shè)定該頂點(diǎn)為奇異頂點(diǎn),復(fù)制該奇異頂點(diǎn),將非邊連通的面片中該奇異頂點(diǎn)的序號更新為復(fù)制得到新的頂點(diǎn)序號,以消除該奇異頂點(diǎn);所述面片的邊連通性是指兩個(gè)面片邊連通,即這兩個(gè)面片有公共邊,或者這兩個(gè)面片邊連通的面片有公共邊; 步驟213,檢測與每條邊相連的面片的數(shù)量,如果邊連接的面片數(shù)量大于2,設(shè)定該邊為復(fù)雜邊,檢測該復(fù)雜邊的每個(gè)頂點(diǎn)的面片在去除該復(fù)雜邊后的邊連通性,如果與頂點(diǎn)相連的面片集合中存在非邊連通的面片,則將該頂點(diǎn)復(fù)制,將非邊連通的面片中該頂點(diǎn)的序號更新為復(fù)制得到新的頂點(diǎn)序號,以消除該復(fù)雜邊; 步驟214,檢測頂點(diǎn)與面片之間的隸屬關(guān)系,如果頂點(diǎn)不屬于任何面片,則設(shè)定該頂點(diǎn)為懸掛頂點(diǎn),從輸出網(wǎng)格模型的頂點(diǎn)集合中刪除該懸掛頂點(diǎn)。
6.根據(jù)權(quán)利要求5所述的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,步驟二中所述的面片法向量校正部分包含以下步驟:` 步驟221,根據(jù)步驟122中獲得的體素標(biāo)記,計(jì)算每個(gè)輸出網(wǎng)格模型頂點(diǎn)的法向量; 步驟222,由每個(gè)三角面片的三個(gè)頂點(diǎn)的法向量平均得到該三角面片的法向量; 步驟223,計(jì)算由三角面片當(dāng)前頂點(diǎn)順序依照右手法則生成的法向量和步驟222中得到的法向量之間的夾角,依據(jù)所述夾角調(diào)整面片當(dāng)前頂點(diǎn)序號順序。
7.根據(jù)權(quán)利要求6所述的一種三維數(shù)字幾何網(wǎng)格模型結(jié)構(gòu)的自動修復(fù)方法,其特征在于,步驟二中所述的模型校準(zhǔn)部分包含以下步驟: 步驟231,將輸入網(wǎng)格模型進(jìn)行網(wǎng)格細(xì)分,使細(xì)分后的輸入網(wǎng)格模型的邊的長度小于設(shè)定閾值,所述網(wǎng)格模型的網(wǎng)格細(xì)分是指通過在長度大于設(shè)定閾值的邊的中點(diǎn)位置生成新的頂點(diǎn),將每個(gè)包含該邊的三角面片替換成兩個(gè)新生成的三角面片;設(shè)定閾值為包圍盒最長邊的1/20 ; 步驟232,將輸出網(wǎng)格模型的頂點(diǎn)投影到步驟231獲得的細(xì)分后的輸入網(wǎng)格模型的目標(biāo)邊上,所述目標(biāo)邊是指候選邊的集合中與待投影的輸出網(wǎng)格模型的頂點(diǎn)之間投影距離最小的邊,所述候選邊是指輸出網(wǎng)格模型的頂點(diǎn)能夠投影到該邊的內(nèi)部; 步驟233,根據(jù)輸出網(wǎng)格模型中頂點(diǎn)及與其相鄰的頂點(diǎn)的投影情況,對輸出網(wǎng)格模型中頂點(diǎn)的位置進(jìn)行調(diào)整;統(tǒng)計(jì)輸出網(wǎng)格模型中與當(dāng)前頂點(diǎn)相鄰的頂點(diǎn)投影到輸入模型中包含當(dāng)前頂點(diǎn)目標(biāo)邊的各個(gè)面片上的數(shù)量,選擇投影頂點(diǎn)數(shù)量最多的面片,將投影到該面片上的頂點(diǎn)和當(dāng)前頂點(diǎn)的坐標(biāo)的平均值作為當(dāng)前頂點(diǎn)的新位置,所述頂點(diǎn)投影到面片上是指頂點(diǎn)的目標(biāo)邊是該面片的邊; 步驟234,根據(jù)步驟112的縮放比率和平移參數(shù),將輸出模型還原至步驟112中縮放平移之前輸入模型的大小及所在空間。
【文檔編號】G06T5/00GK103617603SQ201310662076
【公開日】2014年3月5日 申請日期:2013年12月6日 優(yōu)先權(quán)日:2013年12月6日
【發(fā)明者】孫正興, 郎許鋒, 嚴(yán)海, 宋沫飛 申請人:南京大學(xué)