一種三維人造物體模型形變方法
【專(zhuān)利摘要】本發(fā)明涉及計(jì)算機(jī)圖形領(lǐng)域,提供了一種三維人造物體模型形變方法,包括獲取三維人造物體模型部件的基元體;檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;編輯三維人造物體模型部件的基元體集合;恢復(fù)三維人造物體模型部件結(jié)構(gòu)。本發(fā)明實(shí)現(xiàn)了同時(shí)處理多個(gè)部件基元體同時(shí)被編輯后的結(jié)構(gòu)恢復(fù)。
【專(zhuān)利說(shuō)明】一種三維人造物體模型形變方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)圖形領(lǐng)域,特別是涉及一種三維人造物體模型形變方法。
【背景技術(shù)】
[0002]三維模型的編輯和形變是基于現(xiàn)有三維模型生成新的變種的常用方法。用戶(hù)通過(guò)鼠標(biāo)拖拽更改模型上的某個(gè)部分,需要計(jì)算機(jī)自動(dòng)計(jì)算,將這個(gè)局部變化傳播到模型的其余部分。對(duì)于三維人造物體而言,用戶(hù)往往操作編輯一個(gè)部件,我們需要將該編輯從被操作部件傳播到其余部件,同時(shí)保持人造物體的原有結(jié)構(gòu),如某些部件之間的平行關(guān)系、正交關(guān)系、共面關(guān)系等。
[0003]為此,有研究者提出了針對(duì)三維人造物體模型部件的抽象表示,即將每個(gè)部件抽象為一個(gè)基元體,根據(jù)部件的形狀,他們考慮四種基元:長(zhǎng)方體、球體、圓柱體和廣義圓柱體。然后將人造物體的結(jié)構(gòu)信息表示為基元本身的結(jié)構(gòu),即基元體的參數(shù),如長(zhǎng)方體的三邊長(zhǎng),廣義圓柱體的中軸參數(shù)曲線(xiàn)等,以及基元之間的關(guān)系,如基元之間的平行、對(duì)稱(chēng)、正交、共面、同心等關(guān)系。
[0004]研究者提出的方法采用編輯傳播方式實(shí)現(xiàn)結(jié)構(gòu)保持的形變。它的缺點(diǎn)是,同時(shí)只能處理一個(gè)部件基元的編輯,因?yàn)閭鞑ナ菑囊粋€(gè)基元體到其它基元體的單向傳播。這樣,該方法無(wú)法處理多個(gè)部件同時(shí)變化時(shí),三維人造物體的結(jié)構(gòu)恢復(fù)。
[0005]針對(duì)此缺點(diǎn),本發(fā)明采用了一種迭代式約束滿(mǎn)足的方法,可以同時(shí)處理多個(gè)部件基元同時(shí)被編輯后的結(jié)構(gòu)恢復(fù)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明采用一種三維人造物體模型形變方法,實(shí)現(xiàn)了同時(shí)處理多個(gè)部件基元體同時(shí)被編輯后的結(jié)構(gòu)恢復(fù)。
[0007]本發(fā)明采用如下方案:
[0008]一種三維人造物體模型形變方法,包括:
[0009]獲取三維人造物體模型部件的基元體;
[0010]檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;
[0011]建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;
[0012]編輯三維人造物體模型部件的基元體集合;
[0013]恢復(fù)三維人造物體模型部件結(jié)構(gòu)。
[0014]優(yōu)選地,所述獲取三維人造物體模型部件的基元體,包括下述步驟:
[0015]基于Rotating calipers算法計(jì)算三維人造物體模型部件最緊致的有向包圍盒;
[0016]基于表面網(wǎng)格收縮算法計(jì)算三維人造物體模型部件的骨架;
[0017]根據(jù)骨架上采樣點(diǎn)到表面的距離得到一個(gè)半徑,所有骨架點(diǎn)都有一個(gè)半徑,就可以生成一個(gè)廣義圓柱體,圓柱的中心線(xiàn)就是骨架,半徑隨著模型粗細(xì)變化而變化;
[0018]選取有向包圍盒的最小體積和廣義圓柱體的最小體積的最大值作為三維人造物體模型部件的基元體。
[0019]優(yōu)選地,所述檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系,包括檢測(cè)對(duì)稱(chēng)、平行、正交、共面,同心五種關(guān)系。
[0020]優(yōu)選地,所述檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系的方法為:
[0021]對(duì)稱(chēng)關(guān)系通過(guò)比較兩個(gè)基元的參數(shù)來(lái)實(shí)現(xiàn),如果兩個(gè)基元屬于同類(lèi)且參數(shù)相近,則二者對(duì)稱(chēng);對(duì)于彼此對(duì)稱(chēng)的基元體,檢測(cè)二者是否平行;對(duì)于彼此相鄰的兩個(gè)長(zhǎng)方體基元,檢測(cè)二者是否正交以及是否共面;對(duì)于兩個(gè)圓柱體,檢測(cè)它們的軸是否共線(xiàn)。
[0022]優(yōu)選地,所述編輯三維人造物體模型部件的基元體,包括編輯一個(gè)基元體和編輯多個(gè)基元體。
[0023]優(yōu)選地,所述恢復(fù)三維人造物體模型部件結(jié)構(gòu),包括:
[0024]S601、根據(jù)基元體之間的臨近關(guān)系,構(gòu)建一個(gè)基元圖,其節(jié)點(diǎn)是基元體,邊代表基元體之間的相鄰關(guān)系;
[0025]S602、對(duì)用戶(hù)編輯三維人造物體模型部件的基元體集合中的每個(gè)基元體,計(jì)算以基元體為根節(jié)點(diǎn)的基元圖的生成樹(shù);
[0026]S603、根據(jù)根節(jié)點(diǎn)到葉節(jié)點(diǎn)的寬度優(yōu)先順序遍歷生成樹(shù),逐一處理生成樹(shù)中的節(jié)點(diǎn),當(dāng)處理到的節(jié)點(diǎn)屬于人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集,即該節(jié)點(diǎn)滿(mǎn)足人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系;
[0027]S604、對(duì)用戶(hù)編輯三維人造物體模型部件的基元體集合中的所有節(jié)點(diǎn)采用S603的步驟進(jìn)行遍歷,即完成一次迭代;
[0028]S605、重復(fù)進(jìn)行迭代步驟,直到所有基元體的變化量小于指定閾值,即恢復(fù)三維人造物體模型部件結(jié)構(gòu)。
[0029]本發(fā)明公開(kāi)的一種三維人造物體模型形變方法,通過(guò)獲取三維人造物體模型部件的基元體;檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;編輯三維人造物體模型部件的基元體集合;恢復(fù)三維人造物體模型部件結(jié)構(gòu)。實(shí)現(xiàn)了同時(shí)處理多個(gè)部件基元同時(shí)被編輯后的結(jié)構(gòu)恢復(fù)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0030]圖1為本發(fā)明實(shí)施例1種結(jié)構(gòu)保持的三維人造物體模型形變方法流程圖。
【具體實(shí)施方式】
[0031]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0032]本發(fā)明實(shí)施例提供了種結(jié)構(gòu)保持的三維人造物體模型形變方法,包括:
[0033]獲取三維人造物體模型部件的基元體;
[0034]檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;
[0035]建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;
[0036]編輯三維人造物體模型部件的基元體集合;
[0037]恢復(fù)三維人造物體模型部件結(jié)構(gòu)。[0038]本發(fā)明實(shí)施例通過(guò)獲取三維人造物體模型部件的基元體;檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;編輯三維人造物體模型部件的基元體集合;恢復(fù)三維人造物體模型部件結(jié)構(gòu)。實(shí)現(xiàn)了同時(shí)處理多個(gè)部件基元同時(shí)被編輯后的結(jié)構(gòu)恢復(fù)。
[0039]下面對(duì)本發(fā)明進(jìn)行詳細(xì)闡述。
[0040]實(shí)施例1:
[0041]請(qǐng)參閱圖1所示,為本發(fā)明一種三維人造物體模型形變方法流程圖。
[0042]該方法包括下述步驟:
[0043]步驟S1:獲取三維人造物體模型部件的基元體。
[0044]獲取三維人造物體模型部件的基元體,包括下述步驟:
[0045]基于Rotating calipers算法計(jì)算三維人造物體模型部件最緊致的有向包圍盒;
[0046]基于表面網(wǎng)格收縮算法計(jì)算三維人造物體模型部件的骨架;
[0047]根據(jù)骨架上采樣點(diǎn)到表面的距離得到一個(gè)半徑,所有骨架點(diǎn)都有一個(gè)半徑,就可以生成一個(gè)廣義圓柱體,圓柱的中心線(xiàn)就是骨架,半徑隨著模型粗細(xì)變化而變化;
[0048]選取有向包圍盒的最小體積和廣義圓柱體的最小體積的最大值作為三維人造物體模型部件的基元體。
[0049]步驟S2:檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系。
[0050]檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系的方法為:
[0051]對(duì)稱(chēng)關(guān)系通過(guò)比較兩個(gè)基元的參數(shù)來(lái)實(shí)現(xiàn),如果兩個(gè)基元屬于同類(lèi)且參數(shù)相近,則二者對(duì)稱(chēng);對(duì)于彼此對(duì)稱(chēng)的基元體,檢測(cè)二者是否平行;對(duì)于彼此相鄰的兩個(gè)長(zhǎng)方體基元,檢測(cè)二者是否正交以及是否共面;對(duì)于兩個(gè)圓柱體,檢測(cè)它們的軸是否共線(xiàn)。
[0052]步驟S3:建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集。
[0053]步驟S4:編輯三維人造物體模型部件的基元體集合。
[0054]用戶(hù)同時(shí)編輯多個(gè)基元體。
[0055]步驟S5:恢復(fù)三維人造物體模型部件結(jié)構(gòu)。
[0056]恢復(fù)三維人造物體模型部件結(jié)構(gòu),包括:
[0057]S601、根據(jù)基元體之間的臨近關(guān)系,構(gòu)建一個(gè)基元圖,其節(jié)點(diǎn)是基元體,邊代表基元體之間的相鄰關(guān)系;
[0058]S602、對(duì)用戶(hù)編輯三維人造物體模型部件的基元體集合中的每個(gè)基元體,計(jì)算以基元體為根節(jié)點(diǎn)的基元圖的生成樹(shù);
[0059]S603、根據(jù)根節(jié)點(diǎn)到葉節(jié)點(diǎn)的寬度優(yōu)先順序遍歷生成樹(shù),逐一處理生成樹(shù)中的節(jié)點(diǎn),當(dāng)處理到的節(jié)點(diǎn)屬于人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集,即該節(jié)點(diǎn)滿(mǎn)足人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系;
[0060]S604、對(duì)用戶(hù)編輯三維人造物體模型部件的基元體集合中的所有節(jié)點(diǎn)采用S603的步驟進(jìn)行遍歷,即完成一次迭代;
[0061]S605、重復(fù)進(jìn)行迭代步驟,直到所有基元體的變化量小于指定閾值,即恢復(fù)三維人造物體模型部件結(jié)構(gòu)。
[0062]本發(fā)明公開(kāi)的一種三維人造物體模型形變方法,通過(guò)獲取三維人造物體模型部件的基元體;檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;編輯三維人造物體模型部件的基元體集合;恢復(fù)三維人造物體模型部件結(jié)構(gòu)。實(shí)現(xiàn)了同時(shí)處理多個(gè)部件基元同時(shí)被編輯后的結(jié)構(gòu)恢復(fù)。
[0063]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種三維人造物體模型形變方法,其特征在于,包括:獲取三維人造物體模型部件的基元體;檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系;建立人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集;編輯三維人造物體模型部件的基元體集合;恢復(fù)三維人造物體模型部件結(jié)構(gòu)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取三維人造物體模型部件的基元體,包括下述步驟:基于Rotating calipers算法計(jì)算三維人造物體模型部件最緊致的有向包圍盒;基于表面網(wǎng)格收縮算法計(jì)算三維人造物體模型部件的骨架;根據(jù)骨架上采樣點(diǎn)到表面的距離得到一個(gè)半徑,所有骨架點(diǎn)都有一個(gè)半徑,就可以生成一個(gè)廣義圓柱體,圓柱的中心線(xiàn)就是骨架,半徑隨著模型粗細(xì)變化而變化;選取有向包圍盒的最小體積和廣義圓柱體的最小體積的最大值作為三維人造物體模型部件的基元體。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系,包括檢測(cè)對(duì)稱(chēng)、平行、正交、共面,同心五種關(guān)系。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述檢測(cè)所有三維人造物體模型部件的基元體之間的關(guān)系的方法為:對(duì)稱(chēng)關(guān)系通過(guò)比較兩個(gè)基元的參數(shù)來(lái)實(shí)現(xiàn),如果兩個(gè)基元屬于同類(lèi)且參數(shù)相近,則二者對(duì)稱(chēng);對(duì)于彼此對(duì)稱(chēng)的基元體,檢測(cè)二者是否平行;對(duì)于彼此相鄰的兩個(gè)長(zhǎng)方體基元,檢測(cè)二者是否正交以及是否共面;對(duì)于兩個(gè)圓柱體,檢測(cè)它們的軸是否共線(xiàn)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述編輯三維人造物體模型部件的基元體,包括編輯一個(gè)基元體和編輯多個(gè)基元體。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述恢復(fù)三維人造物體模型部件結(jié)構(gòu),包括:S601、根據(jù)基元體之間的臨近關(guān)系,構(gòu)建一個(gè)基元圖,其節(jié)點(diǎn)是基元體,邊代表基元體之間的相鄰關(guān)系;S602、對(duì)用戶(hù)編輯三維人造物體模型部件的基元體集合中的每個(gè)基元體,計(jì)算以基元體為根節(jié)點(diǎn)的基元圖的生成樹(shù);S603、根據(jù)根節(jié)點(diǎn)到葉節(jié)點(diǎn)的寬度優(yōu)先順序遍歷生成樹(shù),逐一處理生成樹(shù)中的節(jié)點(diǎn),當(dāng)處理到的節(jié)點(diǎn)屬于人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系約束集,即該節(jié)點(diǎn)滿(mǎn)足人造物體模型部件的基元體的結(jié)構(gòu)關(guān)系;S604、對(duì)用戶(hù)編輯三維人造物體模型部件的基元體集合中的所有節(jié)點(diǎn)采用S603的步驟進(jìn)行遍歷,即完成一次迭代;S605、重復(fù)進(jìn)行迭代步驟,直到所有基元體的變化量小于指定閾值,即恢復(fù)三維人造物體模型部件結(jié)構(gòu)。
【文檔編號(hào)】G06T17/00GK103729876SQ201310684838
【公開(kāi)日】2014年4月16日 申請(qǐng)日期:2013年12月12日 優(yōu)先權(quán)日:2013年12月12日
【發(fā)明者】徐凱, 黃惠, 陳寶權(quán) 申請(qǐng)人:深圳先進(jìn)技術(shù)研究院