简介
在动画中对人物衣物的建模是非常重要的,直接影响到真实感的体验。广泛采用的技术是弹簧质点模型。弹簧质点模型是一种物理模型,其核心是把布料的形状用微分方程来表示。该模型结合布的物理属性, 如质量、硬度和弹性等布的材料属性, 运用力学理论建立起微分方程。
弹簧模型
1. 拉力弹簧: 拉力弹簧将一个质点和与它直接相连的质点连接。它产生的力用于抵抗布的拉伸或压缩。
2. 交叉弹簧: 一个交叉弹簧跨过两相邻三角形的公共边, 连接两个有公共边的三角形上的质点。在质点- 弹簧模型中, 交叉弹簧主要用于模拟布的弯曲力。
力模型
1.内力
a)弹簧力
假定一个弹簧Si, j连接两个质点Pi 和Pj。根据虎克定律, 作用力F s (Si, j) 和弹簧变化长度成正比:
其中, ks i, j是弹簧的刚度, I i, j是弹簧的矢量, l0i, j是弹簧的原长, x i和x j是质点Pi 和Pj 的位置。
b)阻尼力
动态的布模拟中, 适当的阻尼力对维持系统的稳定性是非常重要的。例如, 为了防止两质点间出现不规则的振动, 一个强张力必须伴随一个稳定的强阻尼力。在我们的质点- 弹簧模型中, 阻尼力Fd(Si, j) 和两个相连质点的速度差成正比。其公式如下: Fd(Si, j) = kd 其中, kd i, j是阻尼常数, v i和v j是两质点Pi和Pj 的速度。在质点i 上的内力Fint可以描述为:
其中, n 是直接连接质点i 的质点数目。
2.外力
a)重力
在我们的模型中, 我们用规则的网格描述布模型; 因此, 我们认为每个质点有相同的质量, 该质量等于布的总质量除质点的数量。在布模拟过程中, 作用在每个质点的重力是常数。
b)空气阻力
根据Stocke 的阻力定律, 空气阻力Fair和质点速度的n 次幂成正比。这个定律可近似表示如下:
其中, m i 是质点的质量, kr 是定义的空气阻力的正常数, vi 是速度矢量, 其大小为‖vi ‖, 方向为vdi 。在我们的模型中, 我们将指数n 选为1, 那么空气阻力表示为:
考虑重力和空气阻力, 作用在质点上的外力可以表示如下:
这样, 作用在质点上的总力为:
数值方法 欧拉方法
假设m i 是质点Pi 的质量; 在时刻t, 质点的位置为xi , 速度为vi , 加速度为ai , 作用在质点上的力为F i 。根据牛顿定律, 质点的加速度和作用力存在如下的关系: Fi = miai。因此ai =Fi/m i。
为了求出每一时刻每个质点的速度和位置, 在我们的系统中, 运用了显式的欧拉方法。这里要求迭代步长h 足够小, 而且假定在每个时间段加速度为常数。根据欧拉方法, 下一时刻( t+ h) 的速度vi ( t+ h) 和时刻t 的速度vi ( t) 存在如下关系:
vi ( t+ h) = vi ( t) + aih= vi ( t) +Fim ih
那么, 下一时刻( t+ h) 的位置xi ( t+ h) 和时刻t 的位置xi ( t) 存在如下关系:
xi ( t+ h) = xi ( t) + vi ( t+ h) h
参考论文:《基于质点- 弹簧模型的布模拟方法》 褚莲娣 2002
注:本文仅供学习交流使用,谢绝转载