柯 瑩, 梁惠娥, 王宏付
(江南大學(xué) a.紡織服裝學(xué)院; b.江蘇省非物質(zhì)文化遺產(chǎn)研究基地, 江蘇 無錫 214122)
隨著服裝時尚的產(chǎn)業(yè)化發(fā)展,服裝輔助虛擬設(shè)計工具已經(jīng)得到了廣泛應(yīng)用,并深入到服裝設(shè)計和生產(chǎn)領(lǐng)域。許多服裝輔助虛擬設(shè)計工具已經(jīng)實現(xiàn)了產(chǎn)業(yè)化,如虛擬設(shè)計軟件Marvelous Designer、 Mechanix、 OptiTex、 Lectra系統(tǒng)等。利用虛擬設(shè)計軟件進行服裝設(shè)計,是一個多次迭代的過程。首先需要設(shè)計組成三維服裝的二維樣版,然后將二維樣版虛擬縫合生成三維服裝,最后將三維服裝穿著在虛擬人體模型上進行展示,以便觀察服裝設(shè)計效果并進行樣版修改。
服裝二維樣版設(shè)計是虛擬服裝設(shè)計中的重要環(huán)節(jié)。在設(shè)計過程中,設(shè)計師需要不斷修改服裝樣版,而二維樣版需要進行網(wǎng)格化之后才能映射到三維空間。二維樣版的設(shè)計包括兩方面內(nèi)容:一是二維樣版的輪廓繪制和修改,二是二維樣版的網(wǎng)格化。服裝結(jié)構(gòu)的外輪廓線主要由各種不同的曲線和直線段組成,在虛擬樣版設(shè)計中多采用二階或三階Beizer曲線以及B樣條曲線或插值樣條曲線來模擬逼近曲線部分[1]。王宏付等[2]基于NURBS(非均勻有理B樣條曲線)方法提出了按型值點修改曲線的方法,通過鼠標的移動實現(xiàn)曲線調(diào)整,不需要調(diào)整重新計算整個曲線,修改速度快,易于控制。在網(wǎng)格剖分方面,為了滿足質(zhì)子-彈簧模型所要求的規(guī)則四邊域單元,聶卉等[3]提出了一種基于正則柵格法思想的四邊域網(wǎng)格剖分算法,但是彈簧質(zhì)點模型在處理二維樣版到三維服裝穿著的過程中會產(chǎn)生不穩(wěn)定效果。朱光舟等[4]采用正則柵格化對服裝CAD軟件設(shè)計的紙樣裁片進行四邊形剖分,連接四邊形對角線完成對二維裁片的網(wǎng)格化,該方法同樣適用于構(gòu)建裁片的彈簧質(zhì)點模型,但是如果對裁片進行修改操作,會影響到縫合生成的三維服裝的穩(wěn)定性。方貴盛采用筆式交互的方式來構(gòu)造二維服裝樣版的輪廓線,快速地將設(shè)計草稿轉(zhuǎn)化為二維服裝樣版;并對草繪衣片輪廓線進行自動分段識別與處理,生成樣版外輪廓線;最后在正則柵格法的基礎(chǔ)上,采用坐標擾動技術(shù),對二維衣片進行Delaunay三角網(wǎng)格剖分。該方法既可以解決正則柵格法在后續(xù)紋理貼圖過程中出現(xiàn)的空洞現(xiàn)象,又基本能保持服裝布料的經(jīng)緯構(gòu)造特點。Umetani等[5]提出了一套敏感性雙向服裝設(shè)計工具,采用Delaunay三角化方法構(gòu)建二維樣版,既可以對服裝樣版進行編輯,又可以將在三維空間對樣版的修改反饋到二維空間,將虛擬產(chǎn)生的衣片縫合起來穿著在人體模型上,增強服裝衣片的真實感。
為保證二維樣版網(wǎng)格生成的質(zhì)量,本文基于OpenGL技術(shù),進行虛擬服裝二維樣版的設(shè)計與修改研究。首先繪制二維樣版輪廓,并對其進行修改;其次使用Delaunay三角化方法對樣版進行網(wǎng)格劃分,并通過定義對應(yīng)三維空間的拉伸矢量來控制三角形密度;根據(jù)特定的省道形狀,提出在二維樣版中插入省道的解決方法;最后通過實例對文中提出的方法進行驗證。
二維樣版主要由各種不同的曲線和直線段組成,目前多采用二階或三階NURBS曲線以及B樣條曲線或插值樣條曲線來模擬逼近曲線部分。構(gòu)造初始化二維樣版,通過OpenGL函數(shù)創(chuàng)建直線段,采用三次NURBS曲線來模擬曲線部分。
本文繪制樣版輪廓首先定義繪制輪廓頂點的位置,然后定義頂點間連線的類型,因連線類型為曲線而采用NURBS方法定義。NURBS的數(shù)學(xué)定義如下:
(1)
式中:P(u)為曲線上的位置向量。
基函數(shù)由遞推公式定義如下:
(2)
(3)
(4)
對于繪制的樣版輪廓,從兩個方面進行設(shè)計修改。一是調(diào)整邊界線交點的位置,根據(jù)拖動邊界線交點所產(chǎn)生的新位置來調(diào)整輪廓的形狀。如果邊界交點對應(yīng)的兩條邊界都為線段,根據(jù)線段對應(yīng)的頂點調(diào)整線段的長度;如果邊界交點對應(yīng)的其中一條為曲線,根據(jù)NURBS參數(shù)調(diào)整來修改曲線形狀,根據(jù)拖動后產(chǎn)生的新坐標,重新生成線段和曲線。二是修改曲線形狀,采用調(diào)整NURBS權(quán)因子的方法對曲線形狀進行微調(diào)。根據(jù)鼠標點的移動來改變曲線,在不改變原曲線首尾控制點的情況下,用戶能直接改變曲線上任意參數(shù)點的幾何特性。
當保持控制頂點與其他權(quán)因子不變,減少和加大某權(quán)因子時,權(quán)因子對NURBS曲線的影響起到把曲線推離和拉向相應(yīng)頂點的作用[6]。已給一條k次NURBS曲線上參數(shù)為u的一點p,將曲線在該點拉向或推理控制點di距離為s以得到一個新點p*。修改相對應(yīng)的權(quán)因子來完成:
(5)
以簡單上裝衣身樣版為例,首先設(shè)定構(gòu)成上衣樣版的關(guān)鍵頂點,設(shè)定頂點間連線的類型,選擇袖窿位置連線為曲線線段,其他部位為直線段。上裝衣身樣版輪廓繪制及曲線修改如圖1所示。圖1(a)為繪制上衣樣版的輪廓,圖1(b)為根據(jù)鼠標移動修改樣版右側(cè)袖窿位置的曲線,該操作選擇曲線中間部位頂點向內(nèi)側(cè)拖動。
(a) 繪制樣版輪廓
(b) 修改樣版輪廓曲線
基于Dirichlet提出的思想,對創(chuàng)建的二維裁片輪廓模型進行不規(guī)則網(wǎng)格化,將由邊界所定義的任意平面劃分成Delaunay三角形[7]。本文不考慮針對彈簧質(zhì)點模型的正則柵格化操作,僅考慮三角網(wǎng)格的生成質(zhì)量,結(jié)合拉伸后網(wǎng)格密度的變化,對樣版進行三角網(wǎng)格化操作。
Delaunay三角化[8]通常是通過其對偶結(jié)構(gòu)Voronoi圖來定義,平面N個點集的Voronoi圖由平面上N個Voronoi多邊形組成,其中第i個Voronoi多邊形定義為
V(Pi)={x:||x-xi||≤||x-xj||,j≠i,i∈In}
(6)
式中:||·||為歐氏距離。一般生成的Delaunay三角化結(jié)果有兩個特點:一是得到的是點集的凸包;二是三個點所在的圓不包含其他任意一點,也表述為最小內(nèi)角和最大化,通常通過邊的翻轉(zhuǎn)實現(xiàn)。
為對給定衣片輪廓線所圍成的區(qū)域進行網(wǎng)格化,實現(xiàn)自動加點的功能,按指定的步長插入等邊三角形網(wǎng)格,保證盡可能多產(chǎn)生正三角形集合。給定邊界點,然后通過向邊界內(nèi)逐步加入新點的方法,形成一定密度的三角形網(wǎng)格。通過長度標尺和三角形外接圓無量綱半徑兩個參數(shù)來分別控制網(wǎng)格疏密程度和正三角形的偏離程度。
圖2 內(nèi)點長度標尺示意圖Fig.2 The schematic diagram of length scale of interior point
對于內(nèi)點Q,定義其長度標尺[8]為
(7)
式中:LA、LB、LC為邊界網(wǎng)格的長度標尺。設(shè)rk為第k個三角形的外接圓半徑,定義每個三角形的無量綱外接圓半徑為Rk=rk/Lk,因此可將Rk視為網(wǎng)格疏密程度以及三角形形狀的判據(jù)。選擇Rk最大的三角形中心點為新增點,向內(nèi)部加點直至Rk, max小于1為止。
內(nèi)點長度標尺的算法步驟描述如下:
第1步 給定邊界點集,計算各點長度標尺。
第2步 初始化三角形網(wǎng)格,給定一個外接圓標準,計算Rk。
第3步 將各三角形按照Rk的大小進行排序,如果因引入新的節(jié)點而導(dǎo)致不滿足外接圓準則,那么原來的三角形和與之相關(guān)的外接圓圓心將被刪除,并確定被刪除點。
第4步 確定所有與被刪除的三角形相鄰但本身未被刪除的三角形的Voronoi頂點,以便于形成相鄰點之間的聯(lián)系。
第5步 將新引入的點分別與被刪除的三角形的兩個頂點確定為新三角形的形成點,原三角形的兩個頂點必須與新的頂點相鄰并構(gòu)成三角形的邊,計算新增三角形的無量綱外接圓半徑。
第6步 如果Rk, max>1,重復(fù)第2步至第5步;如果Rk, max<1,結(jié)束。
原始網(wǎng)格化樣版與拉伸樣版如圖3所示。
(a) 衣身樣版網(wǎng)格化
(b) 衣身樣版拉伸
Fig.3Patterngriddinganddragging
將衣身二維樣版進行自動加點網(wǎng)格化剖分,見圖3(a)所示。為了支持對網(wǎng)格化衣片的拉伸操作,以便調(diào)整衣片尺寸,本文為每一個網(wǎng)格節(jié)點確定一個拉伸矢量,即方向和大小,目的是保證整個樣版區(qū)域均勻變化。樣版網(wǎng)格化剖分在二維空間內(nèi)進行,將樣片中的Delaunay三角形映射到一個由拉伸矢量定義的拉伸空間中,拉伸空間為衣片縫合穿著展示的三維空間。在上述三維空間中構(gòu)造三角形,然后重新將其映射回二維空間。映射空間可以通過三維空間中的一個控制面獲得。構(gòu)建二維空間控制面時,假設(shè)控制面中各點間的距離相等。在物理空間上的任意三角形映射到控制面后,形成正三角形。因此Delaunay三角形可以在控制面內(nèi)構(gòu)造,然后映射回物理空間,就得到一定拉伸比的三角形單元[9]。根據(jù)上述定義,設(shè)置拉伸常量為常數(shù)值,衣片拉伸后的效果如圖3(b)所示。
服裝裁剪過程中,服裝面料近似于錐面的折疊縫統(tǒng)稱為省道。沿著省道邊界縫制將使裁片產(chǎn)生立體效果[10]。本文給出在二維裁片上模擬錐子省(圖4(a))和橄欖省(圖4(b))的方法,其中,錐子省位于樣版邊界,橄欖省位于樣版內(nèi)部。
(a) 錐子省 (b) 橄欖省
(c) 省道設(shè)計實例
具體實現(xiàn)方法如下:三角形網(wǎng)格化的二維樣版數(shù)學(xué)表達式Sφ=(P,Eα,Eβ,T),其由一系列的三角片頂點P={Pj}、三角形T={Tj}、直線網(wǎng)格邊界Eα={Eαk}、曲線網(wǎng)格邊界Eβ={Eβl} 表示,其中三角形為三個頂點的集合Tj=△(Pj0,Pj1,Pj2),邊界為兩個頂點的集合Eαk={Pα0,Pα1}。對初始化二維樣版的線段邊界插入省道,即:通過鼠標畫直線E={E0,E1}來表示省道插入位置。根據(jù)省道插入的位置,分兩種情況進行考慮:如果E與直線邊界Eα相交,繪制省道為三角形,方向為從邊界指向樣版的內(nèi)部,開口方向位于邊界處,開口大小為ε;如果省道位于樣版的內(nèi)部,繪制省道為正邊菱形。插入省道效果圖如圖4(c)所示。
本文通過OpenGL編程技術(shù)實現(xiàn)了二維樣版Demo系統(tǒng)Pattern Design的開發(fā),上文提出的算法均在該系統(tǒng)中得以實現(xiàn)。通過本文系統(tǒng)構(gòu)建的服裝袖片和裙片結(jié)構(gòu)設(shè)計實例如表1所示。從表1中可見本文算法的有效性。
表1 服裝樣版設(shè)計實例
為實現(xiàn)服裝虛擬設(shè)計軟件中二維樣版的設(shè)計和編輯,本文應(yīng)用NURBS構(gòu)建二維樣版基礎(chǔ)輪廓,基于Dirichlet提出的思想,對二維樣版進行自動化三角剖分,實現(xiàn)了利用控制點對二維樣版進行拉伸操作,并對錐子省和橄欖省的插入過程進行了模擬。模擬系統(tǒng)借助OpenGL庫函數(shù)實現(xiàn)了對簡單服裝衣片二維樣版的模擬和編輯操作。