一种基于骨架的快速试衣方法转让专利

申请号 : CN201810311829.1

文献号 : CN108537888B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴难难金小刚

申请人 : 浙江大学

摘要 :

本发明公开了一种基于骨架的快速试衣方法,涉及计算机图形,布料仿真,虚拟试衣与计算机动画领域。所述快速试衣方法包括以下步骤:输入三维衣服模型和三维人体模型;生成衣服模型的骨架和蒙皮权重;通过优化评价函数,将人体模型的骨架试穿到三维服装模型上;根据骨架关节的变形,对三维人体模型做相同的变形;利用物理仿真和碰撞检测,解决三维人体模型和三维服装模型的贯穿问题;恢复人体姿势,得到原始姿势下的试穿效果。该方法能够将三维服装模型试穿到任意姿势和体型的三维人体模型上,得到服装在给定姿势下的试穿效果。本发明保持了服装的大小,为后续评判服装是否合身做好了准备。

权利要求 :

1.一种基于骨架的快速试衣方法,包括以下步骤:

(1)输入三维衣服模型以及三维人体模型;

(2)生成步骤(1)中输入的三维人体模型的骨架和蒙皮权重;

(3)通过优化评价函数,将骨架试穿到步骤(1)中输入的三维服装模型上;

(4)根据步骤(3)中骨架关节的变形,对三维人体模型做相同的变形;

(5)利用物理仿真和碰撞检测,解决步骤(4)中三维人体模型和三维服装模型的贯穿问题;

(6)做与步骤(4)相反的变形操作,恢复人体姿势,得到原始姿势下的试穿效果;

步骤(3)中所述评价函数是基于骨架和服装的位置关系的,其公式为:其中,E是评价函数,S是骨骼上的采样点集合,p是其中一个采样点,δ(p)是采样点p的评价指标:其中,Mg是三维服装模型,nq是q的外法向,s是惩罚因子,q是距离采样点p最近的服装模型表面的点;当p在q的内侧时 其值就是点p和点q的距离;当p在q的外侧时表示当前采样点位置不合理,需要乘以一个负数惩罚因子s。

2.如权利要求1所述的基于骨架的快速试衣方法,其特征在于,步骤(1)中输入的三维衣服模型至少包括一件衣服。

3.如权利要求1所述的基于骨架的快速试衣方法,其特征在于,步骤(1)中的三维衣服模型和三维人体模型为网格模型,所述网格模型为三角形网格或四边形网格。

4.如权利要求1所述的基于骨架的快速试衣方法,其特征在于,步骤(2)中三维人体模型的骨架和蒙皮权重使用专业软件手工生成,或自动将现有的骨架结构嵌入到三维人体模型中,再根据热扩散方程生成相应的蒙皮权重。

5.如权利要求1所述的基于骨架的快速试衣方法,其特征在于,步骤(3)包括以下步骤:(3.1)根据输入的服装类型确定参与运算的骨架;

(3.2)变形骨架,使得骨架和服装最匹配,评价函数的值最大。

6.如权利要求1所述的基于骨架的快速试衣方法,其特征在于,步骤(4)中所述的变形的方法选自线性混合蒙皮Linear Blending Skinning或双四元数蒙皮Dual Quaternion Skinning。

7.如权利要求1所述的基于骨架的快速试衣方法,其特征在于,步骤(5)中所述的贯穿问题的解决方法选自基于人体表面体素化的方法、基于距离场的方法或基于人体包围盒的方法。

说明书 :

一种基于骨架的快速试衣方法

技术领域

[0001] 本发明涉及计算机图形,布料仿真,虚拟试衣与计算机动画领域,特别是涉及一种基于骨架的快速试衣方法。

背景技术

