黄 磊,杨旭波
(上海交通大学 软件学院,上海 200240)
适应不同体型的衣服快速模拟方法
黄 磊,杨旭波
(上海交通大学 软件学院,上海 200240)
使用基于样本插值的衣服模拟方法,前期采集粗网格和细网格衣服在不同体型样本下的物理模拟结果,后期运行时根据粗网格衣服实时模拟后的面片特征获取细网格衣服样本,并将邻近的多个细网格衣服面片反距离加权插值获得最终的结果.实验证明,该方法能够快速地模拟衣服在不同体型人体身上的着装效果.
虚拟试衣;衣服模拟;人体体型;样本插值
随着电商平台的普及,网上购衣的需求大幅增加,网上虚拟试衣能够模拟衣服在与试衣者同等体型的虚拟角色身上的着装效果,从而帮助消费者选择最合适的衣服,减少网购的退货率.
目前,根据体型定制衣服的研究[1]早已经出现,但是用户在试衣的过程中期望能够快速地看到不同大小的衣服着装后的效果,然后做选择.文献[2]通过神经网络训练出体型与衣服模拟结果的关系,更加直观地表现了虚拟试衣的过程.然而,由SCAPE[3]表示的人体模型需要2 000多个3D扫描数据通过学习建立,样本数据量大,体型调节参数复杂.文献[4-5]基于单个模板人体模型,将模板人体分割成多个区域,针对每个区域设计该区域所影响顶点集合的变形函数,然后通过人体测量参数如身高、三围改变模板人体网格,生成个性化人体模型.由于体型调节参数过多,文献[6]将其简化成12个关键参数,通过长度和围度来调整顶点的位置.
模拟衣服穿着在特定体型身上的真实感效果是非常重要的.布料模拟的方法主要分为几何方法、物理方法、混合方法、自适应网格等[7].为了追求衣服的真实感,研究者们致力于准确地建立衣服的物理模型,分析布料的受力,关注布料与物体之间的碰撞和摩擦等[8-9].基于物理方法模拟精细网格布料可以产生逼真的效果,但性能达不到虚拟试衣的时限要求.于是,研究者们开始将低精度网格布料和高精度网格布料分开模拟,低精度的实时模拟产生衣服的总体轮廓,而衣服的高频细节通过几何方法生成[10].但几何方法的应用环境受限,为了实时并更准确地模拟衣服褶皱细节,人们提出基于学习或样本插值的方法.文献[11]根据SCAPE参数化的模型,能够自发改变衣服模型以适应特定体型和姿态,但是没有针对特定衣服与不同体型的匹配状态进行模拟,不符合虚拟试衣的需求.文献[12]则事先采集大量的高精度衣服模拟样本,根据人体骨骼点所影响的布料区域进行分类存储,并在运行时以新的姿态数据获取存储样本并插值,达到布料动画的目的,其与通过数据驱动模拟布料随姿态变化的方法[13-14]类似,但这类方法不考虑不同体型的着装效果.
针对虚拟试衣中不同体型与特定服装的匹配问题,本文提出一种适用于不同体型的衣服快速模拟方法,根据粗网格衣服在给定人体体型身上模拟的面片特征,搜索邻近的细网格样本插值并优化,以快速获得真实感的衣服试穿效果.
可变化的人体体型模型是虚拟试衣的关键需求之一.同一件衣服在不同体型的人体身上表现不同,因此才有选择衣服尺寸大小的必要.虚拟试衣需要足够的人体体型样本,才能满足普适化的要求.本文在文献[4,6]的基础上实现人体体型的几何调节.
人体体型的调节主要分为两种:第一种是长度(高度)的调节,如身高、腿长、膝高等;第二种是围长的调节,如胸围、腰围、臀围等.文献[4]的体型调节参数较多,不利于试衣前用户的交互,本文使用11个影响试衣的体型参数,分别为身高、胯高、膝高、臂长、前臂长、肩宽、胸围、腰围、臀围、大腿围、小腿围,则任意一种体型可以使用这11个参数来表示.设某体型Bi= (x i,1,x i,2,…,x i,11),x i,j(j=1,2,…,11)为第j个体型参数,网格为M Bi,顶点集合为V Bi
;模板人体体型为T= (y1,y2,…,y11),y j(j=1,2,…,11)为模板体型的第j个体型参数,网格为M T,顶点集合为V T,则Bi=T×S i,其中S i为体型调节参数矩阵:
根据S i调节体型的方法如下:
(1)长度(高度)的调节.通过对蒙皮后的模板人体骨骼点在对应坐标方向上的缩放,如腿长调节,假设腿部关节点为joint-crotch,则根据腿长调节参数si,crotch调整模板体型的方式如下:
其中:Bi,joint-crotch和Tjoint-crotch分别为体型Bi和T的关节点.网格M Bi中受B i,joint-crotch影响的顶点会根据蒙皮信息来调整坐标.
(2)围长的调节.文献[6]对围长使用圆形近似建模,在调整围长时近似为调节圆的半径,并对半径的缩放做约束,缩放参数根据模型顶点的y坐标进行三次插值获得.由于同样围长的围度外观表现可能不同,通过插值的方法扩展性较差,本文采用外观调整参数灵活地约束缩放参数.
图1 腰围的测量Fig.1 Waist measurement
其中:n为顶点的单位法向向量;k为满足一定约束的顶点缩放参数,表示为
其中:θ为顶点v的法线在平面Pwaist上的投影与水平方向的夹角(如图2所示).
α作为外观调整参数,使得同样围长的部位有不同的外观表现形式,α以Bézier为控制曲线,满足如下公式:
图2 腰围的缩放原理Fig.2 The method of zooming waist
其中:Pi为Bézier曲线的控制顶点.
布料的真实模拟可以方便用户判断衣服的大小和质感,主要表现在衣服的总体轮廓和布料的褶皱细节.基于物理模拟的衣服能产生合理逼真的效果,但随着模型精度的增加,模拟的速率会不断降低.本文需要模拟不同精度的衣服数据,在试衣的在线阶段,依靠低精度网格模拟的实时性;在试衣的样本采集阶段,着重于高精度网格模拟的真实性.两个阶段可以使用不同的衣服模拟方法,比如针对粗模拟的实时性,可以选择质点弹簧模型,而为了采集更真实的衣服样本,选择连续体模型表示布料,能够模拟不同材质衣服的变形效果.在本文中,两个阶段使用同样的衣服模拟方法.
为了模拟任意三角网格生成的衣服模型,本文使用简化的质点弹簧模型[15],在每条边的顶点之间添加结构弹簧,相邻两个三角面片非公共边的顶点之间添加弯曲弹簧,使用隐式欧拉方法[16]求解布料动力学方程.在衣服模拟的过程中,衣服与人体的碰撞检测和响应过程往往是布料模拟的计算瓶颈,特别在人体和布料网格面片数目较大的情况下,模拟的帧率会急速下降,文献[17]对模型所在的空间做划分并建立哈希表,根据模型顶点位置索引空间位置,索引到同一个空间的多个模型之间需要碰撞检测.由于虚拟试衣中人体姿态不会变化,本文通过直接划分人体模型空间并建立哈希表,将布料顶点先转化到人体模型空间坐标系再做碰撞检测,保证了粗网格衣服模拟的实时性.当检测到布料顶点和人体模型碰撞后,本文使用文献[18]的方法做碰撞响应,根据人体模型表面的摩擦因数和弹性恢复系数,改变布料顶点的速度.
针对不同的体型,虚拟试衣需要快速真实地模拟衣服的着装效果.文献[2]根据体型特征直接得到衣服穿着结果,忽略了着衣过程的物理模拟,降低了着装的真实性.本文采用衣服模拟样本合理插值,充分考虑因体型影响的物理模拟结果,同时减少了前期训练时间.
在线试衣阶段之前,本文需要采集不同体型样本下衣服模拟的特征.体型的获取和衣服特征的提取是这一阶段的关键.
3.1.1 体型样本的获取
本文通过体型调节参数调整模板人体,使用第1节所述的体型调节方法,采集了身高160~180 cm的各种体型80个,部分体型样本如图3所示.
图3 部分体型调节样例Fig.3 Some samples of human body
3.1.2 衣服特征提取
在线试衣阶段,本文依靠精细网格的衣服模拟结果来添加细节,因此,在样本采集阶段,通过对粗网格衣服模型细分生成精细模型,对于每一个体型样本,同时模拟两种精度的衣服模型结果,将两个样本作为键值对存储起来.键作为索引的关键,要充分体现衣服在特定体型下的特征,主要表现为衣服的轮廓和褶皱.由于将整件粗网格衣服的模拟结果当作键值会增加样本采集的数量,因此本文提取了衣服面片级特征.
基于以下两点假设:(1)布料粗网格发生褶皱的部位是由粗网格面片在人体坐标系中的位置决定的;(2)布料粗网格褶皱表现是由网格面片之间的夹角决定的.这里提取的面片级特征如下:设第i(i=1,2,…,W)个体型对应的粗细网格衣服样本分别为Xi和Y i,粗网格衣服三角面片数为N,对于Xi中的每一个三角面片t k(v tk,1,v tk,2,v tk,3),vtk,j∈R1×3(j=1,2,3,k=1,2,…,N),其相邻的3个三角面片分别为a,b,c,如图4所示,则tk的特征表示为ei,tk= (vtk,1,vtk,2,vtk,3,va,2,vb,2,vc,2).tk的3个顶点位置决定了褶皱的部位,另外3个相邻三角面片的非共享顶点位置决定了面片之间的夹角,将存储粗网格衣服的模拟结果所有面片级特征作为键集合K.
图4 粗网格衣服的面片特征Fig.4 Triangle feature of coarse cloth mesh
精细网格是通过对粗网格细分产生的,本文采用多面体细分方法(如图5所示),将粗网格的单个面片细分为16个面片,经过物理模拟之后将产生更多的褶皱细节,这些细节特征是由细分后的面片顶点位置决定的.针对粗网格的每一个面片,细网格都有对应的16个面片,将这16个面片的所有顶点位置作 为 精 细 网 格 的 面 片 级 特 征,即ei,t′k= (vt′k,1,vt′k,2,…,v t′k,15),则存储细网格衣服模拟结果的值集合V为
K中的每一个键都与V中的值一一对应,构成键值对.
图5 粗网格面片的细分方法Fig.5 Coarse mesh subdivision
在线试衣是根据粗网格模拟的结果,搜索前期采集的样本数据,最终插值生成细网格衣服,从而达到快速模拟试衣效果的目的.
3.2.1 粗网格衣服模拟
在目标人体身上模拟粗网格衣服的结果,并提取网格面片的特征,作为索引精细网格面片的键值.本文关注如何快速模拟衣服的最终穿着效果,因此在粗网格衣服模拟稳定后再进行索引并插值细网格,并使用下式作为粗网格模拟的迭代终止条件.
其中:M=0.008 mm;vi,curr,vi,pre分别为粗网格衣服相邻两次模拟后的顶点;V为粗网格顶点集合;N为顶点个数.
粗网格衣服模拟结束后,提取每个面片的特征向量,如何将特征向量转化为索引精细网格面片的键值是这一阶段的关键.本文根据前期采集的样本特征,以距离d=‖e i-e j‖表征特征i与特征j之间的相似度,使用k近邻搜索(KNN)方法,并以kdtree作为划分高维空间的数据结构,针对每个实时模拟的粗网格面片ti,特征向量为e ti,在该面片所对应的粗网格特征向量数据库中,搜索k个邻近的特征向量,于是,e ti转化为k个键值的体型样本索引集合I,如图6所示.
图6 细网格衣服的生成过程Fig.6 The process of generating fine mesh cloth
在搜索k近邻特征向量之前,需要将搜索域的数据载入内存,样本数据量较大会占用过多内存.因此,根据体型特征确定载入内存的样本数据.本文在粗网格衣服模拟的同时,同样使用KNN方法并行查找与当前体型最邻近的k个体型样本,并将这些样本对应的粗细网格衣服特征载入内存,从而降低搜索域的范围,减少内存消耗.
3.2.2 细网格衣服的生成
根据粗网格衣服每一个面片特征的k个键值,从样本数据库中索引k个细网格面片特征,在使用k近邻搜索时,本文能够得到当前面片特征与k个邻接点 之间的距离d j= ‖e ti-e j,ti‖,j∈I(如图6所示),使用反距离加权插值法求得细网格特征计算如下式所示.
细网格特征为一系列顶点坐标的顺序排列,因此,细网格衣服的生成只需要使用特征向量替换粗网格衣服细分后所对应的面片特征,针对细网格不同面片特征中的共享顶点,本文使用均值方法生成共享顶点的最终坐标.
由于插值整合后的衣服与目标人体之间没有碰撞检测,可能会产生衣服渗入人体的现象(如图7(a)所示),设插值后的细网格衣服为Y,顶点集合为V,本文参考文献[11]的思想,将细网格的调整转化为求解如下最优化问题:
其中:P为渗入的顶点集合;y i为衣服的顶点坐标;p i为y i在其最近的人体模型面片上的投影点;y′i为上一次调整优化的顶点坐标,初始值为插值后的衣服顶点;N i为顶点i的邻接点集合;ωs和ωd分别表征平滑项和阻尼项的权重,在本文中,ωs=6.0,ωd=0.8.由于本文的衣服细网格相对于人体粗模型更加精细,按照文献[11]将渗入人体的衣服顶点移动到最近的人体网格顶点会导致衣服网格的扭曲,因此,本文选择将渗入的顶点沿其最近的人体模型面片的投影方向移动到面片表面.SY和D Y分别为平滑项和阻尼项,这两项是为了合理地移动渗入的顶点,保证衣服调整的平滑性,并维持衣服表面的褶皱细节.
上述目标函数实际为多个关于衣服顶点的线性方程的平方和,使用最小二乘化解为求稀疏线性方程组的解.本文通过对线性方程组系数矩阵的LU分解,能够快速求得上述最优化问题的解.1次迭代优化的过程如图7所示.
图7 优化过程Fig.7 Optimization process
本文使用11个人体体型调节参数,采集80个体型样本,7个体型测试用例,1件长袖衣服模型,1个模板人体模型,实验部署在一台32位台式机上(处理器:Intel® CoreTM2 Q8300 2.5 GHz,内存:4 GB,显卡:GeForce GTS 250).以下提到的衣服模拟包括粗网格衣服模拟(coarse PBS,记为C-PBS)、细网格衣服模拟(fine PBS,记为F-PBS)和本文基于样本插值的快速衣服模拟(fast simulation,记为FS),涉及的衣服和人体模型如表1所示.
表1 衣服和人体模型信息Table 1 Information of cloth mode and human body model
FS在模拟粗网格阶段,使用低精度人体模型,使模拟达到实时;而作为插值来源的细网格衣服,为了捕获更真实的细节,在样本采集阶段,本文使用高精度的人体模型作为碰撞体.FS在搜索邻近的细网格样本插值过程中,插值样本的数量直接影响最后的衣服外观表现.样本数较少会导致高频细节过于丰富,容易产生噪声;样本数较多将增加采样粒度,降低KNN搜索和插值效率.经过实验证明,本文选择5个样本数据进行反距离加权插值能够得到较理想的结果,既抑制了大部分噪声,又保留了丰富的细节,如图8所示.
图8 衣服细网格物理模拟和样本插值结果Fig.8 Results of fine PBS and samples interpolation
本文通过调整模板人体,生成7组人体模型,部分体型参数如表2所示,并测试了这些体型下衣服的着装效果,如图9所示.在本文的实验环境和方法下,C-PBS和 F-PBS的模 拟 帧 率分别 为115和5帧/s.通过与F-PBS的过程相比,分别从虚拟试衣的着装时间和衣服模拟的外观特征来评估本文的衣服模拟方法.其中,衣服外观差异ε[2]评测使用下式:
其中:V为细衣服网格顶点集合;N为顶点数;vi,FS和vi,F-PBS分别为 FS和 F-PBS模拟结果的顶点坐标.FS将虚拟试衣的着装过程分为粗模拟、样本插值和优化3个阶段,实验结果如表3所示.
表2 测试组体型参数Table 2 Body parameters list in test group cm
图9 不同体型的人体着装效果Fig.9 The effect of virtual fitting for different body shape
表3 虚拟试衣实验记录Table 3 Experiment records of virtual fitting
从表3中可以看出,FS的虚拟着衣时间主要集中于前期粗模拟阶段,不同体型人体相对于同一件衣服的着装速度不同,当衣服适配体型时,粗网格衣服模拟能更快达到稳定状态.FS的衣服细节是通过插值获得,插值的时间并不受体型因素的影响,而优化的时间在于稀疏线性方程组的求解时间,由于优化是一个迭代的过程,会随衣服渗入人体的顶点位置的变化而变化,但基本可以在3次迭代内完成.FS能够在平均4.3 s情况下完成一次穿衣过程,速度约为F-PBS的50倍,而试衣的结果与F-PBS相似,平均外观差异为0.363 cm.因此,FS能够快速模拟衣服在不同体型身上的试穿效果,适用于虚拟试衣的场景.
FS的方法比较依赖样本的采样粒度,由表3可以看出,不同体型对应的外观差异是不同的.当衣服相较于体型偏大时,会产生更多的褶皱,如图10(a)所示,在这种情况下,前期体型采样粒度较大会丢失衣服的部分高频褶皱,但是依然能够捕捉到精细网格的轮廓和部分细节;而在体型与衣服适配的情况下,如图10(b)所示,FS能够较完整地还原细网格模拟的结果.
图10 F-PBS和FS的不同体型及采样粒度衣服模拟结果对比Fig.10 Results contrast of cloth simulation between F-PBS and FS for different body shape of samples size
本文从虚拟试衣的需求出发,建立不同体型与特定衣服着装的关系,提出了可适用于不同体型的衣服快速模拟方法.通过提取衣服的面片级特征,能够有效地表达衣服的变形细节,并将粗网格和细分后的面片特征分别作为索引与插值的对象,为实时模拟的粗网格面片提供更多的褶皱细节.由于插值和优化的过程是在粗网格模拟稳定后执行,使得虚拟试衣的时间接近粗网格衣服着装的时间,因此能够在3D虚拟试衣的实际应用中实现快速试衣.本文方法的不足在于前期数据准备阶段需要花费较多的时间,衣服样本数据占用的存储空间较大等,这些问题需要在后续工作中加以改进.
[1]CORDIER F,SEO H,MAGNENAT-THALMANN N.Madeto-measure technologies for an online clothing store[J].IEEE Computer Graphics and Applications,2003,23(1):38-48.
[2]ZHANG X,WONG L Y.Virtual fitting:Real-time garment simulation for online shopping[C]//ACM SIGGRAPH 2014 Posters.ACM,2014:41.
[3]ANGUELOV D,SRINIVASAN P,KOLLER D,et al.Scape:Shape completion and animation of people [J].ACM Transactions on Graphics,2005,24(3):408-416.
[4]KASAP M,MAGNENAT-THALMANN N.Parameterized human body model for real-time applications[C]//International Conference on Cyber Worlds. Hannover, Germany:IEEE,2007.
[5]KASAP M,MAGNENAT-THALMANN N.Sizing avatars from skin weights[C]//In Proc VRST.New York,USA:ACM Press,2009.
[6]YUAN M,KHAN I R,FARBIZ F,et al.A mixed reality virtual clothes try-on system [J].IEEE Transactions on Multimedia,2013,15(8):1958-1968.
[7]石敏,毛天露,夏时洪,等.布料动画方法研究进展及问题[J].计算机学报,2012,35(12):2446-2458.
[8]BRIDSON R,FEDKIW R,ANDERSON J.Robust treatment of collisions,contact and friction for cloth animation[J].ACM Transactions on Graphics,2002,21(3):594-603.
[9]GOLDENTHAL R,HARMON D,FATTAL R,et al.Efficient simulation of inextensible cloth [J]. ACM Transactions on Graphics,2007,26(3):49.
[10]KANG M K,LEE J.A real-time cloth draping simulation algorithm using conjugate harmonic functions[J].Computers& Graphics,2007,31(2):271-279.
[11]GUAN P,REISS L,HIRSHBERG D A,et al.DRAPE:Dressing any person[J].ACM Transactions on Graphics,2012,31(4):35.
[12]WANG H,HECHT F,RAMAMOORTHI R,et al.Examplebased wrinkle synthesis for clothing animation[J].ACM Transactions on Graphics,2010,29(4):107.
[13]KIM D,KOH W,NARAIN R,et al.Near-exhaustive precomputation of secondary cloth effects[J].ACM Transactions on Graphics,2013,32(4):87.
[14]HAHN F,THOMASZEWSKI B,COROS S,et al.Subspace clothing simulation using adaptive bases[J].ACM Transactions on Graphics,2014,33(4):105.
[15]SELLE A,SU J,IRVING G,et al.Robust high-resolution cloth using parallelism,history-based collisions,and accurate friction[J].IEEE Transactions on Visualization and Computer Graphics,2009,15(2):339-350.
[16]BARAFF D,WITKIN A.Large steps in cloth simulation[C]//In Proc SIGGRAPH. New York, USA: ACM Press,1998.
[17]TESCHNER M,HEIDELBERGER B,MUELLER M,et al.Optimized spatial hashing for collision detection of deformable objects[C]//Proceedings of Vision,Modeling,Visualization.2003:47-54.
[18]CHEN Z,FENG R,WANG H.Modeling friction and air effects between cloth and deformable bodies[J]. ACM Transactions on Graphics,2013,32(4):88.
Fast Garment Simulation Method for Different Human Body Shape
HUANGLei,YANGXu-bo
(School of Software,Shanghai Jiaotong University,Shanghai 200240,China)
An sample-interpolation based garment simulation method is presented.In early stage,coarse and refined garment simulation results are sampled for different human body with physical based simulation(PBS),then,refined garment samples are acquired by mesh features of coarse ones when simulating in online stage.At last,the fine samples'meshes based on inverse distance weights are interpolated and synthesized to an integrated garment.Experimental result shows the method can fast simulate details of garment on different human body.
virtual try-on;garment simulation;human body shape;sample-interpolation
TP 391
A
2014-11-14
国家自然科学基金资助项目(61173105,61373085)
黄 磊(1991—),男,安徽合肥人,硕士研究生,研究方向为虚拟现实.E-mail:hl_hfut@163.com
杨旭波(联系人),男,教授,E-mail:yangxubo@sjtu.edu.cn
1671-0444(2015)05-0631-07