一種三維自鎖模型的生成方法
【專利摘要】本發(fā)明公開了一種三維自鎖模型的生成方法,其包括:構造三維物體的體素模型,根據(jù)體素模型中每一體素所包含三維物體局部形狀以及和相鄰體素接觸的表面積來確定內(nèi)部體素與外部體素,并根據(jù)外部體素與內(nèi)部體素以及相鄰外部體素間的連接強度來構造外部體素連接圖;根據(jù)內(nèi)部體素模型構造初始三維自鎖模型,獲得若干三維拼塊的初始模型;根據(jù)外部體素連接圖將所述外部體素貼附到初始三維拼塊模型上,獲得每個拼塊的體素模型;將每個拼塊的體素模型與三維物體的三角網(wǎng)格模型通過構造實體幾何的方法做求交運算得到拼塊的三角網(wǎng)格模型。通過采用本發(fā)明公開的方法可以快速地生成具有較為復雜外形的三維自鎖模型,且生成的三維自鎖模型可直接進行三維打印。
【專利說明】一種三維自鎖模型的生成方法
【技術領域】
[0001] 本發(fā)明涉及三維設計【技術領域】,尤其涉及一種三維自鎖模型的生成方法。
【背景技術】
[0002] 三維自鎖模型(Interlocking Model)是由多個拼塊組成的、可組裝和拆解的三維 幾何結構;當所有拼塊組裝在一起時,這些拼塊相互鎖住,使得整個模型非常穩(wěn)固。三維自 鎖模型的實際應用非常廣泛,例如智力玩具、家具設計、和建筑設計等方面。
[0003] 三維自鎖模型有以下特征:當所有拼塊組裝在一起時,只有一個拼塊可以移動 (稱為鑰匙拼塊),其他所有的拼塊以及拼塊的組合都是不可以移動的。三維自鎖模型的基 本原理是通過拼塊相互之間的阻擋來實現(xiàn)它們之間的連接。因而組裝好的自鎖模型非常穩(wěn) 固,且不需要任何其他方法如膠水、螺絲等來連接拼塊。由于拼塊一般體積較大,通過自鎖 機制實現(xiàn)的拼塊之間的連接往往較為結實。另外,組裝好的自鎖模型可以重復拆解和再次 組裝,因而便于模型的存儲、運輸、和維護。
[0004] 目前設計三維自鎖模型的主要方法是基于手工設計。但該方法費時耗力,例如有 經(jīng)驗的工匠設計一個包含少量拼塊(例如五個)的自鎖模型一般需要一天或以上的時間。 另外,通過手工方法設計出的自鎖模型往往外形較為簡單(例如方塊形狀)。因而,該方法 不適合設計由大量拼塊組成的、且具有任意形狀的三維自鎖模型。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是提供一種三維自鎖模型的生成方法,可以快速地生成具有較為復 雜外形、且包含多個拼塊的三維自鎖模型。
[0006] 本發(fā)明的目的是通過以下技術方案實現(xiàn)的:
[0007] -種三維自鎖模型的生成方法,該方法包括:
[0008] 構造三維物體的體素模型,根據(jù)所述體素模型中每一體素所包含三維物體局部形 狀以及和相鄰體素接觸的表面積來確定內(nèi)部體素與外部體素,并根據(jù)所述外部體素與內(nèi)部 體素以及相鄰外部體素之間的連接強度來構造外部體素連接圖;
[0009] 根據(jù)所述內(nèi)部體素模型構造初始三維自鎖模型,獲得若干初始的三維拼塊;
[0010] 根據(jù)所述外部體素連接圖將所述外部體素貼附到所述初始的三維拼塊模型上,獲 得由拼塊組成的三維自鎖模型。
[0011] 進一步的,所述構造三維物體的體素模型包括:
[0012] 計算三維物體模型的包圍盒,并將該包圍盒細分成分成辨率為WXHXD的體素正 交網(wǎng)格;在所述體素正交網(wǎng)格中構造分辨率為(KXW+1) X (KXH+1) X (KXD+1)的均勻采 樣點網(wǎng)格,其中K為沿體素每個邊的采樣點的數(shù)量;通過射出(KXW+1)X(KXH+1)條經(jīng)過 (KXD+1)個采樣點的平行射線并與三維物體求交點,來判斷每個采樣點在所述三維物體模 型的內(nèi)部或外部,進而根據(jù)采樣點的位置狀態(tài)建立物體的體素模型。
[0013] 進一步的,該方法還包括:根據(jù)每一體素內(nèi)采樣點的位置狀態(tài)來計算其所包含三 維物體局部形狀信息:
[0014] 若某一體素的所有采樣點均在所述三維物體的內(nèi)部,則該體素為全體素,其包含 物體局部形狀的體積為當前體素的體積;若某一體素的所有采樣點均在所述物體的外部, 則該體素為空體素,其所包含物體局部形狀的體積為零;若某一體素的采樣點處于所述物 體的外部與內(nèi)部,則該體素為部分體素,其所包含物體局部形狀的體積,通過計算該體素在 物體內(nèi)部采樣點的數(shù)量來確定;
[0015] 對于所述部分體素還包括:使用廣度優(yōu)先搜索的算法來搜索其在物體內(nèi)部的鄰近 采樣點,并通過判斷能否搜索到所有在物體內(nèi)部的采樣點來確定該體素內(nèi)物體局部形狀是 否連續(xù);通過計算在和鄰近體素接觸面上物體內(nèi)部采樣點的數(shù)量來估算接觸面的表面積。
[0016] 進一步的,該方法還包括,對所述體素模型優(yōu)化的步驟,其包括:
[0017] 通過調(diào)整體素網(wǎng)格相對于三維物體模型的位置以及體素的大小來最小化異常體 素的數(shù)量;所述異常體素為包含形狀體積小于閾值或包含不連續(xù)局部形狀的體素;
[0018] 對于剩余的異常體素通過對物體模型進行局部變形的方法來去除,所述局部變形 的方法如下:對于包含形狀體積小于閾值的異常體素,先確定形狀的中心V。、平均表面法向 量義以及最小包圍球的半徑r;對于包含不連續(xù)局部形狀的異常體素,先確定每個局部形 狀的V。、S以及r參數(shù);再通過逐步移動物體三角網(wǎng)格模型上頂點的位置來實現(xiàn)局部變形; 局部變形公式如下:
【權利要求】
1. 一種三維自鎖模型的生成方法,其特征在于,該方法包括: 構造三維物體的體素模型,根據(jù)所述體素模型中每一體素所包含三維物體局部形狀以 及和相鄰體素接觸的表面積來確定內(nèi)部體素與外部體素,并根據(jù)所述外部體素與內(nèi)部體素 以及相鄰外部體素之間的連接強度來構造外部體素連接圖; 根據(jù)所述內(nèi)部體素模型構造初始三維自鎖模型,獲得若干初始的三維拼塊; 根據(jù)所述外部體素連接圖將所述外部體素貼附到所述初始的三維拼塊模型上,獲得由 拼塊組成的三維自鎖模型。
2. 根據(jù)權利要求1所述的方法,其特征在于,所述構造三維物體的體素模型包括: 計算三維物體模型的包圍盒,并將該包圍盒細分成分成辨率為WXHXD的體素正交 網(wǎng)格;在所述體素正交網(wǎng)格中構造分辨率為(KXW+1) X (KXH+1) X (KXD+1)的均勻采樣 點網(wǎng)格,其中K為沿體素每個邊的采樣點的數(shù)量;通過射出(KXW+1) X (KXH+1)條經(jīng)過 (KXD+1)個采樣點的平行射線并與三維物體求交點,來判斷每個采樣點在所述三維物體模 型的內(nèi)部或外部,進而根據(jù)采樣點的位置狀態(tài)建立物體的體素模型。
3. 根據(jù)權利要求1或2所述的方法,其特征在于,該方法還包括:根據(jù)每一體素內(nèi)采樣 點的位置狀態(tài)來計算其所包含三維物體局部形狀信息: 若某一體素的所有采樣點均在所述三維物體的內(nèi)部,則該體素為全體素,其包含物體 局部形狀的體積為當前體素的體積;若某一體素的所有采樣點均在所述物體的外部,則該 體素為空體素,其所包含物體局部形狀的體積為零;若某一體素的采樣點處于所述物體的 外部與內(nèi)部,則該體素為部分體素,其所包含物體局部形狀的體積,通過計算該體素在物體 內(nèi)部采樣點的數(shù)量來確定; 對于所述部分體素還包括:使用廣度優(yōu)先搜索的算法來搜索其在物體內(nèi)部的鄰近采樣 點,并通過判斷能否搜索到所有在物體內(nèi)部的采樣點來確定該體素內(nèi)物體局部形狀是否連 續(xù);通過計算在和鄰近體素接觸面上物體內(nèi)部采樣點的數(shù)量來估算接觸面的表面積。
4. 根據(jù)權利要求1所述的方法,其特征在于,該方法還包括,對所述體素模型優(yōu)化的步 驟,其包括: 通過調(diào)整體素網(wǎng)格相對于三維物體模型的位置以及體素的大小來最小化異常體素的 數(shù)量;所述異常體素為包含形狀體積小于閾值或包含不連續(xù)局部形狀的體素; 對于剩余的異常體素通過對物體模型進行局部變形的方法來去除,所述局部變形的方 法如下:對于包含形狀體積小于閾值的異常體素,先確定形狀的中心V。、平均表面法向量義 以及最小包圍球的半徑r ;對于包含不連續(xù)局部形狀的異常體素,先確定每個局部形狀的 Vc、以及r參數(shù);再通過逐步移動物體三角網(wǎng)格模型上頂點的位置來實現(xiàn)局部變形;局部 變形公式如下: VM = Vtk -a(2r-dist{V^,VC))N 其中,\是物體三角網(wǎng)格模型上的頂點并位于以^為中心、2i為半徑的包圍球內(nèi)部,a 是控制物體模型變形速度的參數(shù),k是變形公式迭代的次數(shù)。
5. 根據(jù)權利要求3所述的方法,其特征在于,所述根據(jù)所述體素模型中每一體素所包 含三維物體局部形狀以及和相鄰體素接觸的表面積來確定內(nèi)部體素與外部體素包括: 1)所述全體素均為內(nèi)部體素;2)若某一部分體素所包含物體局部形狀的體積大于預 設值,六個面不存在接觸面積小于閾值的面,且至少有一個鄰近體素是全體素,則該部分體 素為內(nèi)部體素;否則,該部分體素為外部體素。
6. 根據(jù)權利要求1所述的方法,其特征在于,所述根據(jù)所述內(nèi)部體素模型構造初始三 維自鎖模型,獲得若干初始的三維拼塊包括: 從所述內(nèi)部體素模型中抽取第一個拼塊Pi,剩下的內(nèi)部體素模型被稱為& ;其中,抽取 Pi的過程中確保[PdRJ是可被拆解的,且Pi只可以沿一個方向被移走; 依次從剩下的內(nèi)部體素模型中抽取其他拼塊Pi+1(i > 0),剩下的部分被稱為Ri+1 ;其 中,抽取Pi+1的過程中確保[Pi+1,Ri+1]是可以被拆解的,并確保[PpPi+uRi+J三個拼塊是相 互自鎖的且Pi是這個三個拼塊中的鑰匙拼塊。
7. 根據(jù)權利要求6所述的方法,其特征在于,從所述內(nèi)部體素模型中抽取第一個拼塊 Pi的步驟包括: 選擇一個位于所述內(nèi)部體素模型表面的體素作為種子體素 S,并確定該種子體素 S的 目標移動方向火; 判斷所述種子體素 S所有可以移動的方向,在除目標移動方向屯外的其他方向dj上, 選擇一對阻擋和被阻擋體素,并使用最短路徑的方法連接種子體素 S和被阻擋體素;其中, 所述連接種子體素 S和被阻擋體素時所涉及的體素均被選擇; 選擇所有位于拼塊Pi沿目標移動方向屯上方的體素并分配給拼塊Pi ; 判斷當前所選擇的體素數(shù)量是否達到預定值;若否,則選擇拼塊Pi鄰域內(nèi)的體素直至 拼塊Pi的體素達到預定數(shù)量,同時確保拼塊Pi的阻擋性和可移動性不改變,從而獲得所述 第一個拼塊Pi。
8. 根據(jù)權利要求6或7所述的方法,其特征在于,從剩余內(nèi)部體素模型中抽取其他拼塊 Pi+1的步驟包括: 將與上一個拼塊Pi移動方向相垂直的方向作為拼塊Pi+1的移動方向di+1 ; 從所述上一個拼塊Pi的鄰域內(nèi)選擇一個位于所述剩余內(nèi)部體素模型表面的體素作為 種子體素 C ; 在剩余內(nèi)部體素模型內(nèi),確定阻擋所述種子體素 C沿目標移動方向di+1移動的體素集 合Sv,并使用最短路徑的方法連接種子體素 C和體素集合Sv ; 判斷當前所選擇的體素數(shù)量是否達到預定值;若否,則選擇拼塊Pi+1鄰域內(nèi)的體素直 至拼塊Pi+1的體素達到預定數(shù)量,同時確保拼塊Pi+1的阻擋性和可移動性不改變,從而獲得 拼塊Pi+1。
9. 根據(jù)權利要求1所述的方法,其特征在于,所述根據(jù)所述外部體素與內(nèi)部體素以及 相鄰外部體素之間的連接強度來構造外部體素連接圖包括: 所述外部體素連接圖用于表示外部體素與內(nèi)部體素以及相鄰外部體素之間的連接強 度;其中,所述外部體素與內(nèi)部體素以及相鄰外部體素之間的接觸表面積越大,則表示連接 強度越大。
10. 根據(jù)權利要求1所述的方法,其特征在于,該方法還包括: 將所述由拼塊組成的三維自鎖模型中每個拼塊的體素模型與所述三維物體的三角網(wǎng) 格模型通過構造實體幾何的方法做求交運算得到拼塊的三角網(wǎng)格模型;將每個拼塊的三角 網(wǎng)格模型輸入至三維打印機中進行打印,進而組裝成實際的三維自鎖模型。
【文檔編號】G06T17/00GK104346832SQ201410664520
【公開日】2015年2月11日 申請日期:2014年11月19日 優(yōu)先權日:2014年11月19日
【發(fā)明者】宋鵬, 劉利剛 申請人:中國科學技術大學