|
Bridson, R., Marino, S., & Fedkiw, R. (2003). Simulation of Clothing with Folds and Wrinkles
摘要
在这篇论文中,Bridson 等人提出了一种在模拟衣物时保留折痕和皱纹的方法。他们提出了一种混合隐式/显式时间积分方法,推导出一种物理上准确的弯曲模型,并以一种保留皱纹的方式处理互相穿透的问题。
在时间积分方法中,他们对衣物的速度相关力(阻尼力)使用隐式方法,对速度无关力(弹性力)使用显式方法。由于隐式方法引入了阻尼,因此适用于阻尼力;然而,当应用于弹性力时,它会导致过多的阻尼,并且不能很好地处理弹性力的非线性。
弯曲模型考虑了网格中共享一条边的两个三角形之间的弯曲。两个三角形之间有四个顶点 $x_i$,每个顶点都有一个相关的速度 $v_i$ 和力 $F_i$。三角形的法线是 $n_1$ 和 $n_2$,它们之间的角度是 $\theta$。速度和力构成了一个12维空间。Bridson 等人没有直接使用这个空间,而是为这个空间提出了一个基底,包括:3个刚体平移,3个刚体旋转,顶点1的两个平面内运动,顶点2的两个平面内运动,边3-4的一个线内拉伸,以及 $\theta$ 的变化(“弯曲模式”)。弯曲模式与所有其他模式正交,记为 $u=(u_1,u_2,u_3,u_4)$。基于正交条件,他们推导出每个 $u_i$ 的值:
\begin{align*}
u_1&=\vert E\vert \frac{N_1}{\vert N_1\vert^2}\\
u_2&=\vert E\vert \frac{N_2}{\vert N_2\vert^2}\\
u_3&=\frac{(x_1-x_4)\cdot{}E}{\vert E\vert}\frac{N_1}{\vert N_1\vert^2}+\frac{(x_2-x_4)\cdot{}E}{\vert E\vert}\frac{N_2}{\vert N_2 \vert^2}\\
u_4&=\frac{(x_1-x_3)\cdot{}E}{\vert E\vert}\frac{N_1}{\vert N_1\vert^2}+\frac{(x_2-x_3)\cdot{}E}{\vert E\vert}\frac{N_2}{\vert N_2 \vert^2}
\end{align*}其中 $N_1=(x_1-x_3)\times (x_1-x_4)$ 和 $N_2=(x_2-x_4)\times(x_2-x_3)$ 是面积加权法线,$E=x_4-x_3$ 是公共边。
由于 $u$ 与所有其他运动模式正交,与弯曲相关的力——弹性弯曲力和阻尼弯曲力——必须与 $u$ 成比例以保持正交性。对于弹性力,他们使用:
\[F_i^e=k^e\frac{\vert E\vert^2}{\vert N_1\vert+\vert N_2\vert}\left(\sin(\theta/2)-\sin(\theta_0/2)\right)u_i\]
其中 $k^e$ 是材料属性(弹性弯曲刚度),$\theta_0$ 是静止角度,可以用来强制衣物以特定方式弯曲。对于阻尼力,他们使用:
\[F_i^d=-k^d\vert E\vert (d\theta/dt)u_i\]
其中 $k^d$ 是材料属性。
为了解决互相穿透的问题,他们不是将互相穿透的材料投影到网格表面(这会导致皱纹被抹平),而是将互相穿透的材料投影到区间 $[0,\tau]$。这意味着皱纹可能不会像原来那样尖锐(因为它们可能只会尖锐到高度 $\tau$),但这至少会保留折痕的轮廓。 |
|