《基于物理模型的织物运动模拟》由会员分享,可在线阅读,更多相关《基于物理模型的织物运动模拟(7页珍藏版)》请在金锄头文库上搜索。
1、基于物理模型的窗帘运动实时动画成迟薏1 石教英1 徐迎庆2 作者成迟薏,女,1976年生,硕士生,研究方向为虚拟现实和计算机图形学。石教英,1937年生,教授,博士生导师,研究领域为系统结构、计算机图形学、分布式虚拟现实和多媒体等。徐迎庆,博士,研究员,研究领域为计算机图形、基于物理的模拟和动画、基于图象的模型、纹理生成和处理等。沈向洋,博士,研究员。研究领域为计算机视觉、计算机图形、机器人、图像设计和虚拟环境模型设计等。本文联系人:徐迎庆,北京市海淀区知春路49号北京希格玛大厦五层,微软中国研究院,北京100080 沈向洋21 浙江大学CAD&CG实验室 杭州 3100272 微软中国研究院
2、 北京 100080Email: 摘要:本文提出了一种基于物理模型的实时动态模拟窗帘运动的方法。在以往的研究中,人们提出了许多模拟织物运动的方法,这些方法的一个主要缺点是复杂度高、计算效率低,无法满足交互设计和实时动画的要求。本文提出的方法根据织物的物理特性,采用半刚性样条结构,将经线和纬线方向的约束分开处理,大量简化了计算,可以实时地模拟织物的运动。关键词:基于物理的建模,窗帘,动画,虚拟现实,碰撞检测,半刚体1 前言在人们的生活中,织物无处不在,时时可见。如何在计算机上有效和逼真地模拟织物的运动一直是计算机图形学研究中的一个具有挑战性的课题。此外,日益发展的计算机辅助设计及电子商务系统也要
3、求快速、逼真的织物模拟算法,以帮助设计师使用计算机来高效地设计和生产,并把这些产品放到Internet上,使网上选购织物真正成为可能1。传统CAD系统采用刚性模型,能精确模拟机械零件的运动,刚性物体的模拟技术已经非常成熟。但这种刚性模型对织物并不合适。作为一种柔性体,在外力作用下,织物会产生很大的形变,不同材料、不同制造方法,乃至不同裁减、不同缝制的衣料的形变各不相同。科学家和研究人员做了大量的实验和研究,获得了织物在外力作用下形变的精确物理参数,并试图开发了一些模型描述这些形变,但由于织物的内在特性,这些模型并未得到广泛应用,主要的困难在于:1 织物本身的物理机械性能是非常复杂的。其材料的多
4、样性、结构的复杂性、形状的不规则性、以及个性化产品所产生的密度分布不均匀性等,都给织物的动态模拟带来很大的困难;2 虽然大量的实验给出了精确的织物形变参数,但不同方向,不同性质的力涉及不同的形变规则,如何对这些参数进行总结分类,采用一简化模型概括所有的形变规则,是一个难点。现有的模型大都比较复杂,即便是在高性能的工作站上,计算一帧图象也需要数秒乃至数天时间,这显然无法满足实时绘制的需要;3 碰撞检测是动画中的经典问题。在织物模拟中,织物一般表示为一张网格曲面,由于它是一个柔性体,曲面的不同部分具有不同的运动,彼此没有严格的约束,因此除了检测织物与周围物体的相交外,还必须检测织物不同部分之间的相
5、交,即自碰撞问题。碰撞检测和自碰撞检测必须进行大量的几何运算,成为系统的瓶颈之一。由于以上原因,虽然研究人员在这方面开展了很多工作,但至今使用计算机对织物进行模拟的技术仍未获得广泛应用。Weil2最早采用余弦曲线及其几何变换模拟悬垂织物。之后,Hinds et al.3,4,Ng et al.5采用纯几何变换模拟特殊情况下织物的变形。Hadap et al.6采用纹理与几何相结合的方法模拟衣服上的褶皱。纯几何方法需要用户的干预,并仅能适用一些特殊情况,因此大多织物模拟系统都是基于物理的建模,或将物理建模与几何方法结合起来。基于物理的建模通过引入质量、力、能量等物理量,将织物各个部分的运动,看成
6、各种力的作用下质点运动的结果。Terzopoulos et al.7,8把柔性物体的变形,描述成柔性物体内部组织抵抗形变产生的弹性力、外界作用力和阻尼力共同作用的结果,为柔性物体提出了弹性形变模型,建立了物理基础。Terzopoulos之后,很多工作都集中在织物的弹性形变模型上9,10,11,这些方法最终都可以归结为质点-弹簧模型。Thalmann领导的Miralab也发展了弹性形变模型,用于虚拟演员的服装模拟和3D时装辅助设计12,13,14,并且他们对布的碰撞检测及其优化15,16,17进行了讨论。Breen. et al.研究了不同织物的力学特性18,提出了织物模拟中质点系统的概念。质点
7、系统中,用由弹簧相互连接的一组质点来描述织物的状态,通过优化系统能量最小求解各个质点的位置19。以上基于物理模型的织物模拟,尽管其表达方式、求解办法有所不同,但都可归结为:根据牛顿运动定律,给出质点间弹簧形变关系(可以用力的形式表示,也可以用能量表示),得到一偏微分方程(组),最终用数值方法求解该方程(组)。在经典的质点-弹簧模型中,一般每个质点都和其邻域中的至少8个邻点用弹簧相连,由此获得的偏微分方程非常复杂,采用经典的欧拉方法、龙格-库塔或共轭梯度法求解,需要迭代多次才能收敛到平衡状态。Baraff et al.20,21对方程的求解方法进行了研究,采用隐式迭代,可以把每次迭代的步长拉大,
8、从而减少迭代次数。使用隐式迭代法,在SGI Octance R10000 195MHz的处理器上平均需要10秒的时间处理一帧由4530个质点组成的布的动画(除去内存分配、绘制等各种系统开销)。隐式迭代法是织物模拟技术的突破,但它仍然无法满足实时动画的要求。怎样才能进一步减少计算时间呢?针对上述问题,我们提出了一种可以有效和逼真地模拟织物运动的物理模型,将织物的经线和纬线方向的形变分离,分别采用半刚性样条模拟经线和纬线方向的形变。半刚性样条兼有刚性和弹性的特点,继承了刚性模型计算简单的优点,又能符合织物柔性形变的特性。我们的模型得到的方程形式简单,不需要任何迭代就可以数值求解,大大减少了计算开销
9、,达到近实时效果,而且绘制结果表明,其视觉效果是非常逼真的。本文第二节简要介绍我们窗帘模拟系统的结构,并引入一些基本概念;第三节在描述半刚性结构的特点的基础上,提出统一的受力模型;第四节中介绍如何把经线和纬线方向的约束分开并分别处理;第五节提出了一种快速的碰撞检测算法;最后给出实验结果分析及结论。2 窗帘模拟系统的结构Fig.1 Cloth grid图1 织物网格2.1 基本概念为描述简单,首先引入一些基本概念:根据经线纬线结构,我们将窗帘表面分成矩形网格,每个网格点称为节点,相邻节点间通过-段半刚性样条相连(我们将在第三节中详细介绍半刚性样条)。第行, 列的节点表示为,它在世界坐标系中的坐标
10、表示为,质量为,它受到力表示为。现实生活中一块布平展开,不受任何外力作用时,它将构成一个空间平面,没有任何伸缩变形,我们称这种自由平展的状态为初始状态。在初始状态下,每个节点都有一初始位置,以后的各种形变都可看成偏离初始位置的运动,节点的初始位置表示为。经线方向上两相邻节点和 在初始状态下的距离表示为: ,纬线方向上两相邻节点和在初始状态下的距离为: 。2.2 本文算法的主要思想在计算机图形学中,生动逼真的视觉效果往往比物理精确性更吸引人。虽然微观力学实验表明,在外力作用下织物在其经向和纬向会有一些伸缩,但对大多数织物而言,这种伸缩人眼很难观察到。对于窗帘这样的悬垂织物来说,可以认为织物在经向
11、和纬向是保长度的。根据这个假设,我们采用了半刚性样条模拟织物,半刚性样条不能压缩或者拉伸,但能够在保证长度不变的前提下弯曲。半刚性样条的不可伸缩的性质,符合织物保长度的物理特性,并使相邻节点之间的相互作用关系变得简单,从而可以将纬向和经向的约束分开处理,简化了计算;而它的可弯曲性,能产生悬垂织物变形时特有的褶皱等效果。2.3 模拟系统的主要结构我们的窗帘模拟系统的主要结构为:while (1) 任意时刻:计算每个节点受到的外力(在我们的系统中,主要是风力);根据经线方向约束和所受外力,计算节点位置、速度和加速度;根据纬线方向约束,计算并调整节点位置、速度;碰撞检测,并对碰撞点进行调整;绘制并显
12、示时刻的图象(必要的话,在绘制前先插值将网格平滑);在下面的几节中我们将分别介绍这些内容。3 半刚性结构及其受力情况3.1 半刚性样条观察在风中飘扬的窗帘,我们发现窗帘在经线方向的运动非常类似于物理上的复杂摆。与通常意义的在重力作用下在平衡位置附近做单自由度的周期振动的单摆不同,窗帘经线方向的运动没有固定周期,而且是多自由度的。如果我们沿窗帘经线方向将它分成若干段,当分得足够细,每段长度足够短时,可以认为它是刚性的,因此,每段都可看成是一根刚性杆末端连接一个质点球的摆构成,这些摆头尾相接,连在一起,构成了一根很长的“摆”,我们称它为复杂摆,并把其中每一段称为半刚性样条。这些半刚性样条构成了一半
13、刚体系统,在风、重力、阻尼力等外部力的作用下运动,从而决定了在窗帘在经线方向的形态。在纬线方向上,我们也可以采用上述半刚性样条结构,与经线方向不同的是,窗帘经线方向(即复杂摆)的一端是固定的,而在纬线方向上两端都是自由的。通过控制半刚性样条的数目和长短,以及连接半刚性样条的小球质量大小,我们可以获得不同材质的窗帘的运动。 半刚性样条的特点是不能压缩或者拉伸,但能够在保证长度不变的前提下弯曲。它与质点-弹簧模型相比,有几个优点:1 质点-弹簧模型为产生褶皱等局部效果,通过为每个质点建立局部方程求解其平衡状态,虽然能量可以通过弹簧传递,但总体来说,质点-弹簧模型只考虑了织物的局部的形状,而较少考虑
14、织物的整体形状;而半刚性样条保持织物在经向和纬向上长度不变,较好保持了织物的整体特性,同时也能产生褶皱。2 质点-弹簧系统中,在受力点处会产生很大的变形(10%),这是不真实的,虽然可以通过增加弹簧的弹性系数解决,但这意味着解方程中迭代次数的增加和收敛减慢,而且也很难控制其伸缩度;在半刚性模型中,不会产生局部形变过大的情况。3 质点-弹簧模型中,每个质点都和它上下左右至少8个邻点用弹簧相连,而且根据窗帘的对拉力、剪切、弯曲等作用力的不同反应,不同的力定义了不同的形变参数,而且每种形变模型还有各自的阻尼力模型,由此得到的方程庞大难解;而半刚性模型继承了多刚体系统的物理特性,为各种外力和内部相互作
15、用力提供了统一的处理方案,而且便于经向和纬向的约束分开处理,由此得到的方程非常容易解,速度快。Fig.3 Superposition of all forces on (i,j)图3 节点(i, j)所受合力下面我们将讨论半刚性样条上统一的受力模型。Fig. 2 Internal forces of semi-rigid spline图2 半刚性样条的内部力 3.2 受力模型窗帘受到内部和外部力的作用,外部作用力包括重力、风力、空气阻力、与外界物体相碰时的阻碍力,外界物体的支撑力等等;不同的弹性形变系统定义了不同的内部力,如拉力、剪切力、弯曲力,我们的模拟系统中将内部力和外部力统一表示。我们将分别讨论内部力和外部力的处理,并特别介绍风力和阻尼力。3.2.1 内部力半刚性样条在其长度方向上不能伸缩,因此两个相临节点间的作用力有两种可能(见图2):当两个节点的运动速度相同时,半刚性样条将产生抵抗收缩的力(图2中,两节点之间的相对速度与它们的相对位置间的夹角);当两个节点的运动速度相反时,半刚性样条将产生抵抗拉伸的力(图2中,两节点之间的相对速度与它们的相对位置间的夹角)。由于半刚性样条的刚性,内部力可以简单的分成以上两类。对于每个节点而言,计算它所受到的合力,根据牛顿第二运动定律,可求出每个节点的位置:(1)Fig. 4 Wind