?

基于Unity3D的計算機虛擬試衣測量系統設計與實現

2018-03-08 08:51陳天星李文鵬
計算機測量與控制 2018年2期
關鍵詞:人體模型試衣質點

張 煜,陳天星,陳 力,李文鵬

(西南交通大學 機械工程學院,成都 610000)

0 引言

虛擬試衣系統是利用計算機技術模擬服裝真實穿著于人體的一種應用。其主要使用在電子商務領域,用戶可根據虛擬試穿的效果挑選商品。因此,系統中的三維人體需要能夠讓用戶根據自身尺寸進行個性化定制。但對于獲取三維人體的主要途徑之一的建模法,存在不適用于大量個性化建模,難以集成到實際的開發軟件的問題[1]。另一方面,系統中服裝的真實感在于對它的布料模擬。其中最為廣泛使用的是Provot等[2]提出的彈簧-質點模型,由該模型的一種試衣方式是將服裝試穿轉化為衣物2D裁片縫合過程中與人體的碰撞響應的問題[3]。另一種試衣則是將服裝視作整體進而局部調整避免穿透,如Yongjoon等[4]將原有服裝與人體的關系映射到不同人體上,Jituo等[5]將服裝整體變形后與T字型人體對齊實現著裝等等。本文結合Unity3D設計實現虛擬試衣系統,針對人體建模法存在的問題提出了一種解決方案,并研究了服裝的布料仿真與碰撞處理,使其適用于人體動態試衣。

1 人體模型的變形算法設計

三維人體模型常用的變形算法大致有Skeleton-Based變形算法[6]與FFD自由變形算法[7],它們的基本特性如表1所示。

由于Skeleton-Based變形算法主要用于處理人體姿態的調整,而本文討論的系統需要對人體輪廓外形進行控制,因此不適合使用。另外,FFD自由變形算法因其需要大量的用戶參與調整,故也不適用。為了變形人體輪廓外形,本文引入一種常用于制作人物面部表情的BlendShape算法[8]進行控制。它描述了一組模型間的線性變化關系,定義如下:

(1)

其中:m指的是最終形狀的頂點向量集,bk代表一個變形通道中目標形狀的頂點向量集,wk是第k個變形通道內的影響權重,范圍是(0,1)。設模型網格為M=(V,E,F),V代表模型的頂點向量集,V={vi∈R3}描述頂點的位置坐標信息,E={ei}、F={fi}是模型的邊界集與三角面集,其中ei=(vi,0,vi,1)與fi=(vi,0,vi,1,vi,2)描述了模型表面的幾何連接關系與拓撲信息。

考慮單通道的變形,即m0=w0b0,設原模型Msource=(V0,E0,F0),當權重w0為0時,原模型不變形,而當w0為1時,原模型變化到Mtarget=(b0,E0,F0),即變化過程中僅僅變更模型的頂點位置信息,并不影響幾何連接關系與拓撲信息。當w0介于(0,1)之間時,原頂點集V0的各頂點與目標頂點集b0相對應的頂點沿直線方向線性插值得到Msource至Mtarget過渡變化的中間模型,如圖1所示。

圖1 單通道變形過程

圖2 多通道變形過程

2 系統的總體方案設計

虛擬試衣系統的總體框架圖如圖3所示。系統分為人體模型個性化定制模塊與服裝展示模擬模塊兩部分。

第一部分的核心支持是人體變形子模塊,它負責處理人體模型的輪廓變形,在由參數化控制子模塊進一步控制之后得到的個性化人體將進入服裝展示模擬模塊,該模塊負責把靜態著裝后的服裝進行布料仿真,并讓人體與布料化的服裝參與碰撞處理完成動態試衣過程。

圖3 系統總體框架圖

3 系統各模塊設計與實現

3.1 人體模型個性化定制模塊

建模生成三維人體的主要途徑有基于體素法建模、基于NURBS曲面建模、以及在3dsMax、Maya等軟件中利用多邊形建模生成蒙皮骨骼綁定的人體模型的方法。本文使用的是第三種方法建立的人體模型。

3.1.1 人體模型的變形實現

由章節1對人體變形的討論,我們的實現步驟如下:

1)對人物模型需要調節的部位,如前臂、胸部、腰部、臀部及腿部等分別在不增減頂點個數的前提下,通過調整頂點位置獲得最大變形形狀和最小變形形狀,即原模型Msource經調整得到M前臂最大,M前臂最小,M腰部最大,M腰部最小等等一組模型,為了讓調整過程更為平滑,我們借助了ZBrush軟件來調節頂點位置。