[0002] 将给定的三维虚拟服装试穿到任意姿势和体型的三维虚拟人体上具有极大的价值,尤其在网上购物商城,虚拟试衣间等应用中。传统的二维到三维(2D-to-3D)方案包括三维纸样位置摆放、缝合、悬垂仿真三步。然而这个过程十分耗时耗力。
[0003] 大多数现有的三维试衣方法主要基于参考人体模型和目标人体模型的对应关系,或变形目标人体模型去适应服装模型,或变形服装模型去适应目标人体模型。然而,当参考人体模型缺失时,这些方法将无法工作。
[0004] 为解决这个问题,Li等人提出了一种无需参考人体模型的方法(参见Jituo Li,Juntao Ye,Yangsheng Wang,Li Bai,and Guodong Lu.Fitting 3d garment models onto individual human models.Computers&graphics,34(6):742–755,2010),但是该方法需要手工生成衣服的骨架。
[0005] 随后,Lu(参见Luchen Huang and Ruoyu Yang.Automatic alignment for virtual fitting using 3d garment stretching and human body relocation.The Visual Computer,32(6-8):705–715,2016.)等人提出了一种自动化、无需参考人体模型的试衣方法。然而该方法只能处理短袖衬衫和裤子,且要求服装左右对称,这极大的限制了该方法的应用。
[0006] 最近,Tisserand等人(参见Yvain Tisserand,Louis Cuel,and Nadia Magnenat-Thalmann.Automatic 3d garment positioning based on surface metric.Computer Animation and Virtual Worlds,28(3-4),2017.)提出了一种评判人体模型和服装模型位置关系的评价函数,该评价函数同时考虑到人体模型和服装模型顶点的空间位置和法向。通过优化该评价函数,可以变形人体模型,去适应服装模型。然而,该方法的评价函数求解函数较为耗时。
[0007] 公开号为CN105654334A的专利文献公开了一种虚拟试衣方法和系统。其中,该方法至少包括:获取着装的参考人体模型以及未着装的目标人体模型;为参考人体模型和所述目标人体模型分别嵌入相同层次结构的骨架;对参考人体模型和目标人体模型的骨架进行皮肤绑定;计算目标人体模型骨架中骨头的旋转量,递归调整目标人体模型骨架中的所有骨头,使目标人体模型骨架与所述参考人体模型骨架的姿势保持一致;根据目标人体模型骨架中骨头的旋转量,利用LBS蒙皮算法进行目标人体模型的皮肤变形;将服装模型从参考人体模型上迁移到目标人体模型上。通过本发明,解决了如何在保持衣服在试穿前后尺寸不变的情况下,完成衣服在不同人体、不同姿势下的自动化试穿的技术问题。
[0008] 在未来的虚拟服装商店将有成千上万套服装模型,顾客输入自己的三维人体模型、选择一套服装,系统将输出试穿效果。此过程需要快速且全自动,否则会影响用户体验。因此,如何快速、全自动的将给定的服装试穿到不同体型不同姿势的人体模型上,是虚拟试衣领域的重要且具有很大价值的问题。

发明内容

