三维织物动态模拟的研究与实现

时间:2022-07-27 05:38:13

三维织物动态模拟的研究与实现

【摘要】本文主要研究了三维织物动态模拟的实现过程。文章分别从织物模型、质点位置的计算方法等方面针对现有的方法进行综合分析,根据每种方法的特点进行选择,并最终在计算机上进行了模拟实现。实验结果表明,布料的模拟效果较为真实,运行过程流畅,对硬件配置无较高要求。

【关键词】织物模拟;织物模型;质点位置

1.引言

自上个世纪80年代以来,三维织物的动态模拟问题就一直是研究人员的热点研究问题,现有的方法大致可分为三类:几何方法,物理方法和混合方法。几何方法主要在不考虑织物的物理特性的情况下运用几何方程,模拟织物的视觉效果,这一类方法单独使用时不能产生较为真实的效果;物理方法将织物视为由一系列微小的粒子组成,每一个粒子所受到的力都要计算出来,模拟动态的织物;混合方法是结合了物理和几何的方法,更多的用来模拟较复杂的动态织物。

2.织物模型的选择

目前,基于物理方法的织物模型种类很多,如有限元模型,有限体积模型,粒子系统模型等。本文的织物模型选择的是经典的质点——弹簧模型,这是一种实现较为简单且有效的方法,这种模型将织物模拟为相互关联的质点,每个质点的运动情况由不同的时刻所受到的合力决定。

3.计算方法的选择

目前有两种计算的方式,隐式积分算法和显式积分算法。

隐式积分算法从系统整体出发计算质点位置,这类算法的优点在于由于将质点视为一个连接的整体,潜在的不稳定性通常会消失,这样模拟过程不会出现不稳定或放大的情况;缺点是存在泰勒级数的截断误差且很难用代码正确的实现。

显示积分算法的基本思想是独立地更新所有未知的变量,这类算法的缺点是由于把一些变量看作是独立的,相互之间并不影响,而织物上的质点彼此之间是相互连接在一起的,因此这种方法模拟的织物有可能会出现质点彼此之间移动不同步的情况,质点的位置会稍微出现些偏差,但是这种偏差是可被忽略的。

本文选择显示积分算法主要考虑该算法编码实现较为简单,对CPU的性能要求也不高,并且实现方式很多。显示积分算法中目前较为常用有Euler算法和Verlet算法。

3.1 Euler算法

在数学和计算机领域,Euler算法是最基础的一种算法,用于计算离散时间段中物体受力后的运动轨迹。该算法的主要优点是易于实现,但是由于该方法会产生较大的误差,因此可能在数值上会不稳定,尤其是对于刚性方程。

3.2 Verlet算法

该算法主要应用在分子动力学模拟方面,计算粒子的运动轨迹,相较Euler算法具有更好的稳定性,且具有其他的一些对于物理系统非常重要的属性,如时间可逆性。该算法的稳定性很大程度上取决于统一的更新率,或能在一个很小的时间增量内识别出位置,有时也被用在游戏的物理引擎中。

和Euler算法不同的是,为了降低误差,Verlet算法计算下一个时间点位置的方法并不使用速度,而是通过前一个时间点和当前时间点的位置,如式(1)所示:

在下一个时间点到来之后,再计算前一个时间点的速度,计算速度的公式如式(2)所示:

实现过程中本文选择Verlet算法,它有更好的稳定性,误差也较小。

4.具体实现

织物模型采用质点-弹簧系统,由16个质点,58个弹簧组成。为了达到更为真实的效果,每一个质点通过12个弹簧相互连接,分别为4个结构弹簧,4个剪切弹簧和4个弯曲弹簧,每个弹簧都有相同的系数和刚性。如下图所示。

其中是用来减小质点运动速度的,相当于空气阻力;指质点的质量,单位为千克。代表刚性系数,指时间步长,表示弹簧的重力系数。

一开始,每个质点的位置都会设置到初始位置,并且所受外力为0,由于P1和P4是固定住的,因此在第一行只需计算质点P2和P3的位置坐标,之后每一次运行Verlet算法时都要设置一个默认重力值,施加重力之后质点位置坐标的计算用到以下计算公式:

其它质点依此类推。

为了满足弹簧的约束条件,要给每一个质点施加弹簧张力并计算它们的位置信息,要使用以下公式:

在上述公式中,表示弹簧长度;表示弹簧的剩余长度系数;P1和P2为连接在一个弹簧两端的两个质子。

依此类推加上所有的弹簧张力。16个质点的初始位置和计算后位置坐标如表1所示。

5.实验结果与结论

程序采用C++语言进行编写,使用Visual Studio 2008进行编译,运行硬件环境配置如下:CPU为Intel Core2 T5870,主频为2GHz;内存为2GB,显卡为ATI Mobility Radeon X1350,显存128MB,实验结果如图2所示。

实验结果表明,织物的动态模拟效果较为真实,并且运行过程连贯顺畅,对硬件配置无太高要求。

参考文献

[1]祝双武,郝重阳.一种基于真实感图像生成的织物外观仿真快速算法[J].系统仿真学报,2008,20(5):1234-1237.

[2]胡江帆,严佩敏,周俊玮,万旺根.基于改进质点弹簧模型下的布料实时仿真[J].计算机仿真,2008,25(7):184-187.

[3]赵慧青.虚拟服装设计中的布料仿真与碰撞检测算法研究[D].成都:成都理工大学,2008.

[4]吴梦熊.三维织物动态真实感仿真技术研究与实现[D].上海:东华大学,2008.

[5]Thomas Stumpp,Jonas Spillmann,Markus Becker.A Geometric Deformation Model for Stable Cloth Simulation[J].Workshop on Virtual Reality Interaction and Physical Simulation VRIPHYS,2008.

作者简介:孔令寅(1986—),陕西西安人,硕士,四川大学锦江学院计算机学院教师。

上一篇:线性规划模型在最优决策中的应用研究 下一篇:浅谈反思与英语口语情感教学