專利名稱:基于三角面片模型的拓撲面分離方法
技術領域:
本發明涉及CAD建模技術,更具體而言,涉及一種基于三角面片模型的拓撲面分離方法。
背景技術:
在現有技術中,用許多空間三角形小平面來表示CAD實體表面的數據模型在三維建模中是很常用的一種方法。這種方法將CAD表面離散化為三角形面片。不同的精度時有不同的三角形網格劃分。通常每個三角形面片有4個數據項表示,即三角形的3個頂點坐標和三角形面片的外法線矢量,整個CAD實體數據模型由多個三角形面片的集合表示,數據結構簡單,而且與所使用的CAD系統無關。但是這種表示方法只是無序地列出構成實體表面的所有三角形的幾何信息,不包 含任何三角形之間的拓撲相鄰信息。因此當用三角形面片這種表示方法生成的文件重建實體模型會遇到如下兩個問題一是由于導入的三維實體模型是經過三角化處理后的模型,拓撲信息匱乏,只能知道構成模型的點及三角面片信息,而無法得知模型的各個面的拓撲信息;二是構成零件的三角面片數量過于龐大,一個簡單的球體模型約為5000個三角面片,而面片之間有著大量的冗余數據,甚至有許多錯誤和缺陷。因此需要設計一種能對缺乏拓撲信息卻又數據量龐大的三維模型進行處理的通用方法。
發明內容
本發明是基于OSG等三維圖形仿真環境,針對目前應用較為廣泛的一類虛擬實驗——機械類虛擬實驗,公開一種通用的數據預處理方法,可以對三維模型進行拓撲重建,實現模型的拓撲面分離,提取三維模型的幾何特征。在本發明中,術語“三角面片”表示組成幾何模型的三角形,三角面片有4個數據表不項,即三個頂點和一個外法向量。術語“頂點坐標表”代表存放三角面片頂點的鏈表,記錄了三角面片的頂點以及順序號。術語“相鄰規則”表示判定兩個三角面片是否相鄰的規則,其被定義為若兩個三角面片有兩個頂點相同則認為這兩個三角面片是相鄰的。術語“三角面片對象”代表一種采用面向對象的方法表示的數據,該數據記錄了三角面片的三個頂點坐標,三角面片的外法向量,三角面片序列號以及與它相鄰的三角面片序列號。術語“拓撲面規則”代表拓撲面應該滿足的幾何特征規則,用來區分各個拓撲面,例如平面應該符合組成平面的各個三角面片的法向量方向一致。本發明提供一種基于三角面片模型的拓撲面分離方法,包括以下步驟I)對所述三角面片模型中的三角面片進行數據預處理;2)利用三角面片的合并,從所述三角面片模型中分解拓撲面;
3)建立所述拓撲面的基本幾何信息;4)判斷是否已經為所述三角面片模型中的所有三角面片分解拓撲面,如果還沒有為所述三角面片模型中的所有三角面片分解拓撲面,則返回至步驟2),否則結束所述方法。優選地,所述數據預處理進一步包括以下步驟21)讀入數據文件,所述數據文件記錄所述三角面片模型中的三角面片的頂點坐標和外法向量;22)對所述三角面片模型中的三角面片的頂點坐標進行排序;
23)將重合的頂點歸并為一個頂點,并將歸并后的頂點坐標存入頂點坐標表中;24)為一個三角面片建立一個三角面片對象,所述三角面片對象根據頂點坐標表的讀取順序記錄所述三角面片的序列號,并為所述三角面片的頂點與頂點坐標表建立對應關系;25)判斷是否已經為所有三角面片建立了三角面片對象,如果還沒有為所有三角面片建立三角面片對象,則返回步驟24),如果已經為所有三角面片建立了三角面片對象,則前進至步驟26);26)讀取一個三角面片對象,根據相鄰規則,為所讀取的三角面片對象在其他三角面片對象中尋找相鄰的三角面片對象,并且為所讀取的三角面片對象和所述相鄰的三角面片對象建立相鄰關系;27)將所述相鄰關系記錄在所讀取的三角面片對象和所述相鄰的三角面片對象中;28)判斷是否已經為所有的三角面片對象記錄了相鄰關系,如果還沒有為所有的三角面片對象記錄相鄰關系,則返回至步驟26),如果已經為所有的三角面片對象記錄了相鄰關系,則所述數據預處理結束。優選地,分解拓撲面進一步包括以下步驟31)選擇一個用于生成拓撲面的種子三角面片以及拓撲面規則;32)找出與所述種子三角面片相鄰的三角面片;33)判斷所述種子三角面片與所述相鄰的三角面片是否滿足所述拓撲面規則,如果所述種子三角面片與所述相鄰的三角面片滿足所述拓撲面規則,則前進至步驟34),如果所述種子三角面片與所述相鄰的三角面片不滿足所述拓撲面規則,則前進至步驟39);34)合并所述種子三角面片與所述相鄰的三角面片,獲得種子多邊形;35)以得到的種子多邊形的邊界為依據,尋找與所述種子多邊形相鄰的三角面片,;36)判斷所述種子多邊形和與其相鄰的三角面片是否滿足所述拓撲面規則,如果所述種子多邊形和與其相鄰的三角面片滿足所述拓撲面規則,則前進至步驟37),如果所述種子多邊形和與其相鄰的三角面片不滿足所述拓撲面規則,則前進至步驟38);37)合并所述種子多邊形和與其相鄰的三角面片,并且繼續到步驟35);38)判斷是否已經找到與所述種子多邊形相鄰的所有三角面片,如果還沒有找到與所述種子多邊形相鄰的所有三角面片,則返回步驟35),如果已經找到與所述種子多邊形相鄰的所有三角面片,則結束分解拓撲面;39)判斷是否已經找到與所述種子三角面片相鄰的所有三角面片,如果還沒有找到與所述種子三角面片相鄰的所有三角面片,則返回步驟32),如果已經找到與所述種子三角面片相鄰的所有三角面片,則結束分解拓撲面。優選地,數據文件是STL文件。優選地,相鄰規則被定義為如果兩個三角面片有兩個頂點相同則認為這兩個三角面片是相鄰的。優選地,拓撲面規則是平面符合組成平面的各個三角面片的法向量方向一致。優選地,頂點坐標表是存放三角面片頂點的鏈表。優選地,拓撲面的基本幾何信息包括拓撲面的中心位置以及邊界。
圖I是根據本發明的基于三角面片模型的拓撲面分離方法的流程圖。圖2是根據本發明的三角面片的數據預處理的流程圖。圖3是根據本發明的分解幾何拓撲面的流程圖。圖4是應用本發明的方法進行特征提取的效果圖,其中圖4a是齒輪的三角面片圖,整個齒輪模型由上下端面,齒廓面,軸孔面組成,各個面由三角面片表示而成,圖4b與圖4c是經過對齒輪的各個拓撲面提取之后的效果圖,圖4b提取出了齒輪的齒廓面,圖4c提取了齒輪的端面。
具體實施例方式現在,將詳細參考本發明的不同示例性實施例來描述本發明。應指出,雖然將結合示例性實施例描述本發明,但該描述并非要把本發明限制于該示例性實施例。相反,本發明將不僅覆蓋該示例性實施例,而且還覆蓋各種替換的、改變的、等效的和其他實施例,本發明保護范圍應以權利要求為準。下面參考圖I來描述根據本發明的基于三角面片模型的拓撲面分離方法。在步驟S11,首先對三角面片進行數據預處理。本領域技術人員已知,三角面片僅僅包含模型的幾何位置信息,而且三角形頂點是重復記錄的。例如,一個具有13100個三角面片的網格模型,就使用了 39300個頂點數據,而實際不重復的頂點僅有6556個,因此數據預處理的主要目的是數據去重和記錄三角面片之間的相鄰關系,方便后續操作。如圖2所示,三角面片的數據預處理主要通過以下步驟來實現。首先,在步驟S21,讀入數據文件,該數據文件例如可以是STL類型的。該數據文件記錄了三角面片模型的三角面片數據,包括三角面片的頂點坐標和外法向量。然后,在步驟S22,對三角面片模型中的三角面片的頂點坐標進行排序。本領域技術人員可以構思各種方法對頂點坐標進行排序,例如根據數據文件的讀取順序對頂點坐標進行排序。排序之后,在步驟S23,將重合的頂點歸并為一個頂點,并將歸并后的頂點坐標存入頂點坐標表中。接下來,在步驟S24,為一個三角面片建立一個三角面片對象,該三角面片對象根據頂點坐標表的讀取順序記錄所述三角面片的序列號,并為所述三角面片的三個頂點與頂點坐標表建立對應關系。然后,在步驟S25,判斷是否已經為每個三角面片建立了三角面片對象。如果還沒有為所有三角面片建立三角面片對象,則返回步驟S24,如果已經為所有三角面片建立了三角面片對象,則前進至步驟S26。三角面片對象建立完畢后,在步驟S26,讀取一個三角面片對象。然后,在步驟S27,根據相鄰規則,為所讀取的三角面片對象在其他三角面片對象中尋找相鄰的三角面片對象,并且為所讀取的三角面片對象和所述相鄰的三角面片對象建立相鄰關系。接下來,在步驟S28,把相鄰關系記錄在所讀取的三角面片對象和所述相鄰的三角面片對象中。最后,在步驟S29,判斷是否已經為所有的二角面片對象記錄了相鄰關系,如果還沒有為所有的三角面片對象記錄相鄰關系,則返回至步驟S26,如果已經為所有的三角面片對象記錄了相鄰關系,則所述數據預處理結束。例如,讀取第一個三角面片,記錄序列號為1,其三個頂點對應頂點坐標表中的第一、第二、第三個頂點;接著,讀取第二個三角面片,同樣記錄序列號為2,其三個頂點對應頂點坐標表中的第一、第三、第四個頂點。根據相鄰規則,即若兩個三角面片有兩個頂點相 同則認為二者是相鄰的,可以判定第二個三角面片與第一個三角面片相鄰,并且在第一個三角面片的相鄰關系中添加序列號“2”,在第二個三角面片的相鄰關系中添加序列號“1”,這樣就對這兩個三角面片建立相鄰關系。按照上述過程處理所有三角面片。再次參考圖1,在對三角面片進行數據預處理之后,在步驟S12,根據幾何特性利用三角面片的合并從整體模型中分解拓撲面。如圖3所示,利用三角面片的合并分解拓撲面的過程是一個遞歸循環。首先,在步驟S31,根據需要任意選擇一個用于生成拓撲面的種子三角面片Ti以及拓撲面規則。在本實施例中,拓撲面規則例如可以是平面應該符合組成平面的各個三角面片的法向量方向一致。然后,在步驟S32,找出與種子三角面片Ti相鄰的三角面片Tj。然后,在步驟S33,判斷種子三角面片Ti與相鄰的三角面片Tj是否滿足拓撲面規則。如果所述種子三角面片Ti與相鄰的三角面片Tj不滿足所述拓撲面規則,則前進至步驟S39。在步驟S39,判斷是否已經找到與所述種子三角面片Ti相鄰的所有三角面片,如果還沒有找到與所述種子三角面片Ti相鄰的所有三角面片,則返回步驟S32,如果已經找到與所述種子三角面片Ti相鄰的所有三角面片,則結束分解拓撲面。另一方面,如果種子三角面片Ti與相鄰的三角面片滿足所述拓撲面規則,則過程前進到步驟S34,相鄰的三角面片Tj與種子三角面片Ti合并。發生三角形合并后,原來的種子三角面片Ti擴充為多邊形邊界,種子三角面片Ti成為種子多邊形。接下來,在步驟S35,以得到的種子多邊形的邊界為依據,尋找與其相鄰的三角面片。在步驟S36,判斷種子多邊形和與其相鄰的三角面片是否滿足拓撲面規則。如果種子多邊形和與其相鄰的三角面片滿足拓撲面規則,則在步驟S37,合并所述種子多邊形和與其相鄰的三角面片,使種子多邊形不斷變大。如果所述種子多邊形和與其相鄰的三角面片不滿足所述拓撲面規則,則前進至步驟S38。在步驟S38,判斷是否已經找到與所述種子多邊形相鄰的所有三角面片,如果還沒有找到與所述種子多邊形相鄰的所有三角面片,則返回步驟S35。另一方面,如果已經找到與種子多邊形相鄰的所有三角面片,即最終當所有相鄰的三角面片均無法與種子多邊形合并時,遞歸停止。這時得到的即是一個幾何拓撲面。再次參考圖1,在得到一個幾何拓撲面之后,在步驟S13,建立拓撲面的基本幾何信息,這些幾何信息例如包括幾何面的中心位置,圓柱面的軸心位置、直徑、深度等。如果拓撲面是規則面,例如可以通過X,1,Z坐標找出幾何拓撲面的邊界,計算幾何拓撲面的中心及邊界大小。然后,在步驟S14判斷是否還存在未處理的三角面片,如果還存在未處理的三角面片,則過程返回步驟S12,處理模型剩余的未處理的面,如果不再存在未處理的三角面片,則結束所述方法。圖4顯示了利用本發明的方法進行特征提取的效果圖。其中圖4a是齒輪的三角面片圖,整個齒輪模型由上下端面,齒廓面,軸孔面組成,各個面由三角面片表示而成,圖4b是與圖4c是經過對齒輪的各個拓撲面提取之后的效果圖,圖4b提取出了齒輪的齒廓面,圖4c提取了齒輪的端面。該方法以北京潤尼爾網絡科技有限公司的虛擬裝配實驗室為平臺,進行研究開
發,可行性得到了認證。這種方法能將CAD軟件制作成通用格式文件導入OSG或其他三維圖形系統環境中,對文件進行分析處理,具有普遍通用性。實踐表明,這種方法充分利用了模型能夠提供的有用信息,重建模型中包含了參數化幾何特征和基本拓撲關系,使重建模型具有很好的實用性。該方法在很大程度上拓展了 CAD軟件模型文件在三維圖形系統環境中的應用。
權利要求
1.一種基于三角面片模型的拓撲面分離方法,包括以下步驟 1)對所述三角面片模型中的三角面片進行數據預處理; 2)利用三角面片的合并從所述三角面片模型中分解拓撲面; 3)建立所述拓撲面的基本幾何信息; 4)判斷是否已經為所述三角面片模型中的所有三角面片分解拓撲面,如果還沒有為所述三角面片模型中的所有三角面片分解拓撲面,則返回至步驟2),否則結束所述方法。
2.根據權利要求I所述的基于三角面片模型的拓撲面分離方法,其中所述數據預處理進一步包括以下步驟 21)讀入數據文件,所述數據文件記錄所述三角面片模型中的三角面片的頂點坐標和外法向量; 22)對所述三角面片模型中的三角面片的頂點坐標進行排序; 23)將重合的頂點歸并為一個頂點,并將歸并后的頂點坐標存入頂點坐標表中; 24)為一個三角面片建立一個三角面片對象,所述三角面片對象根據頂點坐標表的讀取順序記錄所述三角面片的序列號,并為所述三角面片的頂點與頂點坐標表建立對應關系; 25)判斷是否已經為所有三角面片建立了三角面片對象,如果還沒有為所有三角面片建立三角面片對象,則返回步驟24),如果已經為所有三角面片建立了三角面片對象,則前進至步驟26); 26)讀取一個三角面片對象,根據相鄰規則,為所讀取的三角面片對象在其他三角面片對象中尋找相鄰的三角面片對象,并且為所讀取的三角面片對象和所述相鄰的三角面片對象建立相鄰關系; 27)將所述相鄰關系記錄在所讀取的三角面片對象和所述相鄰的三角面片對象中; 28)判斷是否已經為所有的三角面片對象記錄了相鄰關系,如果還沒有為所有的三角面片對象記錄相鄰關系,則返回至步驟26),如果已經為所有的三角面片對象記錄了相鄰關系,則所述數據預處理結束。
3.根據權利要求I所述的基于三角面片模型的拓撲面分離方法,其中分解拓撲面進一步包括以下步驟 31)選擇一個用于生成拓撲面的種子三角面片以及拓撲面規則; 32)找出與所述種子三角面片相鄰的三角面片; 33)判斷所述種子三角面片與所述相鄰的三角面片是否滿足所述拓撲面規則,如果所述種子三角面片與所述相鄰的三角面片滿足所述拓撲面規則,則前進至步驟34),如果所述種子三角面片與所述相鄰的三角面片不滿足所述拓撲面規則,則前進至步驟39); 34)合并所述種子三角面片與所述相鄰的三角面片,獲得種子多邊形; 35)以得到的種子多邊形的邊界為依據,尋找與所述種子多邊形相鄰的三角面片; 36)判斷所述種子多邊形和與其相鄰的三角面片是否滿足所述拓撲面規則,如果所述種子多邊形和與其相鄰的三角面片滿足所述拓撲面規則,則前進至步驟37),如果所述種子多邊形和與其相鄰的三角面片不滿足所述拓撲面規則,則前進至步驟38); 37)合并所述種子多邊形和與其相鄰的三角面片,并且繼續到步驟35); 38)判斷是否已經找到與所述種子多邊形相鄰的所有三角面片,如果還沒有找到與所述種子多邊形相鄰的所有三角面片,則返回步驟35),如果已經找到與所述種子多邊形相鄰的所有三角面片,則結束分解拓撲面; 39)判斷是否已經找到與所述種子三角面片相鄰的所有三角面片,如果還沒有找到與所述種子三角面片相鄰的所有三角面片,則返回步驟32),如果已經找到與所述種子三角面片相鄰的所有三角面片,則結束分解拓撲面。
4.根據權利要求2所述的基于三角面片模型的拓撲面分離方法,其中所述數據文件是STL文件。
5.根據權利要求2所述的基于三角面片模型的拓撲面分離方法,其中所述相鄰規則被定義為如果兩個三角面片有兩個頂點相同則認為這兩個三角面片是相鄰的。
6.根據權利要求3所述的基于三角面片模型的拓撲面分離方法,其中所述拓撲面規則是平面符合組成平面的各個三角面片的法向量方向一致。
7.根據權利要求I所述的基于三角面片模型的拓撲面分離方法,其中所述頂點坐標表是存放三角面片頂點的鏈表。
8.根據權利要求I所述的基于三角面片模型的拓撲面分離方法,其中所述拓撲面的基本幾何信息包括拓撲面的中心位置以及邊界。
全文摘要
本發明涉及一種基于三角面片模型的拓撲面分離方法。所述方法包括以下步驟1)對所述三角面片模型中的三角面片進行數據預處理;2)利用三角面片的合并從所述三角面片模型中分解拓撲面;3)建立所述拓撲面的基本幾何信息;4)判斷是否已經為所述三角面片模型中的所有三角面片分解拓撲面,如果還沒有為所述三角面片模型中的所有三角面片分解拓撲面,則返回至步驟2),否則結束所述方法。
文檔編號G06T17/30GK102890830SQ201110201639
公開日2013年1月23日 申請日期2011年7月19日 優先權日2011年7月19日
發明者文福安, 孫燕蓮, 王志遠, 章一通 申請人:北京郵電大學, 北京潤尼爾網絡科技有限公司