MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 纤维可控的质感布料三维建模与服装仿真
  软件学报  2016, Vol. 27 Issue (10): 2587-2599   PDF    
纤维可控的质感布料三维建模与服装仿真
朱东勇1, 李重1, 马利庄2     
1. 浙江理工大学 数学科学系, 浙江 杭州 310018 ;
2. 上海交通大学 计算机科学与工程系, 上海 200240
摘要: 传统布料和服装动态仿真主要通过网格模型进行模拟,并通过光照、材质和颜色设置进行渲染,布料与服装质感效果通常无法体现.提出一种新的基于纤维的质感布料建模与服装仿真算法.首先使用集合球约束粒子扰动的方法模拟纤维轮廓,然后根据纱线加捻的动力学和运动学原理模拟基于纤维的纱线构造方法,之后将纱线经纬编织组织结构与弹簧-质点模型结合起来,构造基于纤维块的织物布料模型,最后通过建立人体混合层次包围盒进行快速碰撞检测,实现由质感布料生成的服装动态仿真.实验结果表明,该方法可靠、有效,生成的布料能够体现出织物外观纤维级别的细节,对应的服装几何纹理和质感效果得到增强.
关键词: 纤维     纱线     织物     服装     质感    
Fiber-Based 3D Cloth Modeling and Garment Simulation with Photorealistic Appearance
ZHU Dong-Yong1, LI Zhong1, MA Li-Zhuang2     
1. Department of Mathematical Sciences, Zhejiang Sci-Tech University, Hangzhou 310018, China ;
2. Department of Computer Science & Engineering, Shanghai Jiaotong University, Shanghai 200240, China
Foundation item: Foundation item: National Natural Science Foundation of China (11671009); Scientific Research Starting Foundation for the Returned Overseas Chinese Scholars, Ministry of Education of China ([2009]1590); Natural Science Foundation of Zhejiang Province, China (LY14A010032); Zhejiang Province Key Science and Technology Innovation Team Project (2013TD18); Project of 521 Excellent Talent of Zhejiang Sci-Tech University
Abstract: Traditional cloth and garment simulation is normally based on the mesh model where cloth and garment are generally rendered according to the lighting, texture and color setting, which cannot fully reflect their photorealistic appearance. This paper proposes a novel fiber-based cloth and garment simulation algorithm that facilitates photorealistic appearance. The algorithm first uses the sphere set constraining the particle perturbation to express the contour of fiber, and then simulates the fiber-based yarn reconstruction helped by the dynamics and kinematics principle of yarn twisting process. Next, it combines the organization structure of the yarn warp knitting with the mass spring model to construct the cloth model based on the fiber blocks. Finally, it builds up the hybrid bounding volume hierarchy of the human body model to speed up the collision detection between the body model and the garment composed of the fiber based cloth, which helps achieving satisfactory dynamic simulation. Experimental results show that the presented method is valid and effective, as it can reflect the detail in the fiber level of the cloth models and express the geometric texture and the photorealistic appearance of garments.
Key words: fiber     yarn     cloth     garment     photorealistic appearance    
1 引言

现实世界中, 布料、衣服等织物是人们日常生活中的必需品, 占有非常重要的地位.如何用计算机去模拟逼真的布料外观及其服装动态变形效果, 在众多领域中有着非常重要的应用价值, 例如电影特技、动画游戏、服装设计、电子商务等, 因此一直是当今计算机辅助设计和图形学中的研究热点和具有挑战性的课题[1, 2].