2)我們并未直接控制頂點集的插值過程,而是使用了3dsMax軟件的morph變形器得到中間過渡模型,它以分段插值的方式優化了變形過程,并且修正了頂點插值過程中的法線變化,得到的模型更為平滑光順。將Msource→M前臂最大,Msource→M前臂最小等模型變化過程分別在3dsMax軟件的Morph變形器內建立單獨的變形通道。

3)將模型與相關變形通道導入Unity3D后,使用接口函數SetBlendShapeWeight( )對插值權重w進行控制。

以人體前臂由原模型變形到我們調整的最大前臂模型為例,結果如圖4所示,依次取權重w為0、0.2、0.4、0.6、0.8、1,可以看出變形過程較為平滑。因此,由一個基礎模型與一組極限模型,通過對不同變形通道的權重w加以控制即可得到大量個性化的人體模型。

圖4 人體前臂部分變形過程

3.1.2 人體模型的參數化控制

為了讓用戶輸入如腰圍等人體特征尺寸時能夠得到相應的體型,我們希望找到與輸入值對應的插值權重w。因此我們需要獲得人體特征輪廓曲線[9],由于Unity3D并不支持模型的布爾運算,而且人體模型的網格頂點并不總在一個平面內,以人體腰部的參數化控制為例,我們的解決方法如下:

1)在3dsMax中手工的選擇一組鄰近人體特征位置的點集,如圖5所示,將該組點集及其連接邊組成的新網格導入Unity3D后,遍歷新網格的頂點集,根據頂點三維空間坐標相同可找到人體模型網格內相對應的頂點集V腰部特征。

在區間[xi,xi+1](i=0,1...,n)構造:

Si(x)=ai+bi(x-xi)+ci(x-xi)2+di(x-xi)3

(2)

由上述步驟,我們給出人體模型的參數化控制過程:設變形前曲線長度為L0,通過判斷用戶的輸入值L輸入與L0的大小關系找到相應的變形通道,插值權重w由0開始循環查找,當經過k次循環,我們重復步驟2)、3)計算在插值權重w=kΔ下的當前曲線長度L當前,若滿足|L當前-L輸入|≤σ,循環查找終止,認為此時的w即為用戶輸入的對應值,其中Δ為循環增量,σ為預設誤差限。

圖5 在腰部網格手工選擇一組點集 圖6 人體腰部特征輪廓曲線

3.2 服裝的展示模擬模塊

3.2.1 服裝的靜態著裝

我們參考了文獻[4]的實驗初始條件,即約束在試衣開始前要求服裝能夠匹配人體原模型。將服裝導入Unity3D后,它以蒙皮骨骼綁定的網格形式渲染,我們重新綁定其骨骼為人體模型的骨骼,即可實現靜態著裝。

3.2.2 服裝的布料仿真

為了達到更真實的著裝效果,需要對服裝進行布料仿真。我們采用Provot等[2]提出的彈簧-質點模型,如圖7所示,每個質點與相鄰質點形成結構彈簧,與網格對角線上的質點形成剪切彈簧,與間隔的質點在橫向、縱向上形成彎曲彈簧。其中,剪切彈簧保持了對角線上質點之間的面內相對位移,避免了質點沿對角線方向的過度拉伸,彎曲彈簧則使得布料仿真中的褶皺效果更為理想。我們將服裝的所有網格頂點當作是質點,對每個質點由牛頓第二定律有:

圖7 彈簧-質點模型

(3)

式中,F內是質點與連接彈簧間的變形合力,可表示為F內=∑F結構+∑F剪切+∑F彎曲。在彈簧的彈性限度范圍內,根據胡克定律有:

式中,R表示與該質點連接成彈簧的質點集,ki,j表示該質點i與質點j間的彈簧勁度系數,xi、xj、li,j表示該質點i與質點j的空間位置與彈簧原長,我們限定彈簧的拉伸上限,以避免彈簧的內力過大而導致“超拉伸”現象。對式(3)中的F外,我們僅考慮重力與空氣阻尼力,即F外=G+F阻,其中,重力G=mg,阻尼力用來減緩質點運動的劇烈程度,讓系統更快達到平衡,阻尼力可表示為F阻=-cdvt,cd為空氣阻尼系數。

為了實現仿真,每個時刻都需重新計算質點的受力情況,將式(3)寫成微分形式:

(4)

(5)

由式(4)與式(5)相加可得質點在t+Δt時刻的位置表達式:

S(t+Δt)=2S(t)-S(t-Δt)+a(t)Δt2

(6)

注意到Verlet積分中速度是隱式給出的,而空氣阻力F阻=-cdvt,因此將式(6)改寫為S(t+Δt)=(2-cd)S(t)-(1-cd)S(t-Δt)+a(t)Δt2。

由于Verlet積分的運行不是自啟動的,我們將初始條件S(t)=S0,v(t)=0,a(t)=g代入式(4)作為仿真的開始條件。時間步長Δt在迭代過程中取為定值。