[0009] 为了解决如何快速、全自动的将给定的服装试穿到不同体型不同姿势的人体模型上的问题,本发明提供了一种基于骨架的快速试衣方法,对于给定的各种种类的服装模型,该方法能够将其试穿到不同姿势不同体型的三维人体模型上。
[0010] 为了解决上述技术问题,本发明提供如下技术方案:
[0011] 一种基于骨架的快速试衣方法,所述方法包括以下步骤:
[0012] (1)输入三维衣服模型以及三维人体模型;
[0013] (2)生成步骤(1)中输入的三维人体模型的骨架和蒙皮权重;
[0014] (3)通过优化评价函数,将骨架试穿到步骤(1)中输入的三维服装模型上;
[0015] (4)根据步骤(3)中骨架关节的变形,对三维人体模型做相同的变形;
[0016] (5)利用物理仿真和碰撞检测,解决步骤(4)中三维人体模型和三维服装模型的贯穿问题;
[0017] (6)做与步骤(4)相反的变形操作,恢复人体姿势,得到原始姿势下的试穿效果。
[0018] 其中,步骤(1)中的三维衣服模型和三维人体模型为网格模型,所述网格模型为三角形网格或四边形网格。衣服可以由专业的制衣软件如CLO3D、Marvelous Designer生成,或用三维扫描仪扫描真实的衣服生成。三维人体模型用三维扫描仪扫描真实的人体生成,或用专业的软件如MakeHuman、Maya生成。
[0019] 步骤(1)中输入的三维衣服模型为至少包括一件衣服的三维模型。
[0020] 所述三维衣服模型为选自上衣、裤子或裙子中的一件或至少两件的组合。
[0021] 所述三维衣服模型可以为单层单件、单层多件或多层多件,如一件上衣、裤子或裙子,一件上衣和一件裤子,多件上衣和多件裤子。
[0022] 步骤(1)中输入的三维人体模型为任意的姿势和体型。任意的姿势和体型是指具有不同的姿势和不同的身高、体重或三围尺寸。
[0023] 步骤(2)生成的三维人体模型的骨架为任意的结构。任意的结构是指骨架具有不同数量的骨头以及骨架可以具有不同的层次结构。
[0024] 步骤(2)中,生成步骤(1)中输入的三维人体模型的骨架和蒙皮权重的方法选自手动的方法或自动化的方法。
[0025] 手动的方法是指使用专业的软件,如3Ds Max、Maya,手动的摆放骨架、刷权重。自动化的方法可自动生成模型的骨架和蒙皮权重,如Baran等人提出的方法,可自动将现有的骨架结构嵌入到三维人体模型中,再根据热扩散方程生成相应的蒙皮权重(参见Ilya Baran and Jovan Popovi′c.Automatic rigging and animation of 3d characters.ACM Trans.Graph.,26(3):72,2007.)。该方法在业界比较流行,且有Blender和Maya插件。
[0026] 步骤(3)的具体过程为:
[0027] (3.1)根据输入的服装类型确定参与运算的骨架。我们的目标是将骨架嵌入到衣服的合适位置,那些不会被衣服覆盖的骨头无需处理,也就是说,只需要考虑那些可能被衣服覆盖的骨头。例如,对于长袖衬衫,腿的位置不会对试衣过程造成影响,只需考虑上半身的骨头。
[0028] (3.2)变形骨架,使得骨架和服装最匹配,评价函数的值最大。对骨架做旋转平移操作,尝试各种姿势,找到最匹配服装的姿势和位置。评价函数用于判断什么样的骨架姿势和位置是较好的。评价函数是基于骨架和服装的位置关系的,其公式为:
[0029]
[0030] 其中,E是评价函数,S是骨骼上的采样点集合,p是其中一个采样点,δ(p)是采样点p的评价指标,其定义为:
[0031]
[0032] 其中,Mg是三维服装模型, 是q的外法向,s是惩罚因子,为负数,q是距离采样点p最近的服装模型表面的点;当p在q的内侧时 其值就是点p和点q的距离;当p在q的外侧时 表示当前采样点位置不合理,需要乘以一个负数惩罚因子s。
[0033] 评价指标δ(p)的值越大,采样点的位置越合理,即,距离服装的内表面的最小距离最大。
[0034] 评价函数E的值越大,骨架与服装的匹配度越高。
[0035] 评价指标的合理性在于,实际生活中,当衣服穿在人体上,人体的骨骼基本位于对应衣服部位的中间,此时骨骼到衣服内表面的最小距离最大。
[0036] 实际求解中,为避免维数诅咒(Curse of Dimensionality),可将问题松弛化(Relaxation),即,将并行的问题转换成串行的问题,逐一优化每块骨头的评价函数Ei,[0037] 其中Si是第i个骨头的采样点。
[0038]
[0039] 具体步骤为:
[0040] (3.2.1)全局旋转
[0041] 以根关节(本实施例中选择尾椎骨附近的关节作为根关节)作为原点,将整个骨架看成刚体进行三个自由度的旋转,以最优化整体的评价函数E。每次旋转的角度可根据实际情况调整。
[0042] (3.2.2)全局平移
[0043] 将整个骨架看成刚体进行三个自由度的平移,以优化整体评价函数E。每次平移的步长为服装网格边长的平均值,并可根据实际情况调整。
[0044] (3.2.3)依次旋转每个骨头
[0045] 依次旋转第i个骨头,以优化该骨头的评价函数Ei。由于父骨骼的旋转会影响子骨骼的位置,因此骨骼的旋转顺序为,父骨骼先旋转,子骨骼后旋转,例如,大腿骨先旋转,小腿骨后旋转。每次旋转的角度可根据实际情况调整。
[0046] 步骤(4)中,使用步骤(2)生成的蒙皮权重和步骤(3)骨架的变形矩阵,对三维人体模型的表面网格做相同的变形。经过步骤(3),人体模型的骨架已处于最合理的位置,经过此步骤,人体模型的表面网格也将处于最合理的位置。
[0047] 由于后续的步骤还将对人体模型做姿势恢复,因此本步骤使用的变形方法对最终的结果影响不大。可选的变形方法包括线性混合蒙皮(Linear Blending Skinning)、双四元数蒙皮(Dual Quaternion Skinning)。
[0048] 经过步骤(4),虽然人体模型的表面网格已处于最合理的位置,但由于人体模型的体型与服装不匹配等因素,服装模型与人体模型相互贯穿的现象经常发生。
[0049] 在步骤(5)中,使用物理仿真中的碰撞处理方法解决相互贯穿问题。可以使用的碰撞处理方法包括基于人体表面体素化的方法(参见Dongliang Zhang and Matthew Ming-Fai Yuen.Collision detection for clothed human animation.In Proc.of Pacific Graphics’00,pages 328–337.IEEE,2000.)、基于距离场的方法、基于人体包围盒的方法(参见Teschner M,Kimmerle S,Heidelberger B,et al.Collision detection for deformable objects[C]//Computer graphics forum.Blackwell Publishing Ltd.,2005,24(1):61-81.)。
[0050] 步骤(6)可看成步骤(4)的逆向操作,不同的是,步骤(4)中,只需做一次变形,便将人体模型从初始的姿势变形到匹配服装模型的姿势;而步骤(6)中,需要缓慢的将人体模型变回到初始的姿势。这是因为恢复人体模型姿势的过程需要配合物理仿真和碰撞处理,以获得真实的试穿效果,如果变形过大,人体模型和服装模型之间将出现过大的穿透问题,碰撞处理也无法解决,导致服装仿真失败。
[0051] 因此需要在当前姿势与目标姿势之间做插值,常用的插值方法有四元数插值(Quaternion Interpolation)和球面线性插值(Spherical Linear Interpolation)。
[0052] 与现有的试衣方法不同的是,本发明提供了一种基于骨架的快速试衣方法,并具有以下技术效果:
[0053] (1)本发明提供的试衣方法可以将给定的任意类型的服装模型、任意姿势和体型的人体模型,通过求解骨架和蒙皮权重、骨架匹配、人体变形、穿透解决、姿势恢复等五步,最终获得服装在给定姿势下的试穿效果。并保持了服装的原始大小,具有潜在的实际价值。
[0054] (2)本发明提供的评价函数可以很好判断骨架和各种类型的服装(包括,上衣、裙子、裤子、多层服装、一套服装等)的匹配关系。该评价函数可快速求解并优化,适用于实时虚拟试衣等应用。

附图说明

[0055] 图1为本发明提供的基于骨架的快速试衣方法的流程图。

具体实施方式

[0056] 下面结合附图及具体实施例对本发明进行详细说明。
[0057] 如图1所示,本发明提供的基于骨架的快速试衣方法包括以下步骤:
[0058] (1)输入三维衣服模型以及任意姿势和体型的三维人体模型
[0059] 三维衣服模型和三维人体模型为网格模型,所述网格模型为三角形网格或四边形网格。衣服由专业的制衣软件如CLO 3D、Marvelous Designer生成,或用三维扫描仪扫描真实的衣服生成。三维人体模型用三维扫描仪扫描真实的人体生成,或用专业的软件如MakeHuman、Maya生成。
[0060] 步骤(1)中输入的三维衣服模型至少包括一件衣服。
[0061] 步骤(1)中输入的三维人体模型为任意的姿势和体型。任意的姿势和体型是指具有不同的姿势、身高、体重或三围尺寸。
[0062] (2)生成步骤(1)中输入的三维人体模型的骨架和蒙皮权重。
[0063] 使用3Ds Max、Maya等专业软件手动摆放骨架、刷权重。或者使用Baran等人提出的方法,自动的将现有的骨架结构嵌入到三维人体模型中,再根据热扩散方程生成相应的蒙皮权重(参见Ilya Baran and Jovan Popovi′c.Automatic rigging and animation of 3d characters.ACM Trans.Graph.,26(3):72,2007.)。该方法在业界比较流行,且有Blender和Maya插件。
[0064] 步骤(2)生成的三维人体模型的骨架为任意的结构。任意的结构是指骨架具有不同数量的骨头以及骨架可以具有不同的层次结构。
[0065] (3)通过优化评价函数,将骨架试穿到步骤(1)中输入的三维服装模型上,分为以下步骤:
[0066] (3.1)根据输入的服装类型确定参与运算的骨架。我们的目标是将骨架嵌入到衣服的合适位置,那些不会被衣服覆盖的骨头无需处理,也就是说,只需要考虑那些可能被衣服覆盖的骨头。例如,对于长袖衬衫,腿的位置不会对试衣过程造成影响,只需考虑上半身的骨头。
[0067] (3.2)变形骨架,使得评价函数最优,评价函数的值最大。对骨架做旋转平移操作,尝试各种姿势,找到最匹配服装的姿势和位置。评价函数用于判断什么样的骨架姿势和位置是较好的。评价函数是基于骨架和服装的位置关系的,其公式为:
[0068]
[0069] 其中,E是评价函数,S是骨骼上的采样点集合,p是其中一个采样点,δ(p)是采样点p的评价指标,其定义为:
[0070]
[0071] 其中,Mg是三维服装模型, 是q的外法向,s是惩罚因子,为负数。δ(p)首先寻找距离采样点p最近的服装模型表面的点q,当p在q的内侧时 其值就是点p和点q的距离;当p在q的外侧时 需要乘以一个负数惩罚因子s,表示当前采样点位置不合理。
[0072] 评价指标δ(p)的值越大,采样点的位置越合理,即,距离服装的内表面的最小距离最大。
[0073] 评价指标的合理性在于,实际生活中,当衣服穿在人体上,人体的骨骼基本位于对应衣服部位的中间,此时骨骼到衣服内表面的最小距离最大。
[0074] 实际求解中,为避免维数诅咒(Curse of Dimensionality),可将问题松弛化(Relaxation),即,将并行的问题转换成串行的问题,逐一优化每块骨头的评价函数Ei,[0075] 其中Si是第i个骨头的采样点。
[0076]
[0077] 具体步骤为:
[0078] (3.2.1)全局旋转
[0079] 以根关节(本实施例中选择尾椎骨附近的关节作为根关节)作为原点,将整个骨架看成刚体进行三个自由度的旋转,以最优化整体的评价函数E。每次旋转的角度为0.02弧度,并可根据实际情况调整。
[0080] (3.2.2)全局平移
[0081] 将整个骨架看成刚体进行三个自由度的平移,以优化整体评价函数E。每次平移的步长为服装网格边长的平均值,并可根据实际情况调整。
[0082] (3.2.3)依次旋转每个骨头
[0083] 依次旋转第i个骨头,以优化该骨头的评价函数Ei。由于父骨骼的旋转会影响子骨骼的位置,因此骨骼的旋转顺序为,父骨骼先旋转,子骨骼后旋转,例如,大腿骨先旋转,小腿骨后旋转。每次旋转的角度为0.02弧度,并可根据实际情况调整。
[0084] (4)根据步骤(3)中骨架关节的变形,对三维人体模型做相同的变形[0085] 步骤(4)中,使用步骤(2)生成的蒙皮权重和步骤(3)骨架的变形矩阵,对三维人体模型的表面网格做相同的变形。经过步骤(3),人体模型的骨架已处于最合理的位置,经过此步骤,人体模型的表面网格也将处于最合理的位置。
[0086] 由于后续的步骤还将对人体模型做姿势恢复,因此本步骤使用的变形方法对最终的结果影响不大。可选的变形方法包括线性混合蒙皮(Linear Blending Skinning)、双四元数蒙皮(Dual Quaternion Skinning)。
[0087] (5)利用物理仿真和碰撞检测,解决步骤(4)中三维人体模型和三维服装模型的贯穿问题;
[0088] 经过步骤(4),虽然人体模型的表面网格已处于最合理的位置,但由于人体模型的体型与服装不匹配等因素,服装模型与人体模型相互贯穿的现象经常发生。
[0089] 在步骤(5)中,使用物理仿真中的碰撞处理方法解决相互贯穿问题。可以使用的碰撞处理方法包括基于人体表面体素化的方法(参见Dongliang Zhang and Matthew Ming-Fai Yuen.Collision detection for clothed human animation.In Proc.of Pacific Graphics’00,pages 328–337.IEEE,2000.)、基于距离场的方法、基于人体包围盒的方法(参见Teschner M,Kimmerle S,Heidelberger B,et al.Collision detection for deformable objects[C]//Computer graphics forum.Blackwell Publishing Ltd.,2005,24(1):61-81.)。
[0090] (6)做与步骤(4)相反的变形操作,恢复人体姿势,得到原始姿势下的试穿效果。
[0091] 步骤(6)可看成步骤(4)的逆向操作,不同的是,步骤(4)中,只需做一次变形,便将人体模型从初始的姿势变形到匹配服装模型的姿势;而步骤(6)中,需要缓慢的将人体模型变回到初始的姿势。这是因为恢复人体模型姿势的过程需要配合物理仿真和碰撞处理,以获得真实的试穿效果,如果变形过大,人体模型和服装模型之间将出现过大的穿透问题,碰撞处理也无法解决,导致服装仿真失败。
[0092] 因此需要在当前姿势与目标姿势之间做插值,常用的插值方法有四元数插值(Quaternion Interpolation)和球面线性插值(Spherical Linear Interpolation)。