由于布料、衣服等织物形态的复杂多变, 如何运用仿真技术对其进行建模及其动态模拟引起了学者们浓厚的兴趣.三维布料仿真建模大致可分为两类:一类是基于网格面片的布料仿真, 这种技术使用网格面片表示布料, 对布料建立力学模型, 使布料产生逼真的形变和皱褶, 并获得真实而连贯的复杂变形动画.基于网格面片的布料仿真主要使用3种模型:几何模型、物理模型以及混合模型.基于几何模型的方法不考虑布料物理性质, 使用数学方法建模, 用来模拟复杂的几何细节, 如Decaudin[3]和Jing[4]使用几何建模的方法实时地生成布料褶皱等.基于物理模型的方法则使用力学方法对布料进行建模, 用来模拟布料的物理性质.如Provot[5]基于四边形网格提出了质点-弹簧模型, 把布料想象成由一个个质点组成的网格, 质点之间用弹簧连接, 通过受力分析进行形变.质点-弹簧模型直观且易于构造, 模拟真实性较好.但模型中采用的弹簧都假设是线性的, 有时会产生过度拉伸现象.Baraff等人[6]采用三角网格建立布料模型, 将伸缩形变和剪切形变归结在三角面片内, 通过共边的两个相邻三角面片表达弯曲变形, 并在采用大步长半隐式积分法的情况下, 保持了仿真稳定性, 有效地解决了变形约束、阻尼、碰撞等问题.Choi等人[7]在Baraff的半隐式框架基础上提出了失稳模型, 提高了系统的稳定性, 并产生了更加丰富的布料褶皱.基于物理模型的方法比几何模型建模相对简单, 可以模拟出更具真实感的布料变形, 但计算耗时.结合两种模型优点, 学者们提出了混合模型建模方法.如Hadap[8]使用粗糙的网格模型进行数值积分模拟, 使得布料的仿真更加快速, 同时使用几何方法产生更加细微的皱褶, 大大减少了计算量.Kang等人[9]先对布料建立物理模型, 得到模型结构中的关键节点.然后再进行几何处理, 根据得到的关键节点进行样条曲线插值, 从而得到骨架节点, 并由骨架节点得到内部节点, 布料仿真的真实度得到了有效提高.基于网格面片的布料仿真可以快速、较为逼真地模拟布料变形效果, 但是网格面片无法体现布料组织结构(如纱线)的细节, 在织物外观表现上存在一定的缺陷.

另一类是基于纱线结构的布料仿真, 这类方法的研究近年来已成为布料仿真的热点.该方法使用纱线作为构造表现织物的基本单元, 依靠纱线与纱线之间的相互作用实现织物的变形, 能够真实地体现织物组织结构特征, 更加逼真地展现织物外观.如Chu[10]使用B样条曲线去模拟纱线构造织物, 并模拟了织物的碰撞, 但是需要非常小的时间步长才能得到稳定的实验结果.Kaldor等人[11]为实现具有纱线结构的织物动态模拟, 提出了一种新的计算模型来定义纱线运动, 体现了纱线的力学特性.Schroder等人[1]提出了一种几何模型去体现织物局部的不规则和特征变化, 例如纱线区域局部的变薄或加厚或者毛羽效果, 并且从织物的图像中获取需要的几何参数.基于纱线结构的布料仿真可以很好地体现织物外观的细节, 在织物外观模拟上更加逼真, 但是由于计算量大, 还不能很好地实时模拟基于纱线的布料服装仿真效果.

为了得到更真实的服装动态变形效果及更快的模拟速度, 学者们提出了多种动态仿真方法, 如Wang等人[12]提出了一种基于实例的服装皱褶生成方法, 通过人体模型运动骨骼的姿势产生皱褶, 使实验结果更具真实性.Narain等人[13]提出了一种动态重定义和粗化三角网格的技术, 体现了布料模拟中几何和动态的细节.Chen等人[14]提出了一种快速、有效的算法检测布料和变形物体之间的碰撞, 同时采用了摩擦模型真实地处理布料复杂的摩擦特性, 最后定义了一种空气质量场去模拟由布料与变形物体之间的空气所引起的气压效应.Xu等人[15]提出了一种使用预先计算的服装造型实例实时地产生复杂布料变形方案, 对于一个给定的人体模型姿势, 该方法混合邻近实例的服装变形, 从而实时生成各种服装的逼真动画效果.

针对目前三维布料建模和服装动态仿真的研究现状, 我们发现, 基于网格面片的布料仿真由精度不高的面片模拟布料, 通过力学模型虽然可以快速地模拟织物动态变形, 但是不能很好地体现织物外观细节.基于纱线结构的布料仿真采用精度更高的纱线进行布料建模, 使用各种几何曲线模拟纱线, 构造织物组织结构, 在外观模拟效果上更具真实性, 但在动态仿真效果上还不能很好地达到实时模拟要求, 而且布料的一些微观结构特征(如纤维)仍不能得到体现, 服装质感效果还有待加强.这是因为, 传统服装真实感绘制主要通过光照、材质和颜色设置进行渲染, 会出现服装整体表面过光滑、局部放大失真等问题, 通常不能将几何细节体现出来.

本文另辟蹊径, 从服装微观层面(纤维)出发, 提出一种新的布料建模与服装动态仿真方法, 运用纤维粒子为基本单元模拟纱线和布料, 提取关键纤维点, 建立质点-弹簧结构, 进行三维质感服装仿真.该方法将纤维、纱线、布料与服装有效地结合起来, 实现四者之间建模、绘制与动态仿真的关联与统一.本文方法的主要贡献点有:

(1) 根据纤维的结构特征, 给出了一种基于集合球约束粒子扰动的纤维三维轮廓模拟方法.