3.2.3 服裝的碰撞處理

圖8 一組碰撞球近似擬合人體邊廓

圖9 虛擬試衣系統集成工作流

4 系統的集成與實現

虛擬試衣系統集成的工作流如圖9所示。我們將基礎人體模型與相關變形通道、服裝模型、手工選擇的特征輪廓分別以.fbx文件格式導入Unity3D。在Unity3D中首先實現人體模型的靜態著裝,參數化控制腳本集在用戶與手工選擇的特征輪廓的輸入下控制變形腳本更新著裝后的人體輪廓外形,接著我們設置碰撞球集并讓靜態著裝后的服裝進行布料仿真與碰撞處理。最后,我們將積分迭代、碰撞處理后的服裝網格頂點位置信息、法線信息傳入到服裝材質所用的著色器中實現布料化服裝的實時渲染。系統中除著色器由Cg語言編寫,其他腳本均使用C語言進行編寫并運行在CPU上。

5 系統的測試與評價

5.1 系統測試環境的搭建

系統測試環境的搭建如圖10所示,依次為原人體模型、原人體模型靜態著裝與動態著裝、變更體型后的人體模型、變更體型后人體的靜態著裝和動態著裝。我們在人體肩部區域取較大的彈簧勁度系數以限制質點運動,實現服裝的固定。當變更體型后,手工將適應原模型的碰撞球集進行位置和大小的調整以貼合新的人體輪廓形狀。

圖10 不同體型下服裝試穿結果

5.2 系統評價

由圖10可以看出,適應原人體模型的服裝在變更體型的人體上靜態穿著出現了穿透現象,而服裝經過3.2節討論的布料仿真與碰撞處理后,相同的服裝能夠在不同體型的人體上進行試穿,并且仿真運行過程中質點不斷調整位置使得服裝呈現出形態的小幅變化,這種動態試衣的效果相對于靜態著裝更具有真實感。因此,本文討論的系統能夠滿足虛擬試衣系統對人體個性化定制與服裝試穿的需求,較好的模擬了服裝真實穿著于人體的效果。但系統并非完全自動化,對于動態試衣過程中手工參與碰撞器調整的部分需要進一步完善,使其能夠伴隨人體變形自動更新。

6 結束語

本文提出一種由BlendShape算法控制人體各局部特征變形的方案,該方案使得各特征的調整互不影響,變形過程自然平滑,通過疊加不同特征的變形能夠解決人體建模法存在的難以得到大量個性化模型的問題。接著引入人體特征輪廓曲線實現參數化控制變形過程,使其更適用于虛擬試衣系統。并對服裝進行布料仿真,采用一組球形碰撞器近似擬合人體邊廓實現了不同體型人體的動態試衣。

[1] 陳 亮,趙曙光,張麗娟,等. 虛擬三維服裝展示的發展歷史與研究熱點 [J].紡織學報,2011,32 (10):153-160.

[2]ProvotX.Deformationconstraintsinamass-springmodeltodescriberigidclothbehavior[J].GraphicsInterface,1995,23(19):147-154.

[3] 陳青青. 三維虛擬服裝縫合技術及布料仿真的研究與實現[D]. 廈門:廈門大學,2009.

[4]LeeY,MaJ,ChoiS.Automaticpose-independent3Dgarmentfitting[J].Computers&Graphics, 2013,37 (7):911-922.

[5]LiJ,YeJ,WangY,etal.Fitting3Dgarmentmodelsontoindividualhumanmodels[J].Computers&Graphics,2010,34 (6):742-755.

[6]YanHB,HuSM,MartinR.Skeleton-basedshapedeformationusingsimplextransformations[J].SpringerBerlinHeidelberg,2006,4035:66-77.

[7] 李 健,李鵬坤,丁露露. 基于區域控制的三維人體模型個性化定制 [J].陜西科技大學學報, 2009,27 (3):130-133.

[8]LewisJP,AnjyoK.Direct-manipulationBlendshapes[J].ComputerGraphics&ApplicationsIEEE,2010,30 (4):42-50.

[9] 姚 礪,李奧瓊,王慧潔. 個性化人體特征曲線驅動的三維服裝變形 [J].計算機仿真,2015,32 (7):426-432.

[10] 文 靜. 基于GPU的布料實時運動仿真研究 [D]. 成都:電子科技大學,2009.

猜你喜歡
人體模型試衣質點
巧用“搬運法”解決連續質點模型的做功問題
基于大數據虛擬試衣系統的研究
零下20℃
基于單片機控制的網購試衣機器人
質點的直線運動
質點的直線運動
自動試衣器
基于乘員體型的車輛安全性研究
Family makes 45—foot icicle in front yard
體驗創新:3D人體掃描儀測三圍
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合