薛 原, 黃璐宸, 楊若瑜
(南京大學(xué)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210046)
不同材質(zhì)服裝的實(shí)時(shí)動態(tài)仿真
薛原, 黃璐宸, 楊若瑜
(南京大學(xué)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210046)
提出參數(shù)化的人體建模方法。將人體分為10個(gè)部分,并且定義了一系列特征參數(shù)用來控制人體的拓?fù)浣Y(jié)構(gòu)。文獻(xiàn)[1]中提出的Zhang樣條曲線被用于構(gòu)造每個(gè)部分的人體表面。在完整人體模型的基礎(chǔ)上,實(shí)現(xiàn)實(shí)時(shí)的著裝模擬。在傳統(tǒng)彈簧質(zhì)點(diǎn)模型的基礎(chǔ)上提出大彎曲彈簧以實(shí)現(xiàn)褶皺效果。另外,通過合理的參數(shù)設(shè)置以及多重校正機(jī)制實(shí)現(xiàn)不同材質(zhì)的效果,包括絲質(zhì)、棉質(zhì)和彈性布料。實(shí)驗(yàn)結(jié)果證明該系統(tǒng)可以建立較為真實(shí)的人體模型,并且能實(shí)時(shí)地進(jìn)行較為復(fù)雜的試穿仿真。
Zhang樣條;參數(shù)化變形;大彎曲彈簧;服裝材質(zhì)
當(dāng)下,隨著網(wǎng)絡(luò)購物的盛行,虛擬試衣技術(shù)越來越被廣大學(xué)者所關(guān)注。實(shí)現(xiàn)虛擬試衣系統(tǒng)需要考慮兩個(gè)關(guān)鍵問題,即真實(shí)的人體模擬和服裝在虛擬人體上的動態(tài)試穿仿真。
針對不同的數(shù)據(jù)來源和不同的應(yīng)用場景,人體建模方法有許多,其相關(guān)工作取得了一些成果。一般數(shù)據(jù)來源可分為二維圖像、三維視頻、三維點(diǎn)云以及用戶所指定的參數(shù)。Lin和Wang[2]提出了以數(shù)據(jù)源為人體的彩色正面照和側(cè)面照的重建方法,其過程為:輪廓檢測、型值點(diǎn)檢測、獲取人體各部分尺寸信息以及根據(jù)已有3D模版重建人體模型。這種方法對于照片的拍攝要求較為嚴(yán)格,且由于只用到二維信息,對于人體腋下等部位的重建較為粗糙。Kakadiaris和 Metaxas[3]提出了通過在圓屋頂安裝多臺攝像機(jī)來多方位捕獲不同視點(diǎn)的場景,并使用正交視頻序列進(jìn)行人體建模。該方法對設(shè)備和場地的要求較高。Izadi等[4]通過Kinect深度攝像頭獲取人體的三維點(diǎn)云,使用ICP算法、體素整合算法和光線投射算法以獲取變換后的坐標(biāo),最終重建出人體模型。Wang[5]通過3D無序點(diǎn)云建立模型并將其加入數(shù)據(jù)庫,然后通過比對數(shù)據(jù)庫中的模型和將要重建的人體,選取數(shù)據(jù)庫中與該重建人體較為接近的模型來實(shí)現(xiàn)人體重建。基于點(diǎn)云方法構(gòu)建的人體比較逼真,但大量點(diǎn)云數(shù)據(jù)的存儲、傳輸成為其瓶頸。
毛天露和王兆其[6]提出的人體建模步驟為:獲取人體的21個(gè)測量參數(shù)、縮放人體表面模型的相應(yīng)部分、建立模型、構(gòu)造人體骨架并通過骨架驅(qū)動人體模型以實(shí)現(xiàn)較為簡單的動作。這種參數(shù)化變形方法實(shí)時(shí)性較好,但在完成動作時(shí),需對人體拼接部位進(jìn)行人工干預(yù),否則易出現(xiàn)錯(cuò)位、不接合等問題。文獻(xiàn)[7-8]通過對已有模型進(jìn)行修改實(shí)現(xiàn)實(shí)時(shí)性,類似的參數(shù)化建模方法的效果更多依賴于初始模型的精細(xì)化程度,另外,為了獲得較好效果需要對初始模型進(jìn)行分割。Barmpoutis[9]提出利用 Kinect 每幀數(shù)據(jù)直接進(jìn)行人體表面建模,該方法不關(guān)注人體結(jié)構(gòu)尺寸,但某些點(diǎn)的誤差會影響整個(gè)建模結(jié)果??傊?,以上人體建模方法欠缺效率及靈活性,另不能滿足虛擬試衣系統(tǒng)對實(shí)時(shí)及完成各種動作的人體建模的要求。
復(fù)雜的服裝仿真是以簡單的布料模擬為基礎(chǔ)的,因此國內(nèi)外很多研究者對簡單布料的特性進(jìn)行了探究并歸納出一般規(guī)律。文獻(xiàn)[10]比較了包括歐拉積分、中點(diǎn)積分和龍格-庫塔積分方法,將這些方法實(shí)現(xiàn)在簡單布料模型上,并通過實(shí)驗(yàn)結(jié)果比較了其方法的優(yōu)缺點(diǎn)及適用情況。Kang等[11]使用隱式積分實(shí)現(xiàn)布料仿真,并對隱式積分的特性進(jìn)行研究,得出隱式積分相比顯式積分具有較高的穩(wěn)定性。另外,在仿真中采用了物理和幾何的結(jié)合方法,即使用三次樣條曲線對褶皺效果進(jìn)行模擬。文獻(xiàn)[12-13]針對摩擦力提出了更為精確的公式,對布料和剛性球體的碰撞過程進(jìn)行實(shí)驗(yàn),使得碰撞處理的過程更加真實(shí)。Cao和He[14]研究了彈簧質(zhì)點(diǎn)模型中的超彈性現(xiàn)象,并提出使用快速碰撞樹進(jìn)行碰撞檢測以加速這一過程。
為實(shí)現(xiàn)較為真實(shí)的試穿仿真效果,文獻(xiàn)[15]提出基于幾何的區(qū)域劃分方法以實(shí)現(xiàn)碰撞檢測,其只獲取質(zhì)點(diǎn)的位置信息而不考慮質(zhì)點(diǎn)的速度和受力情況。Wang等[16]對織物構(gòu)建褶皺數(shù)據(jù)庫,相同的褶皺可以被應(yīng)用到相似的動作中。Guan等[17]使用兩組訓(xùn)練集,一組包含體型不同但動作相同的人體模型,另一組是相同體型但動作不同的人體試穿的結(jié)果。將訓(xùn)練結(jié)果結(jié)合就可獲得特定體型和動作的人體試穿效果。劉炯宙等[18]將三維服裝模型劃分為緊身層、浮貼層和寬松層,前兩層利用蒙皮和近似剛性的模擬來保證效率,寬松層則采用物理模擬以保證一定真實(shí)性。這些方法效果較為逼真,但是由于物理信息缺乏或是實(shí)現(xiàn)過程較為復(fù)雜,因此很難應(yīng)用在動態(tài)試穿仿真中。
為實(shí)現(xiàn)不同的材質(zhì)效果,Wang等[19]在傳統(tǒng)的質(zhì)點(diǎn)彈簧模型基礎(chǔ)上增加若干組彈簧,并增加彈簧參數(shù)數(shù)量以充分實(shí)現(xiàn)服裝應(yīng)有的各向異性效果。此方法實(shí)現(xiàn)了材質(zhì)的區(qū)分,但對每種材質(zhì)的模擬都需要進(jìn)行許多參數(shù)組合,限制了方法的擴(kuò)展性,同時(shí)又增加了程序計(jì)算量。Liu等[20]通過測量獲取服裝的 3組幾何信息,分別為面積、長度和角度信息,并通過紋理映射的方式實(shí)現(xiàn)仿真。由于采用了幾何方法,因此難以實(shí)現(xiàn)動態(tài)仿真,另外由于測量參數(shù)數(shù)目巨大,該方法也不適用于較為復(fù)雜的服裝模擬。姜延等[21]通過測量的方法測試服裝樣本的力學(xué)參數(shù),并重點(diǎn)考慮與懸垂性相關(guān)參數(shù),通過BP神經(jīng)網(wǎng)絡(luò)建立織物力學(xué)屬性與仿真控制參數(shù)之間的非線性映射關(guān)系。此方法的不足之處是需要大量計(jì)算,實(shí)時(shí)性欠佳。
本文提出一種兼顧效率、真實(shí)性和靈活性的參數(shù)化人體建模方法,并在此人體模型的基礎(chǔ)上,實(shí)現(xiàn)完整的試穿仿真系統(tǒng)。不同于前文提到的通過大量參數(shù)設(shè)置實(shí)現(xiàn)的材質(zhì)區(qū)分方法,本文根據(jù)不同材質(zhì)的特性,對材質(zhì)的處理貫穿于仿真過程中的每個(gè)步驟,從而避免了大量的測量工作,大大提升了系統(tǒng)效率和靈活性。通過改進(jìn)常用的質(zhì)點(diǎn)彈簧模型,提出了大彎曲彈簧以快速實(shí)現(xiàn)褶皺效果。圖1為本文試穿仿真方法的整體流程圖。
圖1 試穿仿真系統(tǒng)流程圖
參數(shù)化三維人體建模需經(jīng)過特征點(diǎn)、特征尺寸獲取、數(shù)據(jù)預(yù)處理、型值點(diǎn)計(jì)算、表面重建、各曲面拼接、顯示等步驟。在此主要流程基礎(chǔ)上,若要實(shí)現(xiàn)參數(shù)化建模功能或人體動畫效果,還需分別返回到型值點(diǎn)計(jì)算或特征點(diǎn)、特征尺寸獲取這兩個(gè)步驟重新對人體表面點(diǎn)進(jìn)行計(jì)算。本文中特征點(diǎn)、特征尺寸的獲取既可以通過 Kinect深度攝像頭識別獲取,也可簡單的由用戶指定。前者精確性較高,后者便于人體模型的靈活調(diào)整。
1.1參數(shù)化模型設(shè)計(jì)
由于人體表面并非規(guī)則,尤其是人體每個(gè)部分接合處拓?fù)浣Y(jié)構(gòu)比較復(fù)雜并且要考慮到靈活的動作變換,因此人體表面不能以整體的方式進(jìn)行重建。本文將人體模型分為左右大臂、左右小臂、左右大腿、左右小腿、軀干、臀部10個(gè)部分。根據(jù)一般人體的結(jié)構(gòu)特征,選取對體型有較大影響的測量參數(shù)作為參數(shù)化建模的依據(jù)。
特征參數(shù)包含特征點(diǎn)和特征尺寸。特征點(diǎn)分別為:衣領(lǐng)、肩膀、腋窩、胸口、乳頭、腰部、臀部、大腿、膝蓋,人體骨骼可以通過順次連接這些特征點(diǎn)(除去乳頭)。特征尺寸包括身高、頸寬、頸厚、肩寬、胸圍、腰圍、臀圍、大腿圍、小腿圍、大臂圍、小臂長、小臂圍、乳間距、乳高、肚高。特征尺寸中如三圍、臂長、身高等是人體的主要尺寸,而乳高、乳間距、肚高等本文視為附加特征尺寸,可用于構(gòu)造特殊的人體模型。
人體表面的型值點(diǎn)是在特征點(diǎn)和特征尺寸的基礎(chǔ)上并結(jié)合標(biāo)準(zhǔn)人體模型的分層信息得到的。以人體軀干為例,計(jì)算方法如下:
首先確定人體軀干所需的型值點(diǎn)層數(shù),如胸部及以上較為復(fù)雜,其建模的型值點(diǎn)層應(yīng)更為密集,而腹部建模型值點(diǎn)層則應(yīng)相對稀疏。最終使用 9層型值點(diǎn)進(jìn)行建模,包括頸部頂層、頸部底層、肩膀?qū)?、胸部附近層,胸部和腹部之間三層,腹部兩層。
其次,需要確定每層型值點(diǎn)的 Y坐標(biāo),由于初始人體的姿勢是垂直站立的,因此同一層型值點(diǎn)間的 Y坐標(biāo)相同。人體軀干長度可以根據(jù)特征點(diǎn)計(jì)算獲得,如表 1所示,特征點(diǎn)高度所占人體模型總高度的比例結(jié)果是一個(gè)統(tǒng)計(jì)平均值。根據(jù)這一結(jié)果和每一部分的層數(shù)可計(jì)算出每一層的 Y坐標(biāo)。型值點(diǎn)的X或Z坐標(biāo)可通過該型值點(diǎn)附近的特征尺寸獲得。例如腹部特征點(diǎn)的計(jì)算過程如下:
表1 特征點(diǎn)高度比例均值
1.2基于Zhang樣條的人體建模
本文采用各個(gè)部分建模的方式,并且最終需要保證人體模型易于修改。采用 Zhang樣條曲面進(jìn)行人體建模,因?yàn)樵撉嬉子趯?shí)現(xiàn)光順拼接,使得每個(gè)部分連接后的效果更加逼真。另外,Zhang樣條是插值型樣條曲面,所以可將所有的型值點(diǎn)直接作為控制點(diǎn)使用,對人體的體型和動作修改都更加快捷。Zhang樣條的樣條基函數(shù)由sin函數(shù)和高斯函數(shù)擬合得到,因此繼承了高斯函數(shù)具有快速衰減至 0的特性,該特性有益于局部控制。同時(shí)繼承了sin函數(shù)易于插值的特性。其中一個(gè)基函數(shù)如下:
其中,a大于0,為了減少錯(cuò)誤和產(chǎn)生光滑表面,取a∈[1/7,1/3]。
本文使用“重復(fù)型值點(diǎn)”的方法以實(shí)現(xiàn)光順拼接,若要對一塊曲面片 u方向首尾光順拼接,則需在u方向首尾各重復(fù)兩層v方向的型值點(diǎn)作為輔助控制點(diǎn),并將控制點(diǎn)矩陣代入 Zhang插值樣條曲面公式;若要對有公共交點(diǎn)的不同曲面片完成光順拼接,則在曲面片交接線附近各取兩層點(diǎn)作為輔助控制點(diǎn),可簡單選取兩曲面上交接線附近的型值點(diǎn)。例如,腰部的第j層控制點(diǎn)為:
本文人體各個(gè)部分建模步驟如下:
(1) 計(jì)算人體軀干各層控制點(diǎn),形成人體軀干控制點(diǎn)矩陣。
(2) 求取Zhang插值樣條曲面的一組基函數(shù)。
(3) 將控制點(diǎn)坐標(biāo)與一組基函數(shù)的值代入Zhang插值樣條曲面表達(dá)式中,可通過調(diào)整參數(shù)方程中u,v的變化率,求得人體表面任意個(gè)數(shù)點(diǎn)的坐標(biāo)。
(4) 對軀干生成點(diǎn)進(jìn)行三角網(wǎng)格化,并計(jì)算各點(diǎn)法向量,方便后續(xù)光照條件下觀察人體。
對于每個(gè)人體部分,都需要構(gòu)建一張曲面片,除了考慮曲面片本身的封閉拼接之外,還需考慮不同人體部位之間的拼接,如大腿與小腿之間、大臂與小臂之間、軀干與臀部之間、臀部與大腿之間、大臂與軀干的肩部之間。
由于大腿與小腿各層型值點(diǎn)數(shù)量相同,且有公共的一層型值點(diǎn),故可在接合處各增加兩層輔助控制點(diǎn)即可完成光順拼接;大臂與小臂、軀干與臀部之間的拼接同理。例如,當(dāng)對臀部和軀干進(jìn)行拼接時(shí),腰部和臀部的控制點(diǎn)如下:
拼接前:
拼接后:
服裝試穿首先需要建立服裝模型,構(gòu)造彈簧,接著選取適當(dāng)?shù)膮?shù),選擇合適的積分方法和校正方法,最后進(jìn)行適當(dāng)?shù)呐鲎矙z測和處理。
2.1服裝建模和彈簧構(gòu)造
典型的服裝建模方法為:幾何模型和物理模型。幾何模型多用于靜態(tài)展示;物理模型可分為連續(xù)力學(xué)模型和粒子系統(tǒng)。其中,連續(xù)力學(xué)模型實(shí)時(shí)性不高,而粒子系統(tǒng)中力的相互關(guān)系是局部化的,計(jì)算量較小,實(shí)時(shí)性較高,因此仿真采用粒子系統(tǒng)。
首先根據(jù)模型初始的點(diǎn)和面信息建立鄰接表,在此基礎(chǔ)上添加彈簧信息,彈簧種類包括傳統(tǒng)質(zhì)點(diǎn)-彈簧模型中的拉伸彈簧、剪切彈簧、彎曲彈簧和本文提出的大彎曲彈簧。
考慮到衣服模型由 3dmax建模獲取,一般較為精細(xì),模型頂點(diǎn)和面片的信息較為復(fù)雜,為了減少仿真過程中不必要的耗時(shí),需要對服裝網(wǎng)格模型進(jìn)行簡化。常用的網(wǎng)格簡化算法包括頂點(diǎn)刪除法、邊收縮法和三角形刪除法。其中,三角形刪除法比邊收縮法簡化模型速度更快,相對于頂點(diǎn)刪除法數(shù)據(jù)結(jié)構(gòu)的存儲較為簡單,因此選用三角形刪除法。
此外,本文設(shè)計(jì)了大彎曲彈簧以實(shí)現(xiàn)特定材質(zhì)的仿真。該彈簧不同于原模型彈簧,主要用于控制服裝產(chǎn)生較大范圍褶皺效果。
所有彈簧的構(gòu)造過程如下:
(1) 對所有相鄰質(zhì)點(diǎn)之間添加拉伸和剪切彈簧,縱橫方向拉伸,斜向剪切。
(2) 對所有中間相隔一個(gè)質(zhì)點(diǎn)的兩質(zhì)點(diǎn)間添加彎曲彈簧,包括水平豎直和斜向。
(3) 根據(jù)指定簡化度對模型簡化,得到簡化質(zhì)點(diǎn)。此處的簡化度可根據(jù)需要調(diào)整,并且可以與下文提到的碰撞檢測中的簡化度不同。
(4) 對于任意簡化質(zhì)點(diǎn)P,獲取該質(zhì)點(diǎn)所有鄰接簡化質(zhì)點(diǎn)Qi(i=1,???,n),在P和Qi之間添加大彎曲彈簧。
彈簧構(gòu)造示意圖如圖2所示,其為只進(jìn)行一次簡化的彈簧構(gòu)造效果。假設(shè)進(jìn)行一次簡化后,刪除 Δv0v1v2,此時(shí)頂點(diǎn) v1、v2被刪除,v0被保留并標(biāo)記為簡化質(zhì)點(diǎn),與 v0鄰接的質(zhì)點(diǎn)(除去 v1、v2)以及與原v1、v2鄰接的質(zhì)點(diǎn)均標(biāo)記為簡化質(zhì)點(diǎn),并在質(zhì)點(diǎn)間添加大彎曲彈簧,而原所有非簡化點(diǎn)之間彈簧保持不變。圖 2(b)中所示點(diǎn)線為與 v0相連的大彎曲彈簧。
圖2 彈簧構(gòu)造示意圖
2.2參數(shù)分類及使用
得到服裝模型后,需為模型添加物理信息。本文對服裝的物理仿真主要是通過設(shè)置不同的參數(shù)來實(shí)現(xiàn),為了方便討論,將參數(shù)分為 4組,分別為外力相關(guān)參數(shù),內(nèi)力相關(guān)參數(shù),碰撞相關(guān)參數(shù)以及其他參數(shù)(表2)。
表2 服裝仿真參數(shù)表
外力相關(guān)參數(shù)分為人為力和非人為力參數(shù)。非人為力是指服裝在自然狀態(tài)下受到的外部作用力,包括重力、風(fēng)力和空氣阻力,其中重力可通過對象總質(zhì)量和重力加速度這兩個(gè)參數(shù)實(shí)現(xiàn),而風(fēng)力和空氣阻力分別受到風(fēng)力因子和空氣阻力系數(shù)的影響,公式為:
人為力是指為了使服裝產(chǎn)生特定運(yùn)動效果所施加的外力,包括提拉力、拖拽力和旋轉(zhuǎn)力。施加這些力的目的是為了使模型產(chǎn)生多種多樣的運(yùn)動,從而觀察模型的局部動態(tài)效果,以達(dá)到較精確仿真的目的。
內(nèi)力相關(guān)參數(shù)為各種類型彈簧的相關(guān)參數(shù),對于拉伸和剪切彈簧,內(nèi)力相關(guān)參數(shù)包括拉伸常量,阻尼常量,彈簧最大伸長率。其中拉伸常量是阻礙彈簧拉伸的;而阻尼常量是為了使彈簧進(jìn)行阻尼運(yùn)動,因?yàn)閺椈烧褡拥哪芰渴菚饾u衰減的,因此,其振幅會逐漸縮小,最后穩(wěn)定;彈簧最大伸長率用于限制彈簧最大長度,防止彈簧過度伸長。彈力計(jì)算公式如下:
大彎曲彈簧相關(guān)參數(shù):拉伸常量、阻尼常量、彈簧原長。建模時(shí),大彎曲彈簧的長度設(shè)為Lorigin,彈簧原長設(shè)為Lrest,一般情況Lrest<Lorigin,也就是說彎曲力在初始的簡化質(zhì)點(diǎn)之間就存在,因此會出現(xiàn)褶皺效果。
碰撞相關(guān)參數(shù):碰撞響應(yīng)系數(shù)、靜摩擦系數(shù)和動摩擦系數(shù)。當(dāng)服裝與人體發(fā)生碰撞時(shí),服裝會受到人體的碰撞響應(yīng)力,其垂直于碰撞平面向外。摩擦力包括靜摩擦力和動摩擦力,其由閾值決定,該值為響應(yīng)力與靜摩擦系數(shù)的乘積。若超過閾值,則為動摩擦力,反之,則為靜摩擦力。根據(jù)常理,動摩擦系數(shù)略小于靜摩擦系數(shù)。
其他參數(shù):積分步長、模型簡化度。后者是一個(gè)百分比,用來靈活控制碰撞檢測的效果和大彎曲彈簧的設(shè)置。
以上參數(shù)為實(shí)驗(yàn)中用到參數(shù)的集合,對于某種特定類型織物或某種特定類型材質(zhì),所有參數(shù)將有變化。
2.3積分和校正
在設(shè)置一定的參數(shù)后,對每步進(jìn)行積分計(jì)算,并得到下一時(shí)刻每個(gè)質(zhì)點(diǎn)的速度和位移,即實(shí)現(xiàn)服裝動態(tài)效果。本文選取Verlet積分進(jìn)行計(jì)算。
對于Sn+1和Sn–1,使用泰勒公式:
式(a)+(b),變形可得位置表達(dá)式:
式((a)–(b))/(2?t)可得速度表達(dá)式:
對于采用彈簧質(zhì)點(diǎn)模型建立的系統(tǒng),由于彈簧本身的性質(zhì),容易產(chǎn)生超彈性現(xiàn)象,即彈簧過度拉伸,造成最終效果失真。解決方法是通過積分后的校正對結(jié)果進(jìn)行修改,常見的校正方法有基于位置和速度的校正。
基于位置的校正是指為每個(gè)彈簧設(shè)定一個(gè)閾值,該值通過彈簧最大伸長率獲得,稱為彈簧最大長度。傳統(tǒng)位置校正規(guī)定:如果彈簧長度超過最大長度或小于最小長度,則改變兩端質(zhì)點(diǎn)位置,調(diào)整彈簧為設(shè)定的最大值/最小值,該方法稱為PM。為保證系統(tǒng)穩(wěn)定性,本文采用改進(jìn)位置校正(PMA),調(diào)整策略為:
按式(7)計(jì)算校正后質(zhì)點(diǎn)的目標(biāo)位置:
基于速度的校正是指通過改變彈簧兩側(cè)質(zhì)點(diǎn)的速度以防止彈簧進(jìn)一步伸長或縮短,常用方法為將速度清零,稱為VM。
對于較復(fù)雜模型,PM容易使模型整體產(chǎn)生抖動,需采用PMA以保證系統(tǒng)穩(wěn)定性,本文介紹的復(fù)雜服裝模型中的拉伸和剪切彈簧就是采用PMA校正。對于復(fù)雜模型中的大彎曲彈簧,如果僅使用位置校正,就會表現(xiàn)出柔軟布料的特性,無法產(chǎn)生富有硬度特性的褶皺效果。需要結(jié)合速度校正,即采用PMA+VM的方法,使得模型迅速進(jìn)入最終狀態(tài)。
2.4碰撞檢測和處理
對于衣服模型,在試穿過程中需要與人體模型進(jìn)行碰撞檢測和碰撞處理[1]。
首先需要將人體模型網(wǎng)格點(diǎn)向外擴(kuò)張,產(chǎn)生虛擬的人體模型,稱為擴(kuò)張人體模型。服裝與人體進(jìn)行碰撞檢測時(shí),只需與擴(kuò)張人體模型進(jìn)行碰撞檢測,該方法可以只進(jìn)行衣服質(zhì)點(diǎn)和人體模型三角面片的碰撞,即“點(diǎn)-三角形”碰撞,從而避免了“邊-邊”碰撞和“三角形-點(diǎn)”碰撞。
為了實(shí)現(xiàn)服裝運(yùn)動,碰撞檢測需要精確到人體每個(gè)部分,包括身體、大臂、小臂、大腿、小腿。因此,需要將人體進(jìn)行劃分,并對人體的各個(gè)部位建立圓柱映射表、計(jì)算方向包圍盒(oriented bounding box, OBB),以加速碰撞檢測。
碰撞檢測和處理的流程如下:
首先對服裝中每一部分的簡化質(zhì)點(diǎn)與所在映射表的人體塊進(jìn)行碰撞檢測,如果發(fā)生碰撞,則進(jìn)一步對每一部分的所有服裝質(zhì)點(diǎn)進(jìn)行檢測。無論是簡化點(diǎn)還是非簡化點(diǎn),其檢測和處理過程均為:
(1) 對于某一質(zhì)點(diǎn)P,首先判斷其是否在OBB包圍盒內(nèi)。如果是,跳至2;否則,結(jié)束處理。
(2) 進(jìn)一步檢測質(zhì)點(diǎn) P是否與擴(kuò)張人體模型發(fā)生點(diǎn)-三角形碰撞,如果是,表示碰撞成立,否則,結(jié)束處理。
(3) 如果檢測質(zhì)點(diǎn)P碰撞成立,則使其沿法向量向外拉伸至人體模型表面處,并對 P施加補(bǔ)償力,該力類似于人體對衣服的支撐力,方向同沿著碰撞平面向外的法向量方向。另外,對 P施加摩擦力,具體是動摩擦力還是靜摩擦力要根據(jù) P的總體受力狀態(tài)和摩擦系數(shù)確定。
2.5服裝材質(zhì)實(shí)現(xiàn)
本文對絲質(zhì)、棉質(zhì)和彈性纖維3種常見材質(zhì)的服裝進(jìn)行了區(qū)分。
絲質(zhì)布料難以被拉伸且由于其順滑的特點(diǎn),摩擦力較小,因此拉伸和剪切彈簧應(yīng)具有較大的彈性系數(shù)以使得布料不易拉伸,而彈簧阻尼系數(shù)應(yīng)較小。取較小的彈性系數(shù)是因?yàn)榻z質(zhì)布料柔順易彎曲,絲質(zhì)服裝不需要大彎曲彈簧的控制,因?yàn)槠漶薨櫠际切》秶牟⑶也痪邆溆捕忍攸c(diǎn)。
彈性布料的拉伸和剪切彈簧的彈性系數(shù)和阻尼系數(shù)都應(yīng)被設(shè)置得較小,另外,彈簧的自然長度應(yīng)該小于彈簧的初始長度,以便在模擬中產(chǎn)生收緊效果。
棉質(zhì)布料不易于拉伸且其彈性系數(shù)介于絲質(zhì)和彈性布料之間,取適中的彈性系數(shù),而由于棉質(zhì)布料內(nèi)力較大,因此阻尼系數(shù)較大。
每種材質(zhì)的參考值如表3所示。其中彈簧自然狀態(tài)下(彈簧不發(fā)生形變,沒有彈力)的長度與彈簧初始長度的比值計(jì)為RL。
表3 不同服裝材質(zhì)參數(shù)設(shè)置
圖3為彈簧設(shè)置流程圖。不同材質(zhì)在具體實(shí)現(xiàn)上的區(qū)別是由彈簧的初始設(shè)置、力的計(jì)算和校正方法決定的。
圖3 彈簧設(shè)置流程
對于任意彈簧s,獲得其兩端點(diǎn)索引號p1,p2的方法如下:
(1) 如果s非大彎曲彈簧,則通過彈力阻尼力的計(jì)算公式可得到s兩端質(zhì)點(diǎn)受的力(兩端點(diǎn)受到的力向量大小相同,方向相反)。注意如果是彈性服裝中的彈簧,在一開始,由于自然長度小于初始長度,兩端點(diǎn)就受到回縮力。
(2) 如果s是大彎曲彈簧,若彈簧長度大于初始長度,則彎曲力為0,若彈簧長度介于自然長度和初始長度之間(自然長度由RL確定),彎曲力的大小通過彈力阻尼力公式計(jì)算,需要將式(5)修改為:
其中,Lrest為大彎曲彈簧自然長度。
(3) 進(jìn)行積分計(jì)算后,得到質(zhì)點(diǎn)新位置,該位置未必是下一步長的最終位置,可能要經(jīng)過校正處理。
(4) 對于除大彎曲彈簧以外的彈簧,僅需使用PMA進(jìn)行校正;而對于大彎曲彈簧,則使用PMA+VM進(jìn)行校正。另外,在絕大部分情況下,使用PM+VM進(jìn)行大彎曲彈簧校正就可以保證效果和系統(tǒng)穩(wěn)定性。
本文方法通過改進(jìn)實(shí)現(xiàn)了一個(gè)完整的人體著裝系統(tǒng),將原有靜態(tài)仿真[12]擴(kuò)展為可區(qū)分材質(zhì)的、動態(tài)試穿效果。
該系統(tǒng)在主頻3.30 GHz,Windows 7操作系統(tǒng)及4 GB內(nèi)存的機(jī)器上實(shí)驗(yàn),期間沒有使用CUDA加速。
將實(shí)驗(yàn)結(jié)果分為3組,圖4為參數(shù)化人體建模結(jié)果,以及快速變形效果,圖4(d)展示特殊體型人體——孕婦的效果圖,通過調(diào)整附加尺寸可以快速實(shí)現(xiàn)。圖 5為不同材質(zhì)的服裝在男性和女性人體的試穿效果圖。圖中可以看出,棉質(zhì)服裝存在一些硬質(zhì)褶皺現(xiàn)象,絲質(zhì)服裝較為順滑,彈性服裝有一定收緊效果。圖 6使用骨架驅(qū)動使人體產(chǎn)生各種動作,展示了絲質(zhì)服裝的動態(tài)試穿效果。
圖4 改變參數(shù)以修改人體模型
圖5 不同材質(zhì)服裝的試穿效果(上:女;下:男)
圖6 動態(tài)試穿仿真效果
程序各主要部分耗時(shí)如表4所示,其中從圖4所示的服裝模型初始狀態(tài)到服裝模型穩(wěn)定的仿真狀態(tài),其所消耗的時(shí)間稱作預(yù)處理時(shí)間。
表4 仿真效率分析表(ms)
從表 4中可以看出,預(yù)處理耗時(shí)較多,然而此處的耗時(shí)可以有效地提高其后的仿真效率,且該過程僅需進(jìn)行一次。而每個(gè)步長計(jì)算耗時(shí)僅需20~50 ms,因此在人體運(yùn)動或后續(xù)其他交互情況下,本文的服裝仿真算法具有良好的實(shí)時(shí)響應(yīng)效果。
本文實(shí)現(xiàn)了實(shí)時(shí)的人體建模和試穿仿真系統(tǒng),根據(jù)特征參數(shù)計(jì)算人體表面的型值點(diǎn),使用Zhang樣條曲面對人體每個(gè)部分建模并實(shí)現(xiàn)各部分的光順拼接和人體模型的靈活修改。構(gòu)造了相對逼真且適用于虛擬試衣仿真的人體模型。本文實(shí)現(xiàn)完整的試穿系統(tǒng),積分、校正、碰撞檢測和處理,特別通過大彎曲彈簧的設(shè)置改進(jìn)了傳統(tǒng)彈簧質(zhì)點(diǎn)模型,并最終在動態(tài)仿真系統(tǒng)中實(shí)現(xiàn) 3種服裝材質(zhì)效果。在以后工作中,將對其他復(fù)雜材質(zhì)的仿真實(shí)現(xiàn)做進(jìn)一步研究,并考慮改進(jìn)碰撞檢測等算法以期適用于更大幅度、更加多樣的動作。
[1] Zhang R J, Ma W Y. An efficient scheme for curve and surface construction based on a set of interpolatory basis functions [J]. ACM Transactions on Graphics (TOG), 2011, 30(2): 10.
[2] Lin Y L, Wang M J J. Constructing 3D human model from front and side images [J]. Expert Systems with Applications, 2012, 39(5): 5012-5018.
[3] Kakadiaris I A, Metaxas D. 3D human body model acquisition from multiple views [C]//Computer Vision, 1995 Proceedings, Fifth International Conference on. IEEE, 1995: 618-623.
[4] Izadi S, Kim D, Hilliges O, et al. KinectFusion: real-time 3D reconstruction and interaction using a moving depth camera [C]//Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology. ACM, 2011: 559-568.
[5] Wang C C L. Parameterization and parametric design of mannequins [J]. Computer-Aided Design, 2005, 37(1): 83-98.
[6] 毛天露, 王兆其. 個(gè)性化三維人體模型快速建模方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2006, 17(10): 2191-2195.
[7] Kasap M, Magnenat-Thalmann N. Parameterized human body model for real-time applications [C]//Cyberworlds, 2007. CW’07 International Conference on. IEEE, 2007: 160-167.
[8] Zhou S Z, Fu H B, Liu L G, et al. Parametric reshaping of human bodies in images [C]//ACM Transactions on Graphics (TOG). ACM, 2010, 29(4): 126.
[9] Barmpoutis A. Tensor body: real-time reconstruction of the human body and avatar synthesis from RGB-D [J]. Cybernetics, IEEE Transactions on, 2013, 43(5): 1347-1356.
[10] Volino P, Magnenat-Thalmann N. Comparing efficiency of integration methods for cloth simulation [C]//Computer Graphics International 2001. Proceedings. IEEE, 2001: 265-272.
[11] Kang Y M, Choi J H, Cho H G, et al. An efficient animation of wrinkled cloth with approximate implicit integration [J]. The Visual Computer, 2001, 17(3): 147-157.
[12] Pabst S, Thomaszewski B, Stra?er W. Anisotropic friction for deformable surfaces and solids [C]//Proceedings of the 2009 ACM SIGGRAPH/Eurographics Symposium on Computer Animation. ACM, 2009: 149-154.
[13] Bridson R, Fedkiw R, Anderson J. Robust treatment of collisions, contact and friction for cloth animation [C]// ACM Transactions on Graphics (ToG). ACM, 2002, 21(3): 594-603.
[14] Cao Z F, He B. Research of fast cloth simulation based on mass-spring model [C]//National Conference on Information Technology and Computer Science 2012, Lanzhou, China, 2012: 323-327.
[15] ElBadrawy A A, Hemayed E E, Fayek M B. Rapid collision detection for deformable objects using inclusion-fields applied to cloth simulation [J]. Journal of Advanced Research, 2012, 3(3): 245-252.
[16] Wang H M, Hecht F, Ramamoorthi R, et al. Example-based wrinkle synthesis for clothing animation [C]//ACM Transactions on Graphics (TOG). ACM, 2010: 107.
[17] Guan P, Reiss L, Hirshberg D A, et al. DRAPE: DRessing Any PErson [J]. ACM Transactions on Graphics (TOG), 2012, 31(4): 35.
[18] 劉炯宙, 李基拓, 陸國棟. 三維服裝物理-幾何實(shí)時(shí)混合模擬[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2014, 26(12): 2244-2250.
[19] Wang H M, O’Brien J F, Ramamoorthi R. Data-driven elastic models for cloth: modeling and measurement [J]. ACM Transactions on Graphics (TOG), 2011, 30(4): 71.
[20] Liu L, Su Z, Wang R M, et al. Material-aware cloth simulation via constrained geometric deformation [J]. Computers & Graphics, 2013, 37(1): 21-32.
[21] 姜延, 劉正東, 陳春麗. 基于面料力學(xué)屬性的三維織物模擬[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2012, 24(3): 323-329.
Real-Time and Dynamic Clothes Simulation of Different Fabric Materials
Xue Yuan,Huang Luchen,Yang Ruoyu
(Key Laboratory for Advanced Technology of Software, Nanjing University, Nanjing Jiangsu 210046, China)
A parametric method for 3D human modeling is proposed in this paper. A set of feature parameters are defined to control the topological structure of human body comprising ten parts. Zhang spline is then used to construct the human surface of each part. Real-time garment dressing simulation is implemented based on the integrated human model. As an improvement of traditional mass-spring method, large-span bend spring is proposed for the purpose of wrinkle simulation. Furthermore, proper setting of parameters along with multistep correction strategy enables simulation of different fabric materials, namely cotton, silk and elasticity. The experimental results show that our system can construct relatively realistic human model as well as realize complete and flexible garment dressing simulation in real time.
Zhang spline; parameterized deformation; large-span bend spring; fabric materials
TP 391.9
10.11996/JG.j.2095-302X.2016010102
A
2095-302X(2016)01-0102-08
2015-09-24;定稿日期:2015-10-10
國家自然科學(xué)基金項(xiàng)目(61272218;61321491)
薛原(1990–),男,江蘇徐州人,碩士研究生。主要研究方向?yàn)?D服飾仿真。E-mail:960443741@qq.com
楊若瑜(1977–),女,安徽滁州人,副教授,博士。主要研究方向?yàn)橛?jì)算機(jī)視覺、三維重建和仿真。E-mail:yangry@nju.edu.cn