找回密码
 快速注册
搜索
查看: 13|回复: 0

衣物褶皱模拟 基于物理的计算机动画

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2025-1-25 19:59 |阅读模式
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$ 是公共边。
Screenshot 2025-01-25 120159.png
由于 $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$),但这至少会保留折痕的轮廓。

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:17

Powered by Discuz!

× 快速回复 返回顶部 返回列表