Processing math: 100%

P14

Strain Limiting

原理

Strain limiting aims at using the projection function for correction only.

✅ 投影函数作为模拟过程的后处理,防止模拟后产生大的形变,使模拟结果更稳定。

PBDStrain Limiting
第一步只考虑粒子运动,不考虑约束模拟粒子运动、同时考虑约束
第二步使粒子状态满足约束校正,但约束较宽

P15

例一: Spring Strain Limit

We can set the spring strain, i.e., the stretching ratio σ, to be within a limit.

✅ 这一页以弹簧为例子说明 Strain Limit
✅ Strain:物理上描述形变的量,即本页的σ

σmin1L||xixj||σmax

✅ 仅要求弹簧长度满足某不比例,不要求一定到达某个位置。

Constraint

P16

xnewProjection(x)

σ1L||xixj||

✅ 计算当前拉伸比

σ0min(max(σ,σmin),σmax)

✅ 计算期望的拉伸比

xnewiximjmi+mj(||xixj||σ0L)xixj||xixj||

xnewjxj+mjmi+mj(||xixj||σ0L)xixj||xixj||

✅ 用σ0L代替原长L

PBD:σ01;

✅ PBD可以看作是Strain Limit的特例。

No limit: σmin=0,σmax=

✅ Strain Limit 的应用场景:(1) 模拟布料:“拉伸到一定范围后变得非常 stiff” 的效果 (2) 防止“形变大发生数值不稳定”。

P17

例二:Triangle Area Limit

We can limit the triangle area as well. To do so, we define a scaling factor.

✅这是另一个例子。希望顶点移动尽量少,因此定义约束:三角形面积变化在一定范围内。

{xnewi,xnewi,xnewk}  = argmin12{mi||xnewixi||2+mj||xnewjxj||2+mj||xnewkxk||2

such that the constraint is satisfied.

✅ strain s为面积的缩放量

P18

xnewProjection(x)

A12||(xjxi)×(xkxi)||

✅ 计算当前三角形的面积

smin(max(A,Amin),Amax)/A

✅ 计算期望的面积缩放比

c1mi+mj+mk(mixi+mjxj+mkxk)

✅ C为质心,要求缩放前后质心不变。数学上、质心不变,点的移动最少;物理上,质心变了代表物体运动了,scale 不应该导致物理运动。

xnewic+s(xic)

xnewjc+s(xjc)

xnewkc+s(xkc)

✅ 通过对顶点到质心的距离的缩放,得到顶点的新的位置

P19

Strain Limiting在Simulation中的作用

  • Strain limiting is widely used in physics- based simulation, typically for avoiding instability and artifacts due to large deformation.

  • Strain limiting is useful for nonlinear effects, in a biphasic way.

✅ 例如布料一般一开始抵抗比较小,拉到一定程度后抵抗迅速变大。对这种非线性的表现,可以把模拟分布两个阶段,前面用普通模拟,后面用strain limiting。

  • Strain limiting also helps address the locking issue.

✅两个阶段有不同的算法,针对两个阶段的不同特点,可以分别解决两个阶段的问题。


本文出自CaterpillarStudyGroup,转载请注明出处。

https://caterpillarstudygroup.github.io/GAMES103_mdbook/