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