本發(fā)明涉及一種三維虛擬服裝的立體剪裁方法,主要用于服裝輔助設(shè)計,屬于計算機科學(xué)中的虛擬現(xiàn)實技術(shù)領(lǐng)域。
背景技術(shù):
隨著信息技術(shù)的飛速發(fā)展,虛擬現(xiàn)實技術(shù)在服裝領(lǐng)域的研究越來越受到人們的關(guān)注,三維虛擬服裝的研究已經(jīng)成為紡織服裝領(lǐng)域的熱門課題。三維服裝模型在三維虛擬試衣、三維影視、三維網(wǎng)絡(luò)游戲等領(lǐng)域扮演著重要的角色,隨著這些應(yīng)用的不斷發(fā)展,三維服裝仿真的實用性與商業(yè)價值已經(jīng)不言而喻了。
通過計算機輔助設(shè)計技術(shù)構(gòu)建的虛擬三維服裝模型是個復(fù)雜的過程,需要耗費大量的時間資源?,F(xiàn)有的三維服裝的著裝效果的展示方法中,皆是將服裝應(yīng)用在特定的人體姿態(tài)上,為了更好的展示三維服裝的著裝效果,需要將三維虛擬服裝在不同人體模型表面呈現(xiàn),此時,需要對三維虛擬服裝進行精確快速虛擬剪裁,目前現(xiàn)有技術(shù)中還是空白。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是如何對三維虛擬服裝進行精確快速虛擬剪裁。
為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是提供一種三維虛擬服裝的立體剪裁方法,其特征在于,該方法由以下5個步驟組成:
步驟1:將三維虛擬服裝網(wǎng)格存儲為半邊結(jié)構(gòu)三角形網(wǎng)格;
步驟2:通過切割平面與三維虛擬服裝網(wǎng)格的交線確定切割路徑;
步驟3:對切割路徑分類處理,分割三角形。
步驟4:分離三角形;
對切割路徑所在的三角形進行分割以后,分割路徑會成為三角形的一條邊,如果此邊不為邊界,將此邊所在的兩個三角形進行分離,這樣分割路徑所在的邊都成為了邊界邊;
步驟5:對三維裁片進行分組;
通過對邊界邊所連接的三角形的遍歷,將邊界邊隔離的三角形網(wǎng)格分離出來,形成獨立的裁片。
優(yōu)選地,所述步驟2包括如下步驟:
步驟2.1:確定切割三維虛擬服裝網(wǎng)格的切割平面;
步驟2.2:連接切割三維虛擬服裝網(wǎng)格的切割平面;
步驟2.3:求得切割平面和三維虛擬服裝網(wǎng)格的交線;
步驟2.4:篩選符合條件的交線作為切割線;
步驟2.5:連接切割線,并排序,作為切割路徑。
優(yōu)選地,所述步驟2.1中,對于手動確定切割路徑的情況,確定切割平面的具體方法為:
方法一:使用兩個指定點和當前視點確定切割平面;兩個指定點射設(shè)為ps和pe,當前視點設(shè)為pviewer,通過pviewer和鼠標點擊位置pmouse來確定一條射線l,射線l方向為pmouse-pviewer;使用射線l與三維虛擬服裝網(wǎng)格求交點,在交點中選出距離pviewer最近的交點作為ps,使用同樣的方法確定pe;使用ps、pe、pviewer確定切割平面αi;此方法適用于手動確定切割路徑。
優(yōu)選地,所述步驟2.1中,對于確定切割路徑起始點和終點后,根據(jù)切割部位確定切割路徑的情況,確定切割平面的具體方法為:
方法二:使用兩個指定點和指定視角確定切割平面。
優(yōu)選地,所述步驟2.1中,對于整體切割情況,確定切割平面的具體方法為:方法三:使用指定點和指定法向量確定切割平面。
優(yōu)選地,所述步驟2.2中,在手工確定切割路徑的情況下,當出現(xiàn)多于兩個指定點時,會出現(xiàn)多個切割平面,此時根據(jù)切割平面的交點,將切割平面連接在一起,以形成連續(xù)的切割路徑;為了連接兩個相鄰的切割平面,前一個指定點作為當前指定點的起始點,使用前一個指定點、當前指定點、當前視角來確定當前切割面。
優(yōu)選地,所述步驟2.4中,篩選條件遵循以下原則:
原則一:對于方法一、方法二確定的切割平面,找到以ps為起點、以pe為終點、且路徑最短的交線作為切割線;
原則二:對于方法三確定的切割平面,找到通過指定點且連續(xù)的相交線作為切割線;
原則三:如果當前指定點處于的三角形的邊中有邊界邊,設(shè)為lb;將切割線擴展到邊界邊;當前指定點設(shè)為pc,與pc相鄰的指定點設(shè)為pp,使用起始點為pc、方向為pc-pp的射線l與lb求交點,設(shè)交點為p′c,那么切割線pppc更新為ppp′c。
優(yōu)選地,所述步驟2.5中,切割線的連接排序遵循以下原則:
原則一:對于閉合切割線,按照逆時針排序,起點與終點重合;
原則二:對應(yīng)非閉合切割線,起點為第一個指定點,終點為最后一個指定點。
優(yōu)選地,所述步驟3中,按照切路徑與其所在三角形的關(guān)系,將切割路徑分為三類:
第一類:起點為三角形頂點;按照終點的位置分為五小類:
1)終點為起點所在三角形的一個頂點,終點起點不重合;此類三角形不分割;
2)終點為起點所在三角形邊上一個點,終點和起點所在邊相同,終點起點不重合;此類三角形,終點所在邊需要分割,如果終點所在邊不為邊界,終點所在邊的鄰邊三角形也需要分割;
3)終點為起點所在三角形內(nèi)部一個點,終點起點不重合;此類三角形,需要以終點為中心進行分割;
4)終點為起點所在三角形邊上一個點,終點和起點所在邊不同,終點起點不重合;此類三角形,終點所在邊需要分割,如果終點所在邊不為邊界,終點所在邊的鄰邊三角形也需要分割;
5)終點為起點鄰邊三角形內(nèi)一點;此類三角形需要計算出起點和終點所構(gòu)成的線段與起點所在三角形邊的交點,將原來的分割路徑,分為兩段,再分別切割三角形。
第二類:起點在三角形的一條邊上,與邊的頂點不重合,與終點不重合;
對此起點所在的三角形,通過分割起點所在的邊,如果起點所在的邊不為邊界邊,分割起點所在邊的鄰邊三角形,使得起點變?yōu)槿切蔚囊粋€頂點;此時切割路徑與三角形的關(guān)系會變成第一類,按照第一類方法進行切割;
第三類:起點在三角形的內(nèi)部,與頂點不重合,不在三角形邊上,與終點不重合;
對此起點所在的三角形,以起點為中心,將三角形進行分割;此時切割路徑與三角形的關(guān)系會變成第一類,按照第一類方法進行切割。
優(yōu)選地,所述步驟4中,分離方法為:設(shè)分離邊所在邊為l、l的鄰居邊為l′;以l為邊構(gòu)造三角形α,以l′為邊構(gòu)造三角形α′;刪除α、α′,此時l和l′變?yōu)檫吔邕叀?/p>
本發(fā)明提供的方法克服了現(xiàn)有技術(shù)的不足,通過對三維虛擬服裝進行精確快速虛擬剪裁和面片分割,可以有效地在不同人體模型表面實現(xiàn)自由組合,構(gòu)造新的著裝形態(tài)。
附圖說明
圖1為三維虛擬服裝的立體剪裁總體示意圖;(a)源服裝;(b)使用本發(fā)明剪裁后的服裝裁片前面;(c)使用本發(fā)明剪裁后的服裝裁片后面;(d)使用本發(fā)明剪裁后的服裝裁片側(cè)面;
圖2為三點確定切割平面示意圖;
圖3為切割平面的連接示意圖;
圖4為切割線的生成示意圖;
圖5為切割路徑的生成示意圖;
圖6為切割路徑和其所在三角形的關(guān)系;(a)起點為三角形的頂點,終點為三角形的頂點;(b)起點為三角形的頂點,終點與起點在同一條邊;(c)起點為三角形頂點,終點在三角形內(nèi);(d)起點為三角形頂點,終點在三角形邊上,起點終點不在一條邊;(e)起點、終點不在一個三角形內(nèi);
圖7為分離三角形;(a)分割邊和分割邊的鄰邊;(b)分割邊和分割邊的鄰邊構(gòu)造的三角形;(c)分離的兩個三角形;
圖8為裁片分組示意圖。
具體實施方式
下面結(jié)合具體實施例,進一步闡述本發(fā)明。應(yīng)理解,這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對本發(fā)明作各種改動或修改,這些等價形式同樣落于本申請所附權(quán)利要求書所限定的范圍。
本實施例提供了一種三維虛擬服裝的立體剪裁方法,如圖1所示,圖1(a)為源服裝;圖1(b)為使用本發(fā)明剪裁后的服裝裁片前面;圖1(c)為使用本發(fā)明剪裁后的服裝裁片后面;圖1(d)為使用本發(fā)明剪裁后的服裝裁片側(cè)面。
具體步驟如下:
步驟1:將三維虛擬服裝網(wǎng)格存儲為半邊結(jié)構(gòu)三角形網(wǎng)格。
步驟2:通過切割平面與三維虛擬服裝網(wǎng)格的交線來確定切割路徑。
具體需要以下步驟:
步驟2.1:確定切割三維虛擬服裝網(wǎng)格的切割平面。
通過以下三個方法來確定切割平面:
方法一、使用兩個指定點,和當前視點確定切割平面。兩個指定點射設(shè)為ps和pe,當前視點設(shè)為pviewer。通過pviewer和鼠標點擊位置pmouse,來確定一條射線l,其方向為pmouse-pviewer,使用射線l與三維虛擬服裝網(wǎng)格求交點,在交點中選出距離pviewer最近的交點作為ps,使用同樣的方法確定pe。使用ps、pe、pviewer確定切割平面αi。此方法適用于手動確定切割路徑,如圖2。
方法二、使用兩個指定點和指定視角確定切割平面。此方法適用于確定切割路徑起始點和終點后,根據(jù)切割部位確定切割路徑。
方法三、使用指定點和指定法向量確定切割平面。此方法適用于整體切割。
步驟2.2:連接切割三維虛擬服裝網(wǎng)格的切割平面。
在手工確定切割路徑的情況下,當出現(xiàn)多于兩個指定點時,會出現(xiàn)多個切割平面,需要根據(jù)切割平面的交點,將切割平面連接在一起,以形成連續(xù)的切割路徑。為了連接兩個相鄰的切割平面,前一個指定點會作為當前指定點的起始點,使用前一個指定點、當前指定點、當前視角來確定當前切割面,如圖3。
步驟2.3:求得切割平面和三維虛擬服裝網(wǎng)格的交線,如圖4。
步驟2.4:篩選符合條件的交線作為切割線。
篩選條件遵循以下原則:
原則一、對于方法一、方法二確定的切割平面,找到以ps為起點、以pe為終點、且路徑最短的交線作為切割線。
原則二、對于方法三而確定的切割平面,找到通過指定點且連續(xù)的相交線作為切割線。
原則三、如果當前指定點處于的三角形的邊中有邊界邊,設(shè)為lb,將切割線擴展到邊界邊。當前指定點設(shè)為pc,與pc相鄰的指定點設(shè)為pp,使用起始點為pc,方向為pc-pp的射線l,與lb求交點,設(shè)交點為p′c,那么切割線pppc,更新為ppp′c。
步驟2.5:連接切割線,并排序,作為切割路徑,如圖5。
切割線的連接排序遵循以下原則:
原則一、對于閉合切割線,按照逆時針排序,起點與終點重合。
原則二、對應(yīng)非閉合切割線,起點為第一個指定點,終點為最后一個指定點。
步驟3、對切割路徑分類處理,分割三角形。
按照切路徑與其所在三角形的關(guān)系,將切割路徑分為三類:
如圖6,第一類:起點為三角形頂點。按照終點的位置分為五小類:
1、終點為起點所在三角形的一個頂點,終點起點不重合。此類三角形不分割。如圖6(a)。
2、終點為起點所在三角形邊上一個點,終點和起點所在邊相同,終點起點不重合。此類三角形,終點所在邊需要分割,如果終點所在邊不為邊界,終點所在邊的鄰邊三角形也需要分割。如圖6(b)。
3、終點為起點所在三角形內(nèi)部一個點,終點起點不重合。此類三角形,需要以終點為中心進行分割。如圖6(c)。
4、終點為起點所在三角形邊上一個點,終點和起點所在邊不同,終點起點不重合。此類三角形,終點所在邊需要分割,如果終點所在邊不為邊界,終點所在邊的鄰邊三角形也需要分割。如圖6(d)。
5、終點為起點鄰邊三角形內(nèi)一點。此類三角形需要計算出起點和終點所構(gòu)成的線段與起點所在三角形邊的交點,將原來的分割路徑,分為兩段,再分別切割三角形,如圖6(e)。
第二類:起點在三角形的一條邊上,與邊的頂點不重合,與終點不重合。
對此起點所在的三角形,通過分割起點所在的邊,如果起點所在的邊不為邊界邊,分割起點所在邊的鄰邊三角形,使得起點變?yōu)槿切蔚囊粋€頂點。此時切割路徑與三角形的關(guān)系會變成第一類,按照第一類方法進行切割。
第三類:起點在三角形的內(nèi)部,與頂點不重合,不在三角形邊上,與終點不重合。
對此起點所在的三角形,以起點為中心,將三角形進行分割。此時切割路徑與三角形的關(guān)系會變成第一類,按照第一類方法進行切割。
步驟4:分離三角形,如圖7。
經(jīng)過步驟3,對切割路徑所在的三角形進行分割以后,分割路徑會成為三角形的一條邊,如果此邊不為邊界,將此邊所在的兩個三角形進行分離,分離步驟如下:如圖7(a),設(shè)分離邊所在邊為l,l的鄰居邊設(shè)為l′。
1、以l為邊構(gòu)造三角形α,以l′為邊構(gòu)造三角形α′,如圖7(b)。
2、刪除α、α′,此時l和l′變?yōu)檫吔邕?,如圖7(c)。
步驟5:對三維裁片進行分組,如圖8。
經(jīng)過步驟4,分割路徑所在的邊都成為了邊界邊,通過對邊界邊所連接的三角形的遍歷,可以將邊界邊隔離的三角形網(wǎng)格分離出來,形成獨立的裁片。