(2) 提出一种纱线动态加捻的方法, 即基于加捻的运动学方程和动力学方程去模拟两根单纱加捻的过程, 得到纱线模型.

(3) 提出了一种以纤维块为单位的布料建模方法, 能够有效地将以纤维为单位的布料与传统质点-弹簧模型结合起来, 实现质感布料建模.

(4) 构造一种混合层次包围盒的人体服装碰撞检测方法, 能够快速地实现以纤维为单位的服装动态仿真.

2 质感布料的建模 2.1 纤维的构造

我们根据纤维的结构特征, 提出了一种基于集合球约束粒子扰动的纤维轮廓模拟方法, 即使用多个不同大小的球进行组合, 对球内的粒子进行扰动, 并结合光照模型得到不同形状的纤维轮廓.具体地, 首先根据纤维大致形状确定初始球体集合, 并构造纤维集合球的包围盒, 如图 1所示.然后设置粒子密度, 并通过粒子密度对包围盒进行等分, 得到粒子在三维空间的位置.我们保留在集合球内的粒子, 对其添加一个适当的位置扰动, 调节粒子的大小, 就可以得到基于粒子的纤维模拟.再结合光照模型, 给粒子贴上带alpha通道的纹理, 可使效果更加真实, 如图 2所示.

Fig. 1 Sphere representation for the fiber 图 1 纤维的球体形状表示

Fig. 2 Fiber simulation based on the particle system 图 2 粒子系统模拟的纤维

2.2 纱线的构造

通过上面的纤维建模, 我们可以构造出服装布料中的纱线.所谓纱线, 是由两根或两根以上的单纱合并加捻制成的股线.为了更加逼真地模拟纱线结构, 本文提出一种动态加捻的方法, 即基于加捻的运动学方程[16]和动力学方程[17]去模拟两根单纱加捻的过程, 得到最终的纱线模型.

2.2.1 加捻的运动学方程

我们可以利用捻度流分析纱线给定纤维粒子位置x处的捻度变化.经过时间dt后, 位于x-dx处的断面将前进到该给定位置x处, 其捻度变化主要由下列两个因素决定[16].

(1) 在x-dxx两断面处的转速差异.

(2) 在x-dxx两两断面处的捻度流差异.

在给定位置x处纱线捻度的时间变化率可看成上述两者之差, 因此得到纱线加捻过程中的运动学方程:

$ \partial T/\partial t + \partial (VT)/\partial x = \partial s/\partial x $ (1)

其中, T表示纱线捻度, V表示纱线前进的线速度, s为转速.

2.2.2 加捻的动力学方程

纱线加捻时, 我们还需考虑作用在加捻区纱段dx上的力矩, 主要有[16]:

(1) 纱线两端因扭转变形而产生的弹性扭矩.

(2) 加捻力矩mdx, 其中m是单位纱线段上作用的外加合力矩.

可由刚体动力学原理得到纱线加捻的动力学方程:

$ 2\pi I\left( {\frac{{\partial s}}{{\partial t}} + V\frac{{\partial s}}{{\partial x}}} \right) = c\frac{{\partial T}}{{\partial x}} + m $ (2)

其中, l为单位长度纱线的转动惯量, c为近似假设弹性扭矩与捻度T呈线性关系的系数.

2.2.3 纱线的动态加捻推导

加捻过程中(如图 3所示), 假设初始捻度为0的纱线以速度VA喂入加捻区, 且sc≡0.显然, 只在A, B两个位置上才有外力矩的作用.设纱线是均匀的, 并且它的回转惯量很小(I近似为0), 由方程(2)可知, 除A, B两点之外的其他位置上, 由于m=0, 所以$ \partial T/\partial x \approx 0 $.[17]

Fig. 3 Yarn twisting 图 3 纱线加捻

对加捻运动学方程(1)从AB, 再从BCx积分, 并利用不同位置的捻度和转速关系, 通过微分方程求解得到该加捻系统的过渡方程解:

$ \left\{ \begin{array}{l} {T_a} = \frac{{{s_a}}}{V}(1-{{\rm{e}}^{-Vt/a}})\\ {T_b} =-\frac{{{s_a}}}{V}\frac{a}{{a - b}}({{\rm{e}}^{ - Vt/a}} - {{\rm{e}}^{ - Vt/b}}) \end{array} \right., $

其中, aA, B两点间的距离, bB, C两点间的距离, saA点处的转速, TaTb分别表示a段和b段的捻度.从上述过渡方程解中可以清楚地分析得到对于给定纱线粒子的位置处捻度随时间的变化情况, 从而根据纱线粒子的运动过程动态模拟出纱线的加捻过程.

2.2.4 纱线动态加捻的步骤

根据纱线动态加捻的原理, 我们可使用所得力学方程求解纱线粒子的位置, 从而模拟出纱线动态加捻的过程, 并最终得到加捻后的三维纱线, 主要步骤如下.

Step 1. 根据模拟纤维时提取出的粒子(已知每个粒子在三维空间中的坐标), 把所有粒子均分为两份, 映射到两条平行相邻的线段上, 分别模拟两股单纱.

Step 2. 依据上述纱线动态加捻的力学方程, 由两股单纱中每个粒子在三维空间中的原始位置, 通过上述方法分析得到的纱线捻度随时间的变化情况, 得到粒子下一时间步长所在的位置, 动态地模拟出纱线加捻过程, 并得到最终加捻的纱线.

Step 3. 在分配好粒子位置后, 对所有粒子的位置可以利用随机函数进行一个随机的扰动, 从而增加纱线的宽度, 使纱线的三维效果更具真实性.

图 4表示了纱线动态加捻模拟过程的实现效果, 为了区分方便, 我们分别采用红色和绿色代表两股单纱.

Fig. 4 The dynamic process of yarn twisting ((a)~(d) represent the twisting state at the different time) 图 4 纱线动态加捻过程((a)~(d)分别表示不同时刻的加捻状态)

2.3 织物布料的模拟

对某一织物布料, 其织物组织通常由相互垂直的两个系统的纱线按照一定规律编织而成, 也就是经纬纱按照一定规律相互交织, 使织物表面形成纹路.经纱是水平方向排列的纱线, 纬纱是垂直方向排列的纱线.为了构造纱布的模型, 我们可将得到的纱线, 依据织物经纬纱的排列, 通过平移绘制其他经、纬纱, 从而实现纱布的三维模拟.图 5显示了不同编制结构的三维模拟布料.在模拟出三维织物的基础上, 我们还可以添加材质和光照效果, 设置经度和纬度上纱线的颜色可以得到三维质感织物, 即布料不仅通过光照和材质纹理显示, 还通过几何纹理的渲染, 其真实感效果得到增强.三维质感织物模拟效果如图 6所示.

Fig. 5 Cloth with different organization structures 图 5 不同编织结构的布料

Fig. 6 The textured fabric simulation 图 6 质感织物模拟效果

上述织物模拟中, 我们使用粒子模拟纱线, 进而通过经纬排列的方式实现织物的建模.为了实现织物的动态模拟, 我们需要对织物建立力学模型, 分析受力状况, 求解出织物在每个时刻的运动状态.目前织物动态模拟中的常用方法都是通过织物网格模型建立相应的物理模型.本文基于纤维的织物模拟中由于采用了大量的纤维粒子来模拟织物, 单纯地直接采用纤维粒子建立力学模型, 对织物的动态仿真速度势必会造成极大的制约, 无法满足实时模拟的要求.为了很好地实现质感织物的动态仿真, 本文提出一种以纤维块为单位的布料服装动态仿真方法.由于模拟的织物是由经纬排列组成, 我们可以先提取经纬方向纱线相交的纤维组织点作为关键点, 然后再建立织物动态模拟中常用的质点-弹簧模型, 将关键点作为质点-弹簧模型中的质点, 进行动态模拟.给定纱线上相邻的纤维关键点可构成纤维块, 对纤维块中的其他纤维点, 我们可以通过线性插值的方法得到其位置, 从而快速实现整个布料服装的动态仿真.其主要操作是质点-弹簧模型的构建和质点的碰撞检测响应.

3.1 质点-弹簧模型

为了实现基于纤维的布料动态模拟, 我们首先构造布料仿真中的质点-弹簧模型.该模型的主要思想是:将织物看作许多虚拟的质点组成, 每个质点有相应的质量, 并和它周围的质点以弹簧连接, 通过不同类型的弹簧模拟织物的不同机械特性, 包括模拟织物拉伸特性的拉伸弹簧, 模拟织物刚度特性的弯曲弹簧, 以及模拟织物剪切性能的剪切弹簧(如图 7所示).布料动态仿真中, 每个质点受到各种弹簧力、阻尼力、重力和风力等其他力的作用, 并在各种力的作用下运动, 使织物产生变形[5].

Fig. 7 Mass-Spring model and three kinds of spring models 图 7 质点-弹簧模型与3种弹簧模型

3.2 Verlet积分法

在织物布料动态仿真中, 我们需要进行碰撞检测和响应, 即需要计算布料质点-弹簧模型中的质点运动方程.应用基于物理的技术模拟织物时, 质点的运动方程有很多种求解方法, 本文采用了Verlet积分法[18].该方法是一种基于二阶显式微分的积分法, 主要思想是:通过物体位置以时间为参数的运动方程进行泰勒公式展开导出.

$ {x^{t-h}} = {x^t}-h{v^t} + \frac{{a{h^2}}}{2} + \cdot \cdot \cdot, $
$ {x^{t + h}} = {x^t} + h{v^t} + \frac{{a{h^2}}}{2} + \cdot \cdot \cdot $

其中, h为时间步长, xt-h为时刻t-h质点所在的位置, xt+h为时刻t+h质点所在的位置, 即我们需要求解得到的位置, 一步向前, 一步向后, 将以上相加可以得到:

$ {x^{t + h}} = 2{x^t}-{x^{t-h}} + a{h^2} + O({h^4}), $

变换得到:

$ {x^{t + h}} = {x^t} + ({x^t}-{x^{t-h}}) + a{h^2} + O({h^4}). $

这样, 我们就可以通过质点前一时刻xt-h的位置以及质点现在所在位置xt得到下一时刻的位置xt+h.该方法计算简便, 碰撞检测稳定性较好.

3.3 质感织物的动态模拟

传统织物动态模拟中, 织物通常是由网格模型表示, 将网格中顶点作为弹簧-质点模型中的质点, 从而实现织物动态模拟.对于本文使用纤维粒子模拟的织物来说, 它是由许多粒子点组成纱线, 进而用纱线按照经纬排列的方式进行模拟.为了实现动态仿真, 我们需要寻找织物结构中的关键点当作弹簧-质点模型中的质点, 建立物理模型.由于织物是由纱线按照经纬排列而成, 我们可将织物中经纬方向纱线相交的纤维点当作质点-弹簧模型中虚拟的质点(如图 8所示), 从而实现织物的动态模拟, 具体步骤如下.

Fig. 8 Mass-Spring model extracted from the fabric structure 图 8 从织物结构中提取质点-弹簧模型

Step 4. 记录布料经纬相交的点, 记为Pij, 其中, i, j分别表示纬纱和经纱的编号, 可以快速定位织物的经纬组织点, 同时我们也记录织物中每个粒子相对于相交点的位置信息xk(k=1, 2, 3, …, n), 位置信息包括粒子在两个经纬点之间的比例sk以及偏移量tk.

Step 5. 将记录的相交点当作弹簧-质点结构中虚拟的质点, 建立物理模型.

Step 6. 在实际动态模拟中, 在每一个时间步长结束后, 通过上述提到的Verlet积分, 得到织物动态变形后的位置, 即经纬相交点Pij的位置, 然后使用Step 1记录的织物中每个粒子相对于经纬点的位置信息, 得到织物中每个粒子变形后的位置(如下列公式所示), 实现质感织物的动态模拟(如图 9所示).

Fig. 9 Dynamic simulation of cloth (the left is the mesh-based model, the right is the particle-based model) 图 9 织物的动态模拟(左边为网格模型, 右边为粒子模型)

$ {{x}_{k}}=\left\{ \begin{matrix} {{P}_{ij}}\times {{s}_{k}}+{{P}_{i{j}'}}\times \left( 1-{{s}_{k}} \right)+{{t}_{k}}\left( {j}'=j\pm 1,0\le {{s}_{k}}\le 1 \right),\text{ }若为纬纱 \\ {{P}_{ij}}\times {{s}_{k}}+{{P}_{{i}'j}}\times \left( 1-{{s}_{k}} \right)+{{t}_{k}}\left( {i}'=i\pm 1,0\le {{s}_{k}}\le 1 \right),\text{ }若为纬纱 \\ \end{matrix} \right.. $
4 质感服装的动态模拟

实现基于纤维的质感布料动态模拟后, 我们可以对布料进行缝合和拼接, 从而实现质感服装, 并穿着在三维人体模型上进行动态仿真.要实现服装在人体模型上的动态仿真, 需要解决服装与人体模型之间的碰撞检测和响应问题.

4.1 人体模型包围盒的建立

在服装动态仿真中, 如何高效、实时地处理人体与织物的碰撞关系是非常关键的, 包围盒技术能够有效地减少进行碰撞检测的时间, 在服装模拟中得到了广泛应用.建立包围盒的方法多种多样, 主要使用的方法包括有向包围盒(OBB)、轴向包围盒(AABB)和离散有向多面体(k-DOPs)等[19].Feng等人[20]首先对人体模型的骨骼簇进行处理, 为每个骨骼簇建立各自的包围囊, 再将每个包围囊细分为包围球的集合.但是, 球状包围盒并不能很好地贴合人体模型, 会产生较大的误差, 一些学者选择椭球体作为建立包围盒的基元来减小误差, 如Bischoff等人[21]通过种子点构造初始的椭球体, 将模型分解建立包围盒, 但单纯地用椭球体来表示, 存在计算复杂的问题, 仍不能有效地简化计算时间复杂度.Bergen等人[22]介绍了一种轴向包围盒的方法来进行碰撞检测.Hutter和Fuhrmannn[23]构造了离散有向多面体来提升碰撞检测的效率.

本文以基于纤维粒子的服装动态仿真真实性和实时性为出发点, 综合考虑现有不同方法的优缺点, 提出了一种混合层次包围盒的人体服装碰撞检测方法.我们首先利用MCASG图理论与K均值聚类相结合的算法[24], 并依据人体部位几何形态特征, 对人体模型进行分割, 得到方便于碰撞检测的人体分割结果, 如图 10所示.接下来, 利用分割得到的人体模型, 根据人体不同部位的具体形态构造不同类型的包围盒.例如, 胸腹部采用椭圆柱包围盒、腿部和手部采用圆柱体包围盒等, 从而有效地提高了碰撞检测的计算效率.对人体模型建立混合包围盒后的效果如图 11所示, 其中圆柱体包围盒为红色区域, 圆球包围盒为蓝色区域, 椭圆柱包围盒为绿色区域.在实际的服装动态模拟中, 人体肩膀部分是包围盒衔接的部位.如果直接进行碰撞检测和响应, 无法产生服装贴身的模拟效果.我们在模拟中可将服装模型肩膀部分的粒子附着在人体模型上(不进行碰撞检测), 随着人体模型的运动进行刚性变换, 可以有效地解决这一问题.

Fig. 10 Overall segmentation effort 图 10 分割整体效果

Fig. 11 Overall approximation effort 图 11 整体逼近效果

4.2 服装的动态模拟效果

我们在Core i7-2675QM处理器和4GB RAM的计算机上使用C++程序语言与OpenGL图形库实现了基于纤维的质感布料建模和服装仿真实验.综合上述相关理论方法, 首先, 对人体服装建立纱线的经纬排列结构提取组织点建立弹簧-质点模型, 然后, 对人体模型进行分割, 再根据人体模型各个部位的具体形态构造混合层次包围盒, 最后, 服装模型与人体模型之间进行碰撞检测和响应, 从而实现服装动态模拟效果.

最终的实际运行效果如图 12~图 16所示.其中, 图 12为整套服装的静态展示效果, 图 12(a)为传统的基于三维网格的服装展示结果, 该方法模拟的效果表面比较光滑, 但在现实世界中服装不会有这么光滑的展示效果, 因为衣服布料通常会具有毛糙感.图 12(b)为使用本文方法模拟的服装效果, 服装看起来有质感, 更接近于现实生活.图 13为服装模型局部的放大效果, 体现了服装基于纤维级别的外观细节.而在现有服装仿真过程中, 通过图像纹理虽然可以模拟服装上的纹路效果, 但是模型放大后, 纹理会产生失真, 而我们在纤维级别模拟织物, 局部放大后并不会失真.参考文献[11]对实际织物的机械测试与计算机仿真模型进行对比实验, 图 14(a)是真实布料左右两侧拉伸产生的褶皱效果, 图 14(b)是通过本文方法建立仿真布料对应的拉伸效果, 可以发现, 其能较好地反映实际织物的物理性能.图 15为短裙和T恤的动态模拟效果, 图 16为连衣裙穿着在人体模型上的动态模拟效果.由于我们利用纤维粒子模拟的纱线组织构造织物, 在织物外观模拟上便于控制, 可以通过改变粒子颜色以及组织方式实现几何纹理的效果, 体现出织物纤维级别的表面细节, 因此质感服装模拟效果更具真实感.

Fig. 12 Static display effect of cloth 图 12 服装的静态展示

Fig. 13 Local amplification effect of cloth 图 13 服装局部放大效果

Fig. 14 The folding effect comparision between the actual cloth and the simulated cloth 图 14 实际布料与模拟布料左右拉伸产生的褶皱效果对比

Fig. 15 The display effect for the short skirt and T-shirt 图 15 短裙和T恤展示效果

Fig. 16 The dynamic display of the fiber-based dress 图 16 纤维可控的连衣裙动态仿真效果

4.3 数据分析

我们列出了本文方法与传统方法模拟织物服装模型所包含的粒子数目对比情况, 见表 1.同时也给出了本文方法与传统方法碰撞检测和响应时间的对比, 见表 2.表 3显示了本文方法与传统方法在服装仿真的时间对比情况.从这些表中可以看出, 本文由于采用较多的纤维粒子进行模拟, 一方面, 在模拟细节效果上得到了提升, 使织物模拟更具真实感; 另一方面, 我们通过基于纤维块的质点-弹簧模型方法进行改进处理, 在模拟时间上虽然与传统方法相比仍有一定的增加, 但基本上还是能够满足服装动态模拟的实时要求的.

Table 1 The number of particles in the different fabric garments 表 1 不同织物服装所包含的粒子数目表

Table 2 Collision detection and response time for different fabric garments 表 2 不同织物服装的碰撞检测和响应时间表

Table 3 The speed of each frame for different fabric garments 表 3 不同织物服装的模拟帧速度表

5 总结和展望

本文提出了一种基于纤维粒子的质感布料建模和服装动态仿真方法, 首先从纤维结构特征出发, 采用集合球方法提取出模拟纤维的粒子, 进而得到具有真实感的三维纤维.在此基础上, 以纱线加捻的运动学和动力学方程为基础, 得到加捻过程中纤维粒子各个步长的位置, 模拟出纱线动态加捻过程并得到最终加捻的纱线, 实现了真实感三维纱线模拟.然后, 通过对纱线进行经纬纱编织, 实现了三维织物的模拟, 并改变编织方式和纱线色彩模拟出不同的三维织物效果, 体现了织物纤维级别的外观细节.接着, 采用基于纤维块的方法提取织物结构关键点建立弹簧-质点模型, 将变形结果插值映射到三维织物上, 实现织物的动态模拟.最后, 将基于纤维粒子的布料变形应用到三维服装模拟中, 通过建立混合层次包围盒进行人体碰撞检测响应, 实现了质感服装的动态仿真.

布料动态仿真中可以纱线为基本单位进行仿真(如基于纱线级的织物仿真[11]), 但纱线加捻建模过程和织物纤维细节很难体现.本文从更微观的层面(纤维级)出发, 给出一种基于纤维的统一建模方式(同时适用于纱线、布料和服装模拟), 即不仅可以对布料与服装进行动态仿真, 还可以对纤维和纱线(加捻)进行模拟, 扩大建模范围.动态仿真中, 我们采用了主流的质点-弹簧模型方法.但在基于纤维的服装仿真中直接使用该方法会出现计算量大、仿真速度慢等问题.我们对其进行改进, 提出了基于纤维块的质点-弹簧模型方法, 即将纱线经纬编织交错点作为质点, 通过力学模型确定运动位置, 纱线上相邻质点间的纤维粒子可看成纤维块, 再通过插值方法更新纤维块内的纤维粒子位置, 从而提高了动态仿真速度.

虽然本文对三维纱线构造与加捻、三维织物建模、质感服装动态仿真取得了较好的理论和实验结果, 但仍有一些工作需要完善和补充, 如(1)在布料动态仿真中, 本文将织物的经纬构造(经纬相交点)与布料动态仿真中弹簧-质点模型结合起来, 实现更具真实性的质感织物动态仿真.但是, 弹簧-质点结构还不能完全适用于由纱线构造的织物动态仿真中, 许多更加真实的服装变形效果还不能充分表现出来.因此, 建立更加贴近织物结构的力学仿真模型, 在服装仿真的真实感(如增加毛羽、打结等效果)上进一步提升仍将是今后的主要研究内容.(2)织物品种具有多样化, 本文主要模拟了机织物的外观结构, 并未对各种针织物[25]进行模拟, 在所适用的织物种类上受到限制.因此, 运用本文方法对针织物提升仿真效果、扩大模拟织物品种的应用范围将是我们今后的工作.

参考文献
[1] Schroder K, Zinke A, Klein R. Image-Based reverse engineering and visual prototyping of woven cloth. IEEE Trans.on Visualization and Computer Graphics, 2015, 21 (2) :188–200. [doi:10.1109/TVCG.2014.2339831]
[2] Liu YJ, Zhang DL, Yuen MMF. A survey on CAD methods in 3D garment design. Computers in Industry, 2010, 61 (6) :576–593. [doi:10.1016/j.compind.2010.03.007]
[3] Decaudin P, Julius D, Wither J, Boissieux L, Sheffer A, Cani MP. Virtual garments:A fully geometric approach for clothing design. Computer Graphics Forum, 2006, 25 (3) :625–634. [doi:10.1111/j.1467-8659.2006.00982.x]
[4] Jing F, Joneja A, Tang K. Modeling wrinkles on smooth surfaces for footwear design. Computer-Aided Design, 2005, 37 (8) :815–823. [doi:10.1016/j.cad.2004.09.010]
[5] Provot X.Deformation constraints in a mass-spring model to describe rigid cloth behaviour.In:Proc.of the Graphics Interface.Canadian Information Processing Society, 1995.147.
[6] Baraff D, Witkin A.Large steps in cloth simulation.In:Proc.of the 25th Annual Conf.on Computer Graphics and Interactive Techniques.ACM, 1998.43-54. [doi:10.1145/280814.280821]
[7] Choi KJ, Ko HS.Stable but responsive cloth.In:Proc.of the ACM SIGGRAPH 2005 Courses.2005.1. [doi:10.1145/566570.566624]
[8] Hadap S, Bangerter E, Volino P, Magnenat-Thalmann N.Animating wrinkles on clothes.In:Proc.of the Conf.on Visualization'99:Celebrating Ten Years.IEEE Computer Society Press, 1999.175-182.[doi:10.1109/VISUAL.1999.809885]
[9] Kang YM, Choi JH, Cho HG, Lee DH. An efficient animation of wrinkled cloth with approximate implicit integration. The Visual Computer, 2001, 17 (3) :147–157. [doi:10.1007/s003710100103]
[10] Chu L. A framework for extracting cloth descriptors from the underlying yarn structure[Ph.D.Thesis]. Berkeley: University of California, 2005 .
[11] Kaldor JM, James DL, Marschner S. Simulating knitted cloth at the yarn level. ACM Trans.on Graphics (TOG), 2008, 27 (3) :65. [doi:10.1145/1399504.1360664]
[12] Wang H, Hecht F, Ramamoorthi R, O'Brien JF. Example-Based wrinkle synthesis for clothing animation. ACM Trans.on Graphics (TOG), 2010, 29 (4) :107. [doi:10.1145/1833349.1778844]
[13] Narain R, Samii A, O'Brien JF. Adaptive anisotropic remeshing for cloth simulation. ACM Trans.on Graphics (TOG), 2012, 31 (6) :152. [doi:10.1145/2366145.2366171]
[14] Chen Z, Feng R, Wang H. Modeling friction and air effects between cloth and deformable bodies. ACM Trans.on Graphics (TOG), 2013, 32 (4) :88. [doi:10.1145/2461912.2461941]
[15] Xu W, Umentani N, Chao Q, Mao J, Jin XG, Tong X. Sensitivity-Optimized rigging for example-based real-time clothing synthesis. ACM Trans.on Graphics (TOG), 2014, 33 (4) :1–11. [doi:10.1145/2601097.2601136]
[16] Miao MH, Chen RZ. Yarn twisting dynamic.Part I:Foundamental relationships. Journal of China Textile University, 1992, 18 (6) :65–71(in Chinese with English abstract). http://www.cnki.com.cn/Article/CJFDTOTAL-DHDZ199206009.htm
[17] Miao MH, Chen RZ. A study of yarn twisting dynamic.Part Ⅱ:Some typical ideal twisting processes. Journal of China Textile University, 1993, 19 (2) :63–70.
[18] Verlet L. Computer "experiments" on classical fluids.I.Thermodynamical properties of Lennard-Jones molecules. Physical Review1967, 159, 1 (98) :103. http://www.citeulike.org/user/ddcttrl/article/2684268
[19] Li Z, Li L, Zou F, Yang Y. 3D foot and shoe matching based on OBB and AABB. Int'l Journal of Clothing Science and Technology, 2013, 25 (5) :389–399. [doi:10.1103/PhysRev.159.98]
[20] Feng WW, Yu Y, Kim BU. A deformation transformer for real-time cloth animation. ACM Trans.on Graphics (TOG), 2010, 29 (4) :108. [doi:10.1108/IJCST-Jul-2012-0044]
[21]
[22] Bergen G. Efficient collision detection of complex deformable models using AABB trees. Journal of Graphics Tools, 1997, 2 (4) :1–13. [doi:10.1109/TDPVT.2002.1024103]
[23] Hutter M, Fuhrmann A.Optimized continuous collision detection for deformable triangle meshes.In:Proc.of the WSCG.2007.25-32.
[24] Jagannathan A, Miller EL. Three-Dimensional surface mesh segmentation using curvedness-based region growing approach. IEEE Trans.on Pattern Analysis and Machine Intelligence. 2007 : 2195 -2204.
[25] Yuksel C, Kaldor JM, James DL, Marschner S. Stitch meshes for modeling knitted clothing with yarn-level detail. ACM Trans.on Graphics (TOG). 2012 : 37 .
[16] 苗孟河, 陈人哲. 纱线动态加捻的理论研究第1部分:动态加捻基本方程的建立. 中国纺织大学学报, 1992,18 (6) :65–71. http://www.cnki.com.cn/Article/CJFDTOTAL-DHDZ199206009.htm